tokentracker-cli 0.18.1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +5 -4
  2. package/README.zh-CN.md +4 -3
  3. package/dashboard/dist/assets/{Card-8ZPdKuRR.js → Card-jA08WeEw.js} +1 -1
  4. package/dashboard/dist/assets/{DashboardPage-OVP6u_7i.js → DashboardPage-chDVOYmG.js} +1 -1
  5. package/dashboard/dist/assets/{FadeIn-BxnaPv7O.js → FadeIn-DqSYXuUL.js} +1 -1
  6. package/dashboard/dist/assets/{HeaderGithubStar-8z6DrTLD.js → HeaderGithubStar-C11rWv0B.js} +1 -1
  7. package/dashboard/dist/assets/{IpCheckPage-yagKgpi7.js → IpCheckPage-CkEZ9yLK.js} +1 -1
  8. package/dashboard/dist/assets/{LandingPage-Ca72J5F0.js → LandingPage-BgckTHRQ.js} +1 -1
  9. package/dashboard/dist/assets/{LeaderboardPage-CSmW4lBz.js → LeaderboardPage-BCNW7UWp.js} +1 -1
  10. package/dashboard/dist/assets/{LeaderboardProfilePage-BOihURRE.js → LeaderboardProfilePage-BLATxMt-.js} +1 -1
  11. package/dashboard/dist/assets/{LimitsPage-Bq4zB2w9.js → LimitsPage-arF--WgR.js} +1 -1
  12. package/dashboard/dist/assets/{LoginPage-CoB1ZkE6.js → LoginPage-DpoFP0va.js} +1 -1
  13. package/dashboard/dist/assets/{PopoverPopup-D7d5-v70.js → PopoverPopup-kdgc2H6C.js} +1 -1
  14. package/dashboard/dist/assets/{ProviderIcon-DzvUcjPu.js → ProviderIcon-DV5r9qqP.js} +1 -1
  15. package/dashboard/dist/assets/{SettingsPage-BeyW1iTj.js → SettingsPage-Bb22ORmU.js} +1 -1
  16. package/dashboard/dist/assets/{SkillsPage-B6auz1NO.js → SkillsPage-xhtBqVKC.js} +1 -1
  17. package/dashboard/dist/assets/{WidgetsPage-C9t8qw0F.js → WidgetsPage-CUoSVDET.js} +1 -1
  18. package/dashboard/dist/assets/{chevron-down-C8RgL-uJ.js → chevron-down-DYb2EChD.js} +1 -1
  19. package/dashboard/dist/assets/{download-C90EEqc8.js → download-C-_8o6dh.js} +1 -1
  20. package/dashboard/dist/assets/{leaderboard-columns-BgqTAms5.js → leaderboard-columns-BgzBlYo7.js} +1 -1
  21. package/dashboard/dist/assets/{main-DJcfmlDf.js → main-11hApDak.js} +6 -4
  22. package/dashboard/dist/assets/{use-limits-display-prefs-BUBBOUIF.js → use-limits-display-prefs-BeGKWUuk.js} +1 -1
  23. package/dashboard/dist/assets/{use-native-settings-CFUEzyoi.js → use-native-settings-nTTHktn0.js} +1 -1
  24. package/dashboard/dist/assets/{use-reduced-motion-NZDZrVKK.js → use-reduced-motion-DU8Gm6j1.js} +1 -1
  25. package/dashboard/dist/assets/{use-usage-limits-CoOOhZrW.js → use-usage-limits-DTPmEB8Y.js} +1 -1
  26. package/dashboard/dist/brand-logos/codebuddy.svg +1 -0
  27. package/dashboard/dist/brand-logos/every-code.svg +1 -0
  28. package/dashboard/dist/brand-logos/grok.svg +1 -0
  29. package/dashboard/dist/brand-logos/hermes.svg +1 -11
  30. package/dashboard/dist/brand-logos/kilo-code.svg +1 -0
  31. package/dashboard/dist/brand-logos/oh-my-pi.svg +1 -0
  32. package/dashboard/dist/index.html +1 -1
  33. package/dashboard/dist/share.html +1 -1
  34. package/package.json +1 -1
  35. package/src/commands/init.js +9 -5
  36. package/src/commands/serve.js +0 -12
  37. package/src/commands/sync.js +370 -7
  38. package/src/lib/grok-hook.js +86 -7
  39. package/src/lib/pricing/curated-overrides.json +1 -1
  40. package/src/lib/pricing/seed-snapshot.json +1 -1
  41. package/src/lib/rollout.js +438 -148
  42. package/src/lib/subscriptions.js +92 -40
  43. package/src/lib/usage-limits.js +1 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardPage-OVP6u_7i.js","assets/use-usage-limits-CoOOhZrW.js","assets/PopoverPopup-D7d5-v70.js","assets/Card-8ZPdKuRR.js","assets/use-reduced-motion-NZDZrVKK.js","assets/ProviderIcon-DzvUcjPu.js","assets/FadeIn-BxnaPv7O.js","assets/LandingPage-Ca72J5F0.js","assets/HeaderGithubStar-8z6DrTLD.js","assets/LeaderboardPage-CSmW4lBz.js","assets/leaderboard-columns-BgqTAms5.js","assets/chevron-down-C8RgL-uJ.js","assets/LeaderboardProfilePage-BOihURRE.js","assets/LimitsPage-Bq4zB2w9.js","assets/use-limits-display-prefs-BUBBOUIF.js","assets/SettingsPage-BeyW1iTj.js","assets/use-native-settings-CFUEzyoi.js","assets/download-C90EEqc8.js","assets/SkillsPage-B6auz1NO.js","assets/WidgetsPage-C9t8qw0F.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardPage-chDVOYmG.js","assets/use-usage-limits-DTPmEB8Y.js","assets/PopoverPopup-kdgc2H6C.js","assets/Card-jA08WeEw.js","assets/use-reduced-motion-DU8Gm6j1.js","assets/ProviderIcon-DV5r9qqP.js","assets/FadeIn-DqSYXuUL.js","assets/LandingPage-BgckTHRQ.js","assets/HeaderGithubStar-C11rWv0B.js","assets/LeaderboardPage-BCNW7UWp.js","assets/leaderboard-columns-BgzBlYo7.js","assets/chevron-down-DYb2EChD.js","assets/LeaderboardProfilePage-BLATxMt-.js","assets/LimitsPage-arF--WgR.js","assets/use-limits-display-prefs-BeGKWUuk.js","assets/SettingsPage-Bb22ORmU.js","assets/use-native-settings-nTTHktn0.js","assets/download-C-_8o6dh.js","assets/SkillsPage-xhtBqVKC.js","assets/WidgetsPage-CUoSVDET.js"])))=>i.map(i=>d[i]);
2
2
  function iP(e,t){for(var n=0;n<t.length;n++){const a=t[n];if(typeof a!="string"&&!Array.isArray(a)){for(const s in a)if(s!=="default"&&!(s in e)){const o=Object.getOwnPropertyDescriptor(a,s);o&&Object.defineProperty(e,s,o.get?o:{enumerable:!0,get:()=>a[s]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))a(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const u of o.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&a(u)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function a(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();function _b(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function sP(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if(typeof t=="function"){var n=function a(){var s=!1;try{s=this instanceof a}catch{}return s?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(a){var s=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(n,a,s.get?s:{enumerable:!0,get:function(){return e[a]}})}),n}var lh={exports:{}},lo={},uh={exports:{}},Ze={};var Py;function oP(){if(Py)return Ze;Py=1;var e=Symbol.for("react.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),o=Symbol.for("react.provider"),u=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),h=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),y=Symbol.iterator;function b(N){return N===null||typeof N!="object"?null:(N=y&&N[y]||N["@@iterator"],typeof N=="function"?N:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},x=Object.assign,T={};function P(N,q,xe){this.props=N,this.context=q,this.refs=T,this.updater=xe||w}P.prototype.isReactComponent={},P.prototype.setState=function(N,q){if(typeof N!="object"&&typeof N!="function"&&N!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,N,q,"setState")},P.prototype.forceUpdate=function(N){this.updater.enqueueForceUpdate(this,N,"forceUpdate")};function L(){}L.prototype=P.prototype;function D(N,q,xe){this.props=N,this.context=q,this.refs=T,this.updater=xe||w}var M=D.prototype=new L;M.constructor=D,x(M,P.prototype),M.isPureReactComponent=!0;var j=Array.isArray,K=Object.prototype.hasOwnProperty,G={current:null},W={key:!0,ref:!0,__self:!0,__source:!0};function S(N,q,xe){var Ae,Se={},Ce=null,qe=null;if(q!=null)for(Ae in q.ref!==void 0&&(qe=q.ref),q.key!==void 0&&(Ce=""+q.key),q)K.call(q,Ae)&&!W.hasOwnProperty(Ae)&&(Se[Ae]=q[Ae]);var Xe=arguments.length-2;if(Xe===1)Se.children=xe;else if(1<Xe){for(var Ue=Array(Xe),jt=0;jt<Xe;jt++)Ue[jt]=arguments[jt+2];Se.children=Ue}if(N&&N.defaultProps)for(Ae in Xe=N.defaultProps,Xe)Se[Ae]===void 0&&(Se[Ae]=Xe[Ae]);return{$$typeof:e,type:N,key:Ce,ref:qe,props:Se,_owner:G.current}}function Z(N,q){return{$$typeof:e,type:N.type,key:q,ref:N.ref,props:N.props,_owner:N._owner}}function X(N){return typeof N=="object"&&N!==null&&N.$$typeof===e}function _e(N){var q={"=":"=0",":":"=2"};return"$"+N.replace(/[=:]/g,function(xe){return q[xe]})}var oe=/\/+/g;function Re(N,q){return typeof N=="object"&&N!==null&&N.key!=null?_e(""+N.key):q.toString(36)}function fe(N,q,xe,Ae,Se){var Ce=typeof N;(Ce==="undefined"||Ce==="boolean")&&(N=null);var qe=!1;if(N===null)qe=!0;else switch(Ce){case"string":case"number":qe=!0;break;case"object":switch(N.$$typeof){case e:case t:qe=!0}}if(qe)return qe=N,Se=Se(qe),N=Ae===""?"."+Re(qe,0):Ae,j(Se)?(xe="",N!=null&&(xe=N.replace(oe,"$&/")+"/"),fe(Se,q,xe,"",function(jt){return jt})):Se!=null&&(X(Se)&&(Se=Z(Se,xe+(!Se.key||qe&&qe.key===Se.key?"":(""+Se.key).replace(oe,"$&/")+"/")+N)),q.push(Se)),1;if(qe=0,Ae=Ae===""?".":Ae+":",j(N))for(var Xe=0;Xe<N.length;Xe++){Ce=N[Xe];var Ue=Ae+Re(Ce,Xe);qe+=fe(Ce,q,xe,Ue,Se)}else if(Ue=b(N),typeof Ue=="function")for(N=Ue.call(N),Xe=0;!(Ce=N.next()).done;)Ce=Ce.value,Ue=Ae+Re(Ce,Xe++),qe+=fe(Ce,q,xe,Ue,Se);else if(Ce==="object")throw q=String(N),Error("Objects are not valid as a React child (found: "+(q==="[object Object]"?"object with keys {"+Object.keys(N).join(", ")+"}":q)+"). If you meant to render a collection of children, use an array instead.");return qe}function ce(N,q,xe){if(N==null)return N;var Ae=[],Se=0;return fe(N,Ae,"","",function(Ce){return q.call(xe,Ce,Se++)}),Ae}function ue(N){if(N._status===-1){var q=N._result;q=q(),q.then(function(xe){(N._status===0||N._status===-1)&&(N._status=1,N._result=xe)},function(xe){(N._status===0||N._status===-1)&&(N._status=2,N._result=xe)}),N._status===-1&&(N._status=0,N._result=q)}if(N._status===1)return N._result.default;throw N._result}var Me={current:null},H={transition:null},Y={ReactCurrentDispatcher:Me,ReactCurrentBatchConfig:H,ReactCurrentOwner:G};function $(){throw Error("act(...) is not supported in production builds of React.")}return Ze.Children={map:ce,forEach:function(N,q,xe){ce(N,function(){q.apply(this,arguments)},xe)},count:function(N){var q=0;return ce(N,function(){q++}),q},toArray:function(N){return ce(N,function(q){return q})||[]},only:function(N){if(!X(N))throw Error("React.Children.only expected to receive a single React element child.");return N}},Ze.Component=P,Ze.Fragment=n,Ze.Profiler=s,Ze.PureComponent=D,Ze.StrictMode=a,Ze.Suspense=h,Ze.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Y,Ze.act=$,Ze.cloneElement=function(N,q,xe){if(N==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+N+".");var Ae=x({},N.props),Se=N.key,Ce=N.ref,qe=N._owner;if(q!=null){if(q.ref!==void 0&&(Ce=q.ref,qe=G.current),q.key!==void 0&&(Se=""+q.key),N.type&&N.type.defaultProps)var Xe=N.type.defaultProps;for(Ue in q)K.call(q,Ue)&&!W.hasOwnProperty(Ue)&&(Ae[Ue]=q[Ue]===void 0&&Xe!==void 0?Xe[Ue]:q[Ue])}var Ue=arguments.length-2;if(Ue===1)Ae.children=xe;else if(1<Ue){Xe=Array(Ue);for(var jt=0;jt<Ue;jt++)Xe[jt]=arguments[jt+2];Ae.children=Xe}return{$$typeof:e,type:N.type,key:Se,ref:Ce,props:Ae,_owner:qe}},Ze.createContext=function(N){return N={$$typeof:u,_currentValue:N,_currentValue2:N,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},N.Provider={$$typeof:o,_context:N},N.Consumer=N},Ze.createElement=S,Ze.createFactory=function(N){var q=S.bind(null,N);return q.type=N,q},Ze.createRef=function(){return{current:null}},Ze.forwardRef=function(N){return{$$typeof:c,render:N}},Ze.isValidElement=X,Ze.lazy=function(N){return{$$typeof:m,_payload:{_status:-1,_result:N},_init:ue}},Ze.memo=function(N,q){return{$$typeof:f,type:N,compare:q===void 0?null:q}},Ze.startTransition=function(N){var q=H.transition;H.transition={};try{N()}finally{H.transition=q}},Ze.unstable_act=$,Ze.useCallback=function(N,q){return Me.current.useCallback(N,q)},Ze.useContext=function(N){return Me.current.useContext(N)},Ze.useDebugValue=function(){},Ze.useDeferredValue=function(N){return Me.current.useDeferredValue(N)},Ze.useEffect=function(N,q){return Me.current.useEffect(N,q)},Ze.useId=function(){return Me.current.useId()},Ze.useImperativeHandle=function(N,q,xe){return Me.current.useImperativeHandle(N,q,xe)},Ze.useInsertionEffect=function(N,q){return Me.current.useInsertionEffect(N,q)},Ze.useLayoutEffect=function(N,q){return Me.current.useLayoutEffect(N,q)},Ze.useMemo=function(N,q){return Me.current.useMemo(N,q)},Ze.useReducer=function(N,q,xe){return Me.current.useReducer(N,q,xe)},Ze.useRef=function(N){return Me.current.useRef(N)},Ze.useState=function(N){return Me.current.useState(N)},Ze.useSyncExternalStore=function(N,q,xe){return Me.current.useSyncExternalStore(N,q,xe)},Ze.useTransition=function(){return Me.current.useTransition()},Ze.version="18.3.1",Ze}var Ty;function $f(){return Ty||(Ty=1,uh.exports=oP()),uh.exports}var Cy;function lP(){if(Cy)return lo;Cy=1;var e=$f(),t=Symbol.for("react.element"),n=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,o={key:!0,ref:!0,__self:!0,__source:!0};function u(c,h,f){var m,y={},b=null,w=null;f!==void 0&&(b=""+f),h.key!==void 0&&(b=""+h.key),h.ref!==void 0&&(w=h.ref);for(m in h)a.call(h,m)&&!o.hasOwnProperty(m)&&(y[m]=h[m]);if(c&&c.defaultProps)for(m in h=c.defaultProps,h)y[m]===void 0&&(y[m]=h[m]);return{$$typeof:t,type:c,key:b,ref:w,props:y,_owner:s.current}}return lo.Fragment=n,lo.jsx=u,lo.jsxs=u,lo}var Ey;function uP(){return Ey||(Ey=1,lh.exports=lP()),lh.exports}var I=uP(),k=$f();const Hf=_b(k),cP=iP({__proto__:null,default:Hf},[k]);var au={},ch={exports:{}},yn={},dh={exports:{}},hh={};var Ry;function dP(){return Ry||(Ry=1,(function(e){function t(H,Y){var $=H.length;H.push(Y);e:for(;0<$;){var N=$-1>>>1,q=H[N];if(0<s(q,Y))H[N]=Y,H[$]=q,$=N;else break e}}function n(H){return H.length===0?null:H[0]}function a(H){if(H.length===0)return null;var Y=H[0],$=H.pop();if($!==Y){H[0]=$;e:for(var N=0,q=H.length,xe=q>>>1;N<xe;){var Ae=2*(N+1)-1,Se=H[Ae],Ce=Ae+1,qe=H[Ce];if(0>s(Se,$))Ce<q&&0>s(qe,Se)?(H[N]=qe,H[Ce]=$,N=Ce):(H[N]=Se,H[Ae]=$,N=Ae);else if(Ce<q&&0>s(qe,$))H[N]=qe,H[Ce]=$,N=Ce;else break e}}return Y}function s(H,Y){var $=H.sortIndex-Y.sortIndex;return $!==0?$:H.id-Y.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var u=Date,c=u.now();e.unstable_now=function(){return u.now()-c}}var h=[],f=[],m=1,y=null,b=3,w=!1,x=!1,T=!1,P=typeof setTimeout=="function"?setTimeout:null,L=typeof clearTimeout=="function"?clearTimeout:null,D=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function M(H){for(var Y=n(f);Y!==null;){if(Y.callback===null)a(f);else if(Y.startTime<=H)a(f),Y.sortIndex=Y.expirationTime,t(h,Y);else break;Y=n(f)}}function j(H){if(T=!1,M(H),!x)if(n(h)!==null)x=!0,ue(K);else{var Y=n(f);Y!==null&&Me(j,Y.startTime-H)}}function K(H,Y){x=!1,T&&(T=!1,L(S),S=-1),w=!0;var $=b;try{for(M(Y),y=n(h);y!==null&&(!(y.expirationTime>Y)||H&&!_e());){var N=y.callback;if(typeof N=="function"){y.callback=null,b=y.priorityLevel;var q=N(y.expirationTime<=Y);Y=e.unstable_now(),typeof q=="function"?y.callback=q:y===n(h)&&a(h),M(Y)}else a(h);y=n(h)}if(y!==null)var xe=!0;else{var Ae=n(f);Ae!==null&&Me(j,Ae.startTime-Y),xe=!1}return xe}finally{y=null,b=$,w=!1}}var G=!1,W=null,S=-1,Z=5,X=-1;function _e(){return!(e.unstable_now()-X<Z)}function oe(){if(W!==null){var H=e.unstable_now();X=H;var Y=!0;try{Y=W(!0,H)}finally{Y?Re():(G=!1,W=null)}}else G=!1}var Re;if(typeof D=="function")Re=function(){D(oe)};else if(typeof MessageChannel<"u"){var fe=new MessageChannel,ce=fe.port2;fe.port1.onmessage=oe,Re=function(){ce.postMessage(null)}}else Re=function(){P(oe,0)};function ue(H){W=H,G||(G=!0,Re())}function Me(H,Y){S=P(function(){H(e.unstable_now())},Y)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(H){H.callback=null},e.unstable_continueExecution=function(){x||w||(x=!0,ue(K))},e.unstable_forceFrameRate=function(H){0>H||125<H?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):Z=0<H?Math.floor(1e3/H):5},e.unstable_getCurrentPriorityLevel=function(){return b},e.unstable_getFirstCallbackNode=function(){return n(h)},e.unstable_next=function(H){switch(b){case 1:case 2:case 3:var Y=3;break;default:Y=b}var $=b;b=Y;try{return H()}finally{b=$}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(H,Y){switch(H){case 1:case 2:case 3:case 4:case 5:break;default:H=3}var $=b;b=H;try{return Y()}finally{b=$}},e.unstable_scheduleCallback=function(H,Y,$){var N=e.unstable_now();switch(typeof $=="object"&&$!==null?($=$.delay,$=typeof $=="number"&&0<$?N+$:N):$=N,H){case 1:var q=-1;break;case 2:q=250;break;case 5:q=1073741823;break;case 4:q=1e4;break;default:q=5e3}return q=$+q,H={id:m++,callback:Y,priorityLevel:H,startTime:$,expirationTime:q,sortIndex:-1},$>N?(H.sortIndex=$,t(f,H),n(h)===null&&H===n(f)&&(T?(L(S),S=-1):T=!0,Me(j,$-N))):(H.sortIndex=q,t(h,H),x||w||(x=!0,ue(K))),H},e.unstable_shouldYield=_e,e.unstable_wrapCallback=function(H){var Y=b;return function(){var $=b;b=Y;try{return H.apply(this,arguments)}finally{b=$}}}})(hh)),hh}var Ay;function hP(){return Ay||(Ay=1,dh.exports=dP()),dh.exports}var Ly;function fP(){if(Ly)return yn;Ly=1;var e=$f(),t=hP();function n(r){for(var i="https://reactjs.org/docs/error-decoder.html?invariant="+r,l=1;l<arguments.length;l++)i+="&args[]="+encodeURIComponent(arguments[l]);return"Minified React error #"+r+"; visit "+i+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var a=new Set,s={};function o(r,i){u(r,i),u(r+"Capture",i)}function u(r,i){for(s[r]=i,r=0;r<i.length;r++)a.add(i[r])}var c=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),h=Object.prototype.hasOwnProperty,f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,m={},y={};function b(r){return h.call(y,r)?!0:h.call(m,r)?!1:f.test(r)?y[r]=!0:(m[r]=!0,!1)}function w(r,i,l,d){if(l!==null&&l.type===0)return!1;switch(typeof i){case"function":case"symbol":return!0;case"boolean":return d?!1:l!==null?!l.acceptsBooleans:(r=r.toLowerCase().slice(0,5),r!=="data-"&&r!=="aria-");default:return!1}}function x(r,i,l,d){if(i===null||typeof i>"u"||w(r,i,l,d))return!0;if(d)return!1;if(l!==null)switch(l.type){case 3:return!i;case 4:return i===!1;case 5:return isNaN(i);case 6:return isNaN(i)||1>i}return!1}function T(r,i,l,d,p,g,_){this.acceptsBooleans=i===2||i===3||i===4,this.attributeName=d,this.attributeNamespace=p,this.mustUseProperty=l,this.propertyName=r,this.type=i,this.sanitizeURL=g,this.removeEmptyString=_}var P={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(r){P[r]=new T(r,0,!1,r,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(r){var i=r[0];P[i]=new T(i,1,!1,r[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(r){P[r]=new T(r,2,!1,r.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(r){P[r]=new T(r,2,!1,r,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(r){P[r]=new T(r,3,!1,r.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(r){P[r]=new T(r,3,!0,r,null,!1,!1)}),["capture","download"].forEach(function(r){P[r]=new T(r,4,!1,r,null,!1,!1)}),["cols","rows","size","span"].forEach(function(r){P[r]=new T(r,6,!1,r,null,!1,!1)}),["rowSpan","start"].forEach(function(r){P[r]=new T(r,5,!1,r.toLowerCase(),null,!1,!1)});var L=/[\-:]([a-z])/g;function D(r){return r[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(r){var i=r.replace(L,D);P[i]=new T(i,1,!1,r,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(r){var i=r.replace(L,D);P[i]=new T(i,1,!1,r,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(r){var i=r.replace(L,D);P[i]=new T(i,1,!1,r,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(r){P[r]=new T(r,1,!1,r.toLowerCase(),null,!1,!1)}),P.xlinkHref=new T("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(r){P[r]=new T(r,1,!1,r.toLowerCase(),null,!0,!0)});function M(r,i,l,d){var p=P.hasOwnProperty(i)?P[i]:null;(p!==null?p.type!==0:d||!(2<i.length)||i[0]!=="o"&&i[0]!=="O"||i[1]!=="n"&&i[1]!=="N")&&(x(i,l,p,d)&&(l=null),d||p===null?b(i)&&(l===null?r.removeAttribute(i):r.setAttribute(i,""+l)):p.mustUseProperty?r[p.propertyName]=l===null?p.type===3?!1:"":l:(i=p.attributeName,d=p.attributeNamespace,l===null?r.removeAttribute(i):(p=p.type,l=p===3||p===4&&l===!0?"":""+l,d?r.setAttributeNS(d,i,l):r.setAttribute(i,l))))}var j=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,K=Symbol.for("react.element"),G=Symbol.for("react.portal"),W=Symbol.for("react.fragment"),S=Symbol.for("react.strict_mode"),Z=Symbol.for("react.profiler"),X=Symbol.for("react.provider"),_e=Symbol.for("react.context"),oe=Symbol.for("react.forward_ref"),Re=Symbol.for("react.suspense"),fe=Symbol.for("react.suspense_list"),ce=Symbol.for("react.memo"),ue=Symbol.for("react.lazy"),Me=Symbol.for("react.offscreen"),H=Symbol.iterator;function Y(r){return r===null||typeof r!="object"?null:(r=H&&r[H]||r["@@iterator"],typeof r=="function"?r:null)}var $=Object.assign,N;function q(r){if(N===void 0)try{throw Error()}catch(l){var i=l.stack.trim().match(/\n( *(at )?)/);N=i&&i[1]||""}return`
3
3
  `+N+r}var xe=!1;function Ae(r,i){if(!r||xe)return"";xe=!0;var l=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(i)if(i=function(){throw Error()},Object.defineProperty(i.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(i,[])}catch(z){var d=z}Reflect.construct(r,[],i)}else{try{i.call()}catch(z){d=z}r.call(i.prototype)}else{try{throw Error()}catch(z){d=z}r()}}catch(z){if(z&&d&&typeof z.stack=="string"){for(var p=z.stack.split(`
4
4
  `),g=d.stack.split(`
@@ -39,7 +39,7 @@ Please change the parent <Route path="${P}"> to <Route path="${P==="/"?"*":`${P}
39
39
  `))}logResponse(e,t,n,a,s){if(!this.enabled)return;const o=[`← ${e} ${t} ${n} (${a}ms)`],u=Dv(ko(s));if(u){const c=u.length>1e3?u.slice(0,1e3)+"... [truncated]":u;o.push(` Body: ${c}`)}n>=400?this.error(o.join(`
40
40
  `)):this.log(o.join(`
41
41
  `))}},pp="insforge_csrf_token";function j_(){if(typeof document>"u")return null;const e=document.cookie.split(";").find(t=>t.trim().startsWith(`${pp}=`));return e&&e.split("=")[1]||null}function U_(e){if(typeof document>"u")return;const t=10080*60,n=typeof window<"u"&&window.location.protocol==="https:"?"; Secure":"";document.cookie=`${pp}=${encodeURIComponent(e)}; path=/; max-age=${t}; SameSite=Lax${n}`}function B_(){if(typeof document>"u")return;const e=typeof window<"u"&&window.location.protocol==="https:"?"; Secure":"";document.cookie=`${pp}=; path=/; max-age=0; SameSite=Lax${e}`}var F_=class{constructor(){this.accessToken=null,this.user=null,this.onTokenChange=null}saveSession(e){const t=e.accessToken!==this.accessToken;this.accessToken=e.accessToken,this.user=e.user,t&&this.onTokenChange&&this.onTokenChange()}getSession(){return!this.accessToken||!this.user?null:{accessToken:this.accessToken,user:this.user}}getAccessToken(){return this.accessToken}setAccessToken(e){const t=e!==this.accessToken;this.accessToken=e,t&&this.onTokenChange&&this.onTokenChange()}getUser(){return this.user}setUser(e){this.user=e}clearSession(){const e=this.accessToken!==null;this.accessToken=null,this.user=null,e&&this.onTokenChange&&this.onTokenChange()}},GR=new Set([500,502,503,504]),YR=new Set(["GET","HEAD","PUT","DELETE","OPTIONS"]),ZR=class{constructor(e,t,n){if(this.userToken=null,this.autoRefreshToken=!0,this.isRefreshing=!1,this.refreshPromise=null,this.refreshToken=null,this.baseUrl=e.baseUrl||"http://localhost:7130",this.autoRefreshToken=e.autoRefreshToken??!0,this.fetch=e.fetch||(globalThis.fetch?globalThis.fetch.bind(globalThis):void 0),this.anonKey=e.anonKey,this.defaultHeaders={...e.headers},this.tokenManager=t??new F_,this.logger=n||new I_(!1),this.timeout=e.timeout??3e4,this.retryCount=e.retryCount??3,this.retryDelay=e.retryDelay??500,!this.fetch)throw new Error("Fetch is not available. Please provide a fetch implementation in the config.")}buildUrl(e,t){const n=new URL(e,this.baseUrl);return t&&Object.entries(t).forEach(([a,s])=>{if(a==="select"){let o=s.replace(/\s+/g," ").trim();o=o.replace(/\s*\(\s*/g,"(").replace(/\s*\)\s*/g,")").replace(/\(\s+/g,"(").replace(/\s+\)/g,")").replace(/,\s+(?=[^()]*\))/g,","),n.searchParams.append(a,o)}else n.searchParams.append(a,s)}),n.toString()}isRetryableStatus(e){return GR.has(e)}computeRetryDelay(e){const n=this.retryDelay*Math.pow(2,e-1)*(.85+Math.random()*.3);return Math.round(n)}async handleRequest(e,t,n={}){const{params:a,headers:s={},body:o,signal:u,...c}=n,h=this.buildUrl(t,a),f=Date.now(),y=YR.has(e.toUpperCase())||n.idempotent===!0?this.retryCount:0,b={...this.defaultHeaders},w=this.userToken||this.anonKey;w&&(b.Authorization=`Bearer ${w}`);let x;o!==void 0&&(typeof FormData<"u"&&o instanceof FormData?x=o:(e!=="GET"&&(b["Content-Type"]="application/json;charset=UTF-8"),x=JSON.stringify(o))),s instanceof Headers?s.forEach((P,L)=>{b[L]=P}):Array.isArray(s)?s.forEach(([P,L])=>{b[P]=L}):Object.assign(b,s),this.logger.logRequest(e,h,b,x);let T;for(let P=0;P<=y;P++){if(P>0){const M=this.computeRetryDelay(P);if(this.logger.warn(`Retry ${P}/${y} for ${e} ${h} in ${M}ms`),u?.aborted)throw u.reason;await new Promise((j,K)=>{const G=()=>{clearTimeout(W),K(u.reason)},W=setTimeout(()=>{u&&u.removeEventListener("abort",G),j()},M);u&&u.addEventListener("abort",G,{once:!0})})}let L,D;if((this.timeout>0||u)&&(L=new AbortController,this.timeout>0&&(D=setTimeout(()=>L.abort(),this.timeout)),u))if(u.aborted)L.abort(u.reason);else{const M=()=>L.abort(u.reason);u.addEventListener("abort",M,{once:!0}),L.signal.addEventListener("abort",()=>{u.removeEventListener("abort",M)},{once:!0})}try{const M=await this.fetch(h,{method:e,headers:b,body:x,...c,...L?{signal:L.signal}:{}});if(this.isRetryableStatus(M.status)&&P<y){D!==void 0&&clearTimeout(D),await M.body?.cancel(),T=new We(`Server error: ${M.status} ${M.statusText}`,M.status,"SERVER_ERROR");continue}if(M.status===204){D!==void 0&&clearTimeout(D);return}let j;const K=M.headers.get("content-type");try{K?.includes("json")?j=await M.json():j=await M.text()}catch(G){throw D!==void 0&&clearTimeout(D),new We(`Failed to parse response body: ${G?.message||"Unknown error"}`,M.status,M.ok?"PARSE_ERROR":"REQUEST_FAILED")}if(D!==void 0&&clearTimeout(D),!M.ok){if(this.logger.logResponse(e,h,M.status,Date.now()-f,j),j&&typeof j=="object"&&"error"in j){!j.statusCode&&!j.status&&(j.statusCode=M.status);const G=We.fromApiError(j);throw Object.keys(j).forEach(W=>{W!=="error"&&W!=="message"&&W!=="statusCode"&&(G[W]=j[W])}),G}throw new We(`Request failed: ${M.statusText}`,M.status,"REQUEST_FAILED")}return this.logger.logResponse(e,h,M.status,Date.now()-f,j),j}catch(M){if(D!==void 0&&clearTimeout(D),M?.name==="AbortError")throw L&&L.signal.aborted&&this.timeout>0&&!u?.aborted?new We(`Request timed out after ${this.timeout}ms`,408,"REQUEST_TIMEOUT"):M;if(M instanceof We)throw M;if(P<y){T=M;continue}throw new We(`Network request failed: ${M?.message||"Unknown error"}`,0,"NETWORK_ERROR")}}throw T||new We("Request failed after all retry attempts",0,"NETWORK_ERROR")}async request(e,t,n={}){try{return await this.handleRequest(e,t,{...n})}catch(a){if(a instanceof We&&a.statusCode===401&&a.error==="INVALID_TOKEN"&&this.autoRefreshToken)try{const s=await this.handleTokenRefresh();return this.setAuthToken(s.accessToken),this.tokenManager.saveSession(s),s.csrfToken&&U_(s.csrfToken),s.refreshToken&&this.setRefreshToken(s.refreshToken),await this.handleRequest(e,t,{...n})}catch(s){throw this.tokenManager.clearSession(),this.userToken=null,this.refreshToken=null,B_(),s}throw a}}get(e,t){return this.request("GET",e,t)}post(e,t,n){return this.request("POST",e,{...n,body:t})}put(e,t,n){return this.request("PUT",e,{...n,body:t})}patch(e,t,n){return this.request("PATCH",e,{...n,body:t})}delete(e,t){return this.request("DELETE",e,t)}setAuthToken(e){this.userToken=e}setRefreshToken(e){this.refreshToken=e}getHeaders(){const e={...this.defaultHeaders},t=this.userToken||this.anonKey;return t&&(e.Authorization=`Bearer ${t}`),e}async handleTokenRefresh(){return this.isRefreshing?this.refreshPromise:(this.isRefreshing=!0,this.refreshPromise=(async()=>{try{const e=j_(),t=this.refreshToken?{refreshToken:this.refreshToken}:void 0;return await this.handleRequest("POST","/api/auth/sessions/current",{body:t,headers:e?{"X-CSRF-Token":e}:{},credentials:"include"})}finally{this.isRefreshing=!1,this.refreshPromise=null}})(),this.refreshPromise)}},hf="insforge_pkce_verifier";function V_(e){return btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function QR(){const e=new Uint8Array(32);return crypto.getRandomValues(e),V_(e)}async function XR(e){const n=new TextEncoder().encode(e),a=await crypto.subtle.digest("SHA-256",n);return V_(new Uint8Array(a))}function JR(e){typeof sessionStorage<"u"&&sessionStorage.setItem(hf,e)}function eA(){if(typeof sessionStorage>"u")return null;const e=sessionStorage.getItem(hf);return e&&sessionStorage.removeItem(hf),e}function kn(e,t){return e instanceof We?{data:null,error:e}:{data:null,error:new We(e instanceof Error?e.message:t,500,"UNEXPECTED_ERROR")}}function Mv(...e){if(typeof window>"u")return;const t=new URL(window.location.href);e.forEach(n=>t.searchParams.delete(n)),window.history.replaceState({},document.title,t.toString())}var tA=class{constructor(e,t,n={}){this.http=e,this.tokenManager=t,this.options=n,this.authCallbackHandled=this.detectAuthCallback()}isServerMode(){return!!this.options.isServerMode}saveSessionFromResponse(e){if(!e.accessToken||!e.user)return!1;const t={accessToken:e.accessToken,user:e.user};return!this.isServerMode()&&e.csrfToken&&U_(e.csrfToken),this.isServerMode()||this.tokenManager.saveSession(t),this.http.setAuthToken(e.accessToken),this.http.setRefreshToken(e.refreshToken??null),!0}async detectAuthCallback(){if(!(this.isServerMode()||typeof window>"u"))try{const e=new URLSearchParams(window.location.search),t=e.get("error");if(t){Mv("error"),console.debug("OAuth callback error:",t);return}const n=e.get("insforge_code");if(n){Mv("insforge_code");const{error:a}=await this.exchangeOAuthCode(n);a&&console.debug("OAuth code exchange failed:",a.message);return}}catch(e){console.debug("OAuth callback detection skipped:",e)}}async signUp(e){try{const t=await this.http.post(this.isServerMode()?"/api/auth/users?client_type=mobile":"/api/auth/users",e,{credentials:"include"});return t.accessToken&&t.user&&this.saveSessionFromResponse(t),t.refreshToken&&this.http.setRefreshToken(t.refreshToken),{data:t,error:null}}catch(t){return kn(t,"An unexpected error occurred during sign up")}}async signInWithPassword(e){try{const t=await this.http.post(this.isServerMode()?"/api/auth/sessions?client_type=mobile":"/api/auth/sessions",e,{credentials:"include"});return this.saveSessionFromResponse(t),t.refreshToken&&this.http.setRefreshToken(t.refreshToken),{data:t,error:null}}catch(t){return kn(t,"An unexpected error occurred during sign in")}}async signOut(){try{try{await this.http.post(this.isServerMode()?"/api/auth/logout?client_type=mobile":"/api/auth/logout",void 0,{credentials:"include"})}catch{}return this.tokenManager.clearSession(),this.http.setAuthToken(null),this.http.setRefreshToken(null),this.isServerMode()||B_(),{error:null}}catch{return{error:new We("Failed to sign out",500,"SIGNOUT_ERROR")}}}async signInWithOAuth(e){try{const{provider:t,redirectTo:n,skipBrowserRedirect:a}=e,s=encodeURIComponent(t.toLowerCase()),o=QR(),u=await XR(o);JR(o);const c={code_challenge:u};n&&(c.redirect_uri=n);const f=yc.options.includes(s)?`/api/auth/oauth/${s}`:`/api/auth/oauth/custom/${s}`,m=await this.http.get(f,{params:c});return!this.isServerMode()&&typeof window<"u"&&!a?(window.location.href=m.authUrl,{data:{},error:null}):{data:{url:m.authUrl,provider:s,codeVerifier:o},error:null}}catch(t){return t instanceof We?{data:{},error:t}:{data:{},error:new We("An unexpected error occurred during OAuth initialization",500,"UNEXPECTED_ERROR")}}}async exchangeOAuthCode(e,t){try{const n=t??eA();if(!n)return{data:null,error:new We("PKCE code verifier not found. Ensure signInWithOAuth was called in the same browser session.",400,"PKCE_VERIFIER_MISSING")};const a={code:e,code_verifier:n},s=await this.http.post(this.isServerMode()?"/api/auth/oauth/exchange?client_type=mobile":"/api/auth/oauth/exchange",a,{credentials:"include"});return this.saveSessionFromResponse(s),{data:s,error:null}}catch(n){return kn(n,"An unexpected error occurred during OAuth code exchange")}}async signInWithIdToken(e){try{const{provider:t,token:n}=e,a=await this.http.post("/api/auth/id-token?client_type=mobile",{provider:t,token:n},{credentials:"include"});return this.saveSessionFromResponse(a),a.refreshToken&&this.http.setRefreshToken(a.refreshToken),{data:a,error:null}}catch(t){return kn(t,"An unexpected error occurred during ID token sign in")}}async refreshSession(e){try{if(this.isServerMode()&&!e?.refreshToken)return{data:null,error:new We("refreshToken is required when refreshing session in server mode",400,"REFRESH_TOKEN_REQUIRED")};const t=this.isServerMode()?null:j_(),n=await this.http.post(this.isServerMode()?"/api/auth/refresh?client_type=mobile":"/api/auth/refresh",this.isServerMode()?{refresh_token:e?.refreshToken}:void 0,{headers:t?{"X-CSRF-Token":t}:{},credentials:"include"});return n.accessToken&&this.saveSessionFromResponse(n),{data:n,error:null}}catch(t){return kn(t,"An unexpected error occurred during session refresh")}}async getCurrentUser(){await this.authCallbackHandled;try{if(this.isServerMode()){const t=this.tokenManager.getAccessToken();return t?(this.http.setAuthToken(t),{data:{user:(await this.http.get("/api/auth/sessions/current")).user??null},error:null}):{data:{user:null},error:null}}const e=this.tokenManager.getSession();if(e)return this.http.setAuthToken(e.accessToken),{data:{user:e.user},error:null};if(typeof window<"u"){const{data:t,error:n}=await this.refreshSession();if(n)return{data:{user:null},error:n};if(t?.accessToken)return{data:{user:t.user??null},error:null}}return{data:{user:null},error:null}}catch(e){return e instanceof We?{data:{user:null},error:e}:{data:{user:null},error:new We("An unexpected error occurred while getting user",500,"UNEXPECTED_ERROR")}}}async getProfile(e){try{return{data:await this.http.get(`/api/auth/profiles/${e}`),error:null}}catch(t){return kn(t,"An unexpected error occurred while fetching user profile")}}async setProfile(e){try{const t=await this.http.patch("/api/auth/profiles/current",{profile:e}),n=this.tokenManager.getUser();return!this.isServerMode()&&n&&t.profile!==void 0&&this.tokenManager.setUser({...n,profile:t.profile}),{data:t,error:null}}catch(t){return kn(t,"An unexpected error occurred while updating user profile")}}async resendVerificationEmail(e){try{return{data:await this.http.post("/api/auth/email/send-verification",e),error:null}}catch(t){return kn(t,"An unexpected error occurred while sending verification email")}}async verifyEmail(e){try{const t=await this.http.post(this.isServerMode()?"/api/auth/email/verify?client_type=mobile":"/api/auth/email/verify",e,{credentials:"include"});return this.saveSessionFromResponse(t),t.refreshToken&&this.http.setRefreshToken(t.refreshToken),{data:t,error:null}}catch(t){return kn(t,"An unexpected error occurred while verifying email")}}async sendResetPasswordEmail(e){try{return{data:await this.http.post("/api/auth/email/send-reset-password",e),error:null}}catch(t){return kn(t,"An unexpected error occurred while sending password reset email")}}async exchangeResetPasswordToken(e){try{return{data:await this.http.post("/api/auth/email/exchange-reset-password-token",e),error:null}}catch(t){return kn(t,"An unexpected error occurred while verifying reset code")}}async resetPassword(e){try{return{data:await this.http.post("/api/auth/email/reset-password",e),error:null}}catch(t){return kn(t,"An unexpected error occurred while resetting password")}}async getPublicAuthConfig(){try{return{data:await this.http.get("/api/auth/public-config"),error:null}}catch(e){return kn(e,"An unexpected error occurred while fetching auth configuration")}}};function nA(e,t){return async(n,a)=>{const s=typeof n=="string"?n:n.toString(),o=new URL(s),u=o.pathname.slice(1),c=u.match(/^rpc\/(.+)$/),h=c?`/api/database/rpc/${c[1]}`:`/api/database/records/${u}`,f=`${e.baseUrl}${h}${o.search}`,m=t.getAccessToken(),y=e.getHeaders(),b=m||y.Authorization?.replace("Bearer ",""),w=new Headers(a?.headers);return b&&!w.has("Authorization")&&w.set("Authorization",`Bearer ${b}`),await fetch(f,{...a,headers:w})}}var rA=class{constructor(e,t){this.postgrest=new QE("http://dummy",{fetch:nA(e,t),headers:{}})}from(e){return this.postgrest.from(e)}rpc(e,t,n){return this.postgrest.rpc(e,t,n)}},aA=class{constructor(e,t){this.bucketName=e,this.http=t}async upload(e,t){try{const n=await this.http.post(`/api/storage/buckets/${this.bucketName}/upload-strategy`,{filename:e,contentType:t.type||"application/octet-stream",size:t.size});if(n.method==="presigned")return await this.uploadWithPresignedUrl(n,t);if(n.method==="direct"){const a=new FormData;return a.append("file",t),{data:await this.http.request("PUT",`/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(e)}`,{body:a,headers:{}}),error:null}}throw new We(`Unsupported upload method: ${n.method}`,500,"STORAGE_ERROR")}catch(n){return{data:null,error:n instanceof We?n:new We("Upload failed",500,"STORAGE_ERROR")}}}async uploadAuto(e){try{const t=e instanceof File?e.name:"file",n=await this.http.post(`/api/storage/buckets/${this.bucketName}/upload-strategy`,{filename:t,contentType:e.type||"application/octet-stream",size:e.size});if(n.method==="presigned")return await this.uploadWithPresignedUrl(n,e);if(n.method==="direct"){const a=new FormData;return a.append("file",e),{data:await this.http.request("POST",`/api/storage/buckets/${this.bucketName}/objects`,{body:a,headers:{}}),error:null}}throw new We(`Unsupported upload method: ${n.method}`,500,"STORAGE_ERROR")}catch(t){return{data:null,error:t instanceof We?t:new We("Upload failed",500,"STORAGE_ERROR")}}}async uploadWithPresignedUrl(e,t){try{const n=new FormData;e.fields&&Object.entries(e.fields).forEach(([s,o])=>{n.append(s,o)}),n.append("file",t);const a=await fetch(e.uploadUrl,{method:"POST",body:n});if(!a.ok)throw new We(`Upload to storage failed: ${a.statusText}`,a.status,"STORAGE_ERROR");return e.confirmRequired&&e.confirmUrl?{data:await this.http.post(e.confirmUrl,{size:t.size,contentType:t.type||"application/octet-stream"}),error:null}:{data:{key:e.key,bucket:this.bucketName,size:t.size,mimeType:t.type||"application/octet-stream",uploadedAt:new Date().toISOString(),url:this.getPublicUrl(e.key)},error:null}}catch(n){throw n instanceof We?n:new We("Presigned upload failed",500,"STORAGE_ERROR")}}async download(e){try{const t=await this.http.post(`/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(e)}/download-strategy`,{expiresIn:3600}),n=t.url,a={};t.method==="direct"&&Object.assign(a,this.http.getHeaders());const s=await fetch(n,{method:"GET",headers:a});if(!s.ok)try{const u=await s.json();throw We.fromApiError(u)}catch{throw new We(`Download failed: ${s.statusText}`,s.status,"STORAGE_ERROR")}return{data:await s.blob(),error:null}}catch(t){return{data:null,error:t instanceof We?t:new We("Download failed",500,"STORAGE_ERROR")}}}getPublicUrl(e){return`${this.http.baseUrl}/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(e)}`}async list(e){try{const t={};return e?.prefix&&(t.prefix=e.prefix),e?.search&&(t.search=e.search),e?.limit&&(t.limit=e.limit.toString()),e?.offset&&(t.offset=e.offset.toString()),{data:await this.http.get(`/api/storage/buckets/${this.bucketName}/objects`,{params:t}),error:null}}catch(t){return{data:null,error:t instanceof We?t:new We("List failed",500,"STORAGE_ERROR")}}}async remove(e){try{return{data:await this.http.delete(`/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(e)}`),error:null}}catch(t){return{data:null,error:t instanceof We?t:new We("Delete failed",500,"STORAGE_ERROR")}}}},iA=class{constructor(e){this.http=e}from(e){return new aA(e,this.http)}},sA=class{constructor(e){this.http=e,this.chat=new oA(e),this.images=new cA(e),this.embeddings=new uA(e)}},oA=class{constructor(e){this.completions=new lA(e)}},lA=class{constructor(e){this.http=e}async create(e){const t={model:e.model,messages:e.messages,temperature:e.temperature,maxTokens:e.maxTokens,topP:e.topP,stream:e.stream,webSearch:e.webSearch,fileParser:e.fileParser,thinking:e.thinking,tools:e.tools,toolChoice:e.toolChoice,parallelToolCalls:e.parallelToolCalls};if(e.stream){const s=this.http.getHeaders();s["Content-Type"]="application/json";const o=await this.http.fetch(`${this.http.baseUrl}/api/ai/chat/completion`,{method:"POST",headers:s,body:JSON.stringify(t)});if(!o.ok){const u=await o.json();throw new Error(u.error||"Stream request failed")}return this.parseSSEStream(o,e.model)}const n=await this.http.post("/api/ai/chat/completion",t),a=n.text||"";return{id:`chatcmpl-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:n.metadata?.model,choices:[{index:0,message:{role:"assistant",content:a,...n.tool_calls?.length&&{tool_calls:n.tool_calls},...n.annotations?.length&&{annotations:n.annotations}},finish_reason:n.tool_calls?.length?"tool_calls":"stop"}],usage:n.metadata?.usage||{prompt_tokens:0,completion_tokens:0,total_tokens:0}}}async*parseSSEStream(e,t){const n=e.body.getReader(),a=new TextDecoder;let s="";try{for(;;){const{done:o,value:u}=await n.read();if(o)break;s+=a.decode(u,{stream:!0});const c=s.split(`
42
- `);s=c.pop()||"";for(const h of c)if(h.startsWith("data: ")){const f=h.slice(6).trim();if(f)try{const m=JSON.parse(f);if((m.chunk||m.content)&&(yield{id:`chatcmpl-${Date.now()}`,object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:t,choices:[{index:0,delta:{content:m.chunk||m.content},finish_reason:null}]}),m.tool_calls?.length&&(yield{id:`chatcmpl-${Date.now()}`,object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:t,choices:[{index:0,delta:{tool_calls:m.tool_calls},finish_reason:"tool_calls"}]}),m.done){n.releaseLock();return}}catch{console.warn("Failed to parse SSE data:",f)}}}}finally{n.releaseLock()}}},uA=class{constructor(e){this.http=e}async create(e){const t=await this.http.post("/api/ai/embeddings",e);return{object:t.object,data:t.data,model:t.metadata?.model,usage:t.metadata?.usage?{prompt_tokens:t.metadata.usage.promptTokens||0,total_tokens:t.metadata.usage.totalTokens||0}:{prompt_tokens:0,total_tokens:0}}}},cA=class{constructor(e){this.http=e}async generate(e){const t=await this.http.post("/api/ai/image/generation",e);let n=[];return t.images&&t.images.length>0?n=t.images.map(a=>({b64_json:a.imageUrl.replace(/^data:image\/\w+;base64,/,""),content:t.text})):t.text&&(n=[{content:t.text}]),{created:Math.floor(Date.now()/1e3),data:n,...t.metadata?.usage&&{usage:{total_tokens:t.metadata.usage.totalTokens||0,input_tokens:t.metadata.usage.promptTokens||0,output_tokens:t.metadata.usage.completionTokens||0}}}}},dA=class z_{constructor(t,n){this.http=t,this.functionsUrl=n||z_.deriveSubhostingUrl(t.baseUrl)}static deriveSubhostingUrl(t){try{const{hostname:n}=new URL(t);return n.endsWith(".insforge.app")?`https://${n.split(".")[0]}.functions.insforge.app`:void 0}catch{return}}async invoke(t,n={}){const{method:a="POST",body:s,headers:o={}}=n;if(this.functionsUrl)try{return{data:await this.http.request(a,`${this.functionsUrl}/${t}`,{body:s,headers:o}),error:null}}catch(u){if(u instanceof Error&&u.name==="AbortError")throw u;if(!(u instanceof We&&u.statusCode===404))return{data:null,error:u instanceof We?u:new We(u instanceof Error?u.message:"Function invocation failed",500,"FUNCTION_ERROR")}}try{const u=`/functions/${t}`;return{data:await this.http.request(a,u,{body:s,headers:o}),error:null}}catch(u){if(u instanceof Error&&u.name==="AbortError")throw u;return{data:null,error:u instanceof We?u:new We(u instanceof Error?u.message:"Function invocation failed",500,"FUNCTION_ERROR")}}}},Nv=1e4,hA=class{constructor(e,t,n){this.socket=null,this.connectPromise=null,this.subscribedChannels=new Set,this.eventListeners=new Map,this.baseUrl=e,this.tokenManager=t,this.anonKey=n,this.tokenManager.onTokenChange=()=>this.onTokenChange()}notifyListeners(e,t){const n=this.eventListeners.get(e);if(n)for(const a of n)try{a(t)}catch(s){console.error(`Error in ${e} callback:`,s)}}connect(){return this.socket?.connected?Promise.resolve():this.connectPromise?this.connectPromise:(this.connectPromise=new Promise((e,t)=>{const n=this.tokenManager.getAccessToken()??this.anonKey;this.socket=Cu(this.baseUrl,{transports:["websocket"],auth:n?{token:n}:void 0});let a=!0,s=null;const o=()=>{s&&(clearTimeout(s),s=null)};s=setTimeout(()=>{a&&(a=!1,this.connectPromise=null,this.socket?.disconnect(),this.socket=null,t(new Error(`Connection timeout after ${Nv}ms`)))},Nv),this.socket.on("connect",()=>{o();for(const u of this.subscribedChannels)this.socket.emit("realtime:subscribe",{channel:u});this.notifyListeners("connect"),a&&(a=!1,this.connectPromise=null,e())}),this.socket.on("connect_error",u=>{o(),this.notifyListeners("connect_error",u),a&&(a=!1,this.connectPromise=null,t(u))}),this.socket.on("disconnect",u=>{this.notifyListeners("disconnect",u)}),this.socket.on("realtime:error",u=>{this.notifyListeners("error",u)}),this.socket.onAny((u,c)=>{u!=="realtime:error"&&this.notifyListeners(u,c)})}),this.connectPromise)}disconnect(){this.socket&&(this.socket.disconnect(),this.socket=null),this.subscribedChannels.clear()}onTokenChange(){const e=this.tokenManager.getAccessToken()??this.anonKey;this.socket&&(this.socket.auth=e?{token:e}:{}),this.socket&&(this.socket.connected||this.connectPromise)&&(this.socket.disconnect(),this.socket.connect())}get isConnected(){return this.socket?.connected??!1}get connectionState(){return this.socket?this.socket.connected?"connected":"connecting":"disconnected"}get socketId(){return this.socket?.id}async subscribe(e){if(this.subscribedChannels.has(e))return{ok:!0,channel:e};if(!this.socket?.connected)try{await this.connect()}catch(t){const n=t instanceof Error?t.message:"Connection failed";return{ok:!1,channel:e,error:{code:"CONNECTION_FAILED",message:n}}}return new Promise(t=>{this.socket.emit("realtime:subscribe",{channel:e},n=>{n.ok&&this.subscribedChannels.add(e),t(n)})})}unsubscribe(e){this.subscribedChannels.delete(e),this.socket?.connected&&this.socket.emit("realtime:unsubscribe",{channel:e})}async publish(e,t,n){if(!this.socket?.connected)throw new Error("Not connected to realtime server. Call connect() first.");this.socket.emit("realtime:publish",{channel:e,event:t,payload:n})}on(e,t){this.eventListeners.has(e)||this.eventListeners.set(e,new Set),this.eventListeners.get(e).add(t)}off(e,t){const n=this.eventListeners.get(e);n&&(n.delete(t),n.size===0&&this.eventListeners.delete(e))}once(e,t){const n=a=>{this.off(e,n),t(a)};this.on(e,n)}getSubscribedChannels(){return Array.from(this.subscribedChannels)}},fA=class{constructor(e){this.http=e}async send(e){try{return{data:await this.http.post("/api/email/send-raw",e),error:null}}catch(t){if(t instanceof Error&&t.name==="AbortError")throw t;return{data:null,error:t instanceof We?t:new We(t instanceof Error?t.message:"Email send failed",500,"EMAIL_ERROR")}}}},pA=class{constructor(e={}){const t=new I_(e.debug);this.tokenManager=new F_,this.http=new ZR(e,this.tokenManager,t),e.edgeFunctionToken&&(this.http.setAuthToken(e.edgeFunctionToken),this.tokenManager.setAccessToken(e.edgeFunctionToken)),this.auth=new tA(this.http,this.tokenManager,{isServerMode:e.isServerMode??!1}),this.database=new rA(this.http,this.tokenManager),this.storage=new iA(this.http),this.ai=new sA(this.http),this.functions=new dA(this.http,e.functionsUrl),this.realtime=new hA(this.http.baseUrl,this.tokenManager,e.anonKey),this.emails=new fA(this.http)}getHttpClient(){return this.http}};function mA(e){return new pA(e)}const mp={VITE_INSFORGE_ANON_KEY:"ik_9f35735991b684f7cf57fa00bb4d0487",VITE_INSFORGE_BASE_URL:"https://srctyff5.us-east.insforge.app"};function fi(){const e=typeof import.meta<"u"?mp:void 0;return(e?.VITE_INSFORGE_BASE_URL||e?.VITE_TOKENTRACKER_BACKEND_BASE_URL||"").trim()}function $_(){if(typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"))return window.location.origin;const t=typeof import.meta<"u"?mp:void 0;return(t?.VITE_INSFORGE_BASE_URL||t?.VITE_TOKENTRACKER_BACKEND_BASE_URL||"").trim()}function _c(){const e=typeof import.meta<"u"?mp:void 0;return(e?.VITE_INSFORGE_ANON_KEY||e?.VITE_TOKENTRACKER_BACKEND_ANON_KEY||"").trim()}function ff(){return!!$_()}let Sh=null;function gA(){return ff()?(Sh||(Sh=mA({baseUrl:$_(),anonKey:_c()||void 0,autoRefreshToken:!0})),Sh):null}const H_="tokentracker_cloud_sync_enabled",yA="tokentracker_cloud_device_session_v1",gp="tokentracker_cloud_last_sync_ts";let yp=null;function vp(){try{localStorage.removeItem(yA)}catch{}}function vA(){if(typeof window>"u")return!1;const e=window.location.hostname;return e==="localhost"||e==="127.0.0.1"}function bA(){try{const e=localStorage.getItem(H_);return e===null||e===""?!1:e==="1"||e==="true"}catch{return!1}}function L4(e){try{localStorage.setItem(H_,e?"1":"0")}catch{}}function W_(){return vp(),yp}function _A(e){yp=e,vp()}function K_(){yp=null;try{localStorage.removeItem(gp)}catch{}vp()}function wA(){try{const e=Number(localStorage.getItem(gp));return Number.isFinite(e)?e:0}catch{return 0}}function q_(e){try{localStorage.setItem(gp,String(e))}catch{}}function Ea(e){if(typeof e!="string")return null;const t=e.trim();return t.length>0?t:null}function kA(e){const t=Ea(e);if(!t)return null;const n=t.split(".");if(n.length<2)return null;const a=n[1];try{const s=a.replace(/-/g,"+").replace(/_/g,"/").padEnd(a.length+(4-a.length%4)%4,"="),o=typeof atob=="function"?atob(s):Buffer.from(s,"base64").toString("utf8"),c=JSON.parse(o)?.exp;return typeof c!="number"||!Number.isFinite(c)||c<=0?null:Math.floor(c*1e3)}catch{return null}}function xA(e){const t=Ea(e);if(!t)return!1;const n=t.split(".");if(n.length!==3)return!1;try{for(let a=0;a<2;a++){const s=n[a];if(!/^[A-Za-z0-9_-]+$/.test(s))return!1;const o=s.replace(/-/g,"+").replace(/_/g,"/").padEnd(s.length+(4-s.length%4)%4,"="),u=typeof atob=="function"?atob(o):Buffer.from(o,"base64").toString("utf8");a===1&&JSON.parse(u)}return!0}catch{return!1}}function SA(e,t=3e4){const n=kA(e);return n?n<=Date.now()+Math.max(0,Number(t)||0):!1}async function PA(e){if(!e)return null;if(typeof e=="string")return Ea(e);if(typeof e=="function")try{const t=await e();return Ea(t)}catch{return null}if(typeof e=="object"){if(typeof e.getAccessToken=="function"){try{const t=await e.getAccessToken(),n=Ea(t);if(n)return n}catch{}return Ea(e.accessToken)}return null}return Ea(e)}async function D4(e,t={}){const n=Math.max(1,Math.min(12,Math.floor(Number(t.maxAttempts)||8))),a=Math.max(20,Math.floor(Number(t.baseDelayMs)||50));for(let s=0;s<n;s++){const o=await PA(e);if(o)return o;s<n-1&&await new Promise(u=>setTimeout(u,a*(s+1)))}return null}function M4(e){return typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1")||typeof e=="function"||e&&typeof e=="object"&&typeof e.getAccessToken=="function"?!0:!!Ea(e)}function N4(){if(typeof Intl>"u"||!Intl.DateTimeFormat)return null;try{return Intl.DateTimeFormat().resolvedOptions().timeZone||null}catch{return null}}function O4(e=new Date){const t=e instanceof Date?e:new Date(e);if(!Number.isFinite(t.getTime()))return 0;const n=t.getTimezoneOffset();return Number.isFinite(n)?-n:0}function G_(e){if(!Number.isFinite(e)||e===0)return"UTC";const t=e>=0?"+":"-",n=Math.abs(e),a=String(Math.floor(n/60)).padStart(2,"0"),s=String(n%60).padStart(2,"0");return`UTC${t}${a}:${s}`}function I4({timeZone:e,offsetMinutes:t}={}){const n=G_(t);return e&&e!=="UTC"?`${e} (${n})`:n}function j4({timeZone:e,offsetMinutes:t}={}){return Number.isFinite(t)?G_(t):e||"UTC"}function U4({timeZone:e,offsetMinutes:t,date:n=new Date}={}){const a=n instanceof Date?n:new Date(n);if(!Number.isFinite(a.getTime()))return"";if(e&&typeof Intl<"u"&&Intl.DateTimeFormat)try{const u=new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(a).reduce((m,y)=>(y.type&&y.value&&(m[y.type]=y.value),m),{}),c=u.year,h=u.month,f=u.day;if(c&&h&&f)return`${c}-${h}-${f}`}catch{}if(typeof t=="number"&&Number.isFinite(t)){const s=new Date(a.getTime()+t*6e4);return CA(s)}return EA(a)}function TA({timeZone:e,offsetMinutes:t,date:n=new Date}={}){const a=n instanceof Date?n:new Date(n);if(!Number.isFinite(a.getTime()))return null;if(e&&typeof Intl<"u"&&Intl.DateTimeFormat)try{const u=new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(a).reduce((m,y)=>(y.type&&y.value&&(m[y.type]=y.value),m),{}),c=Number(u.year),h=Number(u.month),f=Number(u.day);if(Number.isFinite(c)&&Number.isFinite(h)&&Number.isFinite(f))return{year:c,month:h,day:f}}catch{}if(typeof t=="number"&&Number.isFinite(t)){const s=new Date(a.getTime()+t*6e4);return{year:s.getUTCFullYear(),month:s.getUTCMonth()+1,day:s.getUTCDate()}}return{year:a.getFullYear(),month:a.getMonth()+1,day:a.getDate()}}function B4({timeZone:e,offsetMinutes:t}={}){return e?`tz:${e}`:typeof t=="number"&&Number.isFinite(t)?`offset:${Math.trunc(t)}`:"utc"}function CA(e){const t=e.getUTCFullYear(),n=String(e.getUTCMonth()+1).padStart(2,"0"),a=String(e.getUTCDate()).padStart(2,"0");return`${t}-${n}-${a}`}function EA(e){const t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return`${t}-${n}-${a}`}function yt(e){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())).toISOString().slice(0,10)}function xr(e){const t=e instanceof Date?e:new Date(e);if(!Number.isFinite(t.getTime()))return"";const n=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0");return`${n}-${a}-${s}`}function RA(e){if(!e)return null;const t=String(e).trim(),n=t.split("-");if(n.length!==3)return null;const a=Number(n[0]),s=Number(n[1])-1,o=Number(n[2]);if(!Number.isFinite(a)||!Number.isFinite(s)||!Number.isFinite(o))return null;const u=new Date(Date.UTC(a,s,o));return Number.isFinite(u.getTime())&&yt(u)===t?u:null}function AA(e){if(!e)return"";const t=e.year,n=String(e.month).padStart(2,"0"),a=String(e.day).padStart(2,"0");return!t||!n||!a?"":`${t}-${n}-${a}`}function LA(e,{timeZone:t,offsetMinutes:n,now:a}={}){const s=a instanceof Date&&Number.isFinite(a.getTime())?a:new Date,o=TA({timeZone:t,offsetMinutes:n,date:s});if(!o){const h=xr(new Date);return{from:h,to:h}}const u=AA(o),c=RA(u);if(!c)return{from:u,to:u};if(e==="day")return{from:u,to:u};if(e==="week"){const h=new Date(c),m=(h.getUTCDay()+6)%7;h.setUTCDate(h.getUTCDate()-m);const y=new Date(h);return y.setUTCDate(y.getUTCDate()+6),{from:yt(h),to:yt(y)}}if(e==="month"){const h=new Date(Date.UTC(c.getUTCFullYear(),c.getUTCMonth(),1)),f=new Date(Date.UTC(c.getUTCFullYear(),c.getUTCMonth()+1,0));return{from:yt(h),to:yt(f)}}if(e==="total"){const h=new Date(Date.UTC(c.getUTCFullYear(),c.getUTCMonth()-23,1));return{from:yt(h),to:u}}return LA("week")}function F4(e){if(e==null)return"-";try{if(typeof e=="bigint")return new Intl.NumberFormat().format(e);if(typeof e=="number")return new Intl.NumberFormat().format(e);const t=String(e).trim();return/^[0-9]+$/.test(t)?new Intl.NumberFormat().format(BigInt(t)):t}catch{return String(e)}}function V4(e,{thousandSuffix:t="K",millionSuffix:n="M",billionSuffix:a="B",decimals:s=1}={}){const o=Number(String(e));if(!Number.isFinite(o))return"-";const u=o<0?"-":"",c=Math.abs(o),h=Math.max(0,Math.min(6,Math.floor(s)));if(c<1e3)return`${u}${String(c)}`;const f=(w,x)=>{const T=w.toFixed(h),P=Number(T).toString();return`${u}${P}${x}`},m=(w,x,T)=>{const P=w.toFixed(h),L=Number(P);return T&&L>=1e3?f(L/1e3,T):`${u}${L.toString()}${x}`};if(c>=1e9)return f(c/1e9,a);if(c>=1e6)return m(c/1e6,n,a);const y=c/1e3,b=Number(y.toFixed(h));return b>=1e3?f(b/1e3,n):f(b,t)}function Y_(e){const t=Number(String(e));return Number.isFinite(t)?t:null}function z4(e,{decimals:t=2}={}){if(e==null)return"-";const n=String(e).trim();if(!n)return"-";const a=n.match(/^(-?\d+)(?:\.(\d+))?$/);if(!a)return n;const s=a[1],o=a[2]||"";let u=s;try{u=new Intl.NumberFormat().format(BigInt(s))}catch{u=s}const c=Math.max(0,Math.min(6,Math.floor(t))),h=c?o.slice(0,c).padEnd(c,"0"):"",f=s.startsWith("-")?"-":"",m=c?`${u.replace("-","")}.${h}`:u.replace("-","");return`${f}$${m}`}function Yu(e){if(typeof e!="string")return null;const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());if(!t)return null;const n=Number(t[1]),a=Number(t[2])-1,s=Number(t[3]),o=new Date(Date.UTC(n,a,s));return Number.isFinite(o.getTime())&&yt(o)===e.trim()?o:null}function ni(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+t))}function DA(e,t){const n=Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())-Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate());return Math.floor(n/864e5)}function Ph(e,t){if(!Array.isArray(e)||e.length===0)return 0;const n=e.length,a=(n-1)*t,s=Math.floor(a),o=a-s,u=e[s]??e[n-1],c=e[Math.min(n-1,s+1)]??e[n-1];return Math.round(u+(c-u)*o)}function MA(e){return e<=0?0:e>=4?4:e}function Z_({weeks:e=52,now:t,weekStartsOn:n="sun"}={}){const a=t instanceof Date&&Number.isFinite(t.getTime())?t:new Date,s=xr(a),o=Yu(s)||new Date(Date.UTC(a.getFullYear(),a.getMonth(),a.getDate())),u=n==="mon"?1:0,c=o.getUTCDay(),h=ni(o,-((c-u+7)%7)),f=ni(h,-7*(Math.max(1,e)-1));return{from:yt(f),to:s}}function NA({dailyRows:e,weeks:t=52,to:n,weekStartsOn:a="sun"}={}){const s=Yu(n)||new Date(Date.UTC(new Date().getFullYear(),new Date().getMonth(),new Date().getDate())),{from:o}=Z_({weeks:t,now:s,weekStartsOn:a}),u=Yu(o)||ni(s,-(t*7-1)),c=(()=>{const j=(u.getUTCDay()-(a==="mon"?1:0)+7)%7;return ni(u,-j)})(),h=new Map;for(const D of Array.isArray(e)?e:[]){const M=typeof D?.day=="string"?D.day:null;if(!M)continue;const j=Y_(D?.billable_total_tokens??D?.total_tokens)??0;h.set(M,Math.max(0,j))}const f=DA(c,s)+1,m=Math.ceil(f/7),y=[];for(let D=0;D<f;D++){const M=ni(c,D),j=yt(M),K=h.get(j)??0;K>0&&y.push(K)}y.sort((D,M)=>D-M);const b=Ph(y,.5),w=Ph(y,.75),x=Ph(y,.9);function T(D){return!D||D<=0?0:D<=b?1:D<=w?2:D<=x?3:4}const P=[];for(let D=0;D<m;D++){const M=[];for(let j=0;j<7;j++){const K=D*7+j,G=ni(c,K);if(G.getTime()>s.getTime()){M.push(null);continue}const W=yt(G),S=h.get(W)??0;M.push({day:W,value:S,level:MA(T(S))})}P.push(M)}const L=P.length>t?P.slice(P.length-t):P;return{from:o,to:yt(s),weeks:L,thresholds:{t1:b,t2:w,t3:x}}}function OA({dailyRows:e,to:t}={}){const n=Yu(t)||new Date(Date.UTC(new Date().getFullYear(),new Date().getMonth(),new Date().getDate())),a=new Map;for(const o of Array.isArray(e)?e:[]){const u=typeof o?.day=="string"?o.day:null;if(!u)continue;const c=Y_(o?.billable_total_tokens??o?.total_tokens)??0;a.set(u,Math.max(0,c))}let s=0;for(let o=0;o<370;o++){const u=yt(ni(n,-o));if((a.get(u)??0)>0){s+=1;continue}break}return s}const wc={},Q_="tokentracker",IA=["victorgpt/tokentracker","spacedriveapp/spacedrive","acme/alpha","acme/beta","neo/nebula","signal/flux","matrix/terminal","orbit/atlas","lumen/core","delta/horizon"],Ov=["NEO","TRINITY","MORPHEUS","ORACLE","CYPHER","SWITCH","APOC","TANK","SMITH","SERAPH","NIOBE","MOUSE","DOZER","LINK","BLADE"];function Pn(){if(typeof window<"u"){const e=new URLSearchParams(window.location.search),t=String(e.get("mock")||"").toLowerCase();if(t==="0"||t==="false"||t==="off"||t==="no")return!1;if(t==="1"||t==="true"||t==="on"||t==="yes")return!0}if(typeof import.meta<"u"&&wc){const e="".toLowerCase();if(e==="1"||e==="true")return!0}return!1}function jA(){if(typeof import.meta<"u"&&wc){const e="".trim();if(e)return e;const t="".trim();if(t)return t}if(typeof window<"u"){const e=new URLSearchParams(window.location.search),t=String(e.get("mock_now")||"").trim();if(t)return t;const n=String(e.get("mock_today")||"").trim();if(n)return n}return""}function UA(e){if(!e)return null;const t=String(e).trim();if(!t)return null;if(/^\d{4}-\d{2}-\d{2}$/.test(t)){const[a,s,o]=t.split("-").map(Number);if(!Number.isFinite(a)||!Number.isFinite(s)||!Number.isFinite(o))return null;const u=new Date(a,s-1,o,12,0,0);return Number.isFinite(u.getTime())?u:null}const n=new Date(t);return Number.isFinite(n.getTime())?n:null}function $4(){return Pn()?UA(jA()):null}function BA(){if(typeof import.meta<"u"&&wc){const e="".trim();if(e)return e}if(typeof window<"u"){const e=new URLSearchParams(window.location.search),t=String(e.get("mock_seed")||"").trim();if(t)return t}return Q_}function FA(){if(typeof import.meta<"u"&&wc){const e="".trim(),t=Number(e);if(Number.isFinite(t)&&t>0)return Math.floor(t)}if(typeof window<"u"){const e=new URLSearchParams(window.location.search),t=String(e.get("mock_missing")||"").trim(),n=Number(t);if(Number.isFinite(n)&&n>0)return Math.floor(n)}return 0}function Vo(e){return(e==null?BA():String(e)).trim()||Q_}function zo(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function un(e){if(typeof e!="string")return null;const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());if(!t)return null;const n=Number(t[1]),a=Number(t[2])-1,s=Number(t[3]),o=new Date(Date.UTC(n,a,s));return Number.isFinite(o.getTime())&&yt(o)===e.trim()?o:null}function Lo(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+t))}function X_(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1))}function VA(e){return`${e.getUTCFullYear()}-${String(e.getUTCMonth()+1).padStart(2,"0")}`}function fs({from:e,to:t,seed:n}){const a=un(xr(new Date))||new Date,s=un(e)||a,o=un(t)||s,u=[],c=Vo(n),h=Math.floor((Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate())-Date.UTC(s.getUTCFullYear(),s.getUTCMonth(),s.getUTCDate()))/864e5)+1;for(let f=0;f<h;f+=1){const m=Lo(s,f),y=yt(m),b=zo(`${c}:${y}`),w=b%1e3/1e3,x=.6+.4*Math.sin(f/6*Math.PI*.5),T=m.getUTCDay()===0||m.getUTCDay()===6?.65:1,P=18e3+Math.round(12e3*w),L=Math.max(0,Math.round(P*x*T)),D=Math.round(L*.46),M=Math.round(L*.34),j=Math.round(L*.14),K=Math.max(0,L-D-M-j);u.push({day:y,total_tokens:L,billable_total_tokens:L,input_tokens:D,output_tokens:M,cached_input_tokens:j,reasoning_output_tokens:K,conversation_count:1+b%5})}return u}function zA({day:e,seed:t}){const n=un(e)||un(xr(new Date))||new Date,a=yt(n),s=Vo(t),o=Array.from({length:48},(c,h)=>{const f=Math.floor(h/2),m=h%2===0?0:30,b=zo(`${s}:${a}:${f}:${m}`)%1e3/1e3,w=(f+m/60)/24,x=.4+.6*Math.sin(w*Math.PI*2),T=900+Math.round(700*b),P=Math.max(0,Math.round(T*x)),L=Math.round(P*.46),D=Math.round(P*.34),M=Math.round(P*.14),j=Math.max(0,P-L-D-M);return{hour:`${a}T${String(f).padStart(2,"0")}:${String(m).padStart(2,"0")}:00`,total_tokens:P,billable_total_tokens:P,input_tokens:L,output_tokens:D,cached_input_tokens:M,reasoning_output_tokens:j}}),u=Math.max(0,Math.min(48,FA()));if(u>0){const c=Date.now(),h=o.map((y,b)=>{const w=Date.parse(y.hour);return Number.isFinite(w)&&w<=c?{index:b,ts:w}:null}).filter(Boolean),f=Math.max(0,h.length-u),m=h.slice(f);for(const y of m){const b=o[y.index];b&&(o[y.index]={...b,missing:!0})}}return o}function $A({months:e=24,to:t,seed:n}){const a=un(t)||un(xr(new Date))||new Date,s=new Date(Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),1)),o=Vo(n),u=[];for(let c=e-1;c>=0;c-=1){const h=X_(s,-c),f=VA(h),y=zo(`${o}:${f}`)%1e3/1e3,b=.7+.3*Math.sin(u.length/6*Math.PI*.5),w=36e4+Math.round(2e5*y),x=Math.max(0,Math.round(w*b)),T=Math.round(x*.46),P=Math.round(x*.34),L=Math.round(x*.14),D=Math.max(0,x-T-P-L);u.push({month:f,total_tokens:x,billable_total_tokens:x,input_tokens:T,output_tokens:P,cached_input_tokens:L,reasoning_output_tokens:D})}return u}function bp(e){return e.reduce((t,n)=>(t.total_tokens+=Number(n.total_tokens||0),t.billable_total_tokens+=Number(n.billable_total_tokens||n.total_tokens||0),t.input_tokens+=Number(n.input_tokens||0),t.output_tokens+=Number(n.output_tokens||0),t.cached_input_tokens+=Number(n.cached_input_tokens||0),t.reasoning_output_tokens+=Number(n.reasoning_output_tokens||0),t.conversation_count+=Number(n.conversation_count||0),t),{total_tokens:0,billable_total_tokens:0,input_tokens:0,output_tokens:0,cached_input_tokens:0,reasoning_output_tokens:0,conversation_count:0})}function HA(e,t=1.75){const n=Number(e||0);return!Number.isFinite(n)||n<=0?"0.000000":(n*t/1e6).toFixed(6)}function Iv(e,t){const n=Number.isFinite(t)?t:0;return{total_tokens:Math.max(0,Math.round(e.total_tokens*n)),billable_total_tokens:Math.max(0,Math.round((e.billable_total_tokens??e.total_tokens)*n)),input_tokens:Math.max(0,Math.round(e.input_tokens*n)),output_tokens:Math.max(0,Math.round(e.output_tokens*n)),cached_input_tokens:Math.max(0,Math.round(e.cached_input_tokens*n)),reasoning_output_tokens:Math.max(0,Math.round(e.reasoning_output_tokens*n))}}function pf(e){return{...e,total_cost_usd:HA(e.total_tokens)}}function WA({from:e,to:t,seed:n}={}){const a=fs({from:e,to:t,seed:n});return{from:e,to:t,data:a}}function KA({day:e,seed:t}={}){const n=un(e)||new Date,a=yt(n),s=zA({day:a,seed:t});return{day:a,data:s}}function qA({months:e=24,to:t,seed:n}={}){const a=un(t)||un(xr(new Date))||new Date,s=yt(a),o=$A({months:e,to:s,seed:n}),u=X_(new Date(Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),1)),-(e-1));return{from:yt(u),to:s,months:e,data:o}}function GA({from:e,to:t,seed:n,rolling:a=!0}={}){const s=fs({from:e,to:t,seed:n}),o=bp(s),u=pf(o),c=a?YA({to:t,seed:n}):null;return{from:e,to:t,days:s.length,totals:u,...c?{rolling:c}:{}}}function YA({to:e,seed:t}={}){const n=un(e)||un(xr(new Date))||new Date,a=yt(n),s=yt(Lo(n,-6)),o=yt(Lo(n,-29)),u=fs({from:s,to:a,seed:t}),c=fs({from:o,to:a,seed:t});return{last_7d:jv({rows:u,from:s,to:a}),last_30d:jv({rows:c,from:o,to:a})}}function jv({rows:e,from:t,to:n}={}){const a=bp(e||[]),s=(e||[]).filter(u=>Number(u.billable_total_tokens??u.total_tokens)>0).length,o=s>0?Math.floor(a.billable_total_tokens/s):0;return{from:t,to:n,totals:{billable_total_tokens:a.billable_total_tokens,conversation_count:a.conversation_count},active_days:s,avg_per_active_day:o}}function ZA({seed:e,limit:t=3}={}){const n=Vo(e),a=IA.map((s,o)=>{const c=12e4+zo(`${n}:${s}`)%9e5,h=o%4*4200,f=Math.max(0,c+h),m=Math.max(0,Math.round(f*.96));return{project_key:s,project_ref:`https://github.com/${s}`,total_tokens:String(f),billable_total_tokens:String(m)}}).sort((s,o)=>Number(o.billable_total_tokens)-Number(s.billable_total_tokens)).slice(0,Math.max(1,Math.min(10,Math.floor(Number(t)||3))));return{generated_at:new Date().toISOString(),entries:a}}function QA(e){const t=un(xr(new Date))||new Date,n=String(e).trim().toLowerCase()||"week";if(n==="total")return{from:"1970-01-01",to:"9999-12-31"};if(n==="month"){const u=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1)),c=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth()+1,0));return{from:yt(u),to:yt(c)}}const a=t.getUTCDay(),s=yt(Lo(t,-a)),o=yt(Lo(t,-a+6));return{from:s,to:o}}function J_({seed:e,period:t,metric:n,limit:a=20,offset:s=0}={}){const o=Vo(e),u=Math.max(1,Math.min(100,Math.floor(Number(a)||20))),c=Math.max(0,Math.min(1e4,Math.floor(Number(s)||0))),h=String(n||"all").trim().toLowerCase()||"all",f=String(t||"week").trim().toLowerCase()||"week",m=f==="month"||f==="total"||f==="week"?f:"week",{from:y,to:b}=QA(m),w=250,x=w>0?Math.ceil(w/u):0,T=Math.floor(c/u)+1,P=Array.from({length:w},(W,S)=>{const Z=S+1,X=`00000000-0000-0000-0000-${String(Z).padStart(12,"0")}`,_e=Ov[Z%Ov.length],Re=18e4+zo(`${o}:${_e}:${Z}`)%9e5,fe=Math.max(0,Re+Z*1200),ce=Math.floor(fe*.28),ue=Math.floor(fe*.18),Me=Math.floor(fe*.1),H=Math.floor(fe*.1),Y=Math.floor(fe*.08),$=Math.floor(fe*.03),N=Math.floor(fe*.02),q=Math.floor(fe*.04),xe=Math.floor(fe*.03),Ae=Math.max(0,fe-ce-ue-Me-H-Y-$-N-q-xe),Se=Z%7!==0;return{id:Z,user_id:X,is_public:Se,is_me:!1,display_name:Se?_e:"Anonymous",avatar_url:null,gpt_tokens:ce,claude_tokens:ue,gemini_tokens:Me,cursor_tokens:H,opencode_tokens:Y,openclaw_tokens:Ae,hermes_tokens:$,kiro_tokens:N,copilot_tokens:q,kimi_tokens:xe,other_tokens:0,total_tokens:fe}}),L=Math.max(0,Math.min(w-1,Math.floor(w*.8)));P[L]&&(P[L].is_me=!0);const D=h==="gpt"||h==="codex"?"gpt_tokens":h==="claude"?"claude_tokens":h==="gemini"?"gemini_tokens":h==="cursor"?"cursor_tokens":h==="opencode"?"opencode_tokens":h==="openclaw"?"openclaw_tokens":h==="hermes"?"hermes_tokens":h==="kiro"?"kiro_tokens":h==="copilot"?"copilot_tokens":h==="kimi"?"kimi_tokens":"total_tokens",M=P.slice().sort((W,S)=>Number(S[D])-Number(W[D])||W.id-S.id).map((W,S)=>({user_id:W.is_public?W.user_id:null,rank:S+1,is_me:!!W.is_me,display_name:W.display_name,avatar_url:W.avatar_url,gpt_tokens:String(W.gpt_tokens),claude_tokens:String(W.claude_tokens),gemini_tokens:String(W.gemini_tokens),cursor_tokens:String(W.cursor_tokens),opencode_tokens:String(W.opencode_tokens),openclaw_tokens:String(W.openclaw_tokens),hermes_tokens:String(W.hermes_tokens??0),kiro_tokens:String(W.kiro_tokens??0),copilot_tokens:String(W.copilot_tokens??0),kimi_tokens:String(W.kimi_tokens??0),other_tokens:String(W.other_tokens??0),total_tokens:String(W.total_tokens),is_public:!!W.is_public})),j=M.find(W=>W?.is_me)||null,K=j?{rank:j.rank,gpt_tokens:j.gpt_tokens,claude_tokens:j.claude_tokens,gemini_tokens:j.gemini_tokens,cursor_tokens:j.cursor_tokens,opencode_tokens:j.opencode_tokens,openclaw_tokens:j.openclaw_tokens,hermes_tokens:j.hermes_tokens,kiro_tokens:j.kiro_tokens,copilot_tokens:j.copilot_tokens,kimi_tokens:j.kimi_tokens,other_tokens:j.other_tokens,total_tokens:j.total_tokens}:{rank:null,gpt_tokens:"0",claude_tokens:"0",gemini_tokens:"0",cursor_tokens:"0",opencode_tokens:"0",openclaw_tokens:"0",hermes_tokens:"0",kiro_tokens:"0",copilot_tokens:"0",kimi_tokens:"0",other_tokens:"0",total_tokens:"0"},G=M.slice(c,c+u);return{period:m,metric:h,from:y,to:b,generated_at:new Date().toISOString(),page:T,limit:u,offset:c,total_entries:w,total_pages:x,entries:G,me:K}}function XA({weeks:e=52,to:t,weekStartsOn:n="sun",seed:a}={}){const s=Z_({weeks:e,now:un(t)||un(xr(new Date))||new Date,weekStartsOn:n}),o=fs({from:s.from,to:s.to,seed:a});return{...NA({dailyRows:o,weeks:e,to:s.to,weekStartsOn:n}),week_starts_on:n,active_days:o.filter(c=>Number(c.billable_total_tokens??c.total_tokens)>0).length,streak_days:OA({dailyRows:o,to:s.to})}}function JA({from:e,to:t,seed:n}={}){const a=fs({from:e,to:t,seed:n}),s=bp(a),u=[{source:"codex",weight:.7,models:[{model:"gpt-5.2-codex",model_id:"gpt-5.2-codex",weight:.2},{model:"unknown",model_id:"unknown",weight:.8}]},{source:"claude",weight:.2,models:[{model:"claude-3.5",model_id:"claude-3.5",weight:.3},{model:"unknown",model_id:"unknown",weight:.7}]},{source:"every-code",weight:.1,models:[{model:"unknown",model_id:"unknown",weight:1}]}].map(c=>{const h=Iv(s,c.weight),f=c.models.map(m=>{const y=Iv(h,m.weight);return{model:m.model,model_id:m.model_id||m.model,totals:pf(y)}});return{source:c.source,totals:pf(h),models:f}});return{from:e,to:t,days:a.length,sources:u,pricing:{model:"mock",pricing_mode:"add",source:"mock",effective_from:xr(new Date),rates_per_million_usd:{input:"1.750000",cached_input:"0.175000",output:"14.000000",reasoning_output:"14.000000"}}}}function eL({from:e,to:t,source:n="claude"}={}){if(n==="codex")return{from:e,to:t,source:"codex",scope:"supported",totals:{input_tokens:142e4,cached_input_tokens:588e4,cache_creation_input_tokens:92e4,output_tokens:256e4,reasoning_output_tokens:61e4,total_tokens:1078e4},session_count:188,message_count:5436,tool_calls_breakdown:{categories:[{name:"Execution",calls:742,totals:{input_tokens:32e4,cached_input_tokens:104e4,cache_creation_input_tokens:11e4,output_tokens:46e4,reasoning_output_tokens:12e4,total_tokens:193e4},tools:[{name:"exec_command",calls:510,totals:{input_tokens:25e4,cached_input_tokens:82e4,cache_creation_input_tokens:8e4,output_tokens:37e4,reasoning_output_tokens:9e4,total_tokens:152e4}},{name:"write_stdin",calls:232,totals:{input_tokens:7e4,cached_input_tokens:22e4,cache_creation_input_tokens:3e4,output_tokens:9e4,reasoning_output_tokens:3e4,total_tokens:41e4}}]},{name:"Browser",calls:406,totals:{input_tokens:21e4,cached_input_tokens:88e4,cache_creation_input_tokens:9e4,output_tokens:42e4,reasoning_output_tokens:1e5,total_tokens:17e5},tools:[{name:"take_snapshot",calls:180,totals:{input_tokens:1e5,cached_input_tokens:4e5,cache_creation_input_tokens:4e4,output_tokens:18e4,reasoning_output_tokens:4e4,total_tokens:76e4}},{name:"click",calls:126,totals:{input_tokens:6e4,cached_input_tokens:25e4,cache_creation_input_tokens:3e4,output_tokens:12e4,reasoning_output_tokens:35e3,total_tokens:495e3}},{name:"evaluate_script",calls:100,totals:{input_tokens:5e4,cached_input_tokens:23e4,cache_creation_input_tokens:2e4,output_tokens:12e4,reasoning_output_tokens:25e3,total_tokens:445e3}}]}],tools_total:363e4,privacy:{includes_inputs:!1,note:"Aggregated tool names only; no tool arguments or outputs are included."}},exec_command_breakdown:{by_type:[{name:"test",calls:168,failures:14,duration_ms:482e3,max_duration_ms:18400,output_chars:45e4,output_lines:8600,totals:{input_tokens:9e4,cached_input_tokens:32e4,output_tokens:16e4,reasoning_output_tokens:42e3,total_tokens:612e3}},{name:"build",calls:116,failures:9,duration_ms:392e3,max_duration_ms:22100,output_chars:31e4,output_lines:5200,totals:{input_tokens:7e4,cached_input_tokens:24e4,output_tokens:13e4,reasoning_output_tokens:3e4,total_tokens:47e4}}],by_exit:[{name:"completed:0",calls:438,failures:0,duration_ms:104e4,max_duration_ms:22100,output_chars:83e4,output_lines:13100,totals:{input_tokens:22e4,cached_input_tokens:78e4,output_tokens:35e4,reasoning_output_tokens:82e3,total_tokens:1432e3}},{name:"completed:1",calls:72,failures:72,duration_ms:155e3,max_duration_ms:11800,output_chars:12e4,output_lines:2300,totals:{input_tokens:3e4,cached_input_tokens:11e4,output_tokens:55e3,reasoning_output_tokens:8e3,total_tokens:195e3}}]}};if(n!=="claude")return{from:e,to:t,source:n,scope:"unsupported",totals:{input_tokens:0,cached_input_tokens:0,cache_creation_input_tokens:0,output_tokens:0,reasoning_output_tokens:0,total_tokens:0},categories:["system_prefix","conversation_history","user_input","tool_calls","subagents","reasoning","assistant_response"].map(u=>({key:u,totals:{input_tokens:0,cached_input_tokens:0,cache_creation_input_tokens:0,output_tokens:0,reasoning_output_tokens:0,total_tokens:0},percent:0})),session_count:0,message_count:0};const a=[{key:"system_prefix",total:12896539},{key:"conversation_history",total:320207200},{key:"user_input",total:998025},{key:"tool_calls",total:4808739},{key:"subagents",total:1022828},{key:"reasoning",total:11073118},{key:"assistant_response",total:1289174}],s=a.reduce((u,c)=>u+c.total,0),o=a.map(({key:u,total:c})=>({key:u,totals:{input_tokens:u==="user_input"?c:0,cached_input_tokens:u==="conversation_history"?Math.round(c*.95):0,cache_creation_input_tokens:u==="system_prefix"?c:u==="conversation_history"?Math.round(c*.05):0,output_tokens:["tool_calls","subagents","reasoning","assistant_response"].includes(u)?c:0,reasoning_output_tokens:u==="reasoning"?c:0,total_tokens:c},percent:Number((c/s*100).toFixed(2))}));return{from:e,to:t,source:"claude",scope:"supported",totals:{input_tokens:998025,cached_input_tokens:Math.round(320207200*.95),cache_creation_input_tokens:12896539+Math.round(320207200*.05),output_tokens:18193859,reasoning_output_tokens:11073118,total_tokens:s},categories:o,session_count:312,message_count:12046}}let Eu=null;function tL(){Eu=null}async function nL(e=fetch){if(Eu)return Eu;const t=await e("/api/local-auth",{method:"GET",headers:{Accept:"application/json"},cache:"no-store"});if(!t.ok)throw new Error(`Local auth request failed with HTTP ${t.status}`);const n=await t.json().catch(()=>null),a=typeof n?.token=="string"?n.token.trim():"";if(!a)throw new Error("Local auth token missing from response");return Eu=a,a}async function _p(e=fetch){return{"x-tokentracker-local-auth":await nL(e)}}const ir={usageSummary:"tokentracker-usage-summary",usageDaily:"tokentracker-usage-daily",usageHourly:"tokentracker-usage-hourly",usageMonthly:"tokentracker-usage-monthly",usageHeatmap:"tokentracker-usage-heatmap",usageModelBreakdown:"tokentracker-usage-model-breakdown",usageCategoryBreakdown:"tokentracker-usage-category-breakdown",projectUsageSummary:"tokentracker-project-usage-summary",userStatus:"tokentracker-user-status",localSync:"tokentracker-local-sync",usageLimits:"tokentracker-usage-limits"};async function Sr(e,t,n){const a=new URL(`/functions/${e}`,window.location.origin);if(t)for(const[o,u]of Object.entries(t))u!=null&&u!==""&&a.searchParams.set(o,String(u));const s=await fetch(a.toString(),{headers:{Accept:"application/json"},cache:"no-store",...n});if(!s.ok){const o=new Error(`Request failed with HTTP ${s.status}`);throw o.status=s.status,o}return s.json()}function Oa({timeZone:e,tzOffsetMinutes:t}={}){const n={},a=typeof e=="string"?e.trim():"";return a&&(n.tz=a),Number.isFinite(t)&&(n.tz_offset_minutes=String(Math.trunc(t))),n}function mi({source:e,model:t}={}){const n={},a=typeof e=="string"?e.trim().toLowerCase():"";a&&(n.source=a);const s=typeof t=="string"?t.trim():"";return s&&(n.model=s),n}async function H4({from:e,to:t,source:n,model:a,timeZone:s,tzOffsetMinutes:o,rolling:u=!1,accessToken:c}={}){if(Pn())return GA({from:e,to:t,seed:c,rolling:u});const h=Oa({timeZone:s,tzOffsetMinutes:o}),f=mi({source:n,model:a}),m=u?{rolling:"1"}:{};return Sr(ir.usageSummary,{from:e,to:t,...f,...h,...m})}async function W4({from:e,to:t,source:n,limit:a,timeZone:s,tzOffsetMinutes:o,accessToken:u}={}){if(Pn())return ZA({seed:u,limit:a});const c=Oa({timeZone:s,tzOffsetMinutes:o}),f={...mi({source:n}),...c};return e&&(f.from=e),t&&(f.to=t),a!=null&&(f.limit=String(a)),Sr(ir.projectUsageSummary,f)}async function $o(e,t={}){const n=fi();if(!n)throw new Error("InsForge base URL not configured");const a=n.replace(/\/$/,""),s=new URL(`${a}/functions/${e}`);if(t.params)for(const[h,f]of Object.entries(t.params))f!=null&&f!==""&&s.searchParams.set(h,String(f));const o={Accept:"application/json","Content-Type":"application/json"},u=_c();u&&(o.apikey=u),t.accessToken&&xA(t.accessToken)&&(o.Authorization=`Bearer ${t.accessToken}`);const c=await fetch(s.toString(),{method:t.method||"GET",headers:o,...t.body!=null?{body:JSON.stringify(t.body)}:{}});if(!c.ok){const h=new Error(`Request failed with HTTP ${c.status}`);throw h.status=c.status,h}return c.json()}async function K4({accessToken:e,userId:t,period:n,metric:a,limit:s,offset:o}={}){return Pn()?J_({seed:e||t,period:n,metric:a,limit:s,offset:o}):$o("tokentracker-leaderboard",{params:{period:n,limit:s,offset:o,user_id:t}})}async function Uv({accessToken:e}={}){return $o("tokentracker-public-visibility",{accessToken:e,method:"GET"})}async function q4({accessToken:e,enabled:t,anonymous:n,display_name:a,github_url:s,show_github_url:o}={}){const u={};return t!==void 0&&(u.enabled=!!t),n!==void 0&&(u.anonymous=!!n),a!==void 0&&(u.display_name=String(a)),s!==void 0&&(u.github_url=s===null?null:String(s)),o!==void 0&&(u.show_github_url=!!o),$o("tokentracker-public-visibility",{accessToken:e,method:"POST",body:u})}async function G4({accessToken:e,period:t,source:n}={}){const a={};return t&&(a.period=t),typeof n=="string"&&n.trim()&&(a.source=n.trim()),$o("tokentracker-leaderboard-refresh",{accessToken:e,method:"POST",body:a})}async function Y4({accessToken:e,userId:t,period:n}={}){if(Pn()){const a=J_({seed:e,period:n,metric:"all",limit:250,offset:0}),o=(Array.isArray(a?.entries)?a.entries:[]).find(u=>u?.user_id===t)||null;return{period:a?.period??"week",from:a?.from??null,to:a?.to??null,generated_at:a?.generated_at??new Date().toISOString(),entry:o}}return $o("tokentracker-leaderboard-profile",{accessToken:e,params:{user_id:t,period:n}})}async function Z4(e={}){if(Pn()){const t=new Date().toISOString();return{user_id:"local-user",created_at:t,pro:{active:!1,sources:[],expires_at:null,partial:!1,as_of:t},subscriptions:{partial:!1,as_of:t,items:[]},install:{partial:!1,as_of:t,has_active_device_token:!1,has_active_device:!1,active_device_tokens:0,active_devices:0,latest_token_activity_at:null,latest_device_seen_at:null}}}return Sr(ir.userStatus)}async function Q4({signal:e}={}){const t=await _p(),n=await fetch(`/functions/${ir.localSync}`,{method:"POST",headers:{Accept:"application/json",...t},cache:"no-store",signal:e}),a=await n.json().catch(()=>({ok:!1,error:`Local sync request failed with HTTP ${n.status}`}));if(!n.ok||a?.ok===!1){const s=a?.error||a?.message||`Local sync request failed with HTTP ${n.status}`,o=new Error(s);throw o.status=n.status,o}return a}async function X4({from:e,to:t,source:n,timeZone:a,tzOffsetMinutes:s,accessToken:o}={}){if(Pn())return JA({from:e,to:t,seed:o});const u=Oa({timeZone:a,tzOffsetMinutes:s}),c=mi({source:n});return Sr(ir.usageModelBreakdown,{from:e,to:t,...c,...u})}async function J4({from:e,to:t,source:n="claude",timeZone:a,tzOffsetMinutes:s}={}){if(Pn())return eL({from:e,to:t,source:n});const o=Oa({timeZone:a,tzOffsetMinutes:s});return Sr(ir.usageCategoryBreakdown,{from:e,to:t,source:n,...o})}async function e3({from:e,to:t,source:n,model:a,timeZone:s,tzOffsetMinutes:o,accessToken:u}={}){if(Pn())return WA({from:e,to:t,seed:u});const c=Oa({timeZone:s,tzOffsetMinutes:o}),h=mi({source:n,model:a});return Sr(ir.usageDaily,{from:e,to:t,...h,...c})}async function t3({day:e,source:t,model:n,timeZone:a,tzOffsetMinutes:s,accessToken:o}={}){if(Pn())return KA({day:e,seed:o});const u=Oa({timeZone:a,tzOffsetMinutes:s}),c=mi({source:t,model:n}),h=e?{day:e,...c,...u}:{...c,...u};return Sr(ir.usageHourly,h)}async function n3({months:e,to:t,source:n,model:a,timeZone:s,tzOffsetMinutes:o,accessToken:u}={}){if(Pn())return qA({months:e,to:t,seed:u});const c=Oa({timeZone:s,tzOffsetMinutes:o}),h=mi({source:n,model:a});return Sr(ir.usageMonthly,{...e?{months:String(e)}:{},...t?{to:t}:{},...h,...c})}async function r3(e={}){const t=e?.refresh?{refresh:"1"}:void 0;return Sr(ir.usageLimits,t)}async function a3({weeks:e,to:t,weekStartsOn:n,source:a,model:s,timeZone:o,tzOffsetMinutes:u,accessToken:c}={}){if(Pn())return XA({weeks:e,to:t,weekStartsOn:n,seed:c});const h=Oa({timeZone:o,tzOffsetMinutes:u}),f=mi({source:a,model:s});return Sr(ir.usageHeatmap,{weeks:String(e),to:t,week_starts_on:n,...f,...h})}const ew=k.createContext(null);function rL(e){if(!e||typeof e!="object")return"";const t=e.user_metadata&&typeof e.user_metadata=="object"?e.user_metadata:{},n=e.profile&&typeof e.profile=="object"?e.profile:{},a=t.full_name||t.name||n.name||t.user_name||t.preferred_username;return typeof a=="string"&&a.trim()?a.trim():typeof e.email=="string"&&e.email.includes("@")?e.email.split("@")[0].trim()||e.email.trim():typeof e.email=="string"?e.email.trim():""}function Bv(e){if(!e||typeof e!="object")return null;const t=e,n=t.session&&typeof t.session=="object"?t.session:null,a=typeof t.accessToken=="string"&&t.accessToken||typeof t.access_token=="string"&&t.access_token||n&&typeof n.accessToken=="string"&&n.accessToken||n&&typeof n.access_token=="string"&&n.access_token||null;return a&&a.length>0?a:null}async function Th(e,t={}){if(!e)return null;const n=Math.max(0,Math.floor(Number(t.skewMs)||6e4)),a=e.tokenManager,s=()=>a?.getAccessToken?.()??a?.getSession?.()?.accessToken??null;let o=s();if(!o||SA(o,n)){const{data:u}=await e.auth.refreshSession();if(o=s()??Bv(u)??null,!o&&typeof e.auth.getCurrentUser=="function")try{await e.auth.getCurrentUser(),o=s()??Bv(u)??null}catch{}}return o||null}function aL({children:e}){const[t,n]=k.useState(null),[a,s]=k.useState(null),[o,u]=k.useState(!0);k.useEffect(()=>{if(!ff()){n(null),s(null),u(!1);return}n(gA())},[]),k.useEffect(()=>{if(!t)return;let G=!0;return u(!0),(async()=>{try{let{data:W,error:S}=await t.auth.getCurrentUser();if(!G)return;if(!S&&!W?.user){if(await new Promise(X=>setTimeout(X,150)),!G)return;const Z=await t.auth.getCurrentUser();W=Z.data,S=Z.error}if(S){s(null);return}s(W?.user??null)}catch{G&&s(null)}finally{G&&u(!1)}})(),()=>{G=!1}},[t]);const c=k.useCallback(async()=>{if(t)try{let{data:G,error:W}=await t.auth.getCurrentUser();if(!W&&!G?.user){await new Promise(Z=>setTimeout(Z,150));const S=await t.auth.getCurrentUser();G=S.data,W=S.error}if(W){s(null);return}s(G?.user??null)}catch{s(null)}},[t]),h=k.useCallback(async(G,W)=>{if(!t)return{error:new Error("InsForge client not configured")};const S=typeof window<"u"&&window.webkit?.messageHandlers?.nativeOAuth;if(S){const _e=typeof W=="string"&&W.trim()?W.trim():`${window.location.origin}/auth/callback`,oe=await t.auth.signInWithOAuth({provider:G,redirectTo:_e,skipBrowserRedirect:!0});if(oe.data?.url){try{const Re=await _p();await fetch("/api/auth-bridge/verifier",{method:"PUT",headers:{"Content-Type":"application/json",...Re},body:JSON.stringify({native:!0})})}catch{}S.postMessage(oe.data.url)}return oe}const Z=typeof W=="string"&&W.trim()?W.trim():typeof window<"u"?`${window.location.origin}/dashboard`:void 0;return await t.auth.signInWithOAuth({provider:G,redirectTo:Z})},[t]),f=k.useCallback(async G=>{if(!t)return{data:null,error:new Error("InsForge client not configured")};const{data:W,error:S}=await t.auth.signInWithPassword(G);return W?.user&&s(W.user),{data:W,error:S}},[t]),m=k.useCallback(async G=>{if(!t)return{data:null,error:new Error("InsForge client not configured")};const{data:W,error:S}=await t.auth.signUp(G);return W?.user&&W?.accessToken&&s(W.user),{data:W,error:S}},[t]),y=k.useCallback(async()=>t?t.auth.getPublicAuthConfig():{data:null,error:new Error("InsForge client not configured")},[t]),b=k.useCallback(async()=>{t&&(await t.auth.signOut(),K_(),tL(),s(null))},[t]),w=k.useCallback(async()=>Th(t),[t]),[x,T]=k.useState(null),[P,L]=k.useState(!1),D=k.useMemo(()=>rL(a),[a]);k.useEffect(()=>{if(!a||!t){T(null),L(!1);return}let G=!0;return(async()=>{try{const W=await Th(t);if(!G||!W){G&&L(!0);return}const S=await Uv({accessToken:W});G&&S?.display_name&&T(S.display_name)}catch{}G&&L(!0)})(),()=>{G=!1}},[a,t]);const M=P?x||D:"",j=k.useCallback(async()=>{if(t)try{const G=await Th(t);if(!G)return;const W=await Uv({accessToken:G});W?.display_name&&T(W.display_name)}catch{}},[t]),K=k.useMemo(()=>!ff()||!t?{enabled:!1,client:null,user:null,signedIn:!1,loading:!1,displayName:"",refreshUser:async()=>{},refreshDisplayName:async()=>{},signInWithOAuth:async()=>({error:new Error("InsForge not configured")}),signInWithPassword:async()=>({data:null,error:new Error("InsForge not configured")}),signUp:async()=>({data:null,error:new Error("InsForge not configured")}),getPublicAuthConfig:async()=>({data:null,error:new Error("InsForge not configured")}),signOut:async()=>{},getAccessToken:async()=>null}:{enabled:!0,client:t,user:a,signedIn:!!a,loading:o,displayName:M,refreshUser:c,refreshDisplayName:j,signInWithOAuth:h,signInWithPassword:f,signUp:m,getPublicAuthConfig:y,signOut:b,getAccessToken:w},[t,a,o,M,c,j,h,f,m,y,b,w]);return I.jsx(ew.Provider,{value:K,children:e})}function Ho(){return k.useContext(ew)}const iL=`key,module,page,component,slot,text,notes,status
42
+ `);s=c.pop()||"";for(const h of c)if(h.startsWith("data: ")){const f=h.slice(6).trim();if(f)try{const m=JSON.parse(f);if((m.chunk||m.content)&&(yield{id:`chatcmpl-${Date.now()}`,object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:t,choices:[{index:0,delta:{content:m.chunk||m.content},finish_reason:null}]}),m.tool_calls?.length&&(yield{id:`chatcmpl-${Date.now()}`,object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:t,choices:[{index:0,delta:{tool_calls:m.tool_calls},finish_reason:"tool_calls"}]}),m.done){n.releaseLock();return}}catch{console.warn("Failed to parse SSE data:",f)}}}}finally{n.releaseLock()}}},uA=class{constructor(e){this.http=e}async create(e){const t=await this.http.post("/api/ai/embeddings",e);return{object:t.object,data:t.data,model:t.metadata?.model,usage:t.metadata?.usage?{prompt_tokens:t.metadata.usage.promptTokens||0,total_tokens:t.metadata.usage.totalTokens||0}:{prompt_tokens:0,total_tokens:0}}}},cA=class{constructor(e){this.http=e}async generate(e){const t=await this.http.post("/api/ai/image/generation",e);let n=[];return t.images&&t.images.length>0?n=t.images.map(a=>({b64_json:a.imageUrl.replace(/^data:image\/\w+;base64,/,""),content:t.text})):t.text&&(n=[{content:t.text}]),{created:Math.floor(Date.now()/1e3),data:n,...t.metadata?.usage&&{usage:{total_tokens:t.metadata.usage.totalTokens||0,input_tokens:t.metadata.usage.promptTokens||0,output_tokens:t.metadata.usage.completionTokens||0}}}}},dA=class z_{constructor(t,n){this.http=t,this.functionsUrl=n||z_.deriveSubhostingUrl(t.baseUrl)}static deriveSubhostingUrl(t){try{const{hostname:n}=new URL(t);return n.endsWith(".insforge.app")?`https://${n.split(".")[0]}.functions.insforge.app`:void 0}catch{return}}async invoke(t,n={}){const{method:a="POST",body:s,headers:o={}}=n;if(this.functionsUrl)try{return{data:await this.http.request(a,`${this.functionsUrl}/${t}`,{body:s,headers:o}),error:null}}catch(u){if(u instanceof Error&&u.name==="AbortError")throw u;if(!(u instanceof We&&u.statusCode===404))return{data:null,error:u instanceof We?u:new We(u instanceof Error?u.message:"Function invocation failed",500,"FUNCTION_ERROR")}}try{const u=`/functions/${t}`;return{data:await this.http.request(a,u,{body:s,headers:o}),error:null}}catch(u){if(u instanceof Error&&u.name==="AbortError")throw u;return{data:null,error:u instanceof We?u:new We(u instanceof Error?u.message:"Function invocation failed",500,"FUNCTION_ERROR")}}}},Nv=1e4,hA=class{constructor(e,t,n){this.socket=null,this.connectPromise=null,this.subscribedChannels=new Set,this.eventListeners=new Map,this.baseUrl=e,this.tokenManager=t,this.anonKey=n,this.tokenManager.onTokenChange=()=>this.onTokenChange()}notifyListeners(e,t){const n=this.eventListeners.get(e);if(n)for(const a of n)try{a(t)}catch(s){console.error(`Error in ${e} callback:`,s)}}connect(){return this.socket?.connected?Promise.resolve():this.connectPromise?this.connectPromise:(this.connectPromise=new Promise((e,t)=>{const n=this.tokenManager.getAccessToken()??this.anonKey;this.socket=Cu(this.baseUrl,{transports:["websocket"],auth:n?{token:n}:void 0});let a=!0,s=null;const o=()=>{s&&(clearTimeout(s),s=null)};s=setTimeout(()=>{a&&(a=!1,this.connectPromise=null,this.socket?.disconnect(),this.socket=null,t(new Error(`Connection timeout after ${Nv}ms`)))},Nv),this.socket.on("connect",()=>{o();for(const u of this.subscribedChannels)this.socket.emit("realtime:subscribe",{channel:u});this.notifyListeners("connect"),a&&(a=!1,this.connectPromise=null,e())}),this.socket.on("connect_error",u=>{o(),this.notifyListeners("connect_error",u),a&&(a=!1,this.connectPromise=null,t(u))}),this.socket.on("disconnect",u=>{this.notifyListeners("disconnect",u)}),this.socket.on("realtime:error",u=>{this.notifyListeners("error",u)}),this.socket.onAny((u,c)=>{u!=="realtime:error"&&this.notifyListeners(u,c)})}),this.connectPromise)}disconnect(){this.socket&&(this.socket.disconnect(),this.socket=null),this.subscribedChannels.clear()}onTokenChange(){const e=this.tokenManager.getAccessToken()??this.anonKey;this.socket&&(this.socket.auth=e?{token:e}:{}),this.socket&&(this.socket.connected||this.connectPromise)&&(this.socket.disconnect(),this.socket.connect())}get isConnected(){return this.socket?.connected??!1}get connectionState(){return this.socket?this.socket.connected?"connected":"connecting":"disconnected"}get socketId(){return this.socket?.id}async subscribe(e){if(this.subscribedChannels.has(e))return{ok:!0,channel:e};if(!this.socket?.connected)try{await this.connect()}catch(t){const n=t instanceof Error?t.message:"Connection failed";return{ok:!1,channel:e,error:{code:"CONNECTION_FAILED",message:n}}}return new Promise(t=>{this.socket.emit("realtime:subscribe",{channel:e},n=>{n.ok&&this.subscribedChannels.add(e),t(n)})})}unsubscribe(e){this.subscribedChannels.delete(e),this.socket?.connected&&this.socket.emit("realtime:unsubscribe",{channel:e})}async publish(e,t,n){if(!this.socket?.connected)throw new Error("Not connected to realtime server. Call connect() first.");this.socket.emit("realtime:publish",{channel:e,event:t,payload:n})}on(e,t){this.eventListeners.has(e)||this.eventListeners.set(e,new Set),this.eventListeners.get(e).add(t)}off(e,t){const n=this.eventListeners.get(e);n&&(n.delete(t),n.size===0&&this.eventListeners.delete(e))}once(e,t){const n=a=>{this.off(e,n),t(a)};this.on(e,n)}getSubscribedChannels(){return Array.from(this.subscribedChannels)}},fA=class{constructor(e){this.http=e}async send(e){try{return{data:await this.http.post("/api/email/send-raw",e),error:null}}catch(t){if(t instanceof Error&&t.name==="AbortError")throw t;return{data:null,error:t instanceof We?t:new We(t instanceof Error?t.message:"Email send failed",500,"EMAIL_ERROR")}}}},pA=class{constructor(e={}){const t=new I_(e.debug);this.tokenManager=new F_,this.http=new ZR(e,this.tokenManager,t),e.edgeFunctionToken&&(this.http.setAuthToken(e.edgeFunctionToken),this.tokenManager.setAccessToken(e.edgeFunctionToken)),this.auth=new tA(this.http,this.tokenManager,{isServerMode:e.isServerMode??!1}),this.database=new rA(this.http,this.tokenManager),this.storage=new iA(this.http),this.ai=new sA(this.http),this.functions=new dA(this.http,e.functionsUrl),this.realtime=new hA(this.http.baseUrl,this.tokenManager,e.anonKey),this.emails=new fA(this.http)}getHttpClient(){return this.http}};function mA(e){return new pA(e)}const mp={VITE_INSFORGE_ANON_KEY:"ik_9f35735991b684f7cf57fa00bb4d0487",VITE_INSFORGE_BASE_URL:"https://srctyff5.us-east.insforge.app"};function fi(){const e=typeof import.meta<"u"?mp:void 0;return(e?.VITE_INSFORGE_BASE_URL||e?.VITE_TOKENTRACKER_BACKEND_BASE_URL||"").trim()}function $_(){if(typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"))return window.location.origin;const t=typeof import.meta<"u"?mp:void 0;return(t?.VITE_INSFORGE_BASE_URL||t?.VITE_TOKENTRACKER_BACKEND_BASE_URL||"").trim()}function _c(){const e=typeof import.meta<"u"?mp:void 0;return(e?.VITE_INSFORGE_ANON_KEY||e?.VITE_TOKENTRACKER_BACKEND_ANON_KEY||"").trim()}function ff(){return!!$_()}let Sh=null;function gA(){return ff()?(Sh||(Sh=mA({baseUrl:$_(),anonKey:_c()||void 0,autoRefreshToken:!0})),Sh):null}const H_="tokentracker_cloud_sync_enabled",yA="tokentracker_cloud_device_session_v1",gp="tokentracker_cloud_last_sync_ts";let yp=null;function vp(){try{localStorage.removeItem(yA)}catch{}}function vA(){if(typeof window>"u")return!1;const e=window.location.hostname;return e==="localhost"||e==="127.0.0.1"}function bA(){try{const e=localStorage.getItem(H_);return e===null||e===""?!1:e==="1"||e==="true"}catch{return!1}}function L4(e){try{localStorage.setItem(H_,e?"1":"0")}catch{}}function W_(){return vp(),yp}function _A(e){yp=e,vp()}function K_(){yp=null;try{localStorage.removeItem(gp)}catch{}vp()}function wA(){try{const e=Number(localStorage.getItem(gp));return Number.isFinite(e)?e:0}catch{return 0}}function q_(e){try{localStorage.setItem(gp,String(e))}catch{}}function Ea(e){if(typeof e!="string")return null;const t=e.trim();return t.length>0?t:null}function kA(e){const t=Ea(e);if(!t)return null;const n=t.split(".");if(n.length<2)return null;const a=n[1];try{const s=a.replace(/-/g,"+").replace(/_/g,"/").padEnd(a.length+(4-a.length%4)%4,"="),o=typeof atob=="function"?atob(s):Buffer.from(s,"base64").toString("utf8"),c=JSON.parse(o)?.exp;return typeof c!="number"||!Number.isFinite(c)||c<=0?null:Math.floor(c*1e3)}catch{return null}}function xA(e){const t=Ea(e);if(!t)return!1;const n=t.split(".");if(n.length!==3)return!1;try{for(let a=0;a<2;a++){const s=n[a];if(!/^[A-Za-z0-9_-]+$/.test(s))return!1;const o=s.replace(/-/g,"+").replace(/_/g,"/").padEnd(s.length+(4-s.length%4)%4,"="),u=typeof atob=="function"?atob(o):Buffer.from(o,"base64").toString("utf8");a===1&&JSON.parse(u)}return!0}catch{return!1}}function SA(e,t=3e4){const n=kA(e);return n?n<=Date.now()+Math.max(0,Number(t)||0):!1}async function PA(e){if(!e)return null;if(typeof e=="string")return Ea(e);if(typeof e=="function")try{const t=await e();return Ea(t)}catch{return null}if(typeof e=="object"){if(typeof e.getAccessToken=="function"){try{const t=await e.getAccessToken(),n=Ea(t);if(n)return n}catch{}return Ea(e.accessToken)}return null}return Ea(e)}async function D4(e,t={}){const n=Math.max(1,Math.min(12,Math.floor(Number(t.maxAttempts)||8))),a=Math.max(20,Math.floor(Number(t.baseDelayMs)||50));for(let s=0;s<n;s++){const o=await PA(e);if(o)return o;s<n-1&&await new Promise(u=>setTimeout(u,a*(s+1)))}return null}function M4(e){return typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1")||typeof e=="function"||e&&typeof e=="object"&&typeof e.getAccessToken=="function"?!0:!!Ea(e)}function N4(){if(typeof Intl>"u"||!Intl.DateTimeFormat)return null;try{return Intl.DateTimeFormat().resolvedOptions().timeZone||null}catch{return null}}function O4(e=new Date){const t=e instanceof Date?e:new Date(e);if(!Number.isFinite(t.getTime()))return 0;const n=t.getTimezoneOffset();return Number.isFinite(n)?-n:0}function G_(e){if(!Number.isFinite(e)||e===0)return"UTC";const t=e>=0?"+":"-",n=Math.abs(e),a=String(Math.floor(n/60)).padStart(2,"0"),s=String(n%60).padStart(2,"0");return`UTC${t}${a}:${s}`}function I4({timeZone:e,offsetMinutes:t}={}){const n=G_(t);return e&&e!=="UTC"?`${e} (${n})`:n}function j4({timeZone:e,offsetMinutes:t}={}){return Number.isFinite(t)?G_(t):e||"UTC"}function U4({timeZone:e,offsetMinutes:t,date:n=new Date}={}){const a=n instanceof Date?n:new Date(n);if(!Number.isFinite(a.getTime()))return"";if(e&&typeof Intl<"u"&&Intl.DateTimeFormat)try{const u=new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(a).reduce((m,y)=>(y.type&&y.value&&(m[y.type]=y.value),m),{}),c=u.year,h=u.month,f=u.day;if(c&&h&&f)return`${c}-${h}-${f}`}catch{}if(typeof t=="number"&&Number.isFinite(t)){const s=new Date(a.getTime()+t*6e4);return CA(s)}return EA(a)}function TA({timeZone:e,offsetMinutes:t,date:n=new Date}={}){const a=n instanceof Date?n:new Date(n);if(!Number.isFinite(a.getTime()))return null;if(e&&typeof Intl<"u"&&Intl.DateTimeFormat)try{const u=new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(a).reduce((m,y)=>(y.type&&y.value&&(m[y.type]=y.value),m),{}),c=Number(u.year),h=Number(u.month),f=Number(u.day);if(Number.isFinite(c)&&Number.isFinite(h)&&Number.isFinite(f))return{year:c,month:h,day:f}}catch{}if(typeof t=="number"&&Number.isFinite(t)){const s=new Date(a.getTime()+t*6e4);return{year:s.getUTCFullYear(),month:s.getUTCMonth()+1,day:s.getUTCDate()}}return{year:a.getFullYear(),month:a.getMonth()+1,day:a.getDate()}}function B4({timeZone:e,offsetMinutes:t}={}){return e?`tz:${e}`:typeof t=="number"&&Number.isFinite(t)?`offset:${Math.trunc(t)}`:"utc"}function CA(e){const t=e.getUTCFullYear(),n=String(e.getUTCMonth()+1).padStart(2,"0"),a=String(e.getUTCDate()).padStart(2,"0");return`${t}-${n}-${a}`}function EA(e){const t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return`${t}-${n}-${a}`}function yt(e){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())).toISOString().slice(0,10)}function xr(e){const t=e instanceof Date?e:new Date(e);if(!Number.isFinite(t.getTime()))return"";const n=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0");return`${n}-${a}-${s}`}function RA(e){if(!e)return null;const t=String(e).trim(),n=t.split("-");if(n.length!==3)return null;const a=Number(n[0]),s=Number(n[1])-1,o=Number(n[2]);if(!Number.isFinite(a)||!Number.isFinite(s)||!Number.isFinite(o))return null;const u=new Date(Date.UTC(a,s,o));return Number.isFinite(u.getTime())&&yt(u)===t?u:null}function AA(e){if(!e)return"";const t=e.year,n=String(e.month).padStart(2,"0"),a=String(e.day).padStart(2,"0");return!t||!n||!a?"":`${t}-${n}-${a}`}function LA(e,{timeZone:t,offsetMinutes:n,now:a}={}){const s=a instanceof Date&&Number.isFinite(a.getTime())?a:new Date,o=TA({timeZone:t,offsetMinutes:n,date:s});if(!o){const h=xr(new Date);return{from:h,to:h}}const u=AA(o),c=RA(u);if(!c)return{from:u,to:u};if(e==="day")return{from:u,to:u};if(e==="week"){const h=new Date(c),m=(h.getUTCDay()+6)%7;h.setUTCDate(h.getUTCDate()-m);const y=new Date(h);return y.setUTCDate(y.getUTCDate()+6),{from:yt(h),to:yt(y)}}if(e==="month"){const h=new Date(Date.UTC(c.getUTCFullYear(),c.getUTCMonth(),1)),f=new Date(Date.UTC(c.getUTCFullYear(),c.getUTCMonth()+1,0));return{from:yt(h),to:yt(f)}}if(e==="total"){const h=new Date(Date.UTC(c.getUTCFullYear(),c.getUTCMonth()-23,1));return{from:yt(h),to:u}}return LA("week")}function F4(e){if(e==null)return"-";try{if(typeof e=="bigint")return new Intl.NumberFormat().format(e);if(typeof e=="number")return new Intl.NumberFormat().format(e);const t=String(e).trim();return/^[0-9]+$/.test(t)?new Intl.NumberFormat().format(BigInt(t)):t}catch{return String(e)}}function V4(e,{thousandSuffix:t="K",millionSuffix:n="M",billionSuffix:a="B",decimals:s=1}={}){const o=Number(String(e));if(!Number.isFinite(o))return"-";const u=o<0?"-":"",c=Math.abs(o),h=Math.max(0,Math.min(6,Math.floor(s)));if(c<1e3)return`${u}${String(c)}`;const f=(w,x)=>{const T=w.toFixed(h),P=Number(T).toString();return`${u}${P}${x}`},m=(w,x,T)=>{const P=w.toFixed(h),L=Number(P);return T&&L>=1e3?f(L/1e3,T):`${u}${L.toString()}${x}`};if(c>=1e9)return f(c/1e9,a);if(c>=1e6)return m(c/1e6,n,a);const y=c/1e3,b=Number(y.toFixed(h));return b>=1e3?f(b/1e3,n):f(b,t)}function Y_(e){const t=Number(String(e));return Number.isFinite(t)?t:null}function z4(e,{decimals:t=2}={}){if(e==null)return"-";const n=String(e).trim();if(!n)return"-";const a=n.match(/^(-?\d+)(?:\.(\d+))?$/);if(!a)return n;const s=a[1],o=a[2]||"";let u=s;try{u=new Intl.NumberFormat().format(BigInt(s))}catch{u=s}const c=Math.max(0,Math.min(6,Math.floor(t))),h=c?o.slice(0,c).padEnd(c,"0"):"",f=s.startsWith("-")?"-":"",m=c?`${u.replace("-","")}.${h}`:u.replace("-","");return`${f}$${m}`}function Yu(e){if(typeof e!="string")return null;const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());if(!t)return null;const n=Number(t[1]),a=Number(t[2])-1,s=Number(t[3]),o=new Date(Date.UTC(n,a,s));return Number.isFinite(o.getTime())&&yt(o)===e.trim()?o:null}function ni(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+t))}function DA(e,t){const n=Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())-Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate());return Math.floor(n/864e5)}function Ph(e,t){if(!Array.isArray(e)||e.length===0)return 0;const n=e.length,a=(n-1)*t,s=Math.floor(a),o=a-s,u=e[s]??e[n-1],c=e[Math.min(n-1,s+1)]??e[n-1];return Math.round(u+(c-u)*o)}function MA(e){return e<=0?0:e>=4?4:e}function Z_({weeks:e=52,now:t,weekStartsOn:n="sun"}={}){const a=t instanceof Date&&Number.isFinite(t.getTime())?t:new Date,s=xr(a),o=Yu(s)||new Date(Date.UTC(a.getFullYear(),a.getMonth(),a.getDate())),u=n==="mon"?1:0,c=o.getUTCDay(),h=ni(o,-((c-u+7)%7)),f=ni(h,-7*(Math.max(1,e)-1));return{from:yt(f),to:s}}function NA({dailyRows:e,weeks:t=52,to:n,weekStartsOn:a="sun"}={}){const s=Yu(n)||new Date(Date.UTC(new Date().getFullYear(),new Date().getMonth(),new Date().getDate())),{from:o}=Z_({weeks:t,now:s,weekStartsOn:a}),u=Yu(o)||ni(s,-(t*7-1)),c=(()=>{const j=(u.getUTCDay()-(a==="mon"?1:0)+7)%7;return ni(u,-j)})(),h=new Map;for(const D of Array.isArray(e)?e:[]){const M=typeof D?.day=="string"?D.day:null;if(!M)continue;const j=Y_(D?.billable_total_tokens??D?.total_tokens)??0;h.set(M,Math.max(0,j))}const f=DA(c,s)+1,m=Math.ceil(f/7),y=[];for(let D=0;D<f;D++){const M=ni(c,D),j=yt(M),K=h.get(j)??0;K>0&&y.push(K)}y.sort((D,M)=>D-M);const b=Ph(y,.5),w=Ph(y,.75),x=Ph(y,.9);function T(D){return!D||D<=0?0:D<=b?1:D<=w?2:D<=x?3:4}const P=[];for(let D=0;D<m;D++){const M=[];for(let j=0;j<7;j++){const K=D*7+j,G=ni(c,K);if(G.getTime()>s.getTime()){M.push(null);continue}const W=yt(G),S=h.get(W)??0;M.push({day:W,value:S,level:MA(T(S))})}P.push(M)}const L=P.length>t?P.slice(P.length-t):P;return{from:o,to:yt(s),weeks:L,thresholds:{t1:b,t2:w,t3:x}}}function OA({dailyRows:e,to:t}={}){const n=Yu(t)||new Date(Date.UTC(new Date().getFullYear(),new Date().getMonth(),new Date().getDate())),a=new Map;for(const o of Array.isArray(e)?e:[]){const u=typeof o?.day=="string"?o.day:null;if(!u)continue;const c=Y_(o?.billable_total_tokens??o?.total_tokens)??0;a.set(u,Math.max(0,c))}let s=0;for(let o=0;o<370;o++){const u=yt(ni(n,-o));if((a.get(u)??0)>0){s+=1;continue}break}return s}const wc={},Q_="tokentracker",IA=["tokentracker/tokentracker","spacedriveapp/spacedrive","acme/alpha","acme/beta","neo/nebula","signal/flux","matrix/terminal","orbit/atlas","lumen/core","delta/horizon"],Ov=["NEO","TRINITY","MORPHEUS","ORACLE","CYPHER","SWITCH","APOC","TANK","SMITH","SERAPH","NIOBE","MOUSE","DOZER","LINK","BLADE"];function Pn(){if(typeof window<"u"){const e=new URLSearchParams(window.location.search),t=String(e.get("mock")||"").toLowerCase();if(t==="0"||t==="false"||t==="off"||t==="no")return!1;if(t==="1"||t==="true"||t==="on"||t==="yes")return!0}if(typeof import.meta<"u"&&wc){const e="".toLowerCase();if(e==="1"||e==="true")return!0}return!1}function jA(){if(typeof import.meta<"u"&&wc){const e="".trim();if(e)return e;const t="".trim();if(t)return t}if(typeof window<"u"){const e=new URLSearchParams(window.location.search),t=String(e.get("mock_now")||"").trim();if(t)return t;const n=String(e.get("mock_today")||"").trim();if(n)return n}return""}function UA(e){if(!e)return null;const t=String(e).trim();if(!t)return null;if(/^\d{4}-\d{2}-\d{2}$/.test(t)){const[a,s,o]=t.split("-").map(Number);if(!Number.isFinite(a)||!Number.isFinite(s)||!Number.isFinite(o))return null;const u=new Date(a,s-1,o,12,0,0);return Number.isFinite(u.getTime())?u:null}const n=new Date(t);return Number.isFinite(n.getTime())?n:null}function $4(){return Pn()?UA(jA()):null}function BA(){if(typeof import.meta<"u"&&wc){const e="".trim();if(e)return e}if(typeof window<"u"){const e=new URLSearchParams(window.location.search),t=String(e.get("mock_seed")||"").trim();if(t)return t}return Q_}function FA(){if(typeof import.meta<"u"&&wc){const e="".trim(),t=Number(e);if(Number.isFinite(t)&&t>0)return Math.floor(t)}if(typeof window<"u"){const e=new URLSearchParams(window.location.search),t=String(e.get("mock_missing")||"").trim(),n=Number(t);if(Number.isFinite(n)&&n>0)return Math.floor(n)}return 0}function Vo(e){return(e==null?BA():String(e)).trim()||Q_}function zo(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function un(e){if(typeof e!="string")return null;const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());if(!t)return null;const n=Number(t[1]),a=Number(t[2])-1,s=Number(t[3]),o=new Date(Date.UTC(n,a,s));return Number.isFinite(o.getTime())&&yt(o)===e.trim()?o:null}function Lo(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+t))}function X_(e,t){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1))}function VA(e){return`${e.getUTCFullYear()}-${String(e.getUTCMonth()+1).padStart(2,"0")}`}function fs({from:e,to:t,seed:n}){const a=un(xr(new Date))||new Date,s=un(e)||a,o=un(t)||s,u=[],c=Vo(n),h=Math.floor((Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate())-Date.UTC(s.getUTCFullYear(),s.getUTCMonth(),s.getUTCDate()))/864e5)+1;for(let f=0;f<h;f+=1){const m=Lo(s,f),y=yt(m),b=zo(`${c}:${y}`),w=b%1e3/1e3,x=.6+.4*Math.sin(f/6*Math.PI*.5),T=m.getUTCDay()===0||m.getUTCDay()===6?.65:1,P=18e3+Math.round(12e3*w),L=Math.max(0,Math.round(P*x*T)),D=Math.round(L*.46),M=Math.round(L*.34),j=Math.round(L*.14),K=Math.max(0,L-D-M-j);u.push({day:y,total_tokens:L,billable_total_tokens:L,input_tokens:D,output_tokens:M,cached_input_tokens:j,reasoning_output_tokens:K,conversation_count:1+b%5})}return u}function zA({day:e,seed:t}){const n=un(e)||un(xr(new Date))||new Date,a=yt(n),s=Vo(t),o=Array.from({length:48},(c,h)=>{const f=Math.floor(h/2),m=h%2===0?0:30,b=zo(`${s}:${a}:${f}:${m}`)%1e3/1e3,w=(f+m/60)/24,x=.4+.6*Math.sin(w*Math.PI*2),T=900+Math.round(700*b),P=Math.max(0,Math.round(T*x)),L=Math.round(P*.46),D=Math.round(P*.34),M=Math.round(P*.14),j=Math.max(0,P-L-D-M);return{hour:`${a}T${String(f).padStart(2,"0")}:${String(m).padStart(2,"0")}:00`,total_tokens:P,billable_total_tokens:P,input_tokens:L,output_tokens:D,cached_input_tokens:M,reasoning_output_tokens:j}}),u=Math.max(0,Math.min(48,FA()));if(u>0){const c=Date.now(),h=o.map((y,b)=>{const w=Date.parse(y.hour);return Number.isFinite(w)&&w<=c?{index:b,ts:w}:null}).filter(Boolean),f=Math.max(0,h.length-u),m=h.slice(f);for(const y of m){const b=o[y.index];b&&(o[y.index]={...b,missing:!0})}}return o}function $A({months:e=24,to:t,seed:n}){const a=un(t)||un(xr(new Date))||new Date,s=new Date(Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),1)),o=Vo(n),u=[];for(let c=e-1;c>=0;c-=1){const h=X_(s,-c),f=VA(h),y=zo(`${o}:${f}`)%1e3/1e3,b=.7+.3*Math.sin(u.length/6*Math.PI*.5),w=36e4+Math.round(2e5*y),x=Math.max(0,Math.round(w*b)),T=Math.round(x*.46),P=Math.round(x*.34),L=Math.round(x*.14),D=Math.max(0,x-T-P-L);u.push({month:f,total_tokens:x,billable_total_tokens:x,input_tokens:T,output_tokens:P,cached_input_tokens:L,reasoning_output_tokens:D})}return u}function bp(e){return e.reduce((t,n)=>(t.total_tokens+=Number(n.total_tokens||0),t.billable_total_tokens+=Number(n.billable_total_tokens||n.total_tokens||0),t.input_tokens+=Number(n.input_tokens||0),t.output_tokens+=Number(n.output_tokens||0),t.cached_input_tokens+=Number(n.cached_input_tokens||0),t.reasoning_output_tokens+=Number(n.reasoning_output_tokens||0),t.conversation_count+=Number(n.conversation_count||0),t),{total_tokens:0,billable_total_tokens:0,input_tokens:0,output_tokens:0,cached_input_tokens:0,reasoning_output_tokens:0,conversation_count:0})}function HA(e,t=1.75){const n=Number(e||0);return!Number.isFinite(n)||n<=0?"0.000000":(n*t/1e6).toFixed(6)}function Iv(e,t){const n=Number.isFinite(t)?t:0;return{total_tokens:Math.max(0,Math.round(e.total_tokens*n)),billable_total_tokens:Math.max(0,Math.round((e.billable_total_tokens??e.total_tokens)*n)),input_tokens:Math.max(0,Math.round(e.input_tokens*n)),output_tokens:Math.max(0,Math.round(e.output_tokens*n)),cached_input_tokens:Math.max(0,Math.round(e.cached_input_tokens*n)),reasoning_output_tokens:Math.max(0,Math.round(e.reasoning_output_tokens*n))}}function pf(e){return{...e,total_cost_usd:HA(e.total_tokens)}}function WA({from:e,to:t,seed:n}={}){const a=fs({from:e,to:t,seed:n});return{from:e,to:t,data:a}}function KA({day:e,seed:t}={}){const n=un(e)||new Date,a=yt(n),s=zA({day:a,seed:t});return{day:a,data:s}}function qA({months:e=24,to:t,seed:n}={}){const a=un(t)||un(xr(new Date))||new Date,s=yt(a),o=$A({months:e,to:s,seed:n}),u=X_(new Date(Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),1)),-(e-1));return{from:yt(u),to:s,months:e,data:o}}function GA({from:e,to:t,seed:n,rolling:a=!0}={}){const s=fs({from:e,to:t,seed:n}),o=bp(s),u=pf(o),c=a?YA({to:t,seed:n}):null;return{from:e,to:t,days:s.length,totals:u,...c?{rolling:c}:{}}}function YA({to:e,seed:t}={}){const n=un(e)||un(xr(new Date))||new Date,a=yt(n),s=yt(Lo(n,-6)),o=yt(Lo(n,-29)),u=fs({from:s,to:a,seed:t}),c=fs({from:o,to:a,seed:t});return{last_7d:jv({rows:u,from:s,to:a}),last_30d:jv({rows:c,from:o,to:a})}}function jv({rows:e,from:t,to:n}={}){const a=bp(e||[]),s=(e||[]).filter(u=>Number(u.billable_total_tokens??u.total_tokens)>0).length,o=s>0?Math.floor(a.billable_total_tokens/s):0;return{from:t,to:n,totals:{billable_total_tokens:a.billable_total_tokens,conversation_count:a.conversation_count},active_days:s,avg_per_active_day:o}}function ZA({seed:e,limit:t=3}={}){const n=Vo(e),a=IA.map((s,o)=>{const c=12e4+zo(`${n}:${s}`)%9e5,h=o%4*4200,f=Math.max(0,c+h),m=Math.max(0,Math.round(f*.96));return{project_key:s,project_ref:`https://github.com/${s}`,total_tokens:String(f),billable_total_tokens:String(m)}}).sort((s,o)=>Number(o.billable_total_tokens)-Number(s.billable_total_tokens)).slice(0,Math.max(1,Math.min(10,Math.floor(Number(t)||3))));return{generated_at:new Date().toISOString(),entries:a}}function QA(e){const t=un(xr(new Date))||new Date,n=String(e).trim().toLowerCase()||"week";if(n==="total")return{from:"1970-01-01",to:"9999-12-31"};if(n==="month"){const u=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1)),c=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth()+1,0));return{from:yt(u),to:yt(c)}}const a=t.getUTCDay(),s=yt(Lo(t,-a)),o=yt(Lo(t,-a+6));return{from:s,to:o}}function J_({seed:e,period:t,metric:n,limit:a=20,offset:s=0}={}){const o=Vo(e),u=Math.max(1,Math.min(100,Math.floor(Number(a)||20))),c=Math.max(0,Math.min(1e4,Math.floor(Number(s)||0))),h=String(n||"all").trim().toLowerCase()||"all",f=String(t||"week").trim().toLowerCase()||"week",m=f==="month"||f==="total"||f==="week"?f:"week",{from:y,to:b}=QA(m),w=250,x=w>0?Math.ceil(w/u):0,T=Math.floor(c/u)+1,P=Array.from({length:w},(W,S)=>{const Z=S+1,X=`00000000-0000-0000-0000-${String(Z).padStart(12,"0")}`,_e=Ov[Z%Ov.length],Re=18e4+zo(`${o}:${_e}:${Z}`)%9e5,fe=Math.max(0,Re+Z*1200),ce=Math.floor(fe*.28),ue=Math.floor(fe*.18),Me=Math.floor(fe*.1),H=Math.floor(fe*.1),Y=Math.floor(fe*.08),$=Math.floor(fe*.03),N=Math.floor(fe*.02),q=Math.floor(fe*.04),xe=Math.floor(fe*.03),Ae=Math.max(0,fe-ce-ue-Me-H-Y-$-N-q-xe),Se=Z%7!==0;return{id:Z,user_id:X,is_public:Se,is_me:!1,display_name:Se?_e:"Anonymous",avatar_url:null,gpt_tokens:ce,claude_tokens:ue,gemini_tokens:Me,cursor_tokens:H,opencode_tokens:Y,openclaw_tokens:Ae,hermes_tokens:$,kiro_tokens:N,copilot_tokens:q,kimi_tokens:xe,other_tokens:0,total_tokens:fe}}),L=Math.max(0,Math.min(w-1,Math.floor(w*.8)));P[L]&&(P[L].is_me=!0);const D=h==="gpt"||h==="codex"?"gpt_tokens":h==="claude"?"claude_tokens":h==="gemini"?"gemini_tokens":h==="cursor"?"cursor_tokens":h==="opencode"?"opencode_tokens":h==="openclaw"?"openclaw_tokens":h==="hermes"?"hermes_tokens":h==="kiro"?"kiro_tokens":h==="copilot"?"copilot_tokens":h==="kimi"?"kimi_tokens":"total_tokens",M=P.slice().sort((W,S)=>Number(S[D])-Number(W[D])||W.id-S.id).map((W,S)=>({user_id:W.is_public?W.user_id:null,rank:S+1,is_me:!!W.is_me,display_name:W.display_name,avatar_url:W.avatar_url,gpt_tokens:String(W.gpt_tokens),claude_tokens:String(W.claude_tokens),gemini_tokens:String(W.gemini_tokens),cursor_tokens:String(W.cursor_tokens),opencode_tokens:String(W.opencode_tokens),openclaw_tokens:String(W.openclaw_tokens),hermes_tokens:String(W.hermes_tokens??0),kiro_tokens:String(W.kiro_tokens??0),copilot_tokens:String(W.copilot_tokens??0),kimi_tokens:String(W.kimi_tokens??0),other_tokens:String(W.other_tokens??0),total_tokens:String(W.total_tokens),is_public:!!W.is_public})),j=M.find(W=>W?.is_me)||null,K=j?{rank:j.rank,gpt_tokens:j.gpt_tokens,claude_tokens:j.claude_tokens,gemini_tokens:j.gemini_tokens,cursor_tokens:j.cursor_tokens,opencode_tokens:j.opencode_tokens,openclaw_tokens:j.openclaw_tokens,hermes_tokens:j.hermes_tokens,kiro_tokens:j.kiro_tokens,copilot_tokens:j.copilot_tokens,kimi_tokens:j.kimi_tokens,other_tokens:j.other_tokens,total_tokens:j.total_tokens}:{rank:null,gpt_tokens:"0",claude_tokens:"0",gemini_tokens:"0",cursor_tokens:"0",opencode_tokens:"0",openclaw_tokens:"0",hermes_tokens:"0",kiro_tokens:"0",copilot_tokens:"0",kimi_tokens:"0",other_tokens:"0",total_tokens:"0"},G=M.slice(c,c+u);return{period:m,metric:h,from:y,to:b,generated_at:new Date().toISOString(),page:T,limit:u,offset:c,total_entries:w,total_pages:x,entries:G,me:K}}function XA({weeks:e=52,to:t,weekStartsOn:n="sun",seed:a}={}){const s=Z_({weeks:e,now:un(t)||un(xr(new Date))||new Date,weekStartsOn:n}),o=fs({from:s.from,to:s.to,seed:a});return{...NA({dailyRows:o,weeks:e,to:s.to,weekStartsOn:n}),week_starts_on:n,active_days:o.filter(c=>Number(c.billable_total_tokens??c.total_tokens)>0).length,streak_days:OA({dailyRows:o,to:s.to})}}function JA({from:e,to:t,seed:n}={}){const a=fs({from:e,to:t,seed:n}),s=bp(a),u=[{source:"codex",weight:.7,models:[{model:"gpt-5.2-codex",model_id:"gpt-5.2-codex",weight:.2},{model:"unknown",model_id:"unknown",weight:.8}]},{source:"claude",weight:.2,models:[{model:"claude-3.5",model_id:"claude-3.5",weight:.3},{model:"unknown",model_id:"unknown",weight:.7}]},{source:"every-code",weight:.1,models:[{model:"unknown",model_id:"unknown",weight:1}]}].map(c=>{const h=Iv(s,c.weight),f=c.models.map(m=>{const y=Iv(h,m.weight);return{model:m.model,model_id:m.model_id||m.model,totals:pf(y)}});return{source:c.source,totals:pf(h),models:f}});return{from:e,to:t,days:a.length,sources:u,pricing:{model:"mock",pricing_mode:"add",source:"mock",effective_from:xr(new Date),rates_per_million_usd:{input:"1.750000",cached_input:"0.175000",output:"14.000000",reasoning_output:"14.000000"}}}}function eL({from:e,to:t,source:n="claude"}={}){if(n==="codex")return{from:e,to:t,source:"codex",scope:"supported",totals:{input_tokens:142e4,cached_input_tokens:588e4,cache_creation_input_tokens:92e4,output_tokens:256e4,reasoning_output_tokens:61e4,total_tokens:1078e4},session_count:188,message_count:5436,tool_calls_breakdown:{categories:[{name:"Execution",calls:742,totals:{input_tokens:32e4,cached_input_tokens:104e4,cache_creation_input_tokens:11e4,output_tokens:46e4,reasoning_output_tokens:12e4,total_tokens:193e4},tools:[{name:"exec_command",calls:510,totals:{input_tokens:25e4,cached_input_tokens:82e4,cache_creation_input_tokens:8e4,output_tokens:37e4,reasoning_output_tokens:9e4,total_tokens:152e4}},{name:"write_stdin",calls:232,totals:{input_tokens:7e4,cached_input_tokens:22e4,cache_creation_input_tokens:3e4,output_tokens:9e4,reasoning_output_tokens:3e4,total_tokens:41e4}}]},{name:"Browser",calls:406,totals:{input_tokens:21e4,cached_input_tokens:88e4,cache_creation_input_tokens:9e4,output_tokens:42e4,reasoning_output_tokens:1e5,total_tokens:17e5},tools:[{name:"take_snapshot",calls:180,totals:{input_tokens:1e5,cached_input_tokens:4e5,cache_creation_input_tokens:4e4,output_tokens:18e4,reasoning_output_tokens:4e4,total_tokens:76e4}},{name:"click",calls:126,totals:{input_tokens:6e4,cached_input_tokens:25e4,cache_creation_input_tokens:3e4,output_tokens:12e4,reasoning_output_tokens:35e3,total_tokens:495e3}},{name:"evaluate_script",calls:100,totals:{input_tokens:5e4,cached_input_tokens:23e4,cache_creation_input_tokens:2e4,output_tokens:12e4,reasoning_output_tokens:25e3,total_tokens:445e3}}]}],tools_total:363e4,privacy:{includes_inputs:!1,note:"Aggregated tool names only; no tool arguments or outputs are included."}},exec_command_breakdown:{by_type:[{name:"test",calls:168,failures:14,duration_ms:482e3,max_duration_ms:18400,output_chars:45e4,output_lines:8600,totals:{input_tokens:9e4,cached_input_tokens:32e4,output_tokens:16e4,reasoning_output_tokens:42e3,total_tokens:612e3}},{name:"build",calls:116,failures:9,duration_ms:392e3,max_duration_ms:22100,output_chars:31e4,output_lines:5200,totals:{input_tokens:7e4,cached_input_tokens:24e4,output_tokens:13e4,reasoning_output_tokens:3e4,total_tokens:47e4}}],by_exit:[{name:"completed:0",calls:438,failures:0,duration_ms:104e4,max_duration_ms:22100,output_chars:83e4,output_lines:13100,totals:{input_tokens:22e4,cached_input_tokens:78e4,output_tokens:35e4,reasoning_output_tokens:82e3,total_tokens:1432e3}},{name:"completed:1",calls:72,failures:72,duration_ms:155e3,max_duration_ms:11800,output_chars:12e4,output_lines:2300,totals:{input_tokens:3e4,cached_input_tokens:11e4,output_tokens:55e3,reasoning_output_tokens:8e3,total_tokens:195e3}}]}};if(n!=="claude")return{from:e,to:t,source:n,scope:"unsupported",totals:{input_tokens:0,cached_input_tokens:0,cache_creation_input_tokens:0,output_tokens:0,reasoning_output_tokens:0,total_tokens:0},categories:["system_prefix","conversation_history","user_input","tool_calls","subagents","reasoning","assistant_response"].map(u=>({key:u,totals:{input_tokens:0,cached_input_tokens:0,cache_creation_input_tokens:0,output_tokens:0,reasoning_output_tokens:0,total_tokens:0},percent:0})),session_count:0,message_count:0};const a=[{key:"system_prefix",total:12896539},{key:"conversation_history",total:320207200},{key:"user_input",total:998025},{key:"tool_calls",total:4808739},{key:"subagents",total:1022828},{key:"reasoning",total:11073118},{key:"assistant_response",total:1289174}],s=a.reduce((u,c)=>u+c.total,0),o=a.map(({key:u,total:c})=>({key:u,totals:{input_tokens:u==="user_input"?c:0,cached_input_tokens:u==="conversation_history"?Math.round(c*.95):0,cache_creation_input_tokens:u==="system_prefix"?c:u==="conversation_history"?Math.round(c*.05):0,output_tokens:["tool_calls","subagents","reasoning","assistant_response"].includes(u)?c:0,reasoning_output_tokens:u==="reasoning"?c:0,total_tokens:c},percent:Number((c/s*100).toFixed(2))}));return{from:e,to:t,source:"claude",scope:"supported",totals:{input_tokens:998025,cached_input_tokens:Math.round(320207200*.95),cache_creation_input_tokens:12896539+Math.round(320207200*.05),output_tokens:18193859,reasoning_output_tokens:11073118,total_tokens:s},categories:o,session_count:312,message_count:12046}}let Eu=null;function tL(){Eu=null}async function nL(e=fetch){if(Eu)return Eu;const t=await e("/api/local-auth",{method:"GET",headers:{Accept:"application/json"},cache:"no-store"});if(!t.ok)throw new Error(`Local auth request failed with HTTP ${t.status}`);const n=await t.json().catch(()=>null),a=typeof n?.token=="string"?n.token.trim():"";if(!a)throw new Error("Local auth token missing from response");return Eu=a,a}async function _p(e=fetch){return{"x-tokentracker-local-auth":await nL(e)}}const ir={usageSummary:"tokentracker-usage-summary",usageDaily:"tokentracker-usage-daily",usageHourly:"tokentracker-usage-hourly",usageMonthly:"tokentracker-usage-monthly",usageHeatmap:"tokentracker-usage-heatmap",usageModelBreakdown:"tokentracker-usage-model-breakdown",usageCategoryBreakdown:"tokentracker-usage-category-breakdown",projectUsageSummary:"tokentracker-project-usage-summary",userStatus:"tokentracker-user-status",localSync:"tokentracker-local-sync",usageLimits:"tokentracker-usage-limits"};async function Sr(e,t,n){const a=new URL(`/functions/${e}`,window.location.origin);if(t)for(const[o,u]of Object.entries(t))u!=null&&u!==""&&a.searchParams.set(o,String(u));const s=await fetch(a.toString(),{headers:{Accept:"application/json"},cache:"no-store",...n});if(!s.ok){const o=new Error(`Request failed with HTTP ${s.status}`);throw o.status=s.status,o}return s.json()}function Oa({timeZone:e,tzOffsetMinutes:t}={}){const n={},a=typeof e=="string"?e.trim():"";return a&&(n.tz=a),Number.isFinite(t)&&(n.tz_offset_minutes=String(Math.trunc(t))),n}function mi({source:e,model:t}={}){const n={},a=typeof e=="string"?e.trim().toLowerCase():"";a&&(n.source=a);const s=typeof t=="string"?t.trim():"";return s&&(n.model=s),n}async function H4({from:e,to:t,source:n,model:a,timeZone:s,tzOffsetMinutes:o,rolling:u=!1,accessToken:c}={}){if(Pn())return GA({from:e,to:t,seed:c,rolling:u});const h=Oa({timeZone:s,tzOffsetMinutes:o}),f=mi({source:n,model:a}),m=u?{rolling:"1"}:{};return Sr(ir.usageSummary,{from:e,to:t,...f,...h,...m})}async function W4({from:e,to:t,source:n,limit:a,timeZone:s,tzOffsetMinutes:o,accessToken:u}={}){if(Pn())return ZA({seed:u,limit:a});const c=Oa({timeZone:s,tzOffsetMinutes:o}),f={...mi({source:n}),...c};return e&&(f.from=e),t&&(f.to=t),a!=null&&(f.limit=String(a)),Sr(ir.projectUsageSummary,f)}async function $o(e,t={}){const n=fi();if(!n)throw new Error("InsForge base URL not configured");const a=n.replace(/\/$/,""),s=new URL(`${a}/functions/${e}`);if(t.params)for(const[h,f]of Object.entries(t.params))f!=null&&f!==""&&s.searchParams.set(h,String(f));const o={Accept:"application/json","Content-Type":"application/json"},u=_c();u&&(o.apikey=u),t.accessToken&&xA(t.accessToken)&&(o.Authorization=`Bearer ${t.accessToken}`);const c=await fetch(s.toString(),{method:t.method||"GET",headers:o,...t.body!=null?{body:JSON.stringify(t.body)}:{}});if(!c.ok){const h=new Error(`Request failed with HTTP ${c.status}`);throw h.status=c.status,h}return c.json()}async function K4({accessToken:e,userId:t,period:n,metric:a,limit:s,offset:o}={}){return Pn()?J_({seed:e||t,period:n,metric:a,limit:s,offset:o}):$o("tokentracker-leaderboard",{params:{period:n,limit:s,offset:o,user_id:t}})}async function Uv({accessToken:e}={}){return $o("tokentracker-public-visibility",{accessToken:e,method:"GET"})}async function q4({accessToken:e,enabled:t,anonymous:n,display_name:a,github_url:s,show_github_url:o}={}){const u={};return t!==void 0&&(u.enabled=!!t),n!==void 0&&(u.anonymous=!!n),a!==void 0&&(u.display_name=String(a)),s!==void 0&&(u.github_url=s===null?null:String(s)),o!==void 0&&(u.show_github_url=!!o),$o("tokentracker-public-visibility",{accessToken:e,method:"POST",body:u})}async function G4({accessToken:e,period:t,source:n}={}){const a={};return t&&(a.period=t),typeof n=="string"&&n.trim()&&(a.source=n.trim()),$o("tokentracker-leaderboard-refresh",{accessToken:e,method:"POST",body:a})}async function Y4({accessToken:e,userId:t,period:n}={}){if(Pn()){const a=J_({seed:e,period:n,metric:"all",limit:250,offset:0}),o=(Array.isArray(a?.entries)?a.entries:[]).find(u=>u?.user_id===t)||null;return{period:a?.period??"week",from:a?.from??null,to:a?.to??null,generated_at:a?.generated_at??new Date().toISOString(),entry:o}}return $o("tokentracker-leaderboard-profile",{accessToken:e,params:{user_id:t,period:n}})}async function Z4(e={}){if(Pn()){const t=new Date().toISOString();return{user_id:"local-user",created_at:t,pro:{active:!1,sources:[],expires_at:null,partial:!1,as_of:t},subscriptions:{partial:!1,as_of:t,items:[]},install:{partial:!1,as_of:t,has_active_device_token:!1,has_active_device:!1,active_device_tokens:0,active_devices:0,latest_token_activity_at:null,latest_device_seen_at:null}}}return Sr(ir.userStatus)}async function Q4({signal:e}={}){const t=await _p(),n=await fetch(`/functions/${ir.localSync}`,{method:"POST",headers:{Accept:"application/json",...t},cache:"no-store",signal:e}),a=await n.json().catch(()=>({ok:!1,error:`Local sync request failed with HTTP ${n.status}`}));if(!n.ok||a?.ok===!1){const s=a?.error||a?.message||`Local sync request failed with HTTP ${n.status}`,o=new Error(s);throw o.status=n.status,o}return a}async function X4({from:e,to:t,source:n,timeZone:a,tzOffsetMinutes:s,accessToken:o}={}){if(Pn())return JA({from:e,to:t,seed:o});const u=Oa({timeZone:a,tzOffsetMinutes:s}),c=mi({source:n});return Sr(ir.usageModelBreakdown,{from:e,to:t,...c,...u})}async function J4({from:e,to:t,source:n="claude",timeZone:a,tzOffsetMinutes:s}={}){if(Pn())return eL({from:e,to:t,source:n});const o=Oa({timeZone:a,tzOffsetMinutes:s});return Sr(ir.usageCategoryBreakdown,{from:e,to:t,source:n,...o})}async function e3({from:e,to:t,source:n,model:a,timeZone:s,tzOffsetMinutes:o,accessToken:u}={}){if(Pn())return WA({from:e,to:t,seed:u});const c=Oa({timeZone:s,tzOffsetMinutes:o}),h=mi({source:n,model:a});return Sr(ir.usageDaily,{from:e,to:t,...h,...c})}async function t3({day:e,source:t,model:n,timeZone:a,tzOffsetMinutes:s,accessToken:o}={}){if(Pn())return KA({day:e,seed:o});const u=Oa({timeZone:a,tzOffsetMinutes:s}),c=mi({source:t,model:n}),h=e?{day:e,...c,...u}:{...c,...u};return Sr(ir.usageHourly,h)}async function n3({months:e,to:t,source:n,model:a,timeZone:s,tzOffsetMinutes:o,accessToken:u}={}){if(Pn())return qA({months:e,to:t,seed:u});const c=Oa({timeZone:s,tzOffsetMinutes:o}),h=mi({source:n,model:a});return Sr(ir.usageMonthly,{...e?{months:String(e)}:{},...t?{to:t}:{},...h,...c})}async function r3(e={}){const t=e?.refresh?{refresh:"1"}:void 0;return Sr(ir.usageLimits,t)}async function a3({weeks:e,to:t,weekStartsOn:n,source:a,model:s,timeZone:o,tzOffsetMinutes:u,accessToken:c}={}){if(Pn())return XA({weeks:e,to:t,weekStartsOn:n,seed:c});const h=Oa({timeZone:o,tzOffsetMinutes:u}),f=mi({source:a,model:s});return Sr(ir.usageHeatmap,{weeks:String(e),to:t,week_starts_on:n,...f,...h})}const ew=k.createContext(null);function rL(e){if(!e||typeof e!="object")return"";const t=e.user_metadata&&typeof e.user_metadata=="object"?e.user_metadata:{},n=e.profile&&typeof e.profile=="object"?e.profile:{},a=t.full_name||t.name||n.name||t.user_name||t.preferred_username;return typeof a=="string"&&a.trim()?a.trim():typeof e.email=="string"&&e.email.includes("@")?e.email.split("@")[0].trim()||e.email.trim():typeof e.email=="string"?e.email.trim():""}function Bv(e){if(!e||typeof e!="object")return null;const t=e,n=t.session&&typeof t.session=="object"?t.session:null,a=typeof t.accessToken=="string"&&t.accessToken||typeof t.access_token=="string"&&t.access_token||n&&typeof n.accessToken=="string"&&n.accessToken||n&&typeof n.access_token=="string"&&n.access_token||null;return a&&a.length>0?a:null}async function Th(e,t={}){if(!e)return null;const n=Math.max(0,Math.floor(Number(t.skewMs)||6e4)),a=e.tokenManager,s=()=>a?.getAccessToken?.()??a?.getSession?.()?.accessToken??null;let o=s();if(!o||SA(o,n)){const{data:u}=await e.auth.refreshSession();if(o=s()??Bv(u)??null,!o&&typeof e.auth.getCurrentUser=="function")try{await e.auth.getCurrentUser(),o=s()??Bv(u)??null}catch{}}return o||null}function aL({children:e}){const[t,n]=k.useState(null),[a,s]=k.useState(null),[o,u]=k.useState(!0);k.useEffect(()=>{if(!ff()){n(null),s(null),u(!1);return}n(gA())},[]),k.useEffect(()=>{if(!t)return;let G=!0;return u(!0),(async()=>{try{let{data:W,error:S}=await t.auth.getCurrentUser();if(!G)return;if(!S&&!W?.user){if(await new Promise(X=>setTimeout(X,150)),!G)return;const Z=await t.auth.getCurrentUser();W=Z.data,S=Z.error}if(S){s(null);return}s(W?.user??null)}catch{G&&s(null)}finally{G&&u(!1)}})(),()=>{G=!1}},[t]);const c=k.useCallback(async()=>{if(t)try{let{data:G,error:W}=await t.auth.getCurrentUser();if(!W&&!G?.user){await new Promise(Z=>setTimeout(Z,150));const S=await t.auth.getCurrentUser();G=S.data,W=S.error}if(W){s(null);return}s(G?.user??null)}catch{s(null)}},[t]),h=k.useCallback(async(G,W)=>{if(!t)return{error:new Error("InsForge client not configured")};const S=typeof window<"u"&&window.webkit?.messageHandlers?.nativeOAuth;if(S){const _e=typeof W=="string"&&W.trim()?W.trim():`${window.location.origin}/auth/callback`,oe=await t.auth.signInWithOAuth({provider:G,redirectTo:_e,skipBrowserRedirect:!0});if(oe.data?.url){try{const Re=await _p();await fetch("/api/auth-bridge/verifier",{method:"PUT",headers:{"Content-Type":"application/json",...Re},body:JSON.stringify({native:!0})})}catch{}S.postMessage(oe.data.url)}return oe}const Z=typeof W=="string"&&W.trim()?W.trim():typeof window<"u"?`${window.location.origin}/dashboard`:void 0;return await t.auth.signInWithOAuth({provider:G,redirectTo:Z})},[t]),f=k.useCallback(async G=>{if(!t)return{data:null,error:new Error("InsForge client not configured")};const{data:W,error:S}=await t.auth.signInWithPassword(G);return W?.user&&s(W.user),{data:W,error:S}},[t]),m=k.useCallback(async G=>{if(!t)return{data:null,error:new Error("InsForge client not configured")};const{data:W,error:S}=await t.auth.signUp(G);return W?.user&&W?.accessToken&&s(W.user),{data:W,error:S}},[t]),y=k.useCallback(async()=>t?t.auth.getPublicAuthConfig():{data:null,error:new Error("InsForge client not configured")},[t]),b=k.useCallback(async()=>{t&&(await t.auth.signOut(),K_(),tL(),s(null))},[t]),w=k.useCallback(async()=>Th(t),[t]),[x,T]=k.useState(null),[P,L]=k.useState(!1),D=k.useMemo(()=>rL(a),[a]);k.useEffect(()=>{if(!a||!t){T(null),L(!1);return}let G=!0;return(async()=>{try{const W=await Th(t);if(!G||!W){G&&L(!0);return}const S=await Uv({accessToken:W});G&&S?.display_name&&T(S.display_name)}catch{}G&&L(!0)})(),()=>{G=!1}},[a,t]);const M=P?x||D:"",j=k.useCallback(async()=>{if(t)try{const G=await Th(t);if(!G)return;const W=await Uv({accessToken:G});W?.display_name&&T(W.display_name)}catch{}},[t]),K=k.useMemo(()=>!ff()||!t?{enabled:!1,client:null,user:null,signedIn:!1,loading:!1,displayName:"",refreshUser:async()=>{},refreshDisplayName:async()=>{},signInWithOAuth:async()=>({error:new Error("InsForge not configured")}),signInWithPassword:async()=>({data:null,error:new Error("InsForge not configured")}),signUp:async()=>({data:null,error:new Error("InsForge not configured")}),getPublicAuthConfig:async()=>({data:null,error:new Error("InsForge not configured")}),signOut:async()=>{},getAccessToken:async()=>null}:{enabled:!0,client:t,user:a,signedIn:!!a,loading:o,displayName:M,refreshUser:c,refreshDisplayName:j,signInWithOAuth:h,signInWithPassword:f,signUp:m,getPublicAuthConfig:y,signOut:b,getAccessToken:w},[t,a,o,M,c,j,h,f,m,y,b,w]);return I.jsx(ew.Provider,{value:K,children:e})}function Ho(){return k.useContext(ew)}const iL=`key,module,page,component,slot,text,notes,status
43
43
  header.auth.sign_in_aria,shared,*,InsforgeUserHeaderControls,sign_in_aria,"Sign in",,active
44
44
  login.back_home,shared,LoginPage,LoginPage,back_home,"Back to home",,active
45
45
  login.cloud_only,shared,LoginPage,LoginPage,cloud_only,"Cloud sign-in is not configured. Use the local dashboard on localhost.",,active
@@ -495,6 +495,8 @@ usage.overview.expand,ui,DashboardPage,UsageOverview,expand,"expand",,active
495
495
  usage.overview.collapse,ui,DashboardPage,UsageOverview,collapse,"collapse",,active
496
496
  usage.overview.model_count,ui,DashboardPage,UsageOverview,model_count,"{{count}} models",,active
497
497
  usage.overview.model_details_aria,ui,DashboardPage,UsageOverview,model_details_aria,"{{provider}} model details",,active
498
+ usage.overview.antigravity_notice_title,ui,DashboardPage,UsageOverview,antigravity_notice_title,"Estimated tokens",,active
499
+ usage.overview.antigravity_notice_body,ui,DashboardPage,UsageOverview,antigravity_notice_body,"Antigravity transcripts don't record real usage numbers. These counts are estimated from text length (~4 chars/token) and don't reflect Gemini's prompt-cache discount, so treat them as an upper bound, not a billing figure.",,active
498
500
  limits.panel.title,ui,LimitsPage,UsageLimitsPanel,title,"Usage Limits",,active
499
501
  limits.label.cursor_plan,ui,LimitsPage,UsageLimitsPanel,cursor_plan,"Plan",,active
500
502
  limits.label.cursor_auto,ui,LimitsPage,UsageLimitsPanel,cursor_auto,"Auto",,active
@@ -614,7 +616,7 @@ dashboard.context_breakdown.exec_details.group_by_command,dashboard,DashboardPag
614
616
  dashboard.context_breakdown.exec_details.group_by_duration,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_duration,"Duration",,active
615
617
  dashboard.context_breakdown.exec_details.group_by_output,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_output,"Output",,active
616
618
  dashboard.context_breakdown.exec_details.group_by_exit,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_exit,"By exit",,active
617
- `,sL={"header.auth.sign_in_aria":"登录","login.back_home":"返回首页","login.cloud_only":"未配置云端登录。请使用 localhost 上的本地仪表盘。","login.title":"登录","login.subtitle":"选择邮箱或已连接账号。","login.dismiss":"关闭","login.verify_email_success":"邮箱已验证。你现在可以登录。","login.verify_email_pending":"请先在邮箱中完成验证,然后再登录。","login.oauth.continue":"使用 {{provider}} 继续","login.divider":"或","login.tab.sign_in":"登录","login.tab.sign_up":"创建账户","login.field.name":"显示名称","login.field.name_placeholder":"可选","login.field.email":"电子邮件","login.field.password":"密码","login.password_hint":"至少 {{min}} 个字符。","login.submit.sign_in":"使用邮箱登录","login.submit.sign_up":"创建账号","auth.callback.processing":"处理中…","auth.callback.success":"登录成功","auth.callback.redirecting":"正在返回 TokenTracker…","auth.callback.failed":"登录未完成,请重试。","auth.callback.close":"关闭此页","login_modal.subtitle":"登录以加入排行榜","login_modal.continue_email":"使用邮箱继续","login_modal.divider_email":"邮箱","shared.placeholder.short":"--","shared.unit.percent":"%","shared.unit.thousand_abbrev":"K","shared.unit.million_abbrev":"M","shared.unit.billion_abbrev":"B","shared.data_source":"数据来源:{{source}}","shared.error.prefix":"错误:{{error}}","shared.status.unsynced":"—","shared.time.now":"刚刚","error.boundary.title":"出了点问题","error.boundary.subtitle":"这个视图渲染失败了","error.boundary.hint":"打开控制台,然后重新加载页面","error.boundary.no_details":"没有错误详细信息","error.boundary.action.reload":"重新加载","identity_card.rank_label":"排名","identity_card.streak_label":"活跃天数","identity_card.rank_placeholder":"—","identity_card.streak_value":"{{days}} 天","usage.summary.total":"Token 总数","usage.period.day":"日","usage.period.week":"周","usage.period.month":"月","usage.period.total":"总计","usage.period.custom":"自定义","usage.metric.total":"总计","usage.metric.input":"输入","usage.metric.output":"输出","usage.metric.cached_input":"缓存输入","usage.metric.reasoning_output":"推理输出","usage.button.refresh":"刷新","usage.overview.tablist_aria":"时间范围","usage.overview.cost_breakdown_aria":"查看成本明细","usage.overview.distribution_aria":"来源占比:{{items}}","usage.overview.distribution_item":"{{label}} {{percent}}%","usage.overview.provider_card_aria":"{{provider}}:{{percent}}%,{{tokens}} Token,{{cost}}。点击{{action}}详情","usage.overview.expand":"展开","usage.overview.collapse":"收起","usage.overview.model_count":"{{count}} 个模型","usage.overview.model_details_aria":"{{provider}} 模型详情","widgets.page.title":"组件","widgets.cta.open_gallery":"打开小组件库","widgets.cta.download":"下载 Mac 应用","widgets.cta.macos_only":"仅限 macOS","widgets.menubar.section.title":"菜单栏","widgets.gallery.section.title":"桌面小组件","widgets.summary.name":"使用概览","widgets.summary.description":"今天和近 7 天的用量,以及紧凑趋势线。","widgets.heatmap.name":"热力图","widgets.heatmap.description":"像 GitHub 一样,一眼看清活跃和空闲的日子。","widgets.topModels.name":"热门模型","widgets.topModels.description":"你最常用的模型,按 Token 占比排序。","widgets.limits.name":"使用限制","widgets.limits.description":"Claude、Codex、Cursor、Gemini 等的实时速率限制进度。","daily.sort.date.label":"日期","daily.sort.date.title":"按日期排序","daily.sort.total.label":"总计","daily.sort.total.title":"按总计排序","daily.sort.input.label":"输入","daily.sort.input.title":"按输入排序","daily.sort.output.label":"输出","daily.sort.output.title":"按输出排序","daily.sort.cached.label":"缓存","daily.sort.cached.title":"按缓存输入排序","daily.sort.reasoning.label":"推理","daily.sort.reasoning.title":"按推理输出排序","daily.sort.conversations.label":"对话数","daily.sort.conversations.title":"按对话排序","details.pagination.prev":"上一页","details.pagination.next":"下一页","limits.copilot.otelHint.title":"跟踪 Copilot Token 使用情况","limits.copilot.otelHint.body":"限额信息通过你的 GitHub OAuth 令牌读取。如果还想记录逐 Token 用量,请启用 Copilot 的 OpenTelemetry 导出,把下面这段加到你的 shell 配置文件(~/.zshrc 或 ~/.bashrc):","limits.copilot.otelHint.copy":"复制","limits.copilot.otelHint.copied":"已复制","limits.panel.title":"使用限制","limits.label.cursor_plan":"套餐","limits.label.cursor_auto":"自动","limits.label.cursor_api":"API","limits.label.kiro_month":"月度","limits.label.kiro_bonus":"奖励","limits.label.kimi_weekly":"周","limits.label.kimi_5h":"5h","limits.label.kimi_total":"总量","limits.label.kimi_parallel":"并发:{{count}}","limits.label.copilot_premium":"高级","limits.label.copilot_chat":"对话","limits.status.not_connected":"未连接","limits.status.no_data":"未返回实时限额数据","limits.status.all_hidden":"所有限额提供商都已隐藏。请打开显示设置重新显示。","nav.usage":"用量","nav.limits":"限额","nav.widgets":"小组件","nav.skills":"Skills","nav.leaderboard":"排行榜","nav.collapse":"折叠侧边栏","nav.expand":"展开侧边栏","nav.menu":"打开导航菜单","nav.close_menu":"关闭导航菜单","nav.aside_label":"主导航","nav.nav_label":"导航","limits.page.subtitle":"AI 工具的速率限制和配额使用情况。","limits.settings.toggle_visible":"切换可见性","limits.page.openSettings":"显示设置","nav.group.general":"常规","nav.group.tools":"工具","nav.group.account":"账户","nav.settings":"设置","header.auth.open_settings":"打开设置","settings.page.title":"设置","settings.page.subtitle":"管理你的账户、外观和显示偏好。","settings.section.appearance":"外观","settings.section.account":"账户","settings.section.limits":"限制显示","settings.appearance.theme.label":"主题","settings.appearance.theme.hint":"选择 Token Tracker 在仪表盘中的显示方式。","settings.appearance.theme.light":"浅色","settings.appearance.theme.dark":"深色","settings.appearance.theme.system":"系统","settings.account.displayName":"显示名称","settings.account.edit":"编辑","settings.account.save":"保存","settings.account.saving":"保存...","settings.account.cancel":"取消","settings.account.cloudSync":"云同步","settings.account.cloudSyncHint":"将本地用量上传到你的 Token Tracker 云端账号。","settings.account.publicProfile":"公开主页","settings.account.publicProfileHint":"在公开排行榜中展示你的用量。","settings.account.displayNameAnonymousHint":"匿名状态下,排行榜会隐藏你的名字和头像","settings.account.displayNameDisabledWhileAnon":"请先关闭匿名,再编辑名字","settings.account.githubUrl":"GitHub 主页","settings.account.githubUrlHint":"在排行榜名字旁显示 GitHub 链接。","settings.account.githubUrlPlaceholder":"用户名或 https://github.com/用户名","settings.account.githubUrlInvalid":"请输入 GitHub 用户名,或 https://github.com/用户名","leaderboard.github.aria":"打开 GitHub 主页","leaderboard.github.tooltipAction":"点击查看 GitHub 主页","leaderboard.github.tooltipPrefix":"可在","leaderboard.github.tooltipSettingsLink":"设置","leaderboard.github.tooltipSuffix":"中配置你的主页","settings.account.signOut":"退出登录","settings.account.signIn":"登录","settings.account.signedOutHint":"登录后可管理云同步和排行榜偏好。","settings.section.menubar":"菜单栏应用","settings.menubar.showStats":"在菜单栏中显示统计信息","settings.menubar.showStatsHint":"在菜单栏图标旁边显示今天的Token 数量和成本。","settings.menubar.animatedIcon":"动画图标","settings.menubar.animatedIconHint":"闪烁 Clawd 角色并在菜单栏中播放同步动画。","settings.menubar.launchAtLogin":"登录时启动","settings.menubar.launchAtLoginHint":"登录 macOS 时自动启动 TokenTrackerBar。","settings.menubar.syncNow":"立即同步","settings.menubar.syncNowHint":"触发本地AI工具日志立即解析并上传。","settings.menubar.syncing":"正在同步...","settings.menubar.updates":"更新","settings.menubar.checkUpdates":"检查更新","menubar.slot.primary":"第一个位置","menubar.slot.secondary":"第二个位置","menubar.native_only":"打开 macOS 版 TokenTrackerBar 后可编辑菜单栏显示。","menubar.metric.today_tokens":"今日 Token","menubar.metric.today_cost":"今日成本","menubar.metric.last_7d_tokens":"近 7 天 Token","menubar.metric.total_tokens":"总 Token","menubar.metric.total_cost":"总成本","menubar.metric.claude_5h":"Claude 5 小时限额","menubar.metric.claude_7d":"Claude 7 天限额","menubar.metric.codex_5h":"Codex 5 小时限额","menubar.metric.codex_7d":"Codex 7 天限额","nav.ip_check":"Claude IP 检查","skills.page.title":"Skills","skills.tab.my":"我的","skills.tab.browse":"发现","skills.action.refresh":"刷新","skills.action.install":"安装","skills.action.choose_targets":"选择目标","skills.target.menu_label":"安装到","skills.target.none":"未选目标","skills.toast.installed":"已把 {{name}} 安装到 {{targets}}。","skills.action.remove":"移除","skills.action.search":"搜索","skills.action.search_aria":"搜索 skills","skills.target.synced_summary":"已同步到 {{targets}}","skills.target.synced_none":"尚未同步到任何 agent","skills.row.open_details":"查看 {{name}} 详情","skills.detail.close":"关闭详情","skills.detail.sync_section_title":"同步到","skills.detail.remove_button":"从所有 agent 移除","skills.detail.remove_confirm_hint":"这会从每个 agent 取消同步并删除本地副本。","skills.filter.agent_label":"Agent","skills.filter.agent_all":"全部 agent","skills.filter.clear":"清除筛选","skills.filter.result_count":"{{filtered}} / {{total}} 个 skill","skills.filter.result_count_browse":"{{count}} 个结果","skills.empty.no_match":"当前筛选下没有匹配的 skill。","hint.dismiss":"关闭提示","hint.dismissible_aria":"可关闭的提示","skills.card.installed":"已安装","skills.card.targets_prefix":"将安装到:","skills.card.targets_change":"更改","skills.card.installs":"{{count}} 次安装","skills.source.label":"来源","skills.source.all":"全部仓库","skills.mode.repo":"仓库","skills.mode.skillssh":"skills.sh","skills.browse.placeholder_all":"在已启用的仓库里搜索…","skills.browse.placeholder_repo":"在 {{repo}} 中搜索…","skills.browse.placeholder_skillssh":"在 skills.sh 仓库中搜索…","skills.browse.empty_sources":"添加一个 GitHub 仓库以开始浏览技能。","skills.browse.add_repo_hint":"想要更多 skill?添加一个 GitHub 仓库。","skills.browse.manage_sources":"管理来源","skills.browse.hint_skillssh":"至少输入 2 个字符以搜索 skills.sh。","skills.browse.loading_hint":"正在从 GitHub 拉取 skill 信息,首次加载可能需要一分钟,结果会缓存。","skills.error.generic":"Skill 操作失败。","skills.confirm.remove_title":"要移除 {{name}} 吗?","skills.confirm.remove_managed":"这个 skill 将从所有已连接的 AI 工具中移除,几秒内可以撤销。","skills.confirm.remove_local":"将从所有 AI 工具目录中删除该 skill 文件夹。此操作无法撤销。","skills.toast.removed":"已移除 {{name}}。","shared.action.undo":"撤销","shared.action.cancel":"取消","skills.empty.my":"还没有 skill。去「发现」搜索或安装。","skills.empty.my_cta":"去发现","skills.empty.browse":"这个来源下没有找到技能。","skills.empty.search":"没有结果,换个关键词试试。","skills.repo.placeholder":"owner/repository","skills.repo.add":"添加仓库","skills.repo.invalid":"请输入 owner/repository 或 GitHub 仓库 URL。","skills.repo.remove":"移除仓库","settings.appearance.language.label":"语言","settings.appearance.language.hint":"使用“系统”时会默认跟随本机语言。","settings.appearance.language.system":"系统","settings.appearance.language.english":"英语","settings.appearance.language.chinese":"简体中文"},oL={"stats.period.today":"今日","stats.period.week":"本周","stats.period.month":"本月","stats.period.all":"全部","stats.period.convs":"对话","dashboard.core_index.collapse_label":"▾","dashboard.core_index.expand_label":"▸","dashboard.core_index.collapse_aria":"折叠模型分解","dashboard.core_index.expand_aria":"展开模型细分","dashboard.rolling.title":"最近的活动","dashboard.rolling.last_7d":"过去 7 天","dashboard.rolling.last_30d":"过去 30 天","dashboard.rolling.avg_active_day":"日平均","dashboard.projects.title":"项目用量","dashboard.projects.tokens_label":"Token","dashboard.projects.stars_label":"星标","dashboard.projects.limit_label":"展示","dashboard.projects.limit_aria":"选择仓库显示数量","dashboard.projects.limit_top_3":"前 3 名","dashboard.projects.limit_top_6":"前 6 名","dashboard.projects.limit_top_10":"前 10 名","dashboard.projects.empty":"没有公开仓库","dashboard.widgets.title":"桌面小组件","dashboard.widgets.hint":"右键点按桌面 → 编辑小组件 → 搜索“TokenTracker”","dashboard.widgets.dismiss_aria":"关闭小组件介绍","dashboard.cost_breakdown.title":"成本明细","dashboard.cost_breakdown.total_label":"预计总成本","dashboard.cost_breakdown.close":"关闭","trend.monitor.label":"使用趋势","heatmap.title":"热力图","heatmap.empty":"尚无活动数据。","heatmap.legend.less":"少","heatmap.legend.more":"多","heatmap.legend.utc":"UTC","heatmap.tooltip":"{{day}} • {{value}} {{unit}} • {{tz}}","heatmap.unit.tokens":"Token","heatmap.month.jan":"1月","heatmap.month.feb":"2月","heatmap.month.mar":"3月","heatmap.month.apr":"4月","heatmap.month.may":"5月","heatmap.month.jun":"6月","heatmap.month.jul":"7月","heatmap.month.aug":"8月","heatmap.month.sep":"9月","heatmap.month.oct":"10月","heatmap.month.nov":"11月","heatmap.month.dec":"12月","heatmap.day.sun":"日","heatmap.day.mon":"一","heatmap.day.tue":"二","heatmap.day.wed":"三","heatmap.day.thu":"四","heatmap.day.fri":"五","heatmap.day.sat":"六","dashboard.session_expired.copy_label":"运行 npx --yes tokentracker-cli init","dashboard.session_expired.copied":"已复制","dashboard.install.prompt":"安装 Node.js 18+ 然后运行:","dashboard.install.cmd.init":"npx --yes tokentracker-cli init","dashboard.install.cmd.init_link_code":"npx --yes tokentracker-cli init --link-code {{link_code}}","dashboard.install.copy":"复制安装命令","dashboard.install.copy_base":"复制初始化命令","dashboard.install.copied":"已复制到剪贴板","dashboard.install.link_code.loading":"正在生成专属代码...","dashboard.install.link_code.failed":"专属代码不可用","dashboard.install.cmd.sync":"npx --yes tokentracker-cli sync","dashboard.daily.title":"每日细目","dashboard.daily.empty":"还没有数据。先使用 AI CLI,再运行 {{cmd}}。","dashboard.identity.title":"你的个人资料","dashboard.identity.subtitle":"记录你的编码之旅","dashboard.identity.fallback":"匿名用户","dashboard.screenshot.title_line1":"AI 编程助手","dashboard.screenshot.title_line2":"2025 年度回顾","dashboard.screenshot.twitter_button":"分享到 X","dashboard.screenshot.twitter_label":"分享到 X","dashboard.screenshot.twitter_hint":"自动将图像复制到剪贴板","dashboard.screenshot.twitter_text":"记录中的 {{total_tokens}} Token。\\n{{model_name}} 以 {{model_percent}}% 领先。\\n\\n我的 AI 使用情况,未经审计 →\\ntokentracker.cc"},lL={"landing.handle.default":"VIBE_USER","landing.handle.special":"伏特","landing.screenshot.alt":"TokenTracker 仪表板截图","landing.nav.login":"登录","landing.nav.signup":"注册","landing.install.command":"npx --yes tokentracker-cli","landing.install.action.copy":"复制命令","landing.install.action.copied":"已复制","landing.meta.title":"Token Tracker —— AI Coding CLI 的 Token 用量追踪器","landing.meta.description":"自动监控 Claude Code、Cursor、Codex 等工具的 Token 用量。本地优先、注重隐私、零配置。","landing.meta.og_site_name":"Token Tracker","landing.meta.og_type":"website","landing.meta.og_image":"https://www.tokentracker.cc/og-image.jpg","landing.meta.og_url":"https://www.tokentracker.cc/","landing.meta.twitter_card":"summary_large_image","share.meta.title":"Token Tracker 分享","share.meta.description":"分享你的 Token Tracker 仪表板快照,包含跨模型、项目和时间窗口的用量洞察。","share.meta.og_site_name":"Token Tracker","share.meta.og_type":"website","share.meta.og_image":"https://www.tokentracker.cc/share-dashboard.jpg","share.meta.og_url":"https://www.tokentracker.cc/share","share.meta.twitter_card":"summary_large_image","landing.handle.placeholder":"试试 “{{handle}}”","landing.rank.expectation":"预期排名:{{rank}}","landing.rank.singularity":"登顶","landing.rank.unranked":"未上榜","landing.cta.primary":"进入仪表板","landing.cta.secondary":"查看 GitHub 源码","landing.v2.hero.title_line1":"追踪你所有的","landing.v2.hero.title_line2":"AI Token","landing.v2.install.mac_cta":"Mac 应用 (DMG)","landing.v2.models.title":"支持的 AI CLI 工具","landing.v2.compare.kicker":"无缝追踪","landing.v2.compare.title":"别再瞎猜你的 AI 用量。","landing.v2.compare.subtitle":"AI CLI 把用量数据藏在零散的本地文件里。TokenTracker 把它们实时聚合到一个清晰的仪表板里。","landing.v2.distill.body":"100% 本地处理,不上传任何 prompt 或代码。","landing.v2.compare.with.title":"用 Token Tracker","landing.v2.compare.with.p1":"集中式用量仪表板","landing.v2.compare.with.p2":"实时 Token 指标","landing.v2.compare.with.p3":"100% 本地,隐私无忧","landing.v2.compare.without.title":"不用","landing.v2.compare.without.p1":"散落的 JSON 日志文件","landing.v2.compare.without.p2":"对 Token 消耗一无所知","landing.v2.compare.without.p3":"突如其来的 API 账单","landing.v2.footer.line":"Token Tracker —— 开发者打造,服务开发者。","landing.v2.nav.github":"GitHub","landing.v2.models.agent.codex":"Codex","landing.v2.models.agent.claude_code":"Claude Code","landing.v2.models.agent.cursor":"Cursor","landing.v2.models.agent.gemini":"Gemini","landing.v2.models.agent.opencode":"OpenCode","landing.v2.models.agent.openclaw":"OpenClaw","landing.v2.cta.primary":"进入仪表板","landing.v2.hero.subtagline":"自动监控 Claude Code、Cursor、Codex 等工具的 Token 用量。本地优先、注重隐私、零配置。","leaderboard.profile.nav.back":"$ 排行榜","leaderboard.title":"排行榜","leaderboard.range":"UTC {{period}} · {{from}} – {{to}}","leaderboard.range_loading":"UTC {{period}} · …","leaderboard.range.total":"全部时间","leaderboard.generated_at":"更新于 {{ts}}","leaderboard.period.week":"周","leaderboard.period.month":"月","leaderboard.period.total":"全部","leaderboard.me_label":"你","leaderboard.anon_label":"匿名","leaderboard.error.unknown":"未知错误","leaderboard.loading":"加载中…","leaderboard.empty":"暂无数据","leaderboard.column.rank":"排名","leaderboard.column.user":"用户","leaderboard.column.total":"总计","leaderboard.column.codex":"Codex","leaderboard.column.claude":"Claude","leaderboard.column.gemini":"Gemini","leaderboard.column.cursor":"Cursor","leaderboard.column.opencode":"OpenCode","leaderboard.column.openclaw":"OpenClaw","leaderboard.column.hermes":"Hermes","leaderboard.column.kiro":"Kiro","leaderboard.column.copilot":"Copilot","leaderboard.column.kimi":"Kimi","leaderboard.column.supplemental":"其他","leaderboard.column.est_cost":"预估花费","leaderboard.signin_prompt":"登录后即可上榜","leaderboard.signin_button":"登录","leaderboard.sync_prompt":"开启云同步即可参与排名","leaderboard.sync_button.idle":"开启并同步","leaderboard.sync_button.busy":"同步中…","leaderboard.pagination.page_size_label":"每页显示","leaderboard.pagination.prev":"上一页","leaderboard.pagination.next":"下一页","leaderboard.pagination.ellipsis":"……","leaderboard.pagination.page_unknown":"第 {{page}} 页","share.modal.title":"分享你的数据","share.modal.subtitle":"生成海报卡片,随处分享。","share.modal.close":"关闭","share.modal.action.x":"分享到 X","share.modal.action.download":"下载","share.modal.action.copy":"复制图片","share.modal.hint.x":"把图片粘贴到推文里","share.modal.hint.copy":"到剪贴板","share.modal.name_label":"显示名称","share.modal.name_placeholder":"输入你的名字","share.modal.style_label":"样式","share.modal.footer":"数据始终保留在本地——图片在你的浏览器内生成,绝不上传。","share.button.label":"分享","share.button.aria":"打开分享卡片","share.toast.copied":"图片已复制到剪贴板","share.toast.downloaded":"图片已保存","share.toast.failed":"图片生成失败","share.toast.working":"生成中…","share.variant.neon":"霓虹","share.variant.broadsheet":"特刊","share.date.month_year":"{{year}} 年 {{month}}","share.issue.all_time":"总计","share.month_short.jan":"1 月","share.month_short.feb":"2 月","share.month_short.mar":"3 月","share.month_short.apr":"4 月","share.month_short.may":"5 月","share.month_short.jun":"6 月","share.month_short.jul":"7 月","share.month_short.aug":"8 月","share.month_short.sep":"9 月","share.month_short.oct":"10 月","share.month_short.nov":"11 月","share.month_short.dec":"12 月","share.hook.top_loyal":"{{name}} 占了 {{percent}}% 的用量。","share.hook.days_record":"共记录 {{days}} 天。","share.hook.top_led":"{{name}} 领跑,占比 {{percent}}%。","share.hook.multi_models":"{{days}} 天里用了 {{count}} 个模型。","share.hook.days_with_model":"{{name}} 陪你跑了 {{days}} 天。","share.hook.new_chapter":"新的记录,从这里开始。","share.card.broadsheet.issue":"期号","share.card.broadsheet.by":"分享者","share.card.broadsheet.tracked_since":"追踪起始","share.card.broadsheet.total_tokens":"总 Token 数","share.card.broadsheet.estimated_spend":"预估花费","share.card.broadsheet.billable_days":"{{days}} 个活跃日","share.card.broadsheet.heatmap_title":"年度热图","share.card.broadsheet.heatmap_days_on_record":"{{active}} / {{total}} 天有记录","share.card.broadsheet.roster_title":"模型榜","share.card.broadsheet.roster_subtitle":"常用模型轮换","share.card.broadsheet.empty":"这一周很安静,还没有模型数据。","share.card.broadsheet.global_rank":"全站排名","share.card.broadsheet.active_days":"活跃","share.card.broadsheet.days_count":"{{days}} 天","share.card.broadsheet.track_yours":"追踪你自己的","share.card.annual.report_title":"用量报告","share.card.annual.less":"少","share.card.annual.more":"多","share.card.annual.heatmap_title":"Token 热图","share.card.annual.total_tokens":"总 Token 数","share.card.annual.estimated_cost":"预估成本","share.card.annual.longest_streak":"最长连击","share.card.annual.days_count":"{{days}} 天","share.card.annual.top_model":"热门模型"};function tw(){return typeof window>"u"?null:window.localStorage||null}function nw(){return typeof navigator>"u"?null:navigator.clipboard||null}function uL(){return typeof window>"u"?null:window.ClipboardItem||null}function cL(e,{storage:t}={}){const n=t??tw();if(!n||typeof n.getItem!="function")return null;try{return n.getItem(e)}catch{return null}}function dL(e,t,{storage:n}={}){const a=n??tw();if(!a||typeof a.setItem!="function")return!1;try{return a.setItem(e,t),!0}catch{return!1}}async function i3(e,{clipboard:t}={}){const n=t??nw();if(!n||typeof n.writeText!="function")return!1;try{return await n.writeText(e),!0}catch{return!1}}async function s3(e,{clipboard:t}={}){const n=t??nw(),a=uL();if(!e||!n||typeof n.write!="function"||!a)return!1;try{const s=e.type||"image/png",o=e.type&&e.type!==s?e.slice(0,e.size,s):e.type?e:e.slice(0,e.size,s),u=new a({[s]:o});return await n.write([u]),!0}catch{return!1}}const rw="tokentracker-locale",ps="system",Zu="en",wp="zh-CN";function aw(e){return typeof e!="string"?Zu:/^zh(?:[-_]|$)/i.test(e.trim())?wp:Zu}function kc(e){return e===ps?ps:aw(e)}function hL(){return typeof navigator>"u"?[]:Array.isArray(navigator.languages)&&navigator.languages.length?navigator.languages.filter(e=>typeof e=="string"):typeof navigator.language=="string"?[navigator.language]:[]}function Qu(e,t=hL()){const n=kc(e);if(n!==ps)return n;const a=t.map(s=>typeof s=="string"?s.trim():"").find(s=>s.length>0);return a&&/^zh(?:[-_]|$)/i.test(a)?wp:Zu}function kp(){return kc(cL(rw)||ps)}function fL(e){return dL(rw,kc(e))}const pL=["key","module","page","component","slot","text"],mL={[wp]:{...sL,...oL,...lL}};let Ch=null,iw=Qu(kp());function gL(e){const t=[];let n=[],a="",s=!1;for(let o=0;o<e.length;o+=1){const u=e[o];if(s){u==='"'?e[o+1]==='"'?(a+='"',o+=1):s=!1:a+=u;continue}if(u==='"'){s=!0;continue}if(u===","){n.push(a),a="";continue}if(u===`
619
+ `,sL={"header.auth.sign_in_aria":"登录","login.back_home":"返回首页","login.cloud_only":"未配置云端登录。请使用 localhost 上的本地仪表盘。","login.title":"登录","login.subtitle":"选择邮箱或已连接账号。","login.dismiss":"关闭","login.verify_email_success":"邮箱已验证。你现在可以登录。","login.verify_email_pending":"请先在邮箱中完成验证,然后再登录。","login.oauth.continue":"使用 {{provider}} 继续","login.divider":"或","login.tab.sign_in":"登录","login.tab.sign_up":"创建账户","login.field.name":"显示名称","login.field.name_placeholder":"可选","login.field.email":"电子邮件","login.field.password":"密码","login.password_hint":"至少 {{min}} 个字符。","login.submit.sign_in":"使用邮箱登录","login.submit.sign_up":"创建账号","auth.callback.processing":"处理中…","auth.callback.success":"登录成功","auth.callback.redirecting":"正在返回 TokenTracker…","auth.callback.failed":"登录未完成,请重试。","auth.callback.close":"关闭此页","login_modal.subtitle":"登录以加入排行榜","login_modal.continue_email":"使用邮箱继续","login_modal.divider_email":"邮箱","shared.placeholder.short":"--","shared.unit.percent":"%","shared.unit.thousand_abbrev":"K","shared.unit.million_abbrev":"M","shared.unit.billion_abbrev":"B","shared.data_source":"数据来源:{{source}}","shared.error.prefix":"错误:{{error}}","shared.status.unsynced":"—","shared.time.now":"刚刚","error.boundary.title":"出了点问题","error.boundary.subtitle":"这个视图渲染失败了","error.boundary.hint":"打开控制台,然后重新加载页面","error.boundary.no_details":"没有错误详细信息","error.boundary.action.reload":"重新加载","identity_card.rank_label":"排名","identity_card.streak_label":"活跃天数","identity_card.rank_placeholder":"—","identity_card.streak_value":"{{days}} 天","usage.summary.total":"Token 总数","usage.period.day":"日","usage.period.week":"周","usage.period.month":"月","usage.period.total":"总计","usage.period.custom":"自定义","usage.metric.total":"总计","usage.metric.input":"输入","usage.metric.output":"输出","usage.metric.cached_input":"缓存输入","usage.metric.reasoning_output":"推理输出","usage.button.refresh":"刷新","usage.overview.tablist_aria":"时间范围","usage.overview.cost_breakdown_aria":"查看成本明细","usage.overview.distribution_aria":"来源占比:{{items}}","usage.overview.distribution_item":"{{label}} {{percent}}%","usage.overview.provider_card_aria":"{{provider}}:{{percent}}%,{{tokens}} Token,{{cost}}。点击{{action}}详情","usage.overview.expand":"展开","usage.overview.collapse":"收起","usage.overview.model_count":"{{count}} 个模型","usage.overview.model_details_aria":"{{provider}} 模型详情","widgets.page.title":"组件","widgets.cta.open_gallery":"打开小组件库","widgets.cta.download":"下载 Mac 应用","widgets.cta.macos_only":"仅限 macOS","widgets.menubar.section.title":"菜单栏","widgets.gallery.section.title":"桌面小组件","widgets.summary.name":"使用概览","widgets.summary.description":"今天和近 7 天的用量,以及紧凑趋势线。","widgets.heatmap.name":"热力图","widgets.heatmap.description":"像 GitHub 一样,一眼看清活跃和空闲的日子。","widgets.topModels.name":"热门模型","widgets.topModels.description":"你最常用的模型,按 Token 占比排序。","widgets.limits.name":"使用限制","widgets.limits.description":"Claude、Codex、Cursor、Gemini 等的实时速率限制进度。","daily.sort.date.label":"日期","daily.sort.date.title":"按日期排序","daily.sort.total.label":"总计","daily.sort.total.title":"按总计排序","daily.sort.input.label":"输入","daily.sort.input.title":"按输入排序","daily.sort.output.label":"输出","daily.sort.output.title":"按输出排序","daily.sort.cached.label":"缓存","daily.sort.cached.title":"按缓存输入排序","daily.sort.reasoning.label":"推理","daily.sort.reasoning.title":"按推理输出排序","daily.sort.conversations.label":"对话数","daily.sort.conversations.title":"按对话排序","details.pagination.prev":"上一页","details.pagination.next":"下一页","limits.copilot.otelHint.title":"跟踪 Copilot Token 使用情况","limits.copilot.otelHint.body":"限额信息通过你的 GitHub OAuth 令牌读取。如果还想记录逐 Token 用量,请启用 Copilot 的 OpenTelemetry 导出,把下面这段加到你的 shell 配置文件(~/.zshrc 或 ~/.bashrc):","limits.copilot.otelHint.copy":"复制","limits.copilot.otelHint.copied":"已复制","limits.panel.title":"使用限制","limits.label.cursor_plan":"套餐","limits.label.cursor_auto":"自动","limits.label.cursor_api":"API","limits.label.kiro_month":"月度","limits.label.kiro_bonus":"奖励","limits.label.kimi_weekly":"周","limits.label.kimi_5h":"5h","limits.label.kimi_total":"总量","limits.label.kimi_parallel":"并发:{{count}}","limits.label.copilot_premium":"高级","limits.label.copilot_chat":"对话","limits.status.not_connected":"未连接","limits.status.no_data":"未返回实时限额数据","limits.status.all_hidden":"所有限额提供商都已隐藏。请打开显示设置重新显示。","nav.usage":"用量","nav.limits":"限额","nav.widgets":"小组件","nav.skills":"Skills","nav.leaderboard":"排行榜","nav.collapse":"折叠侧边栏","nav.expand":"展开侧边栏","nav.menu":"打开导航菜单","nav.close_menu":"关闭导航菜单","nav.aside_label":"主导航","nav.nav_label":"导航","limits.page.subtitle":"AI 工具的速率限制和配额使用情况。","limits.settings.toggle_visible":"切换可见性","limits.page.openSettings":"显示设置","nav.group.general":"常规","nav.group.tools":"工具","nav.group.account":"账户","nav.settings":"设置","header.auth.open_settings":"打开设置","settings.page.title":"设置","settings.page.subtitle":"管理你的账户、外观和显示偏好。","settings.section.appearance":"外观","settings.section.account":"账户","settings.section.limits":"限制显示","settings.appearance.theme.label":"主题","settings.appearance.theme.hint":"选择 Token Tracker 在仪表盘中的显示方式。","settings.appearance.theme.light":"浅色","settings.appearance.theme.dark":"深色","settings.appearance.theme.system":"系统","settings.account.displayName":"显示名称","settings.account.edit":"编辑","settings.account.save":"保存","settings.account.saving":"保存...","settings.account.cancel":"取消","settings.account.cloudSync":"云同步","settings.account.cloudSyncHint":"将本地用量上传到你的 Token Tracker 云端账号。","settings.account.publicProfile":"公开主页","settings.account.publicProfileHint":"在公开排行榜中展示你的用量。","settings.account.displayNameAnonymousHint":"匿名状态下,排行榜会隐藏你的名字和头像","settings.account.displayNameDisabledWhileAnon":"请先关闭匿名,再编辑名字","settings.account.githubUrl":"GitHub 主页","settings.account.githubUrlHint":"在排行榜名字旁显示 GitHub 链接。","settings.account.githubUrlPlaceholder":"用户名或 https://github.com/用户名","settings.account.githubUrlInvalid":"请输入 GitHub 用户名,或 https://github.com/用户名","leaderboard.github.aria":"打开 GitHub 主页","leaderboard.github.tooltipAction":"点击查看 GitHub 主页","leaderboard.github.tooltipPrefix":"可在","leaderboard.github.tooltipSettingsLink":"设置","leaderboard.github.tooltipSuffix":"中配置你的主页","settings.account.signOut":"退出登录","settings.account.signIn":"登录","settings.account.signedOutHint":"登录后可管理云同步和排行榜偏好。","settings.section.menubar":"菜单栏应用","settings.menubar.showStats":"在菜单栏中显示统计信息","settings.menubar.showStatsHint":"在菜单栏图标旁边显示今天的Token 数量和成本。","settings.menubar.animatedIcon":"动画图标","settings.menubar.animatedIconHint":"闪烁 Clawd 角色并在菜单栏中播放同步动画。","settings.menubar.launchAtLogin":"登录时启动","settings.menubar.launchAtLoginHint":"登录 macOS 时自动启动 TokenTrackerBar。","settings.menubar.syncNow":"立即同步","settings.menubar.syncNowHint":"触发本地AI工具日志立即解析并上传。","settings.menubar.syncing":"正在同步...","settings.menubar.updates":"更新","settings.menubar.checkUpdates":"检查更新","menubar.slot.primary":"第一个位置","menubar.slot.secondary":"第二个位置","menubar.native_only":"打开 macOS 版 TokenTrackerBar 后可编辑菜单栏显示。","menubar.metric.today_tokens":"今日 Token","menubar.metric.today_cost":"今日成本","menubar.metric.last_7d_tokens":"近 7 天 Token","menubar.metric.total_tokens":"总 Token","menubar.metric.total_cost":"总成本","menubar.metric.claude_5h":"Claude 5 小时限额","menubar.metric.claude_7d":"Claude 7 天限额","menubar.metric.codex_5h":"Codex 5 小时限额","menubar.metric.codex_7d":"Codex 7 天限额","nav.ip_check":"Claude IP 检查","skills.page.title":"Skills","skills.tab.my":"我的","skills.tab.browse":"发现","skills.action.refresh":"刷新","skills.action.install":"安装","skills.action.choose_targets":"选择目标","skills.target.menu_label":"安装到","skills.target.none":"未选目标","skills.toast.installed":"已把 {{name}} 安装到 {{targets}}。","skills.action.remove":"移除","skills.action.search":"搜索","skills.action.search_aria":"搜索 skills","skills.target.synced_summary":"已同步到 {{targets}}","skills.target.synced_none":"尚未同步到任何 agent","skills.row.open_details":"查看 {{name}} 详情","skills.detail.close":"关闭详情","skills.detail.sync_section_title":"同步到","skills.detail.remove_button":"从所有 agent 移除","skills.detail.remove_confirm_hint":"这会从每个 agent 取消同步并删除本地副本。","skills.filter.agent_label":"Agent","skills.filter.agent_all":"全部 agent","skills.filter.clear":"清除筛选","skills.filter.result_count":"{{filtered}} / {{total}} 个 skill","skills.filter.result_count_browse":"{{count}} 个结果","skills.empty.no_match":"当前筛选下没有匹配的 skill。","hint.dismiss":"关闭提示","hint.dismissible_aria":"可关闭的提示","skills.card.installed":"已安装","skills.card.targets_prefix":"将安装到:","skills.card.targets_change":"更改","skills.card.installs":"{{count}} 次安装","skills.source.label":"来源","skills.source.all":"全部仓库","skills.mode.repo":"仓库","skills.mode.skillssh":"skills.sh","skills.browse.placeholder_all":"在已启用的仓库里搜索…","skills.browse.placeholder_repo":"在 {{repo}} 中搜索…","skills.browse.placeholder_skillssh":"在 skills.sh 仓库中搜索…","skills.browse.empty_sources":"添加一个 GitHub 仓库以开始浏览技能。","skills.browse.add_repo_hint":"想要更多 skill?添加一个 GitHub 仓库。","skills.browse.manage_sources":"管理来源","skills.browse.hint_skillssh":"至少输入 2 个字符以搜索 skills.sh。","skills.browse.loading_hint":"正在从 GitHub 拉取 skill 信息,首次加载可能需要一分钟,结果会缓存。","skills.error.generic":"Skill 操作失败。","skills.confirm.remove_title":"要移除 {{name}} 吗?","skills.confirm.remove_managed":"这个 skill 将从所有已连接的 AI 工具中移除,几秒内可以撤销。","skills.confirm.remove_local":"将从所有 AI 工具目录中删除该 skill 文件夹。此操作无法撤销。","skills.toast.removed":"已移除 {{name}}。","shared.action.undo":"撤销","shared.action.cancel":"取消","skills.empty.my":"还没有 skill。去「发现」搜索或安装。","skills.empty.my_cta":"去发现","skills.empty.browse":"这个来源下没有找到技能。","skills.empty.search":"没有结果,换个关键词试试。","skills.repo.placeholder":"owner/repository","skills.repo.add":"添加仓库","skills.repo.invalid":"请输入 owner/repository 或 GitHub 仓库 URL。","skills.repo.remove":"移除仓库","settings.appearance.language.label":"语言","settings.appearance.language.hint":"使用“系统”时会默认跟随本机语言。","settings.appearance.language.system":"系统","settings.appearance.language.english":"英语","settings.appearance.language.chinese":"简体中文"},oL={"usage.overview.antigravity_notice_title":"Token 为估算值","usage.overview.antigravity_notice_body":"Antigravity 的本地日志没有真实用量字段,这里的数字是按字符长度(约 4 字符/Token)估算出来的,也没有扣除 Gemini 的 prompt cache 折扣。请把它当作上限估算,不要直接对账账单。","stats.period.today":"今日","stats.period.week":"本周","stats.period.month":"本月","stats.period.all":"全部","stats.period.convs":"对话","dashboard.core_index.collapse_label":"▾","dashboard.core_index.expand_label":"▸","dashboard.core_index.collapse_aria":"折叠模型分解","dashboard.core_index.expand_aria":"展开模型细分","dashboard.rolling.title":"最近的活动","dashboard.rolling.last_7d":"过去 7 天","dashboard.rolling.last_30d":"过去 30 天","dashboard.rolling.avg_active_day":"日平均","dashboard.projects.title":"项目用量","dashboard.projects.tokens_label":"Token","dashboard.projects.stars_label":"星标","dashboard.projects.limit_label":"展示","dashboard.projects.limit_aria":"选择仓库显示数量","dashboard.projects.limit_top_3":"前 3 名","dashboard.projects.limit_top_6":"前 6 名","dashboard.projects.limit_top_10":"前 10 名","dashboard.projects.empty":"没有公开仓库","dashboard.widgets.title":"桌面小组件","dashboard.widgets.hint":"右键点按桌面 → 编辑小组件 → 搜索“TokenTracker”","dashboard.widgets.dismiss_aria":"关闭小组件介绍","dashboard.cost_breakdown.title":"成本明细","dashboard.cost_breakdown.total_label":"预计总成本","dashboard.cost_breakdown.close":"关闭","trend.monitor.label":"使用趋势","heatmap.title":"热力图","heatmap.empty":"尚无活动数据。","heatmap.legend.less":"少","heatmap.legend.more":"多","heatmap.legend.utc":"UTC","heatmap.tooltip":"{{day}} • {{value}} {{unit}} • {{tz}}","heatmap.unit.tokens":"Token","heatmap.month.jan":"1月","heatmap.month.feb":"2月","heatmap.month.mar":"3月","heatmap.month.apr":"4月","heatmap.month.may":"5月","heatmap.month.jun":"6月","heatmap.month.jul":"7月","heatmap.month.aug":"8月","heatmap.month.sep":"9月","heatmap.month.oct":"10月","heatmap.month.nov":"11月","heatmap.month.dec":"12月","heatmap.day.sun":"日","heatmap.day.mon":"一","heatmap.day.tue":"二","heatmap.day.wed":"三","heatmap.day.thu":"四","heatmap.day.fri":"五","heatmap.day.sat":"六","dashboard.session_expired.copy_label":"运行 npx --yes tokentracker-cli init","dashboard.session_expired.copied":"已复制","dashboard.install.prompt":"安装 Node.js 18+ 然后运行:","dashboard.install.cmd.init":"npx --yes tokentracker-cli init","dashboard.install.cmd.init_link_code":"npx --yes tokentracker-cli init --link-code {{link_code}}","dashboard.install.copy":"复制安装命令","dashboard.install.copy_base":"复制初始化命令","dashboard.install.copied":"已复制到剪贴板","dashboard.install.link_code.loading":"正在生成专属代码...","dashboard.install.link_code.failed":"专属代码不可用","dashboard.install.cmd.sync":"npx --yes tokentracker-cli sync","dashboard.daily.title":"每日细目","dashboard.daily.empty":"还没有数据。先使用 AI CLI,再运行 {{cmd}}。","dashboard.identity.title":"你的个人资料","dashboard.identity.subtitle":"记录你的编码之旅","dashboard.identity.fallback":"匿名用户","dashboard.screenshot.title_line1":"AI 编程助手","dashboard.screenshot.title_line2":"2025 年度回顾","dashboard.screenshot.twitter_button":"分享到 X","dashboard.screenshot.twitter_label":"分享到 X","dashboard.screenshot.twitter_hint":"自动将图像复制到剪贴板","dashboard.screenshot.twitter_text":"记录中的 {{total_tokens}} Token。\\n{{model_name}} 以 {{model_percent}}% 领先。\\n\\n我的 AI 使用情况,未经审计 →\\ntokentracker.cc"},lL={"landing.handle.default":"VIBE_USER","landing.handle.special":"伏特","landing.screenshot.alt":"TokenTracker 仪表板截图","landing.nav.login":"登录","landing.nav.signup":"注册","landing.install.command":"npx --yes tokentracker-cli","landing.install.action.copy":"复制命令","landing.install.action.copied":"已复制","landing.meta.title":"Token Tracker —— AI Coding CLI 的 Token 用量追踪器","landing.meta.description":"自动监控 Claude Code、Cursor、Codex 等工具的 Token 用量。本地优先、注重隐私、零配置。","landing.meta.og_site_name":"Token Tracker","landing.meta.og_type":"website","landing.meta.og_image":"https://www.tokentracker.cc/og-image.jpg","landing.meta.og_url":"https://www.tokentracker.cc/","landing.meta.twitter_card":"summary_large_image","share.meta.title":"Token Tracker 分享","share.meta.description":"分享你的 Token Tracker 仪表板快照,包含跨模型、项目和时间窗口的用量洞察。","share.meta.og_site_name":"Token Tracker","share.meta.og_type":"website","share.meta.og_image":"https://www.tokentracker.cc/share-dashboard.jpg","share.meta.og_url":"https://www.tokentracker.cc/share","share.meta.twitter_card":"summary_large_image","landing.handle.placeholder":"试试 “{{handle}}”","landing.rank.expectation":"预期排名:{{rank}}","landing.rank.singularity":"登顶","landing.rank.unranked":"未上榜","landing.cta.primary":"进入仪表板","landing.cta.secondary":"查看 GitHub 源码","landing.v2.hero.title_line1":"追踪你所有的","landing.v2.hero.title_line2":"AI Token","landing.v2.install.mac_cta":"Mac 应用 (DMG)","landing.v2.models.title":"支持的 AI CLI 工具","landing.v2.compare.kicker":"无缝追踪","landing.v2.compare.title":"别再瞎猜你的 AI 用量。","landing.v2.compare.subtitle":"AI CLI 把用量数据藏在零散的本地文件里。TokenTracker 把它们实时聚合到一个清晰的仪表板里。","landing.v2.distill.body":"100% 本地处理,不上传任何 prompt 或代码。","landing.v2.compare.with.title":"用 Token Tracker","landing.v2.compare.with.p1":"集中式用量仪表板","landing.v2.compare.with.p2":"实时 Token 指标","landing.v2.compare.with.p3":"100% 本地,隐私无忧","landing.v2.compare.without.title":"不用","landing.v2.compare.without.p1":"散落的 JSON 日志文件","landing.v2.compare.without.p2":"对 Token 消耗一无所知","landing.v2.compare.without.p3":"突如其来的 API 账单","landing.v2.footer.line":"Token Tracker —— 开发者打造,服务开发者。","landing.v2.nav.github":"GitHub","landing.v2.models.agent.codex":"Codex","landing.v2.models.agent.claude_code":"Claude Code","landing.v2.models.agent.cursor":"Cursor","landing.v2.models.agent.gemini":"Gemini","landing.v2.models.agent.opencode":"OpenCode","landing.v2.models.agent.openclaw":"OpenClaw","landing.v2.cta.primary":"进入仪表板","landing.v2.hero.subtagline":"自动监控 Claude Code、Cursor、Codex 等工具的 Token 用量。本地优先、注重隐私、零配置。","leaderboard.profile.nav.back":"$ 排行榜","leaderboard.title":"排行榜","leaderboard.range":"UTC {{period}} · {{from}} – {{to}}","leaderboard.range_loading":"UTC {{period}} · …","leaderboard.range.total":"全部时间","leaderboard.generated_at":"更新于 {{ts}}","leaderboard.period.week":"周","leaderboard.period.month":"月","leaderboard.period.total":"全部","leaderboard.me_label":"你","leaderboard.anon_label":"匿名","leaderboard.error.unknown":"未知错误","leaderboard.loading":"加载中…","leaderboard.empty":"暂无数据","leaderboard.column.rank":"排名","leaderboard.column.user":"用户","leaderboard.column.total":"总计","leaderboard.column.codex":"Codex","leaderboard.column.claude":"Claude","leaderboard.column.gemini":"Gemini","leaderboard.column.cursor":"Cursor","leaderboard.column.opencode":"OpenCode","leaderboard.column.openclaw":"OpenClaw","leaderboard.column.hermes":"Hermes","leaderboard.column.kiro":"Kiro","leaderboard.column.copilot":"Copilot","leaderboard.column.kimi":"Kimi","leaderboard.column.supplemental":"其他","leaderboard.column.est_cost":"预估花费","leaderboard.signin_prompt":"登录后即可上榜","leaderboard.signin_button":"登录","leaderboard.sync_prompt":"开启云同步即可参与排名","leaderboard.sync_button.idle":"开启并同步","leaderboard.sync_button.busy":"同步中…","leaderboard.pagination.page_size_label":"每页显示","leaderboard.pagination.prev":"上一页","leaderboard.pagination.next":"下一页","leaderboard.pagination.ellipsis":"……","leaderboard.pagination.page_unknown":"第 {{page}} 页","share.modal.title":"分享你的数据","share.modal.subtitle":"生成海报卡片,随处分享。","share.modal.close":"关闭","share.modal.action.x":"分享到 X","share.modal.action.download":"下载","share.modal.action.copy":"复制图片","share.modal.hint.x":"把图片粘贴到推文里","share.modal.hint.copy":"到剪贴板","share.modal.name_label":"显示名称","share.modal.name_placeholder":"输入你的名字","share.modal.style_label":"样式","share.modal.footer":"数据始终保留在本地——图片在你的浏览器内生成,绝不上传。","share.button.label":"分享","share.button.aria":"打开分享卡片","share.toast.copied":"图片已复制到剪贴板","share.toast.downloaded":"图片已保存","share.toast.failed":"图片生成失败","share.toast.working":"生成中…","share.variant.neon":"霓虹","share.variant.broadsheet":"特刊","share.date.month_year":"{{year}} 年 {{month}}","share.issue.all_time":"总计","share.month_short.jan":"1 月","share.month_short.feb":"2 月","share.month_short.mar":"3 月","share.month_short.apr":"4 月","share.month_short.may":"5 月","share.month_short.jun":"6 月","share.month_short.jul":"7 月","share.month_short.aug":"8 月","share.month_short.sep":"9 月","share.month_short.oct":"10 月","share.month_short.nov":"11 月","share.month_short.dec":"12 月","share.hook.top_loyal":"{{name}} 占了 {{percent}}% 的用量。","share.hook.days_record":"共记录 {{days}} 天。","share.hook.top_led":"{{name}} 领跑,占比 {{percent}}%。","share.hook.multi_models":"{{days}} 天里用了 {{count}} 个模型。","share.hook.days_with_model":"{{name}} 陪你跑了 {{days}} 天。","share.hook.new_chapter":"新的记录,从这里开始。","share.card.broadsheet.issue":"期号","share.card.broadsheet.by":"分享者","share.card.broadsheet.tracked_since":"追踪起始","share.card.broadsheet.total_tokens":"总 Token 数","share.card.broadsheet.estimated_spend":"预估花费","share.card.broadsheet.billable_days":"{{days}} 个活跃日","share.card.broadsheet.heatmap_title":"年度热图","share.card.broadsheet.heatmap_days_on_record":"{{active}} / {{total}} 天有记录","share.card.broadsheet.roster_title":"模型榜","share.card.broadsheet.roster_subtitle":"常用模型轮换","share.card.broadsheet.empty":"这一周很安静,还没有模型数据。","share.card.broadsheet.global_rank":"全站排名","share.card.broadsheet.active_days":"活跃","share.card.broadsheet.days_count":"{{days}} 天","share.card.broadsheet.track_yours":"追踪你自己的","share.card.annual.report_title":"用量报告","share.card.annual.less":"少","share.card.annual.more":"多","share.card.annual.heatmap_title":"Token 热图","share.card.annual.total_tokens":"总 Token 数","share.card.annual.estimated_cost":"预估成本","share.card.annual.longest_streak":"最长连击","share.card.annual.days_count":"{{days}} 天","share.card.annual.top_model":"热门模型"};function tw(){return typeof window>"u"?null:window.localStorage||null}function nw(){return typeof navigator>"u"?null:navigator.clipboard||null}function uL(){return typeof window>"u"?null:window.ClipboardItem||null}function cL(e,{storage:t}={}){const n=t??tw();if(!n||typeof n.getItem!="function")return null;try{return n.getItem(e)}catch{return null}}function dL(e,t,{storage:n}={}){const a=n??tw();if(!a||typeof a.setItem!="function")return!1;try{return a.setItem(e,t),!0}catch{return!1}}async function i3(e,{clipboard:t}={}){const n=t??nw();if(!n||typeof n.writeText!="function")return!1;try{return await n.writeText(e),!0}catch{return!1}}async function s3(e,{clipboard:t}={}){const n=t??nw(),a=uL();if(!e||!n||typeof n.write!="function"||!a)return!1;try{const s=e.type||"image/png",o=e.type&&e.type!==s?e.slice(0,e.size,s):e.type?e:e.slice(0,e.size,s),u=new a({[s]:o});return await n.write([u]),!0}catch{return!1}}const rw="tokentracker-locale",ps="system",Zu="en",wp="zh-CN";function aw(e){return typeof e!="string"?Zu:/^zh(?:[-_]|$)/i.test(e.trim())?wp:Zu}function kc(e){return e===ps?ps:aw(e)}function hL(){return typeof navigator>"u"?[]:Array.isArray(navigator.languages)&&navigator.languages.length?navigator.languages.filter(e=>typeof e=="string"):typeof navigator.language=="string"?[navigator.language]:[]}function Qu(e,t=hL()){const n=kc(e);if(n!==ps)return n;const a=t.map(s=>typeof s=="string"?s.trim():"").find(s=>s.length>0);return a&&/^zh(?:[-_]|$)/i.test(a)?wp:Zu}function kp(){return kc(cL(rw)||ps)}function fL(e){return dL(rw,kc(e))}const pL=["key","module","page","component","slot","text"],mL={[wp]:{...sL,...oL,...lL}};let Ch=null,iw=Qu(kp());function gL(e){const t=[];let n=[],a="",s=!1;for(let o=0;o<e.length;o+=1){const u=e[o];if(s){u==='"'?e[o+1]==='"'?(a+='"',o+=1):s=!1:a+=u;continue}if(u==='"'){s=!0;continue}if(u===","){n.push(a),a="";continue}if(u===`
618
620
  `){n.push(a),a="",n.every(c=>c.trim()==="")||t.push(n),n=[];continue}u!=="\r"&&(a+=u)}return n.push(a),n.every(o=>o.trim()==="")||t.push(n),t}function yL(e){const t=gL(e);if(!t.length)return{map:new Map,rows:[]};const n=t[0].map(c=>String(c).trim());if(pL.filter(c=>!n.includes(c)).length)return{map:new Map,rows:[]};const s=Object.fromEntries(n.map((c,h)=>[c,h])),o=[],u=new Map;return t.slice(1).forEach((c,h)=>{const f={key:String(c[s.key]||"").trim(),module:String(c[s.module]||"").trim(),page:String(c[s.page]||"").trim(),component:String(c[s.component]||"").trim(),slot:String(c[s.slot]||"").trim(),text:String(c[s.text]??"").trim()};f.key&&(u.has(f.key),u.set(f.key,f),o.push(f))}),{map:u,rows:o}}function vL(){return Ch||(Ch=yL(iL)),Ch}function bL(){return mL[iw]||{}}function _L(e){const t=bL()[String(e)];return typeof t=="string"&&t.trim()?t:null}function wL(e,t){return t?e.replace(/\{\{(\w+)\}\}/g,(n,a)=>t[a]==null?n:String(t[a])):e}function kL(e){return String(e).replace(/\\n/g,`
619
621
  `)}function xL(e,t){return _L(t)||e?.text||t}function SL(e){iw=aw(e)}function Fe(e,t){const a=vL().map.get(e);return wL(kL(xL(a,e)),t)}const Fv="tokentracker_native_app";let sw=null;const mf=new Set;typeof window<"u"&&window.addEventListener("native:systemAppearanceChanged",e=>{const t=e?.detail?.isDark;if(typeof t=="boolean"){sw=t;try{const n=document.documentElement;t?n.classList.add("dark"):n.classList.remove("dark")}catch{}mf.forEach(n=>{try{n(t)}catch{}})}});function Vv(){return sw}function PL(e){return mf.add(e),()=>mf.delete(e)}function ow(){if(typeof window>"u")return!1;try{if(new URLSearchParams(window.location.search).get("app")==="1"){try{window.localStorage.setItem(Fv,"1")}catch{}return!0}return window.localStorage.getItem(Fv)==="1"}catch{return!1}}function pr(){return typeof window>"u"?!1:!!window.webkit?.messageHandlers?.nativeBridge}function lw(){return typeof window>"u"?null:window.webkit?.messageHandlers?.nativeBridge??null}function o3(){return!!lw()}function Wo(e){const t=lw();if(!t)return!1;try{return t.postMessage(e),!0}catch(n){return console.warn("[tokentracker] nativeBridge post failed:",n),!1}}function l3(){return Wo({type:"getSettings"})}function zv(e,t){return Wo({type:"setSetting",key:e,value:t})}function u3(e){return Wo({type:"action",name:e})}function TL(){return Wo({type:"getSystemAppearance"})}function CL(e,t){if(!pr())return;Wo({type:"setChromeAppearance",isDark:e==="dark",theme:t??"system"})}function c3(e){if(typeof window>"u")return()=>{};const t=n=>{n&&n.detail&&typeof n.detail=="object"&&e(n.detail)};return window.addEventListener("native:settings",t),()=>window.removeEventListener("native:settings",t)}const uw=k.createContext(null);function EL(){return Qu(kp())}function RL(e){typeof document>"u"||(document.documentElement.lang=e)}function $v(e,t){SL(e),t(n=>n===e?n:e)}function AL({children:e}){const[t,n]=k.useState(kp),[a,s]=k.useState(EL);k.useLayoutEffect(()=>{RL(a)},[a]),k.useLayoutEffect(()=>{pr()&&zv("locale",t)},[t]),k.useLayoutEffect(()=>{if(t!==ps||typeof window>"u")return;const c=()=>$v(Qu(ps),s);return window.addEventListener("languagechange",c),()=>window.removeEventListener("languagechange",c)},[t]);const o=k.useCallback(c=>{const h=kc(c);$v(Qu(h),s),n(h),fL(h),pr()&&zv("locale",h)},[]),u=k.useMemo(()=>({locale:t,setLocale:o,resolvedLocale:a}),[t,a,o]);return I.jsx(uw.Provider,{value:u,children:e})}const LL="modulepreload",DL=function(e){return"/"+e},Hv={},Pr=function(t,n,a){let s=Promise.resolve();if(n&&n.length>0){let h=function(f){return Promise.all(f.map(m=>Promise.resolve(m).then(y=>({status:"fulfilled",value:y}),y=>({status:"rejected",reason:y}))))};document.getElementsByTagName("link");const u=document.querySelector("meta[property=csp-nonce]"),c=u?.nonce||u?.getAttribute("nonce");s=h(n.map(f=>{if(f=DL(f),f in Hv)return;Hv[f]=!0;const m=f.endsWith(".css"),y=m?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${f}"]${y}`))return;const b=document.createElement("link");if(b.rel=m?"stylesheet":LL,m||(b.as="script"),b.crossOrigin="",b.href=f,c&&b.setAttribute("nonce",c),document.head.appendChild(b),m)return new Promise((w,x)=>{b.addEventListener("load",w),b.addEventListener("error",()=>x(new Error(`Unable to preload CSS for ${f}`)))})}))}function o(u){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=u,window.dispatchEvent(c),!c.defaultPrevented)throw u}return s.then(u=>{for(const c of u||[])c.status==="rejected"&&o(c.reason);return t().catch(o)})};var Xu={},ML=()=>{window.va||(window.va=function(...t){window.vaq||(window.vaq=[]),window.vaq.push(t)})},NL="@vercel/analytics",OL="2.0.1";function cw(){return typeof window<"u"}function dw(){try{const e="production"}catch{}return"production"}function IL(e="auto"){if(e==="auto"){window.vam=dw();return}window.vam=e}function jL(){return(cw()?window.vam:dw())||"production"}function xp(){return jL()==="development"}function UL(e){return e.scriptSrc?rs(e.scriptSrc):xp()?"https://va.vercel-scripts.com/v1/script.debug.js":e.basePath?rs(`${e.basePath}/insights/script.js`):"/_vercel/insights/script.js"}function BL(e,t){var n;let a=e;if(t)try{a={...(n=JSON.parse(t))==null?void 0:n.analytics,...e}}catch{}IL(a.mode);const s={sdkn:NL+(a.framework?`/${a.framework}`:""),sdkv:OL};return a.disableAutoTrack&&(s.disableAutoTrack="1"),a.viewEndpoint&&(s.viewEndpoint=rs(a.viewEndpoint)),a.eventEndpoint&&(s.eventEndpoint=rs(a.eventEndpoint)),a.sessionEndpoint&&(s.sessionEndpoint=rs(a.sessionEndpoint)),xp()&&a.debug===!1&&(s.debug="false"),a.dsn&&(s.dsn=a.dsn),a.endpoint?s.endpoint=a.endpoint:a.basePath&&(s.endpoint=rs(`${a.basePath}/insights`)),{beforeSend:a.beforeSend,src:UL(a),dataset:s}}function rs(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:`/${e}`}function FL(e={debug:!0},t){var n;if(!cw())return;const{beforeSend:a,src:s,dataset:o}=BL(e,t);if(ML(),a&&((n=window.va)==null||n.call(window,"beforeSend",a)),document.head.querySelector(`script[src*="${s}"]`))return;const u=document.createElement("script");u.src=s;for(const[c,h]of Object.entries(o))u.dataset[c]=h;u.defer=!0,u.onerror=()=>{const c=xp()?"Please check if any ad blockers are enabled and try again.":"Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";console.log(`[Vercel Web Analytics] Failed to load script from ${s}. ${c}`)},document.head.appendChild(u)}function VL({route:e,path:t}){var n;(n=window.va)==null||n.call(window,"pageview",{route:e,path:t})}function zL(){if(!(typeof process>"u"||typeof Xu>"u"))return Xu.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH}function $L(){if(!(typeof process>"u"||typeof Xu>"u"))return Xu.REACT_APP_VERCEL_OBSERVABILITY_CLIENT_CONFIG}function HL(e){return k.useEffect(()=>{var t;e.beforeSend&&((t=window.va)==null||t.call(window,"beforeSend",e.beforeSend))},[e.beforeSend]),k.useEffect(()=>{FL({framework:e.framework||"react",basePath:e.basePath??zL(),...e.route!==void 0&&{disableAutoTrack:!0},...e},e.configString??$L())},[]),k.useEffect(()=>{e.route&&e.path&&VL({route:e.route,path:e.path})},[e.route,e.path]),null}var Ju={},WL=()=>{window.si||(window.si=function(...t){window.siq=window.siq||[],window.siq.push(t)})},KL="@vercel/speed-insights",qL="2.0.0";function GL(){return typeof window<"u"}function YL(){try{const e="production"}catch{}return"production"}function hw(){return YL()==="development"}function ZL(e){return e.scriptSrc?ec(e.scriptSrc):hw()?"https://va.vercel-scripts.com/v1/speed-insights/script.debug.js":e.dsn?"https://va.vercel-scripts.com/v1/speed-insights/script.js":e.basePath?ec(`${e.basePath}/speed-insights/script.js`):"/_vercel/speed-insights/script.js"}function QL(e,t){var n;let a=e;if(t)try{a={...(n=JSON.parse(t))==null?void 0:n.speedInsights,...e}}catch{}const s={sdkn:KL+(a.framework?`/${a.framework}`:""),sdkv:qL};return a.sampleRate&&(s.sampleRate=a.sampleRate.toString()),a.route&&(s.route=a.route),hw()&&a.debug===!1&&(s.debug="false"),a.dsn&&(s.dsn=a.dsn),a.endpoint?s.endpoint=ec(a.endpoint):a.basePath&&(s.endpoint=ec(`${a.basePath}/speed-insights/vitals`)),{src:ZL(a),beforeSend:a.beforeSend,dataset:s}}function ec(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:`/${e}`}function XL(e={},t){var n;if(!GL()||e.route===null)return null;WL();const{beforeSend:a,src:s,dataset:o}=QL(e,t);if(document.head.querySelector(`script[src*="${s}"]`))return null;a&&((n=window.si)==null||n.call(window,"beforeSend",a));const u=document.createElement("script");u.src=s,u.defer=!0;for(const[c,h]of Object.entries(o))u.dataset[c]=h;return u.onerror=()=>{console.log(`[Vercel Speed Insights] Failed to load script from ${s}. Please check if any content blockers are enabled and try again.`)},document.head.appendChild(u),{setRoute:c=>{u.dataset.route=c??void 0}}}function JL(){if(!(typeof process>"u"||typeof Ju>"u"))return Ju.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH}function eD(){if(!(typeof process>"u"||typeof Ju>"u"))return Ju.REACT_APP_VERCEL_OBSERVABILITY_CLIENT_CONFIG}function tD(e){k.useEffect(()=>{var n;e.beforeSend&&((n=window.si)==null||n.call(window,"beforeSend",e.beforeSend))},[e.beforeSend]);const t=k.useRef(null);return k.useEffect(()=>{if(!t.current){const n=XL({framework:e.framework??"react",basePath:e.basePath??JL(),...e},e.configString??eD());n&&(t.current=n.setRoute)}},[e]),k.useEffect(()=>{t.current&&e.route&&t.current(e.route)},[e.route]),null}const fw=(...e)=>e.filter((t,n,a)=>!!t&&t.trim()!==""&&a.indexOf(t)===n).join(" ").trim();const nD=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const rD=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,n,a)=>a?a.toUpperCase():n.toLowerCase());const Wv=e=>{const t=rD(e);return t.charAt(0).toUpperCase()+t.slice(1)};var Eh={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const aD=e=>{for(const t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0;return!1},iD=k.createContext({}),sD=()=>k.useContext(iD),oD=k.forwardRef(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:a,className:s="",children:o,iconNode:u,...c},h)=>{const{size:f=24,strokeWidth:m=2,absoluteStrokeWidth:y=!1,color:b="currentColor",className:w=""}=sD()??{},x=a??y?Number(n??m)*24/Number(t??f):n??m;return k.createElement("svg",{ref:h,...Eh,width:t??f??Eh.width,height:t??f??Eh.height,stroke:e??b,strokeWidth:x,className:fw("lucide",w,s),...!o&&!aD(c)&&{"aria-hidden":"true"},...c},[...u.map(([T,P])=>k.createElement(T,P)),...Array.isArray(o)?o:[o]])});const dn=(e,t)=>{const n=k.forwardRef(({className:a,...s},o)=>k.createElement(oD,{ref:o,iconNode:t,className:fw(`lucide-${nD(Wv(e))}`,`lucide-${e}`,a),...s}));return n.displayName=Wv(e),n};const lD=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],uD=dn("chart-column",lD);const cD=[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]],dD=dn("gauge",cD);const hD=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],fD=dn("globe",hD);const pD=[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]],mD=dn("layout-grid",pD);const gD=[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]],yD=dn("mail",gD);const vD=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],bD=dn("menu",vD);const _D=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],wD=dn("monitor",_D);const kD=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],pw=dn("moon",kD);const xD=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]],SD=dn("puzzle",xD);const PD=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],TD=dn("refresh-cw",PD);const CD=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],ED=dn("settings",CD);const RD=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],mw=dn("sun",RD);const AD=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],LD=dn("triangle-alert",AD);const DD=[["path",{d:"M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978",key:"1n3hpd"}],["path",{d:"M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978",key:"rfe1zi"}],["path",{d:"M18 9h1.5a1 1 0 0 0 0-5H18",key:"7xy6bh"}],["path",{d:"M4 22h16",key:"57wxv0"}],["path",{d:"M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z",key:"1mhfuq"}],["path",{d:"M6 9H4.5a1 1 0 0 1 0-5H6",key:"tex48p"}]],MD=dn("trophy",DD);const ND=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],gw=dn("x",ND);function OD({children:e,variant:t="primary",size:n="md",onClick:a,disabled:s=!1,className:o="",as:u="button",...c}){const h="inline-flex items-center justify-center font-medium transition-all duration-200 rounded-md focus:outline-none focus:ring-2 focus:ring-oai-blue/30 active:scale-[0.98] active:duration-100",f={primary:"bg-oai-black dark:bg-oai-white text-white dark:text-oai-black border border-transparent hover:bg-oai-gray-800 dark:hover:bg-oai-gray-200 active:bg-oai-gray-900 dark:active:bg-oai-gray-300 disabled:bg-oai-gray-300 dark:disabled:bg-oai-gray-700 disabled:text-oai-gray-500 dark:disabled:text-oai-gray-400 focus:ring-oai-brand/30 transition-colors duration-200",secondary:"bg-oai-white dark:bg-oai-gray-900 text-oai-black dark:text-oai-white border border-oai-gray-300 dark:border-oai-gray-700 hover:border-oai-brand hover:text-oai-brand active:bg-oai-gray-50 dark:active:bg-oai-gray-800 active:border-oai-brand-dark disabled:text-oai-gray-400 dark:disabled:text-oai-gray-500 disabled:border-oai-gray-200 dark:disabled:border-oai-gray-700 focus:ring-oai-brand/30 transition-colors duration-200",ghost:"bg-transparent text-oai-gray-600 dark:text-oai-gray-300 border border-transparent hover:text-oai-brand hover:bg-oai-brand-50/50 dark:hover:bg-oai-brand-950/30 active:bg-oai-brand-50 dark:active:bg-oai-brand-900/50 disabled:text-oai-gray-400 dark:disabled:text-oai-gray-500 focus:ring-oai-brand/30 transition-colors duration-200"},m={sm:"h-8 px-3 text-sm",md:"h-10 px-4 text-sm",lg:"h-12 px-6 text-base"},y=s?"cursor-not-allowed opacity-60":"cursor-pointer",b=`${h} ${f[t]} ${m[n]} ${y} ${o}`;return I.jsx(u,{className:b,onClick:a,disabled:s,...c,children:e})}class ID extends Hf.Component{constructor(t){super(t),this.state={error:null},this.handleReload=this.handleReload.bind(this)}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,n){console.error("ErrorBoundary caught an error:",t)}handleReload(){typeof window>"u"||window.location.reload()}render(){const{error:t}=this.state;if(!t)return this.props.children;const n=String(t?.message||t||""),a=n?Fe("shared.error.prefix",{error:n}):Fe("error.boundary.no_details");return I.jsx("div",{className:"flex min-h-screen items-center justify-center bg-oai-white p-6 font-oai text-oai-black antialiased dark:bg-oai-gray-950 dark:text-oai-white",children:I.jsxs("div",{className:"w-full max-w-lg rounded-xl border border-oai-gray-200 bg-white p-6 text-center shadow-sm dark:border-oai-gray-800 dark:bg-oai-gray-900",children:[I.jsx("div",{className:"mx-auto flex h-10 w-10 items-center justify-center rounded-full bg-amber-50 text-amber-600 dark:bg-amber-950/30 dark:text-amber-300",children:I.jsx(LD,{className:"h-5 w-5","aria-hidden":!0})}),I.jsx("div",{className:"mt-4 text-xs font-medium uppercase text-oai-gray-500 dark:text-oai-gray-400",children:Fe("error.boundary.title")}),I.jsx("h1",{className:"mt-2 text-xl font-semibold text-oai-black dark:text-white",children:Fe("error.boundary.subtitle")}),I.jsx("p",{className:"mt-2 text-sm text-oai-gray-500 dark:text-oai-gray-400",children:Fe("error.boundary.hint")}),I.jsx("div",{className:"mt-4 max-h-32 overflow-auto rounded-lg border border-oai-gray-200 bg-oai-gray-50 px-3 py-2 text-left text-xs leading-5 text-oai-gray-600 dark:border-oai-gray-800 dark:bg-oai-gray-950 dark:text-oai-gray-300",children:a}),I.jsxs(OD,{type:"button",size:"md",onClick:this.handleReload,className:"mt-5",children:[I.jsx(TD,{className:"mr-2 h-4 w-4","aria-hidden":!0}),Fe("error.boundary.action.reload")]})]})})}}function Ko(){const e=k.useContext(uw);if(e===null)throw new Error("useLocale must be used within a LocaleProvider");return e}const gf="tokentracker-theme",yw=k.createContext(null);function jD(){if(typeof window>"u")return"system";try{const e=localStorage.getItem(gf);if(e==="light"||e==="dark"||e==="system")return e}catch{}return"system"}function du(){return typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function UD(e){if(typeof document>"u")return;const t=document.documentElement;e==="dark"?t.classList.add("dark"):t.classList.remove("dark")}function BD({children:e}){const[t,n]=k.useState(jD),[a,s]=k.useState(()=>{if(t!=="system")return t;if(pr()){const f=Vv();if(typeof f=="boolean")return f?"dark":"light"}return du()}),o=k.useRef(t);k.useEffect(()=>{o.current=t},[t]),k.useEffect(()=>{UD(a)},[a]),k.useLayoutEffect(()=>{if(t==="system"){if(pr()){const f=Vv();s(typeof f=="boolean"?f?"dark":"light":du()),TL();return}s(du())}else s(t)},[t]),k.useEffect(()=>pr()?PL(m=>{o.current==="system"&&s(m?"dark":"light")}):void 0,[]),k.useEffect(()=>{if(typeof window>"u"||t!=="system"||pr())return;const f=window.matchMedia("(prefers-color-scheme: dark)"),m=y=>{const b=y.matches?"dark":"light";s(b)};return f.addEventListener?(f.addEventListener("change",m),()=>f.removeEventListener("change",m)):(f.addListener(m),()=>f.removeListener(m))},[t]),k.useEffect(()=>{const f=t==="system"&&!pr()?du():a;CL(f,t)},[a,t]);const u=k.useCallback(f=>{if(n(f),typeof window<"u")try{localStorage.setItem(gf,f)}catch{}},[]),c=k.useCallback(()=>{u(f=>{const m=f==="dark"?"light":"dark";if(typeof window<"u")try{localStorage.setItem(gf,m)}catch{}return m})},[]),h=k.useMemo(()=>({theme:t,setTheme:u,toggleTheme:c,resolvedTheme:a}),[t,u,c,a]);return I.jsx(yw.Provider,{value:h,children:e})}const vw=k.createContext({isOpen:!1,openLoginModal:()=>{},closeLoginModal:()=>{}});function FD({children:e}){const[t,n]=k.useState(!1),a=k.useCallback(()=>n(!0),[]),s=k.useCallback(()=>n(!1),[]);return I.jsx(vw.Provider,{value:{isOpen:t,openLoginModal:a,closeLoginModal:s},children:e})}function bw(){return k.useContext(vw)}const Sp=k.createContext({});function Pp(e){const t=k.useRef(null);return t.current===null&&(t.current=e()),t.current}const VD=typeof window<"u",_w=VD?k.useLayoutEffect:k.useEffect,xc=k.createContext(null);function Tp(e,t){e.indexOf(t)===-1&&e.push(t)}function tc(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}const kr=(e,t,n)=>n>t?t:n<e?e:n;let Cp=()=>{};const Ma={},ww=e=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(e);function kw(e){return typeof e=="object"&&e!==null}const xw=e=>/^0[^.\s]+$/u.test(e);function Sw(e){let t;return()=>(t===void 0&&(t=e()),t)}const jn=e=>e,zD=(e,t)=>n=>t(e(n)),qo=(...e)=>e.reduce(zD),Do=(e,t,n)=>{const a=t-e;return a===0?1:(n-e)/a};class Ep{constructor(){this.subscriptions=[]}add(t){return Tp(this.subscriptions,t),()=>tc(this.subscriptions,t)}notify(t,n,a){const s=this.subscriptions.length;if(s)if(s===1)this.subscriptions[0](t,n,a);else for(let o=0;o<s;o++){const u=this.subscriptions[o];u&&u(t,n,a)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const Sn=e=>e*1e3,In=e=>e/1e3;function Pw(e,t){return t?e*(1e3/t):0}const Tw=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,$D=1e-7,HD=12;function WD(e,t,n,a,s){let o,u,c=0;do u=t+(n-t)/2,o=Tw(u,a,s)-e,o>0?n=u:t=u;while(Math.abs(o)>$D&&++c<HD);return u}function Go(e,t,n,a){if(e===t&&n===a)return jn;const s=o=>WD(o,0,1,e,n);return o=>o===0||o===1?o:Tw(s(o),t,a)}const Cw=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,Ew=e=>t=>1-e(1-t),Rw=Go(.33,1.53,.69,.99),Rp=Ew(Rw),Aw=Cw(Rp),Lw=e=>e>=1?1:(e*=2)<1?.5*Rp(e):.5*(2-Math.pow(2,-10*(e-1))),Ap=e=>1-Math.sin(Math.acos(e)),Dw=Ew(Ap),Mw=Cw(Ap),KD=Go(.42,0,1,1),qD=Go(0,0,.58,1),Nw=Go(.42,0,.58,1),GD=e=>Array.isArray(e)&&typeof e[0]!="number",Ow=e=>Array.isArray(e)&&typeof e[0]=="number",YD={linear:jn,easeIn:KD,easeInOut:Nw,easeOut:qD,circIn:Ap,circInOut:Mw,circOut:Dw,backIn:Rp,backInOut:Aw,backOut:Rw,anticipate:Lw},ZD=e=>typeof e=="string",Kv=e=>{if(Ow(e)){Cp(e.length===4);const[t,n,a,s]=e;return Go(t,n,a,s)}else if(ZD(e))return YD[e];return e},hu=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function QD(e,t){let n=new Set,a=new Set,s=!1,o=!1;const u=new WeakSet;let c={delta:0,timestamp:0,isProcessing:!1};function h(m){u.has(m)&&(f.schedule(m),e()),m(c)}const f={schedule:(m,y=!1,b=!1)=>{const x=b&&s?n:a;return y&&u.add(m),x.add(m),m},cancel:m=>{a.delete(m),u.delete(m)},process:m=>{if(c=m,s){o=!0;return}s=!0;const y=n;n=a,a=y,n.forEach(h),n.clear(),s=!1,o&&(o=!1,f.process(m))}};return f}const XD=40;function Iw(e,t){let n=!1,a=!0;const s={delta:0,timestamp:0,isProcessing:!1},o=()=>n=!0,u=hu.reduce((M,j)=>(M[j]=QD(o),M),{}),{setup:c,read:h,resolveKeyframes:f,preUpdate:m,update:y,preRender:b,render:w,postRender:x}=u,T=()=>{const M=Ma.useManualTiming,j=M?s.timestamp:performance.now();n=!1,M||(s.delta=a?1e3/60:Math.max(Math.min(j-s.timestamp,XD),1)),s.timestamp=j,s.isProcessing=!0,c.process(s),h.process(s),f.process(s),m.process(s),y.process(s),b.process(s),w.process(s),x.process(s),s.isProcessing=!1,n&&t&&(a=!1,e(T))},P=()=>{n=!0,a=!0,s.isProcessing||e(T)};return{schedule:hu.reduce((M,j)=>{const K=u[j];return M[j]=(G,W=!1,S=!1)=>(n||P(),K.schedule(G,W,S)),M},{}),cancel:M=>{for(let j=0;j<hu.length;j++)u[hu[j]].cancel(M)},state:s,steps:u}}const{schedule:dt,cancel:Na,state:Kt,steps:Rh}=Iw(typeof requestAnimationFrame<"u"?requestAnimationFrame:jn,!0);let Ru;function JD(){Ru=void 0}const on={now:()=>(Ru===void 0&&on.set(Kt.isProcessing||Ma.useManualTiming?Kt.timestamp:performance.now()),Ru),set:e=>{Ru=e,queueMicrotask(JD)}},jw=e=>t=>typeof t=="string"&&t.startsWith(e),Uw=jw("--"),eM=jw("var(--"),Lp=e=>eM(e)?tM.test(e.split("/*")[0].trim()):!1,tM=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function qv(e){return typeof e!="string"?!1:e.split("/*")[0].includes("var(--")}const bs={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},Mo={...bs,transform:e=>kr(0,1,e)},fu={...bs,default:1},xo=e=>Math.round(e*1e5)/1e5,Dp=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function nM(e){return e==null}const rM=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,Mp=(e,t)=>n=>!!(typeof n=="string"&&rM.test(n)&&n.startsWith(e)||t&&!nM(n)&&Object.prototype.hasOwnProperty.call(n,t)),Bw=(e,t,n)=>a=>{if(typeof a!="string")return a;const[s,o,u,c]=a.match(Dp);return{[e]:parseFloat(s),[t]:parseFloat(o),[n]:parseFloat(u),alpha:c!==void 0?parseFloat(c):1}},aM=e=>kr(0,255,e),Ah={...bs,transform:e=>Math.round(aM(e))},ri={test:Mp("rgb","red"),parse:Bw("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:a=1})=>"rgba("+Ah.transform(e)+", "+Ah.transform(t)+", "+Ah.transform(n)+", "+xo(Mo.transform(a))+")"};function iM(e){let t="",n="",a="",s="";return e.length>5?(t=e.substring(1,3),n=e.substring(3,5),a=e.substring(5,7),s=e.substring(7,9)):(t=e.substring(1,2),n=e.substring(2,3),a=e.substring(3,4),s=e.substring(4,5),t+=t,n+=n,a+=a,s+=s),{red:parseInt(t,16),green:parseInt(n,16),blue:parseInt(a,16),alpha:s?parseInt(s,16)/255:1}}const yf={test:Mp("#"),parse:iM,transform:ri.transform},Yo=e=>({test:t=>typeof t=="string"&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),Sa=Yo("deg"),yr=Yo("%"),be=Yo("px"),sM=Yo("vh"),oM=Yo("vw"),Gv={...yr,parse:e=>yr.parse(e)/100,transform:e=>yr.transform(e*100)},as={test:Mp("hsl","hue"),parse:Bw("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:a=1})=>"hsla("+Math.round(e)+", "+yr.transform(xo(t))+", "+yr.transform(xo(n))+", "+xo(Mo.transform(a))+")"},Lt={test:e=>ri.test(e)||yf.test(e)||as.test(e),parse:e=>ri.test(e)?ri.parse(e):as.test(e)?as.parse(e):yf.parse(e),transform:e=>typeof e=="string"?e:e.hasOwnProperty("red")?ri.transform(e):as.transform(e),getAnimatableNone:e=>{const t=Lt.parse(e);return t.alpha=0,Lt.transform(t)}},lM=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function uM(e){return isNaN(e)&&typeof e=="string"&&(e.match(Dp)?.length||0)+(e.match(lM)?.length||0)>0}const Fw="number",Vw="color",cM="var",dM="var(",Yv="${}",hM=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function ms(e){const t=e.toString(),n=[],a={color:[],number:[],var:[]},s=[];let o=0;const c=t.replace(hM,h=>(Lt.test(h)?(a.color.push(o),s.push(Vw),n.push(Lt.parse(h))):h.startsWith(dM)?(a.var.push(o),s.push(cM),n.push(h)):(a.number.push(o),s.push(Fw),n.push(parseFloat(h))),++o,Yv)).split(Yv);return{values:n,split:c,indexes:a,types:s}}function fM(e){return ms(e).values}function zw({split:e,types:t}){const n=e.length;return a=>{let s="";for(let o=0;o<n;o++)if(s+=e[o],a[o]!==void 0){const u=t[o];u===Fw?s+=xo(a[o]):u===Vw?s+=Lt.transform(a[o]):s+=a[o]}return s}}function pM(e){return zw(ms(e))}const mM=e=>typeof e=="number"?0:Lt.test(e)?Lt.getAnimatableNone(e):e,gM=(e,t)=>typeof e=="number"?t?.trim().endsWith("/")?e:0:mM(e);function yM(e){const t=ms(e);return zw(t)(t.values.map((a,s)=>gM(a,t.split[s])))}const ar={test:uM,parse:fM,createTransformer:pM,getAnimatableNone:yM};function Lh(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function vM({hue:e,saturation:t,lightness:n,alpha:a}){e/=360,t/=100,n/=100;let s=0,o=0,u=0;if(!t)s=o=u=n;else{const c=n<.5?n*(1+t):n+t-n*t,h=2*n-c;s=Lh(h,c,e+1/3),o=Lh(h,c,e),u=Lh(h,c,e-1/3)}return{red:Math.round(s*255),green:Math.round(o*255),blue:Math.round(u*255),alpha:a}}function nc(e,t){return n=>n>0?t:e}const vt=(e,t,n)=>e+(t-e)*n,Dh=(e,t,n)=>{const a=e*e,s=n*(t*t-a)+a;return s<0?0:Math.sqrt(s)},bM=[yf,ri,as],_M=e=>bM.find(t=>t.test(e));function Zv(e){const t=_M(e);if(!t)return!1;let n=t.parse(e);return t===as&&(n=vM(n)),n}const Qv=(e,t)=>{const n=Zv(e),a=Zv(t);if(!n||!a)return nc(e,t);const s={...n};return o=>(s.red=Dh(n.red,a.red,o),s.green=Dh(n.green,a.green,o),s.blue=Dh(n.blue,a.blue,o),s.alpha=vt(n.alpha,a.alpha,o),ri.transform(s))},vf=new Set(["none","hidden"]);function wM(e,t){return vf.has(e)?n=>n<=0?e:t:n=>n>=1?t:e}function kM(e,t){return n=>vt(e,t,n)}function Np(e){return typeof e=="number"?kM:typeof e=="string"?Lp(e)?nc:Lt.test(e)?Qv:PM:Array.isArray(e)?$w:typeof e=="object"?Lt.test(e)?Qv:xM:nc}function $w(e,t){const n=[...e],a=n.length,s=e.map((o,u)=>Np(o)(o,t[u]));return o=>{for(let u=0;u<a;u++)n[u]=s[u](o);return n}}function xM(e,t){const n={...e,...t},a={};for(const s in n)e[s]!==void 0&&t[s]!==void 0&&(a[s]=Np(e[s])(e[s],t[s]));return s=>{for(const o in a)n[o]=a[o](s);return n}}function SM(e,t){const n=[],a={color:0,var:0,number:0};for(let s=0;s<t.values.length;s++){const o=t.types[s],u=e.indexes[o][a[o]],c=e.values[u]??0;n[s]=c,a[o]++}return n}const PM=(e,t)=>{const n=ar.createTransformer(t),a=ms(e),s=ms(t);return a.indexes.var.length===s.indexes.var.length&&a.indexes.color.length===s.indexes.color.length&&a.indexes.number.length>=s.indexes.number.length?vf.has(e)&&!s.values.length||vf.has(t)&&!a.values.length?wM(e,t):qo($w(SM(a,s),s.values),n):nc(e,t)};function Hw(e,t,n){return typeof e=="number"&&typeof t=="number"&&typeof n=="number"?vt(e,t,n):Np(e)(e,t)}const TM=e=>{const t=({timestamp:n})=>e(n);return{start:(n=!0)=>dt.update(t,n),stop:()=>Na(t),now:()=>Kt.isProcessing?Kt.timestamp:on.now()}},Ww=(e,t,n=10)=>{let a="";const s=Math.max(Math.round(t/n),2);for(let o=0;o<s;o++)a+=Math.round(e(o/(s-1))*1e4)/1e4+", ";return`linear(${a.substring(0,a.length-2)})`},rc=2e4;function Op(e){let t=0;const n=50;let a=e.next(t);for(;!a.done&&t<rc;)t+=n,a=e.next(t);return t>=rc?1/0:t}function CM(e,t=100,n){const a=n({...e,keyframes:[0,t]}),s=Math.min(Op(a),rc);return{type:"keyframes",ease:o=>a.next(s*o).value/t,duration:In(s)}}const St={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};function bf(e,t){return e*Math.sqrt(1-t*t)}const EM=12;function RM(e,t,n){let a=n;for(let s=1;s<EM;s++)a=a-e(a)/t(a);return a}const Mh=.001;function AM({duration:e=St.duration,bounce:t=St.bounce,velocity:n=St.velocity,mass:a=St.mass}){let s,o,u=1-t;u=kr(St.minDamping,St.maxDamping,u),e=kr(St.minDuration,St.maxDuration,In(e)),u<1?(s=f=>{const m=f*u,y=m*e,b=m-n,w=bf(f,u),x=Math.exp(-y);return Mh-b/w*x},o=f=>{const y=f*u*e,b=y*n+n,w=Math.pow(u,2)*Math.pow(f,2)*e,x=Math.exp(-y),T=bf(Math.pow(f,2),u);return(-s(f)+Mh>0?-1:1)*((b-w)*x)/T}):(s=f=>{const m=Math.exp(-f*e),y=(f-n)*e+1;return-Mh+m*y},o=f=>{const m=Math.exp(-f*e),y=(n-f)*(e*e);return m*y});const c=5/e,h=RM(s,o,c);if(e=Sn(e),isNaN(h))return{stiffness:St.stiffness,damping:St.damping,duration:e};{const f=Math.pow(h,2)*a;return{stiffness:f,damping:u*2*Math.sqrt(a*f),duration:e}}}const LM=["duration","bounce"],DM=["stiffness","damping","mass"];function Xv(e,t){return t.some(n=>e[n]!==void 0)}function MM(e){let t={velocity:St.velocity,stiffness:St.stiffness,damping:St.damping,mass:St.mass,isResolvedFromDuration:!1,...e};if(!Xv(e,DM)&&Xv(e,LM))if(t.velocity=0,e.visualDuration){const n=e.visualDuration,a=2*Math.PI/(n*1.2),s=a*a,o=2*kr(.05,1,1-(e.bounce||0))*Math.sqrt(s);t={...t,mass:St.mass,stiffness:s,damping:o}}else{const n=AM({...e,velocity:0});t={...t,...n,mass:St.mass},t.isResolvedFromDuration=!0}return t}function ac(e=St.visualDuration,t=St.bounce){const n=typeof e!="object"?{visualDuration:e,keyframes:[0,1],bounce:t}:e;let{restSpeed:a,restDelta:s}=n;const o=n.keyframes[0],u=n.keyframes[n.keyframes.length-1],c={done:!1,value:o},{stiffness:h,damping:f,mass:m,duration:y,velocity:b,isResolvedFromDuration:w}=MM({...n,velocity:-In(n.velocity||0)}),x=b||0,T=f/(2*Math.sqrt(h*m)),P=u-o,L=In(Math.sqrt(h/m)),D=Math.abs(P)<5;a||(a=D?St.restSpeed.granular:St.restSpeed.default),s||(s=D?St.restDelta.granular:St.restDelta.default);let M,j,K,G,W,S;if(T<1)K=bf(L,T),G=(x+T*L*P)/K,M=X=>{const _e=Math.exp(-T*L*X);return u-_e*(G*Math.sin(K*X)+P*Math.cos(K*X))},W=T*L*G+P*K,S=T*L*P-G*K,j=X=>Math.exp(-T*L*X)*(W*Math.sin(K*X)+S*Math.cos(K*X));else if(T===1){M=_e=>u-Math.exp(-L*_e)*(P+(x+L*P)*_e);const X=x+L*P;j=_e=>Math.exp(-L*_e)*(L*X*_e-x)}else{const X=L*Math.sqrt(T*T-1);M=fe=>{const ce=Math.exp(-T*L*fe),ue=Math.min(X*fe,300);return u-ce*((x+T*L*P)*Math.sinh(ue)+X*P*Math.cosh(ue))/X};const _e=(x+T*L*P)/X,oe=T*L*_e-P*X,Re=T*L*P-_e*X;j=fe=>{const ce=Math.exp(-T*L*fe),ue=Math.min(X*fe,300);return ce*(oe*Math.sinh(ue)+Re*Math.cosh(ue))}}const Z={calculatedDuration:w&&y||null,velocity:X=>Sn(j(X)),next:X=>{if(!w&&T<1){const oe=Math.exp(-T*L*X),Re=Math.sin(K*X),fe=Math.cos(K*X),ce=u-oe*(G*Re+P*fe),ue=Sn(oe*(W*Re+S*fe));return c.done=Math.abs(ue)<=a&&Math.abs(u-ce)<=s,c.value=c.done?u:ce,c}const _e=M(X);if(w)c.done=X>=y;else{const oe=Sn(j(X));c.done=Math.abs(oe)<=a&&Math.abs(u-_e)<=s}return c.value=c.done?u:_e,c},toString:()=>{const X=Math.min(Op(Z),rc),_e=Ww(oe=>Z.next(X*oe).value,X,30);return X+"ms "+_e},toTransition:()=>{}};return Z}ac.applyToOptions=e=>{const t=CM(e,100,ac);return e.ease=t.ease,e.duration=Sn(t.duration),e.type="keyframes",e};const NM=5;function Kw(e,t,n){const a=Math.max(t-NM,0);return Pw(n-e(a),t-a)}function _f({keyframes:e,velocity:t=0,power:n=.8,timeConstant:a=325,bounceDamping:s=10,bounceStiffness:o=500,modifyTarget:u,min:c,max:h,restDelta:f=.5,restSpeed:m}){const y=e[0],b={done:!1,value:y},w=S=>c!==void 0&&S<c||h!==void 0&&S>h,x=S=>c===void 0?h:h===void 0||Math.abs(c-S)<Math.abs(h-S)?c:h;let T=n*t;const P=y+T,L=u===void 0?P:u(P);L!==P&&(T=L-y);const D=S=>-T*Math.exp(-S/a),M=S=>L+D(S),j=S=>{const Z=D(S),X=M(S);b.done=Math.abs(Z)<=f,b.value=b.done?L:X};let K,G;const W=S=>{w(b.value)&&(K=S,G=ac({keyframes:[b.value,x(b.value)],velocity:Kw(M,S,b.value),damping:s,stiffness:o,restDelta:f,restSpeed:m}))};return W(0),{calculatedDuration:null,next:S=>{let Z=!1;return!G&&K===void 0&&(Z=!0,j(S),W(S)),K!==void 0&&S>=K?G.next(S-K):(!Z&&j(S),b)}}}function OM(e,t,n){const a=[],s=n||Ma.mix||Hw,o=e.length-1;for(let u=0;u<o;u++){let c=s(e[u],e[u+1]);if(t){const h=Array.isArray(t)?t[u]||jn:t;c=qo(h,c)}a.push(c)}return a}function IM(e,t,{clamp:n=!0,ease:a,mixer:s}={}){const o=e.length;if(Cp(o===t.length),o===1)return()=>t[0];if(o===2&&t[0]===t[1])return()=>t[1];const u=e[0]===e[1];e[0]>e[o-1]&&(e=[...e].reverse(),t=[...t].reverse());const c=OM(t,a,s),h=c.length,f=m=>{if(u&&m<e[0])return t[0];let y=0;if(h>1)for(;y<e.length-2&&!(m<e[y+1]);y++);const b=Do(e[y],e[y+1],m);return c[y](b)};return n?m=>f(kr(e[0],e[o-1],m)):f}function jM(e,t){const n=e[e.length-1];for(let a=1;a<=t;a++){const s=Do(0,t,a);e.push(vt(n,1,s))}}function UM(e){const t=[0];return jM(t,e.length-1),t}function BM(e,t){return e.map(n=>n*t)}function FM(e,t){return e.map(()=>t||Nw).splice(0,e.length-1)}function So({duration:e=300,keyframes:t,times:n,ease:a="easeInOut"}){const s=GD(a)?a.map(Kv):Kv(a),o={done:!1,value:t[0]},u=BM(n&&n.length===t.length?n:UM(t),e),c=IM(u,t,{ease:Array.isArray(s)?s:FM(t,s)});return{calculatedDuration:e,next:h=>(o.value=c(h),o.done=h>=e,o)}}const VM=e=>e!==null;function Sc(e,{repeat:t,repeatType:n="loop"},a,s=1){const o=e.filter(VM),c=s<0||t&&n!=="loop"&&t%2===1?0:o.length-1;return!c||a===void 0?o[c]:a}const zM={decay:_f,inertia:_f,tween:So,keyframes:So,spring:ac};function qw(e){typeof e.type=="string"&&(e.type=zM[e.type])}class Ip{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(t=>{this.resolve=t})}notifyFinished(){this.resolve()}then(t,n){return this.finished.then(t,n)}}const $M=e=>e/100;class ic extends Ip{constructor(t){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.delayState={done:!1,value:void 0},this.stop=()=>{const{motionValue:n}=this.options;n&&n.updatedAt!==on.now()&&this.tick(on.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),this.options.onStop?.())},this.options=t,this.initAnimation(),this.play(),t.autoplay===!1&&this.pause()}initAnimation(){const{options:t}=this;qw(t);const{type:n=So,repeat:a=0,repeatDelay:s=0,repeatType:o,velocity:u=0}=t;let{keyframes:c}=t;const h=n||So;h!==So&&typeof c[0]!="number"&&(this.mixKeyframes=qo($M,Hw(c[0],c[1])),c=[0,100]);const f=h({...t,keyframes:c});o==="mirror"&&(this.mirroredGenerator=h({...t,keyframes:[...c].reverse(),velocity:-u})),f.calculatedDuration===null&&(f.calculatedDuration=Op(f));const{calculatedDuration:m}=f;this.calculatedDuration=m,this.resolvedDuration=m+s,this.totalDuration=this.resolvedDuration*(a+1)-s,this.generator=f}updateTime(t){const n=Math.round(t-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=n}tick(t,n=!1){const{generator:a,totalDuration:s,mixKeyframes:o,mirroredGenerator:u,resolvedDuration:c,calculatedDuration:h}=this;if(this.startTime===null)return a.next(0);const{delay:f=0,keyframes:m,repeat:y,repeatType:b,repeatDelay:w,type:x,onUpdate:T,finalKeyframe:P}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,t):this.speed<0&&(this.startTime=Math.min(t-s/this.speed,this.startTime)),n?this.currentTime=t:this.updateTime(t);const L=this.currentTime-f*(this.playbackSpeed>=0?1:-1),D=this.playbackSpeed>=0?L<0:L>s;this.currentTime=Math.max(L,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=s);let M=this.currentTime,j=a;if(y){const S=Math.min(this.currentTime,s)/c;let Z=Math.floor(S),X=S%1;!X&&S>=1&&(X=1),X===1&&Z--,Z=Math.min(Z,y+1),Z%2&&(b==="reverse"?(X=1-X,w&&(X-=w/c)):b==="mirror"&&(j=u)),M=kr(0,1,X)*c}let K;D?(this.delayState.value=m[0],K=this.delayState):K=j.next(M),o&&!D&&(K.value=o(K.value));let{done:G}=K;!D&&h!==null&&(G=this.playbackSpeed>=0?this.currentTime>=s:this.currentTime<=0);const W=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&G);return W&&x!==_f&&(K.value=Sc(m,this.options,P,this.speed)),T&&T(K.value),W&&this.finish(),K}then(t,n){return this.finished.then(t,n)}get duration(){return In(this.calculatedDuration)}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+In(t)}get time(){return In(this.currentTime)}set time(t){t=Sn(t),this.currentTime=t,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=t:this.driver&&(this.startTime=this.driver.now()-t/this.playbackSpeed),this.driver?this.driver.start(!1):(this.startTime=0,this.state="paused",this.holdTime=t,this.tick(t))}getGeneratorVelocity(){const t=this.currentTime;if(t<=0)return this.options.velocity||0;if(this.generator.velocity)return this.generator.velocity(t);const n=this.generator.next(t).value;return Kw(a=>this.generator.next(a).value,t,n)}get speed(){return this.playbackSpeed}set speed(t){const n=this.playbackSpeed!==t;n&&this.driver&&this.updateTime(on.now()),this.playbackSpeed=t,n&&this.driver&&(this.time=In(this.currentTime))}play(){if(this.isStopped)return;const{driver:t=TM,startTime:n}=this.options;this.driver||(this.driver=t(s=>this.tick(s))),this.options.onPlay?.();const a=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=a):this.holdTime!==null?this.startTime=a-this.holdTime:this.startTime||(this.startTime=n??a),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(on.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){this.notifyFinished(),this.teardown(),this.state="finished",this.options.onComplete?.()}cancel(){this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),this.options.onCancel?.()}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(t){return this.startTime=0,this.tick(t,!0)}attachTimeline(t){return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),this.driver?.stop(),t.observe(this)}}function HM(e){for(let t=1;t<e.length;t++)e[t]??(e[t]=e[t-1])}const ai=e=>e*180/Math.PI,wf=e=>{const t=ai(Math.atan2(e[1],e[0]));return kf(t)},WM={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:e=>(Math.abs(e[0])+Math.abs(e[3]))/2,rotate:wf,rotateZ:wf,skewX:e=>ai(Math.atan(e[1])),skewY:e=>ai(Math.atan(e[2])),skew:e=>(Math.abs(e[1])+Math.abs(e[2]))/2},kf=e=>(e=e%360,e<0&&(e+=360),e),Jv=wf,e0=e=>Math.sqrt(e[0]*e[0]+e[1]*e[1]),t0=e=>Math.sqrt(e[4]*e[4]+e[5]*e[5]),KM={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:e0,scaleY:t0,scale:e=>(e0(e)+t0(e))/2,rotateX:e=>kf(ai(Math.atan2(e[6],e[5]))),rotateY:e=>kf(ai(Math.atan2(-e[2],e[0]))),rotateZ:Jv,rotate:Jv,skewX:e=>ai(Math.atan(e[4])),skewY:e=>ai(Math.atan(e[1])),skew:e=>(Math.abs(e[1])+Math.abs(e[4]))/2};function xf(e){return e.includes("scale")?1:0}function Sf(e,t){if(!e||e==="none")return xf(t);const n=e.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let a,s;if(n)a=KM,s=n;else{const c=e.match(/^matrix\(([-\d.e\s,]+)\)$/u);a=WM,s=c}if(!s)return xf(t);const o=a[t],u=s[1].split(",").map(GM);return typeof o=="function"?o(u):u[o]}const qM=(e,t)=>{const{transform:n="none"}=getComputedStyle(e);return Sf(n,t)};function GM(e){return parseFloat(e.trim())}const _s=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],ws=new Set(_s),n0=e=>e===bs||e===be,YM=new Set(["x","y","z"]),ZM=_s.filter(e=>!YM.has(e));function QM(e){const t=[];return ZM.forEach(n=>{const a=e.getValue(n);a!==void 0&&(t.push([n,a.get()]),a.set(n.startsWith("scale")?1:0))}),t}const Aa={width:({x:e},{paddingLeft:t="0",paddingRight:n="0",boxSizing:a})=>{const s=e.max-e.min;return a==="border-box"?s:s-parseFloat(t)-parseFloat(n)},height:({y:e},{paddingTop:t="0",paddingBottom:n="0",boxSizing:a})=>{const s=e.max-e.min;return a==="border-box"?s:s-parseFloat(t)-parseFloat(n)},top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:(e,{transform:t})=>Sf(t,"x"),y:(e,{transform:t})=>Sf(t,"y")};Aa.translateX=Aa.x;Aa.translateY=Aa.y;const ii=new Set;let Pf=!1,Tf=!1,Cf=!1;function Gw(){if(Tf){const e=Array.from(ii).filter(a=>a.needsMeasurement),t=new Set(e.map(a=>a.element)),n=new Map;t.forEach(a=>{const s=QM(a);s.length&&(n.set(a,s),a.render())}),e.forEach(a=>a.measureInitialState()),t.forEach(a=>{a.render();const s=n.get(a);s&&s.forEach(([o,u])=>{a.getValue(o)?.set(u)})}),e.forEach(a=>a.measureEndState()),e.forEach(a=>{a.suspendedScrollY!==void 0&&window.scrollTo(0,a.suspendedScrollY)})}Tf=!1,Pf=!1,ii.forEach(e=>e.complete(Cf)),ii.clear()}function Yw(){ii.forEach(e=>{e.readKeyframes(),e.needsMeasurement&&(Tf=!0)})}function XM(){Cf=!0,Yw(),Gw(),Cf=!1}class jp{constructor(t,n,a,s,o,u=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...t],this.onComplete=n,this.name=a,this.motionValue=s,this.element=o,this.isAsync=u}scheduleResolve(){this.state="scheduled",this.isAsync?(ii.add(this),Pf||(Pf=!0,dt.read(Yw),dt.resolveKeyframes(Gw))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:t,name:n,element:a,motionValue:s}=this;if(t[0]===null){const o=s?.get(),u=t[t.length-1];if(o!==void 0)t[0]=o;else if(a&&n){const c=a.readValue(n,u);c!=null&&(t[0]=c)}t[0]===void 0&&(t[0]=u),s&&o===void 0&&s.set(t[0])}HM(t)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(t=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,t),ii.delete(this)}cancel(){this.state==="scheduled"&&(ii.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const JM=e=>e.startsWith("--");function Zw(e,t,n){JM(t)?e.style.setProperty(t,n):e.style[t]=n}const e2={};function Qw(e,t){const n=Sw(e);return()=>e2[t]??n()}const t2=Qw(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),Xw=Qw(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),_o=([e,t,n,a])=>`cubic-bezier(${e}, ${t}, ${n}, ${a})`,r0={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:_o([0,.65,.55,1]),circOut:_o([.55,0,1,.45]),backIn:_o([.31,.01,.66,-.59]),backOut:_o([.33,1.53,.69,.99])};function Jw(e,t){if(e)return typeof e=="function"?Xw()?Ww(e,t):"ease-out":Ow(e)?_o(e):Array.isArray(e)?e.map(n=>Jw(n,t)||r0.easeOut):r0[e]}function n2(e,t,n,{delay:a=0,duration:s=300,repeat:o=0,repeatType:u="loop",ease:c="easeOut",times:h}={},f=void 0){const m={[t]:n};h&&(m.offset=h);const y=Jw(c,s);Array.isArray(y)&&(m.easing=y);const b={delay:a,duration:s,easing:Array.isArray(y)?"linear":y,fill:"both",iterations:o+1,direction:u==="reverse"?"alternate":"normal"};return f&&(b.pseudoElement=f),e.animate(m,b)}function ek(e){return typeof e=="function"&&"applyToOptions"in e}function r2({type:e,...t}){return ek(e)&&Xw()?e.applyToOptions(t):(t.duration??(t.duration=300),t.ease??(t.ease="easeOut"),t)}class tk extends Ip{constructor(t){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!t)return;const{element:n,name:a,keyframes:s,pseudoElement:o,allowFlatten:u=!1,finalKeyframe:c,onComplete:h}=t;this.isPseudoElement=!!o,this.allowFlatten=u,this.options=t,Cp(typeof t.type!="string");const f=r2(t);this.animation=n2(n,a,s,f,o),f.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!o){const m=Sc(s,this.options,c,this.speed);this.updateMotionValue&&this.updateMotionValue(m),Zw(n,a,m),this.animation.cancel()}h?.(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){this.animation.finish?.()}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:t}=this;t==="idle"||t==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){const t=this.options?.element;!this.isPseudoElement&&t?.isConnected&&this.animation.commitStyles?.()}get duration(){const t=this.animation.effect?.getComputedTiming?.().duration||0;return In(Number(t))}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+In(t)}get time(){return In(Number(this.animation.currentTime)||0)}set time(t){const n=this.finishedTime!==null;this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=Sn(t),n&&this.animation.pause()}get speed(){return this.animation.playbackRate}set speed(t){t<0&&(this.finishedTime=null),this.animation.playbackRate=t}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(t){this.manualStartTime=this.animation.startTime=t}attachTimeline({timeline:t,rangeStart:n,rangeEnd:a,observe:s}){return this.allowFlatten&&this.animation.effect?.updateTiming({easing:"linear"}),this.animation.onfinish=null,t&&t2()?(this.animation.timeline=t,n&&(this.animation.rangeStart=n),a&&(this.animation.rangeEnd=a),jn):s(this)}}const nk={anticipate:Lw,backInOut:Aw,circInOut:Mw};function a2(e){return e in nk}function i2(e){typeof e.ease=="string"&&a2(e.ease)&&(e.ease=nk[e.ease])}const Nh=10;class s2 extends tk{constructor(t){i2(t),qw(t),super(t),t.startTime!==void 0&&t.autoplay!==!1&&(this.startTime=t.startTime),this.options=t}updateMotionValue(t){const{motionValue:n,onUpdate:a,onComplete:s,element:o,...u}=this.options;if(!n)return;if(t!==void 0){n.set(t);return}const c=new ic({...u,autoplay:!1}),h=Math.max(Nh,on.now()-this.startTime),f=kr(0,Nh,h-Nh),m=c.sample(h).value,{name:y}=this.options;o&&y&&Zw(o,y,m),n.setWithVelocity(c.sample(Math.max(0,h-f)).value,m,f),c.stop()}}const a0=(e,t)=>t==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(ar.test(e)||e==="0")&&!e.startsWith("url("));function o2(e){const t=e[0];if(e.length===1)return!0;for(let n=0;n<e.length;n++)if(e[n]!==t)return!0}function l2(e,t,n,a){const s=e[0];if(s===null)return!1;if(t==="display"||t==="visibility")return!0;const o=e[e.length-1],u=a0(s,t),c=a0(o,t);return!u||!c?!1:o2(e)||(n==="spring"||ek(n))&&a}function Ef(e){e.duration=0,e.type="keyframes"}const rk=new Set(["opacity","clipPath","filter","transform"]),u2=/^(?:oklch|oklab|lab|lch|color|color-mix|light-dark)\(/;function c2(e){for(let t=0;t<e.length;t++)if(typeof e[t]=="string"&&u2.test(e[t]))return!0;return!1}const d2=new Set(["color","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"]),h2=Sw(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function f2(e){const{motionValue:t,name:n,repeatDelay:a,repeatType:s,damping:o,type:u,keyframes:c}=e;if(!(t?.owner?.current instanceof HTMLElement))return!1;const{onUpdate:f,transformTemplate:m}=t.owner.getProps();return h2()&&n&&(rk.has(n)||d2.has(n)&&c2(c))&&(n!=="transform"||!m)&&!f&&!a&&s!=="mirror"&&o!==0&&u!=="inertia"}const p2=40;class m2 extends Ip{constructor({autoplay:t=!0,delay:n=0,type:a="keyframes",repeat:s=0,repeatDelay:o=0,repeatType:u="loop",keyframes:c,name:h,motionValue:f,element:m,...y}){super(),this.stop=()=>{this._animation&&(this._animation.stop(),this.stopTimeline?.()),this.keyframeResolver?.cancel()},this.createdAt=on.now();const b={autoplay:t,delay:n,type:a,repeat:s,repeatDelay:o,repeatType:u,name:h,motionValue:f,element:m,...y},w=m?.KeyframeResolver||jp;this.keyframeResolver=new w(c,(x,T,P)=>this.onKeyframesResolved(x,T,b,!P),h,f,m),this.keyframeResolver?.scheduleResolve()}onKeyframesResolved(t,n,a,s){this.keyframeResolver=void 0;const{name:o,type:u,velocity:c,delay:h,isHandoff:f,onUpdate:m}=a;this.resolvedAt=on.now();let y=!0;l2(t,o,u,c)||(y=!1,(Ma.instantAnimations||!h)&&m?.(Sc(t,a,n)),t[0]=t[t.length-1],Ef(a),a.repeat=0);const w={startTime:s?this.resolvedAt?this.resolvedAt-this.createdAt>p2?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:n,...a,keyframes:t},x=y&&!f&&f2(w),T=w.motionValue?.owner?.current;let P;if(x)try{P=new s2({...w,element:T})}catch{P=new ic(w)}else P=new ic(w);P.finished.then(()=>{this.notifyFinished()}).catch(jn),this.pendingTimeline&&(this.stopTimeline=P.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=P}get finished(){return this._animation?this.animation.finished:this._finished}then(t,n){return this.finished.finally(t).then(()=>{})}get animation(){return this._animation||(this.keyframeResolver?.resume(),XM()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(t){this.animation.time=t}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(t){this.animation.speed=t}get startTime(){return this.animation.startTime}attachTimeline(t){return this._animation?this.stopTimeline=this.animation.attachTimeline(t):this.pendingTimeline=t,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){this._animation&&this.animation.cancel(),this.keyframeResolver?.cancel()}}function ak(e,t,n,a=0,s=1){const o=Array.from(e).sort((f,m)=>f.sortNodePosition(m)).indexOf(t),u=e.size,c=(u-1)*a;return typeof n=="function"?n(o,u):s===1?o*a:c-o*a}const g2=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function y2(e){const t=g2.exec(e);if(!t)return[,];const[,n,a,s]=t;return[`--${n??a}`,s]}function ik(e,t,n=1){const[a,s]=y2(e);if(!a)return;const o=window.getComputedStyle(t).getPropertyValue(a);if(o){const u=o.trim();return ww(u)?parseFloat(u):u}return Lp(s)?ik(s,t,n+1):s}const v2={type:"spring",stiffness:500,damping:25,restSpeed:10},b2=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),_2={type:"keyframes",duration:.8},w2={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},k2=(e,{keyframes:t})=>t.length>2?_2:ws.has(e)?e.startsWith("scale")?b2(t[1]):v2:w2;function sk(e,t){if(e?.inherit&&t){const{inherit:n,...a}=e;return{...t,...a}}return e}function Up(e,t){const n=e?.[t]??e?.default??e;return n!==e?sk(n,e):n}const x2=new Set(["when","delay","delayChildren","staggerChildren","staggerDirection","repeat","repeatType","repeatDelay","from","elapsed"]);function S2(e){for(const t in e)if(!x2.has(t))return!0;return!1}const Bp=(e,t,n,a={},s,o)=>u=>{const c=Up(a,e)||{},h=c.delay||a.delay||0;let{elapsed:f=0}=a;f=f-Sn(h);const m={keyframes:Array.isArray(n)?n:[null,n],ease:"easeOut",velocity:t.getVelocity(),...c,delay:-f,onUpdate:b=>{t.set(b),c.onUpdate&&c.onUpdate(b)},onComplete:()=>{u(),c.onComplete&&c.onComplete()},name:e,motionValue:t,element:o?void 0:s};S2(c)||Object.assign(m,k2(e,m)),m.duration&&(m.duration=Sn(m.duration)),m.repeatDelay&&(m.repeatDelay=Sn(m.repeatDelay)),m.from!==void 0&&(m.keyframes[0]=m.from);let y=!1;if((m.type===!1||m.duration===0&&!m.repeatDelay)&&(Ef(m),m.delay===0&&(y=!0)),(Ma.instantAnimations||Ma.skipAnimations||s?.shouldSkipAnimations)&&(y=!0,Ef(m),m.delay=0),m.allowFlatten=!c.type&&!c.ease,y&&!o&&t.get()!==void 0){const b=Sc(m.keyframes,c);if(b!==void 0){dt.update(()=>{m.onUpdate(b),m.onComplete()});return}}return c.isSync?new ic(m):new m2(m)};function i0(e){const t=[{},{}];return e?.values.forEach((n,a)=>{t[0][a]=n.get(),t[1][a]=n.getVelocity()}),t}function Fp(e,t,n,a){if(typeof t=="function"){const[s,o]=i0(a);t=t(n!==void 0?n:e.custom,s,o)}if(typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"){const[s,o]=i0(a);t=t(n!==void 0?n:e.custom,s,o)}return t}function si(e,t,n){const a=e.getProps();return Fp(a,t,n!==void 0?n:a.custom,e)}const ok=new Set(["width","height","top","left","right","bottom",..._s]),s0=30,P2=e=>!isNaN(parseFloat(e)),o0={current:void 0};class T2{constructor(t,n={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=a=>{const s=on.now();if(this.updatedAt!==s&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(a),this.current!==this.prev&&(this.events.change?.notify(this.current),this.dependents))for(const o of this.dependents)o.dirty()},this.hasAnimated=!1,this.setCurrent(t),this.owner=n.owner}setCurrent(t){this.current=t,this.updatedAt=on.now(),this.canTrackVelocity===null&&t!==void 0&&(this.canTrackVelocity=P2(this.current))}setPrevFrameValue(t=this.current){this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new Ep);const a=this.events[t].add(n);return t==="change"?()=>{a(),dt.read(()=>{this.events.change.getSize()||this.stop()})}:a}clearListeners(){for(const t in this.events)this.events[t].clear()}attach(t,n){this.passiveEffect=t,this.stopPassiveEffect=n}set(t){this.passiveEffect?this.passiveEffect(t,this.updateAndNotify):this.updateAndNotify(t)}setWithVelocity(t,n,a){this.set(n),this.prev=void 0,this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt-a}jump(t,n=!0){this.updateAndNotify(t),this.prev=t,this.prevUpdatedAt=this.prevFrameValue=void 0,n&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){this.events.change?.notify(this.current)}addDependent(t){this.dependents||(this.dependents=new Set),this.dependents.add(t)}removeDependent(t){this.dependents&&this.dependents.delete(t)}get(){return o0.current&&o0.current.push(this),this.current}getPrevious(){return this.prev}getVelocity(){const t=on.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||t-this.updatedAt>s0)return 0;const n=Math.min(this.updatedAt-this.prevUpdatedAt,s0);return Pw(parseFloat(this.current)-parseFloat(this.prevFrameValue),n)}start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.animation=t(n),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.dependents?.clear(),this.events.destroy?.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function gs(e,t){return new T2(e,t)}const Rf=e=>Array.isArray(e);function C2(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,gs(n))}function E2(e){return Rf(e)?e[e.length-1]||0:e}function R2(e,t){const n=si(e,t);let{transitionEnd:a={},transition:s={},...o}=n||{};o={...o,...a};for(const u in o){const c=E2(o[u]);C2(e,u,c)}}const qt=e=>!!(e&&e.getVelocity);function A2(e){return!!(qt(e)&&e.add)}function Af(e,t){const n=e.getValue("willChange");if(A2(n))return n.add(t);if(!n&&Ma.WillChange){const a=new Ma.WillChange("auto");e.addValue("willChange",a),a.add(t)}}function Vp(e){return e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`)}const L2="framerAppearId",lk="data-"+Vp(L2);function uk(e){return e.props[lk]}function D2({protectedKeys:e,needsAnimating:t},n){const a=e.hasOwnProperty(n)&&t[n]!==!0;return t[n]=!1,a}function ck(e,t,{delay:n=0,transitionOverride:a,type:s}={}){let{transition:o,transitionEnd:u,...c}=t;const h=e.getDefaultTransition();o=o?sk(o,h):h;const f=o?.reduceMotion;a&&(o=a);const m=[],y=s&&e.animationState&&e.animationState.getState()[s];for(const b in c){const w=e.getValue(b,e.latestValues[b]??null),x=c[b];if(x===void 0||y&&D2(y,b))continue;const T={delay:n,...Up(o||{},b)},P=w.get();if(P!==void 0&&!w.isAnimating()&&!Array.isArray(x)&&x===P&&!T.velocity){dt.update(()=>w.set(x));continue}let L=!1;if(window.MotionHandoffAnimation){const j=uk(e);if(j){const K=window.MotionHandoffAnimation(j,b,dt);K!==null&&(T.startTime=K,L=!0)}}Af(e,b);const D=f??e.shouldReduceMotion;w.start(Bp(b,w,x,D&&ok.has(b)?{type:!1}:T,e,L));const M=w.animation;M&&m.push(M)}if(u){const b=()=>dt.update(()=>{u&&R2(e,u)});m.length?Promise.all(m).then(b):b()}return m}function Lf(e,t,n={}){const a=si(e,t,n.type==="exit"?e.presenceContext?.custom:void 0);let{transition:s=e.getDefaultTransition()||{}}=a||{};n.transitionOverride&&(s=n.transitionOverride);const o=a?()=>Promise.all(ck(e,a,n)):()=>Promise.resolve(),u=e.variantChildren&&e.variantChildren.size?(h=0)=>{const{delayChildren:f=0,staggerChildren:m,staggerDirection:y}=s;return M2(e,t,h,f,m,y,n)}:()=>Promise.resolve(),{when:c}=s;if(c){const[h,f]=c==="beforeChildren"?[o,u]:[u,o];return h().then(()=>f())}else return Promise.all([o(),u(n.delay)])}function M2(e,t,n=0,a=0,s=0,o=1,u){const c=[];for(const h of e.variantChildren)h.notify("AnimationStart",t),c.push(Lf(h,t,{...u,delay:n+(typeof a=="function"?0:a)+ak(e.variantChildren,h,a,s,o)}).then(()=>h.notify("AnimationComplete",t)));return Promise.all(c)}function N2(e,t,n={}){e.notify("AnimationStart",t);let a;if(Array.isArray(t)){const s=t.map(o=>Lf(e,o,n));a=Promise.all(s)}else if(typeof t=="string")a=Lf(e,t,n);else{const s=typeof t=="function"?si(e,t,n.custom):t;a=Promise.all(ck(e,s,n))}return a.then(()=>{e.notify("AnimationComplete",t)})}const O2={test:e=>e==="auto",parse:e=>e},dk=e=>t=>t.test(e),hk=[bs,be,yr,Sa,oM,sM,O2],l0=e=>hk.find(dk(e));function I2(e){return typeof e=="number"?e===0:e!==null?e==="none"||e==="0"||xw(e):!0}const j2=new Set(["brightness","contrast","saturate","opacity"]);function U2(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[a]=n.match(Dp)||[];if(!a)return e;const s=n.replace(a,"");let o=j2.has(t)?1:0;return a!==n&&(o*=100),t+"("+o+s+")"}const B2=/\b([a-z-]*)\(.*?\)/gu,Df={...ar,getAnimatableNone:e=>{const t=e.match(B2);return t?t.map(U2).join(" "):e}},Mf={...ar,getAnimatableNone:e=>{const t=ar.parse(e);return ar.createTransformer(e)(t.map(a=>typeof a=="number"?0:typeof a=="object"?{...a,alpha:1}:a))}},u0={...bs,transform:Math.round},F2={rotate:Sa,rotateX:Sa,rotateY:Sa,rotateZ:Sa,scale:fu,scaleX:fu,scaleY:fu,scaleZ:fu,skew:Sa,skewX:Sa,skewY:Sa,distance:be,translateX:be,translateY:be,translateZ:be,x:be,y:be,z:be,perspective:be,transformPerspective:be,opacity:Mo,originX:Gv,originY:Gv,originZ:be},zp={borderWidth:be,borderTopWidth:be,borderRightWidth:be,borderBottomWidth:be,borderLeftWidth:be,borderRadius:be,borderTopLeftRadius:be,borderTopRightRadius:be,borderBottomRightRadius:be,borderBottomLeftRadius:be,width:be,maxWidth:be,height:be,maxHeight:be,top:be,right:be,bottom:be,left:be,inset:be,insetBlock:be,insetBlockStart:be,insetBlockEnd:be,insetInline:be,insetInlineStart:be,insetInlineEnd:be,padding:be,paddingTop:be,paddingRight:be,paddingBottom:be,paddingLeft:be,paddingBlock:be,paddingBlockStart:be,paddingBlockEnd:be,paddingInline:be,paddingInlineStart:be,paddingInlineEnd:be,margin:be,marginTop:be,marginRight:be,marginBottom:be,marginLeft:be,marginBlock:be,marginBlockStart:be,marginBlockEnd:be,marginInline:be,marginInlineStart:be,marginInlineEnd:be,fontSize:be,backgroundPositionX:be,backgroundPositionY:be,...F2,zIndex:u0,fillOpacity:Mo,strokeOpacity:Mo,numOctaves:u0},V2={...zp,color:Lt,backgroundColor:Lt,outlineColor:Lt,fill:Lt,stroke:Lt,borderColor:Lt,borderTopColor:Lt,borderRightColor:Lt,borderBottomColor:Lt,borderLeftColor:Lt,filter:Df,WebkitFilter:Df,mask:Mf,WebkitMask:Mf},fk=e=>V2[e],z2=new Set([Df,Mf]);function pk(e,t){let n=fk(e);return z2.has(n)||(n=ar),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const $2=new Set(["auto","none","0"]);function H2(e,t,n){let a=0,s;for(;a<e.length&&!s;){const o=e[a];typeof o=="string"&&!$2.has(o)&&ms(o).values.length&&(s=e[a]),a++}if(s&&n)for(const o of t)e[o]=pk(n,s)}class W2 extends jp{constructor(t,n,a,s,o){super(t,n,a,s,o,!0)}readKeyframes(){const{unresolvedKeyframes:t,element:n,name:a}=this;if(!n||!n.current)return;super.readKeyframes();for(let m=0;m<t.length;m++){let y=t[m];if(typeof y=="string"&&(y=y.trim(),Lp(y))){const b=ik(y,n.current);b!==void 0&&(t[m]=b),m===t.length-1&&(this.finalKeyframe=y)}}if(this.resolveNoneKeyframes(),!ok.has(a)||t.length!==2)return;const[s,o]=t,u=l0(s),c=l0(o),h=qv(s),f=qv(o);if(h!==f&&Aa[a]){this.needsMeasurement=!0;return}if(u!==c)if(n0(u)&&n0(c))for(let m=0;m<t.length;m++){const y=t[m];typeof y=="string"&&(t[m]=parseFloat(y))}else Aa[a]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){const{unresolvedKeyframes:t,name:n}=this,a=[];for(let s=0;s<t.length;s++)(t[s]===null||I2(t[s]))&&a.push(s);a.length&&H2(t,a,n)}measureInitialState(){const{element:t,unresolvedKeyframes:n,name:a}=this;if(!t||!t.current)return;a==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=Aa[a](t.measureViewportBox(),window.getComputedStyle(t.current)),n[0]=this.measuredOrigin;const s=n[n.length-1];s!==void 0&&t.getValue(a,s).jump(s,!1)}measureEndState(){const{element:t,name:n,unresolvedKeyframes:a}=this;if(!t||!t.current)return;const s=t.getValue(n);s&&s.jump(this.measuredOrigin,!1);const o=a.length-1,u=a[o];a[o]=Aa[n](t.measureViewportBox(),window.getComputedStyle(t.current)),u!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=u),this.removedTransforms?.length&&this.removedTransforms.forEach(([c,h])=>{t.getValue(c).set(h)}),this.resolveNoneKeyframes()}}function mk(e,t,n){if(e==null)return[];if(e instanceof EventTarget)return[e];if(typeof e=="string"){let a=document;const s=n?.[e]??a.querySelectorAll(e);return s?Array.from(s):[]}return Array.from(e).filter(a=>a!=null)}const gk=(e,t)=>t&&typeof e=="number"?t.transform(e):e;function Au(e){return kw(e)&&"offsetHeight"in e&&!("ownerSVGElement"in e)}const{schedule:$p}=Iw(queueMicrotask,!1),tr={x:!1,y:!1};function yk(){return tr.x||tr.y}function K2(e){return e==="x"||e==="y"?tr[e]?null:(tr[e]=!0,()=>{tr[e]=!1}):tr.x||tr.y?null:(tr.x=tr.y=!0,()=>{tr.x=tr.y=!1})}function vk(e,t){const n=mk(e),a=new AbortController,s={passive:!0,...t,signal:a.signal};return[n,s,()=>a.abort()]}function q2(e){return!(e.pointerType==="touch"||yk())}function G2(e,t,n={}){const[a,s,o]=vk(e,n);return a.forEach(u=>{let c=!1,h=!1,f;const m=()=>{u.removeEventListener("pointerleave",x)},y=P=>{f&&(f(P),f=void 0),m()},b=P=>{c=!1,window.removeEventListener("pointerup",b),window.removeEventListener("pointercancel",b),h&&(h=!1,y(P))},w=()=>{c=!0,window.addEventListener("pointerup",b,s),window.addEventListener("pointercancel",b,s)},x=P=>{if(P.pointerType!=="touch"){if(c){h=!0;return}y(P)}},T=P=>{if(!q2(P))return;h=!1;const L=t(u,P);typeof L=="function"&&(f=L,u.addEventListener("pointerleave",x,s))};u.addEventListener("pointerenter",T,s),u.addEventListener("pointerdown",w,s)}),o}const bk=(e,t)=>t?e===t?!0:bk(e,t.parentElement):!1,Hp=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1,Y2=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function Z2(e){return Y2.has(e.tagName)||e.isContentEditable===!0}const Q2=new Set(["INPUT","SELECT","TEXTAREA"]);function X2(e){return Q2.has(e.tagName)||e.isContentEditable===!0}const Lu=new WeakSet;function c0(e){return t=>{t.key==="Enter"&&e(t)}}function Oh(e,t){e.dispatchEvent(new PointerEvent("pointer"+t,{isPrimary:!0,bubbles:!0}))}const J2=(e,t)=>{const n=e.currentTarget;if(!n)return;const a=c0(()=>{if(Lu.has(n))return;Oh(n,"down");const s=c0(()=>{Oh(n,"up")}),o=()=>Oh(n,"cancel");n.addEventListener("keyup",s,t),n.addEventListener("blur",o,t)});n.addEventListener("keydown",a,t),n.addEventListener("blur",()=>n.removeEventListener("keydown",a),t)};function d0(e){return Hp(e)&&!yk()}const h0=new WeakSet;function eN(e,t,n={}){const[a,s,o]=vk(e,n),u=c=>{const h=c.currentTarget;if(!d0(c)||h0.has(c))return;Lu.add(h),n.stopPropagation&&h0.add(c);const f=t(h,c),m=(w,x)=>{window.removeEventListener("pointerup",y),window.removeEventListener("pointercancel",b),Lu.has(h)&&Lu.delete(h),d0(w)&&typeof f=="function"&&f(w,{success:x})},y=w=>{m(w,h===window||h===document||n.useGlobalTarget||bk(h,w.target))},b=w=>{m(w,!1)};window.addEventListener("pointerup",y,s),window.addEventListener("pointercancel",b,s)};return a.forEach(c=>{(n.useGlobalTarget?window:c).addEventListener("pointerdown",u,s),Au(c)&&(c.addEventListener("focus",f=>J2(f,s)),!Z2(c)&&!c.hasAttribute("tabindex")&&(c.tabIndex=0))}),o}function Wp(e){return kw(e)&&"ownerSVGElement"in e}const Du=new WeakMap;let Mu;const _k=(e,t,n)=>(a,s)=>s&&s[0]?s[0][e+"Size"]:Wp(a)&&"getBBox"in a?a.getBBox()[t]:a[n],tN=_k("inline","width","offsetWidth"),nN=_k("block","height","offsetHeight");function rN({target:e,borderBoxSize:t}){Du.get(e)?.forEach(n=>{n(e,{get width(){return tN(e,t)},get height(){return nN(e,t)}})})}function aN(e){e.forEach(rN)}function iN(){typeof ResizeObserver>"u"||(Mu=new ResizeObserver(aN))}function sN(e,t){Mu||iN();const n=mk(e);return n.forEach(a=>{let s=Du.get(a);s||(s=new Set,Du.set(a,s)),s.add(t),Mu?.observe(a)}),()=>{n.forEach(a=>{const s=Du.get(a);s?.delete(t),s?.size||Mu?.unobserve(a)})}}const Nu=new Set;let is;function oN(){is=()=>{const e={get width(){return window.innerWidth},get height(){return window.innerHeight}};Nu.forEach(t=>t(e))},window.addEventListener("resize",is)}function lN(e){return Nu.add(e),is||oN(),()=>{Nu.delete(e),!Nu.size&&typeof is=="function"&&(window.removeEventListener("resize",is),is=void 0)}}function f0(e,t){return typeof e=="function"?lN(e):sN(e,t)}function uN(e){return Wp(e)&&e.tagName==="svg"}const cN=[...hk,Lt,ar],dN=e=>cN.find(dk(e)),p0=()=>({translate:0,scale:1,origin:0,originPoint:0}),ss=()=>({x:p0(),y:p0()}),m0=()=>({min:0,max:0}),It=()=>({x:m0(),y:m0()}),hN=new WeakMap;function Pc(e){return e!==null&&typeof e=="object"&&typeof e.start=="function"}function No(e){return typeof e=="string"||Array.isArray(e)}const Kp=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],qp=["initial",...Kp];function Tc(e){return Pc(e.animate)||qp.some(t=>No(e[t]))}function wk(e){return!!(Tc(e)||e.variants)}function fN(e,t,n){for(const a in t){const s=t[a],o=n[a];if(qt(s))e.addValue(a,s);else if(qt(o))e.addValue(a,gs(s,{owner:e}));else if(o!==s)if(e.hasValue(a)){const u=e.getValue(a);u.liveStyle===!0?u.jump(s):u.hasAnimated||u.set(s)}else{const u=e.getStaticValue(a);e.addValue(a,gs(u!==void 0?u:s,{owner:e}))}}for(const a in n)t[a]===void 0&&e.removeValue(a);return t}const Nf={current:null},kk={current:!1},pN=typeof window<"u";function mN(){if(kk.current=!0,!!pN)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>Nf.current=e.matches;e.addEventListener("change",t),t()}else Nf.current=!1}const g0=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let sc={};function xk(e){sc=e}function gN(){return sc}class yN{scrapeMotionValuesFromProps(t,n,a){return{}}constructor({parent:t,props:n,presenceContext:a,reducedMotionConfig:s,skipAnimations:o,blockInitialAnimation:u,visualState:c},h={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=jp,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const w=on.now();this.renderScheduledAt<w&&(this.renderScheduledAt=w,dt.render(this.render,!1,!0))};const{latestValues:f,renderState:m}=c;this.latestValues=f,this.baseTarget={...f},this.initialValues=n.initial?{...f}:{},this.renderState=m,this.parent=t,this.props=n,this.presenceContext=a,this.depth=t?t.depth+1:0,this.reducedMotionConfig=s,this.skipAnimationsConfig=o,this.options=h,this.blockInitialAnimation=!!u,this.isControllingVariants=Tc(n),this.isVariantNode=wk(n),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(t&&t.current);const{willChange:y,...b}=this.scrapeMotionValuesFromProps(n,{},this);for(const w in b){const x=b[w];f[w]!==void 0&&qt(x)&&x.set(f[w])}}mount(t){if(this.hasBeenMounted)for(const n in this.initialValues)this.values.get(n)?.jump(this.initialValues[n]),this.latestValues[n]=this.initialValues[n];this.current=t,hN.set(t,this),this.projection&&!this.projection.instance&&this.projection.mount(t),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((n,a)=>this.bindToMotionValue(a,n)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(kk.current||mN(),this.shouldReduceMotion=Nf.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,this.parent?.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){this.projection&&this.projection.unmount(),Na(this.notifyUpdate),Na(this.render),this.valueSubscriptions.forEach(t=>t()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent?.removeChild(this);for(const t in this.events)this.events[t].clear();for(const t in this.features){const n=this.features[t];n&&(n.unmount(),n.isMounted=!1)}this.current=null}addChild(t){this.children.add(t),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(t)}removeChild(t){this.children.delete(t),this.enteringChildren&&this.enteringChildren.delete(t)}bindToMotionValue(t,n){if(this.valueSubscriptions.has(t)&&this.valueSubscriptions.get(t)(),n.accelerate&&rk.has(t)&&this.current instanceof HTMLElement){const{factory:u,keyframes:c,times:h,ease:f,duration:m}=n.accelerate,y=new tk({element:this.current,name:t,keyframes:c,times:h,ease:f,duration:Sn(m)}),b=u(y);this.valueSubscriptions.set(t,()=>{b(),y.cancel()});return}const a=ws.has(t);a&&this.onBindTransform&&this.onBindTransform();const s=n.on("change",u=>{this.latestValues[t]=u,this.props.onUpdate&&dt.preRender(this.notifyUpdate),a&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let o;typeof window<"u"&&window.MotionCheckAppearSync&&(o=window.MotionCheckAppearSync(this,t,n)),this.valueSubscriptions.set(t,()=>{s(),o&&o(),n.owner&&n.stop()})}sortNodePosition(t){return!this.current||!this.sortInstanceNodePosition||this.type!==t.type?0:this.sortInstanceNodePosition(this.current,t.current)}updateFeatures(){let t="animation";for(t in sc){const n=sc[t];if(!n)continue;const{isEnabled:a,Feature:s}=n;if(!this.features[t]&&s&&a(this.props)&&(this.features[t]=new s(this)),this.features[t]){const o=this.features[t];o.isMounted?o.update():(o.mount(),o.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):It()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,n){this.latestValues[t]=n}update(t,n){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=n;for(let a=0;a<g0.length;a++){const s=g0[a];this.propEventSubscriptions[s]&&(this.propEventSubscriptions[s](),delete this.propEventSubscriptions[s]);const o="on"+s,u=t[o];u&&(this.propEventSubscriptions[s]=this.on(s,u))}this.prevMotionValues=fN(this,this.scrapeMotionValuesFromProps(t,this.prevProps||{},this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(t){return this.props.variants?this.props.variants[t]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(t){const n=this.getClosestVariantNode();if(n)return n.variantChildren&&n.variantChildren.add(t),()=>n.variantChildren.delete(t)}addValue(t,n){const a=this.values.get(t);n!==a&&(a&&this.removeValue(t),this.bindToMotionValue(t,n),this.values.set(t,n),this.latestValues[t]=n.get())}removeValue(t){this.values.delete(t);const n=this.valueSubscriptions.get(t);n&&(n(),this.valueSubscriptions.delete(t)),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,n){if(this.props.values&&this.props.values[t])return this.props.values[t];let a=this.values.get(t);return a===void 0&&n!==void 0&&(a=gs(n===null?void 0:n,{owner:this}),this.addValue(t,a)),a}readValue(t,n){let a=this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:this.getBaseTargetFromProps(this.props,t)??this.readValueFromInstance(this.current,t,this.options);return a!=null&&(typeof a=="string"&&(ww(a)||xw(a))?a=parseFloat(a):!dN(a)&&ar.test(n)&&(a=pk(t,n)),this.setBaseTarget(t,qt(a)?a.get():a)),qt(a)?a.get():a}setBaseTarget(t,n){this.baseTarget[t]=n}getBaseTarget(t){const{initial:n}=this.props;let a;if(typeof n=="string"||typeof n=="object"){const o=Fp(this.props,n,this.presenceContext?.custom);o&&(a=o[t])}if(n&&a!==void 0)return a;const s=this.getBaseTargetFromProps(this.props,t);return s!==void 0&&!qt(s)?s:this.initialValues[t]!==void 0&&a===void 0?void 0:this.baseTarget[t]}on(t,n){return this.events[t]||(this.events[t]=new Ep),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}scheduleRenderMicrotask(){$p.render(this.render)}}class Sk extends yN{constructor(){super(...arguments),this.KeyframeResolver=W2}sortInstanceNodePosition(t,n){return t.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(t,n){const a=t.style;return a?a[n]:void 0}removeValueFromRenderState(t,{vars:n,style:a}){delete n[t],delete a[t]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;qt(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}}class Ia{constructor(t){this.isMounted=!1,this.node=t}update(){}}function Pk({top:e,left:t,right:n,bottom:a}){return{x:{min:t,max:n},y:{min:e,max:a}}}function vN({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function bN(e,t){if(!t)return e;const n=t({x:e.left,y:e.top}),a=t({x:e.right,y:e.bottom});return{top:n.y,left:n.x,bottom:a.y,right:a.x}}function Ih(e){return e===void 0||e===1}function Of({scale:e,scaleX:t,scaleY:n}){return!Ih(e)||!Ih(t)||!Ih(n)}function ei(e){return Of(e)||Tk(e)||e.z||e.rotate||e.rotateX||e.rotateY||e.skewX||e.skewY}function Tk(e){return y0(e.x)||y0(e.y)}function y0(e){return e&&e!=="0%"}function oc(e,t,n){const a=e-n,s=t*a;return n+s}function v0(e,t,n,a,s){return s!==void 0&&(e=oc(e,s,a)),oc(e,n,a)+t}function If(e,t=0,n=1,a,s){e.min=v0(e.min,t,n,a,s),e.max=v0(e.max,t,n,a,s)}function Ck(e,{x:t,y:n}){If(e.x,t.translate,t.scale,t.originPoint),If(e.y,n.translate,n.scale,n.originPoint)}const b0=.999999999999,_0=1.0000000000001;function _N(e,t,n,a=!1){const s=n.length;if(!s)return;t.x=t.y=1;let o,u;for(let c=0;c<s;c++){o=n[c],u=o.projectionDelta;const{visualElement:h}=o.options;h&&h.props.style&&h.props.style.display==="contents"||(a&&o.options.layoutScroll&&o.scroll&&o!==o.root&&(fr(e.x,-o.scroll.offset.x),fr(e.y,-o.scroll.offset.y)),u&&(t.x*=u.x.scale,t.y*=u.y.scale,Ck(e,u)),a&&ei(o.latestValues)&&Ou(e,o.latestValues,o.layout?.layoutBox))}t.x<_0&&t.x>b0&&(t.x=1),t.y<_0&&t.y>b0&&(t.y=1)}function fr(e,t){e.min+=t,e.max+=t}function w0(e,t,n,a,s=.5){const o=vt(e.min,e.max,s);If(e,t,n,o,a)}function k0(e,t){return typeof e=="string"?parseFloat(e)/100*(t.max-t.min):e}function Ou(e,t,n){const a=n??e;w0(e.x,k0(t.x,a.x),t.scaleX,t.scale,t.originX),w0(e.y,k0(t.y,a.y),t.scaleY,t.scale,t.originY)}function Ek(e,t){return Pk(bN(e.getBoundingClientRect(),t))}function wN(e,t,n){const a=Ek(e,n),{scroll:s}=t;return s&&(fr(a.x,s.offset.x),fr(a.y,s.offset.y)),a}const kN={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},xN=_s.length;function SN(e,t,n){let a="",s=!0;for(let o=0;o<xN;o++){const u=_s[o],c=e[u];if(c===void 0)continue;let h=!0;if(typeof c=="number")h=c===(u.startsWith("scale")?1:0);else{const f=parseFloat(c);h=u.startsWith("scale")?f===1:f===0}if(!h||n){const f=gk(c,zp[u]);if(!h){s=!1;const m=kN[u]||u;a+=`${m}(${f}) `}n&&(t[u]=f)}}return a=a.trim(),n?a=n(t,s?"":a):s&&(a="none"),a}function Gp(e,t,n){const{style:a,vars:s,transformOrigin:o}=e;let u=!1,c=!1;for(const h in t){const f=t[h];if(ws.has(h)){u=!0;continue}else if(Uw(h)){s[h]=f;continue}else{const m=gk(f,zp[h]);h.startsWith("origin")?(c=!0,o[h]=m):a[h]=m}}if(t.transform||(u||n?a.transform=SN(t,e.transform,n):a.transform&&(a.transform="none")),c){const{originX:h="50%",originY:f="50%",originZ:m=0}=o;a.transformOrigin=`${h} ${f} ${m}`}}function Rk(e,{style:t,vars:n},a,s){const o=e.style;let u;for(u in t)o[u]=t[u];s?.applyProjectionStyles(o,a);for(u in n)o.setProperty(u,n[u])}function x0(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const po={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(be.test(e))e=parseFloat(e);else return e;const n=x0(e,t.target.x),a=x0(e,t.target.y);return`${n}% ${a}%`}},PN={correct:(e,{treeScale:t,projectionDelta:n})=>{const a=e,s=ar.parse(e);if(s.length>5)return a;const o=ar.createTransformer(e),u=typeof s[0]!="number"?1:0,c=n.x.scale*t.x,h=n.y.scale*t.y;s[0+u]/=c,s[1+u]/=h;const f=vt(c,h,.5);return typeof s[2+u]=="number"&&(s[2+u]/=f),typeof s[3+u]=="number"&&(s[3+u]/=f),o(s)}},jf={borderRadius:{...po,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:po,borderTopRightRadius:po,borderBottomLeftRadius:po,borderBottomRightRadius:po,boxShadow:PN};function Ak(e,{layout:t,layoutId:n}){return ws.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!jf[e]||e==="opacity")}function Yp(e,t,n){const a=e.style,s=t?.style,o={};if(!a)return o;for(const u in a)(qt(a[u])||s&&qt(s[u])||Ak(u,e)||n?.getValue(u)?.liveStyle!==void 0)&&(o[u]=a[u]);return o}function TN(e){return window.getComputedStyle(e)}class CN extends Sk{constructor(){super(...arguments),this.type="html",this.renderInstance=Rk}readValueFromInstance(t,n){if(ws.has(n))return this.projection?.isProjecting?xf(n):qM(t,n);{const a=TN(t),s=(Uw(n)?a.getPropertyValue(n):a[n])||0;return typeof s=="string"?s.trim():s}}measureInstanceViewportBox(t,{transformPagePoint:n}){return Ek(t,n)}build(t,n,a){Gp(t,n,a.transformTemplate)}scrapeMotionValuesFromProps(t,n,a){return Yp(t,n,a)}}const EN={offset:"stroke-dashoffset",array:"stroke-dasharray"},RN={offset:"strokeDashoffset",array:"strokeDasharray"};function AN(e,t,n=1,a=0,s=!0){e.pathLength=1;const o=s?EN:RN;e[o.offset]=`${-a}`,e[o.array]=`${t} ${n}`}const LN=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function Lk(e,{attrX:t,attrY:n,attrScale:a,pathLength:s,pathSpacing:o=1,pathOffset:u=0,...c},h,f,m){if(Gp(e,c,f),h){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};const{attrs:y,style:b}=e;y.transform&&(b.transform=y.transform,delete y.transform),(b.transform||y.transformOrigin)&&(b.transformOrigin=y.transformOrigin??"50% 50%",delete y.transformOrigin),b.transform&&(b.transformBox=m?.transformBox??"fill-box",delete y.transformBox);for(const w of LN)y[w]!==void 0&&(b[w]=y[w],delete y[w]);t!==void 0&&(y.x=t),n!==void 0&&(y.y=n),a!==void 0&&(y.scale=a),s!==void 0&&AN(y,s,o,u,!1)}const Dk=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),Mk=e=>typeof e=="string"&&e.toLowerCase()==="svg";function DN(e,t,n,a){Rk(e,t,void 0,a);for(const s in t.attrs)e.setAttribute(Dk.has(s)?s:Vp(s),t.attrs[s])}function Nk(e,t,n){const a=Yp(e,t,n);for(const s in e)if(qt(e[s])||qt(t[s])){const o=_s.indexOf(s)!==-1?"attr"+s.charAt(0).toUpperCase()+s.substring(1):s;a[o]=e[s]}return a}class MN extends Sk{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=It}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(ws.has(n)){const a=fk(n);return a&&a.default||0}return n=Dk.has(n)?n:Vp(n),t.getAttribute(n)}scrapeMotionValuesFromProps(t,n,a){return Nk(t,n,a)}build(t,n,a){Lk(t,n,this.isSVGTag,a.transformTemplate,a.style)}renderInstance(t,n,a,s){DN(t,n,a,s)}mount(t){this.isSVGTag=Mk(t.tagName),super.mount(t)}}const NN=qp.length;function Ok(e){if(!e)return;if(!e.isControllingVariants){const n=e.parent?Ok(e.parent)||{}:{};return e.props.initial!==void 0&&(n.initial=e.props.initial),n}const t={};for(let n=0;n<NN;n++){const a=qp[n],s=e.props[a];(No(s)||s===!1)&&(t[a]=s)}return t}function Ik(e,t){if(!Array.isArray(t))return!1;const n=t.length;if(n!==e.length)return!1;for(let a=0;a<n;a++)if(t[a]!==e[a])return!1;return!0}const ON=[...Kp].reverse(),IN=Kp.length;function jN(e){return t=>Promise.all(t.map(({animation:n,options:a})=>N2(e,n,a)))}function UN(e){let t=jN(e),n=S0(),a=!0,s=!1;const o=f=>(m,y)=>{const b=si(e,y,f==="exit"?e.presenceContext?.custom:void 0);if(b){const{transition:w,transitionEnd:x,...T}=b;m={...m,...T,...x}}return m};function u(f){t=f(e)}function c(f){const{props:m}=e,y=Ok(e.parent)||{},b=[],w=new Set;let x={},T=1/0;for(let L=0;L<IN;L++){const D=ON[L],M=n[D],j=m[D]!==void 0?m[D]:y[D],K=No(j),G=D===f?M.isActive:null;G===!1&&(T=L);let W=j===y[D]&&j!==m[D]&&K;if(W&&(a||s)&&e.manuallyAnimateOnMount&&(W=!1),M.protectedKeys={...x},!M.isActive&&G===null||!j&&!M.prevProp||Pc(j)||typeof j=="boolean")continue;if(D==="exit"&&M.isActive&&G!==!0){M.prevResolvedValues&&(x={...x,...M.prevResolvedValues});continue}const S=BN(M.prevProp,j);let Z=S||D===f&&M.isActive&&!W&&K||L>T&&K,X=!1;const _e=Array.isArray(j)?j:[j];let oe=_e.reduce(o(D),{});G===!1&&(oe={});const{prevResolvedValues:Re={}}=M,fe={...Re,...oe},ce=H=>{Z=!0,w.has(H)&&(X=!0,w.delete(H)),M.needsAnimating[H]=!0;const Y=e.getValue(H);Y&&(Y.liveStyle=!1)};for(const H in fe){const Y=oe[H],$=Re[H];if(x.hasOwnProperty(H))continue;let N=!1;Rf(Y)&&Rf($)?N=!Ik(Y,$):N=Y!==$,N?Y!=null?ce(H):w.add(H):Y!==void 0&&w.has(H)?ce(H):M.protectedKeys[H]=!0}M.prevProp=j,M.prevResolvedValues=oe,M.isActive&&(x={...x,...oe}),(a||s)&&e.blockInitialAnimation&&(Z=!1);const ue=W&&S;Z&&(!ue||X)&&b.push(..._e.map(H=>{const Y={type:D};if(typeof H=="string"&&(a||s)&&!ue&&e.manuallyAnimateOnMount&&e.parent){const{parent:$}=e,N=si($,H);if($.enteringChildren&&N){const{delayChildren:q}=N.transition||{};Y.delay=ak($.enteringChildren,e,q)}}return{animation:H,options:Y}}))}if(w.size){const L={};if(typeof m.initial!="boolean"){const D=si(e,Array.isArray(m.initial)?m.initial[0]:m.initial);D&&D.transition&&(L.transition=D.transition)}w.forEach(D=>{const M=e.getBaseTarget(D),j=e.getValue(D);j&&(j.liveStyle=!0),L[D]=M??null}),b.push({animation:L})}let P=!!b.length;return a&&(m.initial===!1||m.initial===m.animate)&&!e.manuallyAnimateOnMount&&(P=!1),a=!1,s=!1,P?t(b):Promise.resolve()}function h(f,m){if(n[f].isActive===m)return Promise.resolve();e.variantChildren?.forEach(b=>b.animationState?.setActive(f,m)),n[f].isActive=m;const y=c(f);for(const b in n)n[b].protectedKeys={};return y}return{animateChanges:c,setActive:h,setAnimateFunction:u,getState:()=>n,reset:()=>{n=S0(),s=!0}}}function BN(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!Ik(t,e):!1}function Xa(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function S0(){return{animate:Xa(!0),whileInView:Xa(),whileHover:Xa(),whileTap:Xa(),whileDrag:Xa(),whileFocus:Xa(),exit:Xa()}}function Uf(e,t){e.min=t.min,e.max=t.max}function er(e,t){Uf(e.x,t.x),Uf(e.y,t.y)}function P0(e,t){e.translate=t.translate,e.scale=t.scale,e.originPoint=t.originPoint,e.origin=t.origin}const jk=1e-4,FN=1-jk,VN=1+jk,Uk=.01,zN=0-Uk,$N=0+Uk;function ln(e){return e.max-e.min}function HN(e,t,n){return Math.abs(e-t)<=n}function T0(e,t,n,a=.5){e.origin=a,e.originPoint=vt(t.min,t.max,e.origin),e.scale=ln(n)/ln(t),e.translate=vt(n.min,n.max,e.origin)-e.originPoint,(e.scale>=FN&&e.scale<=VN||isNaN(e.scale))&&(e.scale=1),(e.translate>=zN&&e.translate<=$N||isNaN(e.translate))&&(e.translate=0)}function Po(e,t,n,a){T0(e.x,t.x,n.x,a?a.originX:void 0),T0(e.y,t.y,n.y,a?a.originY:void 0)}function C0(e,t,n,a=0){const s=a?vt(n.min,n.max,a):n.min;e.min=s+t.min,e.max=e.min+ln(t)}function WN(e,t,n,a){C0(e.x,t.x,n.x,a?.x),C0(e.y,t.y,n.y,a?.y)}function E0(e,t,n,a=0){const s=a?vt(n.min,n.max,a):n.min;e.min=t.min-s,e.max=e.min+ln(t)}function lc(e,t,n,a){E0(e.x,t.x,n.x,a?.x),E0(e.y,t.y,n.y,a?.y)}function R0(e,t,n,a,s){return e-=t,e=oc(e,1/n,a),s!==void 0&&(e=oc(e,1/s,a)),e}function KN(e,t=0,n=1,a=.5,s,o=e,u=e){if(yr.test(t)&&(t=parseFloat(t),t=vt(u.min,u.max,t/100)-u.min),typeof t!="number")return;let c=vt(o.min,o.max,a);e===o&&(c-=t),e.min=R0(e.min,t,n,c,s),e.max=R0(e.max,t,n,c,s)}function A0(e,t,[n,a,s],o,u){KN(e,t[n],t[a],t[s],t.scale,o,u)}const qN=["x","scaleX","originX"],GN=["y","scaleY","originY"];function L0(e,t,n,a){A0(e.x,t,qN,n?n.x:void 0,a?a.x:void 0),A0(e.y,t,GN,n?n.y:void 0,a?a.y:void 0)}function D0(e){return e.translate===0&&e.scale===1}function Bk(e){return D0(e.x)&&D0(e.y)}function M0(e,t){return e.min===t.min&&e.max===t.max}function YN(e,t){return M0(e.x,t.x)&&M0(e.y,t.y)}function N0(e,t){return Math.round(e.min)===Math.round(t.min)&&Math.round(e.max)===Math.round(t.max)}function Fk(e,t){return N0(e.x,t.x)&&N0(e.y,t.y)}function O0(e){return ln(e.x)/ln(e.y)}function I0(e,t){return e.translate===t.translate&&e.scale===t.scale&&e.originPoint===t.originPoint}function hr(e){return[e("x"),e("y")]}function ZN(e,t,n){let a="";const s=e.x.translate/t.x,o=e.y.translate/t.y,u=n?.z||0;if((s||o||u)&&(a=`translate3d(${s}px, ${o}px, ${u}px) `),(t.x!==1||t.y!==1)&&(a+=`scale(${1/t.x}, ${1/t.y}) `),n){const{transformPerspective:f,rotate:m,rotateX:y,rotateY:b,skewX:w,skewY:x}=n;f&&(a=`perspective(${f}px) ${a}`),m&&(a+=`rotate(${m}deg) `),y&&(a+=`rotateX(${y}deg) `),b&&(a+=`rotateY(${b}deg) `),w&&(a+=`skewX(${w}deg) `),x&&(a+=`skewY(${x}deg) `)}const c=e.x.scale*t.x,h=e.y.scale*t.y;return(c!==1||h!==1)&&(a+=`scale(${c}, ${h})`),a||"none"}const Vk=["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"],QN=Vk.length,j0=e=>typeof e=="string"?parseFloat(e):e,U0=e=>typeof e=="number"||be.test(e);function XN(e,t,n,a,s,o){s?(e.opacity=vt(0,n.opacity??1,JN(a)),e.opacityExit=vt(t.opacity??1,0,eO(a))):o&&(e.opacity=vt(t.opacity??1,n.opacity??1,a));for(let u=0;u<QN;u++){const c=Vk[u];let h=B0(t,c),f=B0(n,c);if(h===void 0&&f===void 0)continue;h||(h=0),f||(f=0),h===0||f===0||U0(h)===U0(f)?(e[c]=Math.max(vt(j0(h),j0(f),a),0),(yr.test(f)||yr.test(h))&&(e[c]+="%")):e[c]=f}(t.rotate||n.rotate)&&(e.rotate=vt(t.rotate||0,n.rotate||0,a))}function B0(e,t){return e[t]!==void 0?e[t]:e.borderRadius}const JN=zk(0,.5,Dw),eO=zk(.5,.95,jn);function zk(e,t,n){return a=>a<e?0:a>t?1:n(Do(e,t,a))}function tO(e,t,n){const a=qt(e)?e:gs(e);return a.start(Bp("",a,t,n)),a.animation}function Oo(e,t,n,a={passive:!0}){return e.addEventListener(t,n,a),()=>e.removeEventListener(t,n)}const nO=(e,t)=>e.depth-t.depth;class rO{constructor(){this.children=[],this.isDirty=!1}add(t){Tp(this.children,t),this.isDirty=!0}remove(t){tc(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(nO),this.isDirty=!1,this.children.forEach(t)}}function aO(e,t){const n=on.now(),a=({timestamp:s})=>{const o=s-n;o>=t&&(Na(a),e(o-t))};return dt.setup(a,!0),()=>Na(a)}function Iu(e){return qt(e)?e.get():e}class iO{constructor(){this.members=[]}add(t){Tp(this.members,t);for(let n=this.members.length-1;n>=0;n--){const a=this.members[n];if(a===t||a===this.lead||a===this.prevLead)continue;const s=a.instance;(!s||s.isConnected===!1)&&!a.snapshot&&(tc(this.members,a),a.unmount())}t.scheduleRender()}remove(t){if(tc(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(t){for(let n=this.members.indexOf(t)-1;n>=0;n--){const a=this.members[n];if(a.isPresent!==!1&&a.instance?.isConnected!==!1)return this.promote(a),!0}return!1}promote(t,n){const a=this.lead;if(t!==a&&(this.prevLead=a,this.lead=t,t.show(),a)){a.updateSnapshot(),t.scheduleRender();const{layoutDependency:s}=a.options,{layoutDependency:o}=t.options;(s===void 0||s!==o)&&(t.resumeFrom=a,n&&(a.preserveOpacity=!0),a.snapshot&&(t.snapshot=a.snapshot,t.snapshot.latestValues=a.animationValues||a.latestValues),t.root?.isUpdating&&(t.isLayoutDirty=!0)),t.options.crossfade===!1&&a.hide()}}exitAnimationComplete(){this.members.forEach(t=>{t.options.onExitComplete?.(),t.resumingFrom?.options.onExitComplete?.()})}scheduleRender(){this.members.forEach(t=>t.instance&&t.scheduleRender(!1))}removeLeadSnapshot(){this.lead?.snapshot&&(this.lead.snapshot=void 0)}}const ju={hasAnimatedSinceResize:!0,hasEverUpdated:!1},jh=["","X","Y","Z"],sO=1e3;let oO=0;function Uh(e,t,n,a){const{latestValues:s}=t;s[e]&&(n[e]=s[e],t.setStaticValue(e,0),a&&(a[e]=0))}function $k(e){if(e.hasCheckedOptimisedAppear=!0,e.root===e)return;const{visualElement:t}=e.options;if(!t)return;const n=uk(t);if(window.MotionHasOptimisedAnimation(n,"transform")){const{layout:s,layoutId:o}=e.options;window.MotionCancelOptimisedAnimation(n,"transform",dt,!(s||o))}const{parent:a}=e;a&&!a.hasCheckedOptimisedAppear&&$k(a)}function Hk({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:a,resetTransform:s}){return class{constructor(u={},c=t?.()){this.id=oO++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(cO),this.nodes.forEach(gO),this.nodes.forEach(yO),this.nodes.forEach(dO)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=u,this.root=c?c.root||c:this,this.path=c?[...c.path,c]:[],this.parent=c,this.depth=c?c.depth+1:0;for(let h=0;h<this.path.length;h++)this.path[h].shouldResetTransform=!0;this.root===this&&(this.nodes=new rO)}addEventListener(u,c){return this.eventHandlers.has(u)||this.eventHandlers.set(u,new Ep),this.eventHandlers.get(u).add(c)}notifyListeners(u,...c){const h=this.eventHandlers.get(u);h&&h.notify(...c)}hasListeners(u){return this.eventHandlers.has(u)}mount(u){if(this.instance)return;this.isSVG=Wp(u)&&!uN(u),this.instance=u;const{layoutId:c,layout:h,visualElement:f}=this.options;if(f&&!f.current&&f.mount(u),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(h||c)&&(this.isLayoutDirty=!0),e){let m,y=0;const b=()=>this.root.updateBlockedByResize=!1;dt.read(()=>{y=window.innerWidth}),e(u,()=>{const w=window.innerWidth;w!==y&&(y=w,this.root.updateBlockedByResize=!0,m&&m(),m=aO(b,250),ju.hasAnimatedSinceResize&&(ju.hasAnimatedSinceResize=!1,this.nodes.forEach(z0)))})}c&&this.root.registerSharedNode(c,this),this.options.animate!==!1&&f&&(c||h)&&this.addEventListener("didUpdate",({delta:m,hasLayoutChanged:y,hasRelativeLayoutChanged:b,layout:w})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const x=this.options.transition||f.getDefaultTransition()||kO,{onLayoutAnimationStart:T,onLayoutAnimationComplete:P}=f.getProps(),L=!this.targetLayout||!Fk(this.targetLayout,w),D=!y&&b;if(this.options.layoutRoot||this.resumeFrom||D||y&&(L||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const M={...Up(x,"layout"),onPlay:T,onComplete:P};(f.shouldReduceMotion||this.options.layoutRoot)&&(M.delay=0,M.type=!1),this.startAnimation(M),this.setAnimationOrigin(m,D)}else y||z0(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=w})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const u=this.getStack();u&&u.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),Na(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(vO),this.animationId++)}getTransformTemplate(){const{visualElement:u}=this.options;return u&&u.getProps().transformTemplate}willUpdate(u=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&$k(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let m=0;m<this.path.length;m++){const y=this.path[m];y.shouldResetTransform=!0,(typeof y.latestValues.x=="string"||typeof y.latestValues.y=="string")&&(y.isLayoutDirty=!0),y.updateScroll("snapshot"),y.options.layoutRoot&&y.willUpdate(!1)}const{layoutId:c,layout:h}=this.options;if(c===void 0&&!h)return;const f=this.getTransformTemplate();this.prevTransformTemplateValue=f?f(this.latestValues,""):void 0,this.updateSnapshot(),u&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){const h=this.updateBlockedByResize;this.unblockUpdate(),this.updateBlockedByResize=!1,this.clearAllSnapshots(),h&&this.nodes.forEach(fO),this.nodes.forEach(F0);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(V0);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(pO),this.nodes.forEach(mO),this.nodes.forEach(lO),this.nodes.forEach(uO)):this.nodes.forEach(V0),this.clearAllSnapshots();const c=on.now();Kt.delta=kr(0,1e3/60,c-Kt.timestamp),Kt.timestamp=c,Kt.isProcessing=!0,Rh.update.process(Kt),Rh.preRender.process(Kt),Rh.render.process(Kt),Kt.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,$p.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(hO),this.sharedNodes.forEach(bO)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,dt.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){dt.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!ln(this.snapshot.measuredBox.x)&&!ln(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let h=0;h<this.path.length;h++)this.path[h].updateScroll();const u=this.layout;this.layout=this.measure(!1),this.layoutVersion++,this.layoutCorrected||(this.layoutCorrected=It()),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:c}=this.options;c&&c.notify("LayoutMeasure",this.layout.layoutBox,u?u.layoutBox:void 0)}updateScroll(u="measure"){let c=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===u&&(c=!1),c&&this.instance){const h=a(this.instance);this.scroll={animationId:this.root.animationId,phase:u,isRoot:h,offset:n(this.instance),wasRoot:this.scroll?this.scroll.isRoot:h}}}resetTransform(){if(!s)return;const u=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,c=this.projectionDelta&&!Bk(this.projectionDelta),h=this.getTransformTemplate(),f=h?h(this.latestValues,""):void 0,m=f!==this.prevTransformTemplateValue;u&&this.instance&&(c||ei(this.latestValues)||m)&&(s(this.instance,f),this.shouldResetTransform=!1,this.scheduleRender())}measure(u=!0){const c=this.measurePageBox();let h=this.removeElementScroll(c);return u&&(h=this.removeTransform(h)),xO(h),{animationId:this.root.animationId,measuredBox:c,layoutBox:h,latestValues:{},source:this.id}}measurePageBox(){const{visualElement:u}=this.options;if(!u)return It();const c=u.measureViewportBox();if(!(this.scroll?.wasRoot||this.path.some(SO))){const{scroll:f}=this.root;f&&(fr(c.x,f.offset.x),fr(c.y,f.offset.y))}return c}removeElementScroll(u){const c=It();if(er(c,u),this.scroll?.wasRoot)return c;for(let h=0;h<this.path.length;h++){const f=this.path[h],{scroll:m,options:y}=f;f!==this.root&&m&&y.layoutScroll&&(m.wasRoot&&er(c,u),fr(c.x,m.offset.x),fr(c.y,m.offset.y))}return c}applyTransform(u,c=!1,h){const f=h||It();er(f,u);for(let m=0;m<this.path.length;m++){const y=this.path[m];!c&&y.options.layoutScroll&&y.scroll&&y!==y.root&&(fr(f.x,-y.scroll.offset.x),fr(f.y,-y.scroll.offset.y)),ei(y.latestValues)&&Ou(f,y.latestValues,y.layout?.layoutBox)}return ei(this.latestValues)&&Ou(f,this.latestValues,this.layout?.layoutBox),f}removeTransform(u){const c=It();er(c,u);for(let h=0;h<this.path.length;h++){const f=this.path[h];if(!ei(f.latestValues))continue;let m;f.instance&&(Of(f.latestValues)&&f.updateSnapshot(),m=It(),er(m,f.measurePageBox())),L0(c,f.latestValues,f.snapshot?.layoutBox,m)}return ei(this.latestValues)&&L0(c,this.latestValues),c}setTargetDelta(u){this.targetDelta=u,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(u){this.options={...this.options,...u,crossfade:u.crossfade!==void 0?u.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==Kt.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(u=!1){const c=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=c.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=c.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=c.isSharedProjectionDirty);const h=!!this.resumingFrom||this!==c;if(!(u||h&&this.isSharedProjectionDirty||this.isProjectionDirty||this.parent?.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:m,layoutId:y}=this.options;if(!this.layout||!(m||y))return;this.resolvedRelativeTargetAt=Kt.timestamp;const b=this.getClosestProjectingParent();b&&this.linkedParentVersion!==b.layoutVersion&&!b.options.layoutRoot&&this.removeRelativeTarget(),!this.targetDelta&&!this.relativeTarget&&(this.options.layoutAnchor!==!1&&b&&b.layout?this.createRelativeTarget(b,this.layout.layoutBox,b.layout.layoutBox):this.removeRelativeTarget()),!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=It(),this.targetWithTransforms=It()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),WN(this.target,this.relativeTarget,this.relativeParent.target,this.options.layoutAnchor||void 0)):this.targetDelta?(this.resumingFrom?this.applyTransform(this.layout.layoutBox,!1,this.target):er(this.target,this.layout.layoutBox),Ck(this.target,this.targetDelta)):er(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget&&(this.attemptToResolveRelativeTarget=!1,this.options.layoutAnchor!==!1&&b&&!!b.resumingFrom==!!this.resumingFrom&&!b.options.layoutScroll&&b.target&&this.animationProgress!==1?this.createRelativeTarget(b,this.target,b.target):this.relativeParent=this.relativeTarget=void 0))}getClosestProjectingParent(){if(!(!this.parent||Of(this.parent.latestValues)||Tk(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}createRelativeTarget(u,c,h){this.relativeParent=u,this.linkedParentVersion=u.layoutVersion,this.forceRelativeParentToResolveTarget(),this.relativeTarget=It(),this.relativeTargetOrigin=It(),lc(this.relativeTargetOrigin,c,h,this.options.layoutAnchor||void 0),er(this.relativeTarget,this.relativeTargetOrigin)}removeRelativeTarget(){this.relativeParent=this.relativeTarget=void 0}calcProjection(){const u=this.getLead(),c=!!this.resumingFrom||this!==u;let h=!0;if((this.isProjectionDirty||this.parent?.isProjectionDirty)&&(h=!1),c&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(h=!1),this.resolvedRelativeTargetAt===Kt.timestamp&&(h=!1),h)return;const{layout:f,layoutId:m}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(f||m))return;er(this.layoutCorrected,this.layout.layoutBox);const y=this.treeScale.x,b=this.treeScale.y;_N(this.layoutCorrected,this.treeScale,this.path,c),u.layout&&!u.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(u.target=u.layout.layoutBox,u.targetWithTransforms=It());const{target:w}=u;if(!w){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(P0(this.prevProjectionDelta.x,this.projectionDelta.x),P0(this.prevProjectionDelta.y,this.projectionDelta.y)),Po(this.projectionDelta,this.layoutCorrected,w,this.latestValues),(this.treeScale.x!==y||this.treeScale.y!==b||!I0(this.projectionDelta.x,this.prevProjectionDelta.x)||!I0(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",w))}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(u=!0){if(this.options.visualElement?.scheduleRender(),u){const c=this.getStack();c&&c.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=ss(),this.projectionDelta=ss(),this.projectionDeltaWithTransform=ss()}setAnimationOrigin(u,c=!1){const h=this.snapshot,f=h?h.latestValues:{},m={...this.latestValues},y=ss();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!c;const b=It(),w=h?h.source:void 0,x=this.layout?this.layout.source:void 0,T=w!==x,P=this.getStack(),L=!P||P.members.length<=1,D=!!(T&&!L&&this.options.crossfade===!0&&!this.path.some(wO));this.animationProgress=0;let M;this.mixTargetDelta=j=>{const K=j/1e3;$0(y.x,u.x,K),$0(y.y,u.y,K),this.setTargetDelta(y),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(lc(b,this.layout.layoutBox,this.relativeParent.layout.layoutBox,this.options.layoutAnchor||void 0),_O(this.relativeTarget,this.relativeTargetOrigin,b,K),M&&YN(this.relativeTarget,M)&&(this.isProjectionDirty=!1),M||(M=It()),er(M,this.relativeTarget)),T&&(this.animationValues=m,XN(m,f,this.latestValues,K,D,L)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=K},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(u){this.notifyListeners("animationStart"),this.currentAnimation?.stop(),this.resumingFrom?.currentAnimation?.stop(),this.pendingAnimation&&(Na(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=dt.update(()=>{ju.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=gs(0)),this.motionValue.jump(0,!1),this.currentAnimation=tO(this.motionValue,[0,1e3],{...u,velocity:0,isSync:!0,onUpdate:c=>{this.mixTargetDelta(c),u.onUpdate&&u.onUpdate(c)},onStop:()=>{},onComplete:()=>{u.onComplete&&u.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const u=this.getStack();u&&u.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(sO),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const u=this.getLead();let{targetWithTransforms:c,target:h,layout:f,latestValues:m}=u;if(!(!c||!h||!f)){if(this!==u&&this.layout&&f&&Wk(this.options.animationType,this.layout.layoutBox,f.layoutBox)){h=this.target||It();const y=ln(this.layout.layoutBox.x);h.x.min=u.target.x.min,h.x.max=h.x.min+y;const b=ln(this.layout.layoutBox.y);h.y.min=u.target.y.min,h.y.max=h.y.min+b}er(c,h),Ou(c,m),Po(this.projectionDeltaWithTransform,this.layoutCorrected,c,m)}}registerSharedNode(u,c){this.sharedNodes.has(u)||this.sharedNodes.set(u,new iO),this.sharedNodes.get(u).add(c);const f=c.options.initialPromotionConfig;c.promote({transition:f?f.transition:void 0,preserveFollowOpacity:f&&f.shouldPreserveFollowOpacity?f.shouldPreserveFollowOpacity(c):void 0})}isLead(){const u=this.getStack();return u?u.lead===this:!0}getLead(){const{layoutId:u}=this.options;return u?this.getStack()?.lead||this:this}getPrevLead(){const{layoutId:u}=this.options;return u?this.getStack()?.prevLead:void 0}getStack(){const{layoutId:u}=this.options;if(u)return this.root.sharedNodes.get(u)}promote({needsReset:u,transition:c,preserveFollowOpacity:h}={}){const f=this.getStack();f&&f.promote(this,h),u&&(this.projectionDelta=void 0,this.needsReset=!0),c&&this.setOptions({transition:c})}relegate(){const u=this.getStack();return u?u.relegate(this):!1}resetSkewAndRotation(){const{visualElement:u}=this.options;if(!u)return;let c=!1;const{latestValues:h}=u;if((h.z||h.rotate||h.rotateX||h.rotateY||h.rotateZ||h.skewX||h.skewY)&&(c=!0),!c)return;const f={};h.z&&Uh("z",u,f,this.animationValues);for(let m=0;m<jh.length;m++)Uh(`rotate${jh[m]}`,u,f,this.animationValues),Uh(`skew${jh[m]}`,u,f,this.animationValues);u.render();for(const m in f)u.setStaticValue(m,f[m]),this.animationValues&&(this.animationValues[m]=f[m]);u.scheduleRender()}applyProjectionStyles(u,c){if(!this.instance||this.isSVG)return;if(!this.isVisible){u.visibility="hidden";return}const h=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,u.visibility="",u.opacity="",u.pointerEvents=Iu(c?.pointerEvents)||"",u.transform=h?h(this.latestValues,""):"none";return}const f=this.getLead();if(!this.projectionDelta||!this.layout||!f.target){this.options.layoutId&&(u.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,u.pointerEvents=Iu(c?.pointerEvents)||""),this.hasProjected&&!ei(this.latestValues)&&(u.transform=h?h({},""):"none",this.hasProjected=!1);return}u.visibility="";const m=f.animationValues||f.latestValues;this.applyTransformsToTarget();let y=ZN(this.projectionDeltaWithTransform,this.treeScale,m);h&&(y=h(m,y)),u.transform=y;const{x:b,y:w}=this.projectionDelta;u.transformOrigin=`${b.origin*100}% ${w.origin*100}% 0`,f.animationValues?u.opacity=f===this?m.opacity??this.latestValues.opacity??1:this.preserveOpacity?this.latestValues.opacity:m.opacityExit:u.opacity=f===this?m.opacity!==void 0?m.opacity:"":m.opacityExit!==void 0?m.opacityExit:0;for(const x in jf){if(m[x]===void 0)continue;const{correct:T,applyTo:P,isCSSVariable:L}=jf[x],D=y==="none"?m[x]:T(m[x],f);if(P){const M=P.length;for(let j=0;j<M;j++)u[P[j]]=D}else L?this.options.visualElement.renderState.vars[x]=D:u[x]=D}this.options.layoutId&&(u.pointerEvents=f===this?Iu(c?.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(u=>u.currentAnimation?.stop()),this.root.nodes.forEach(F0),this.root.sharedNodes.clear()}}}function lO(e){e.updateLayout()}function uO(e){const t=e.resumeFrom?.snapshot||e.snapshot;if(e.isLead()&&e.layout&&t&&e.hasListeners("didUpdate")){const{layoutBox:n,measuredBox:a}=e.layout,{animationType:s}=e.options,o=t.source!==e.layout.source;if(s==="size")hr(m=>{const y=o?t.measuredBox[m]:t.layoutBox[m],b=ln(y);y.min=n[m].min,y.max=y.min+b});else if(s==="x"||s==="y"){const m=s==="x"?"y":"x";Uf(o?t.measuredBox[m]:t.layoutBox[m],n[m])}else Wk(s,t.layoutBox,n)&&hr(m=>{const y=o?t.measuredBox[m]:t.layoutBox[m],b=ln(n[m]);y.max=y.min+b,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[m].max=e.relativeTarget[m].min+b)});const u=ss();Po(u,n,t.layoutBox);const c=ss();o?Po(c,e.applyTransform(a,!0),t.measuredBox):Po(c,n,t.layoutBox);const h=!Bk(u);let f=!1;if(!e.resumeFrom){const m=e.getClosestProjectingParent();if(m&&!m.resumeFrom){const{snapshot:y,layout:b}=m;if(y&&b){const w=e.options.layoutAnchor||void 0,x=It();lc(x,t.layoutBox,y.layoutBox,w);const T=It();lc(T,n,b.layoutBox,w),Fk(x,T)||(f=!0),m.options.layoutRoot&&(e.relativeTarget=T,e.relativeTargetOrigin=x,e.relativeParent=m)}}}e.notifyListeners("didUpdate",{layout:n,snapshot:t,delta:c,layoutDelta:u,hasLayoutChanged:h,hasRelativeLayoutChanged:f})}else if(e.isLead()){const{onExitComplete:n}=e.options;n&&n()}e.options.transition=void 0}function cO(e){e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function dO(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function hO(e){e.clearSnapshot()}function F0(e){e.clearMeasurements()}function fO(e){e.isLayoutDirty=!0,e.updateLayout()}function V0(e){e.isLayoutDirty=!1}function pO(e){e.isAnimationBlocked&&e.layout&&!e.isLayoutDirty&&(e.snapshot=e.layout,e.isLayoutDirty=!0)}function mO(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function z0(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function gO(e){e.resolveTargetDelta()}function yO(e){e.calcProjection()}function vO(e){e.resetSkewAndRotation()}function bO(e){e.removeLeadSnapshot()}function $0(e,t,n){e.translate=vt(t.translate,0,n),e.scale=vt(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function H0(e,t,n,a){e.min=vt(t.min,n.min,a),e.max=vt(t.max,n.max,a)}function _O(e,t,n,a){H0(e.x,t.x,n.x,a),H0(e.y,t.y,n.y,a)}function wO(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const kO={duration:.45,ease:[.4,0,.1,1]},W0=e=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(e),K0=W0("applewebkit/")&&!W0("chrome/")?Math.round:jn;function q0(e){e.min=K0(e.min),e.max=K0(e.max)}function xO(e){q0(e.x),q0(e.y)}function Wk(e,t,n){return e==="position"||e==="preserve-aspect"&&!HN(O0(t),O0(n),.2)}function SO(e){return e!==e.root&&e.scroll?.wasRoot}const PO=Hk({attachResizeListener:(e,t)=>Oo(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body?.scrollLeft||0,y:document.documentElement.scrollTop||document.body?.scrollTop||0}),checkIsScrollRoot:()=>!0}),Bh={current:void 0},Kk=Hk({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!Bh.current){const e=new PO({});e.mount(window),e.setOptions({layoutScroll:!0}),Bh.current=e}return Bh.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),Zp=k.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});function G0(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function TO(...e){return t=>{let n=!1;const a=e.map(s=>{const o=G0(s,t);return!n&&typeof o=="function"&&(n=!0),o});if(n)return()=>{for(let s=0;s<a.length;s++){const o=a[s];typeof o=="function"?o():G0(e[s],null)}}}}function CO(...e){return k.useCallback(TO(...e),e)}class EO extends k.Component{getSnapshotBeforeUpdate(t){const n=this.props.childRef.current;if(Au(n)&&t.isPresent&&!this.props.isPresent&&this.props.pop!==!1){const a=n.offsetParent,s=Au(a)&&a.offsetWidth||0,o=Au(a)&&a.offsetHeight||0,u=getComputedStyle(n),c=this.props.sizeRef.current;c.height=parseFloat(u.height),c.width=parseFloat(u.width),c.top=n.offsetTop,c.left=n.offsetLeft,c.right=s-c.width-c.left,c.bottom=o-c.height-c.top}return null}componentDidUpdate(){}render(){return this.props.children}}function RO({children:e,isPresent:t,anchorX:n,anchorY:a,root:s,pop:o}){const u=k.useId(),c=k.useRef(null),h=k.useRef({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:f}=k.useContext(Zp),m=e.props?.ref??e?.ref,y=CO(c,m);return k.useInsertionEffect(()=>{const{width:b,height:w,top:x,left:T,right:P,bottom:L}=h.current;if(t||o===!1||!c.current||!b||!w)return;const D=n==="left"?`left: ${T}`:`right: ${P}`,M=a==="bottom"?`bottom: ${L}`:`top: ${x}`;c.current.dataset.motionPopId=u;const j=document.createElement("style");f&&(j.nonce=f);const K=s??document.head;return K.appendChild(j),j.sheet&&j.sheet.insertRule(`
620
622
  [data-motion-pop-id="${u}"] {
@@ -624,4 +626,4 @@ dashboard.context_breakdown.exec_details.group_by_exit,dashboard,DashboardPage,C
624
626
  ${D}px !important;
625
627
  ${M}px !important;
626
628
  }
627
- `),()=>{c.current?.removeAttribute("data-motion-pop-id"),K.contains(j)&&K.removeChild(j)}},[t]),I.jsx(EO,{isPresent:t,childRef:c,sizeRef:h,pop:o,children:o===!1?e:k.cloneElement(e,{ref:y})})}const AO=({children:e,initial:t,isPresent:n,onExitComplete:a,custom:s,presenceAffectsLayout:o,mode:u,anchorX:c,anchorY:h,root:f})=>{const m=Pp(LO),y=k.useId();let b=!0,w=k.useMemo(()=>(b=!1,{id:y,initial:t,isPresent:n,custom:s,onExitComplete:x=>{m.set(x,!0);for(const T of m.values())if(!T)return;a&&a()},register:x=>(m.set(x,!1),()=>m.delete(x))}),[n,m,a]);return o&&b&&(w={...w}),k.useMemo(()=>{m.forEach((x,T)=>m.set(T,!1))},[n]),k.useEffect(()=>{!n&&!m.size&&a&&a()},[n]),e=I.jsx(RO,{pop:u==="popLayout",isPresent:n,anchorX:c,anchorY:h,root:f,children:e}),I.jsx(xc.Provider,{value:w,children:e})};function LO(){return new Map}function qk(e=!0){const t=k.useContext(xc);if(t===null)return[!0,null];const{isPresent:n,onExitComplete:a,register:s}=t,o=k.useId();k.useEffect(()=>{if(e)return s(o)},[e]);const u=k.useCallback(()=>e&&a&&a(o),[o,a,e]);return!n&&a?[!1,u]:[!0]}const pu=e=>e.key||"";function Y0(e){const t=[];return k.Children.forEach(e,n=>{k.isValidElement(n)&&t.push(n)}),t}const DO=({children:e,custom:t,initial:n=!0,onExitComplete:a,presenceAffectsLayout:s=!0,mode:o="sync",propagate:u=!1,anchorX:c="left",anchorY:h="top",root:f})=>{const[m,y]=qk(u),b=k.useMemo(()=>Y0(e),[e]),w=u&&!m?[]:b.map(pu),x=k.useRef(!0),T=k.useRef(b),P=Pp(()=>new Map),L=k.useRef(new Set),[D,M]=k.useState(b),[j,K]=k.useState(b);_w(()=>{x.current=!1,T.current=b;for(let S=0;S<j.length;S++){const Z=pu(j[S]);w.includes(Z)?(P.delete(Z),L.current.delete(Z)):P.get(Z)!==!0&&P.set(Z,!1)}},[j,w.length,w.join("-")]);const G=[];if(b!==D){let S=[...b];for(let Z=0;Z<j.length;Z++){const X=j[Z],_e=pu(X);w.includes(_e)||(S.splice(Z,0,X),G.push(X))}return o==="wait"&&G.length&&(S=G),K(Y0(S)),M(b),null}const{forceRender:W}=k.useContext(Sp);return I.jsx(I.Fragment,{children:j.map(S=>{const Z=pu(S),X=u&&!m?!1:b===j||w.includes(Z),_e=()=>{if(L.current.has(Z))return;if(P.has(Z))L.current.add(Z),P.set(Z,!0);else return;let oe=!0;P.forEach(Re=>{Re||(oe=!1)}),oe&&(W?.(),K(T.current),u&&y?.(),a&&a())};return I.jsx(AO,{isPresent:X,initial:!x.current||n?void 0:!1,custom:t,presenceAffectsLayout:s,mode:o,root:f,onExitComplete:X?void 0:_e,anchorX:c,anchorY:h,children:S},Z)})})},Gk=k.createContext({strict:!1}),Z0={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let Q0=!1;function MO(){if(Q0)return;const e={};for(const t in Z0)e[t]={isEnabled:n=>Z0[t].some(a=>!!n[a])};xk(e),Q0=!0}function Yk(){return MO(),gN()}function NO(e){const t=Yk();for(const n in e)t[n]={...t[n],...e[n]};xk(t)}const OO=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function uc(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||OO.has(e)}let Zk=e=>!uc(e);function IO(e){typeof e=="function"&&(Zk=t=>t.startsWith("on")?!uc(t):e(t))}try{IO(require("@emotion/is-prop-valid").default)}catch{}function jO(e,t,n){const a={};for(const s in e)s==="values"&&typeof e.values=="object"||qt(e[s])||(Zk(s)||n===!0&&uc(s)||!t&&!uc(s)||e.draggable&&s.startsWith("onDrag"))&&(a[s]=e[s]);return a}const Cc=k.createContext({});function UO(e,t){if(Tc(e)){const{initial:n,animate:a}=e;return{initial:n===!1||No(n)?n:void 0,animate:No(a)?a:void 0}}return e.inherit!==!1?t:{}}function BO(e){const{initial:t,animate:n}=UO(e,k.useContext(Cc));return k.useMemo(()=>({initial:t,animate:n}),[X0(t),X0(n)])}function X0(e){return Array.isArray(e)?e.join(" "):e}const Qp=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function Qk(e,t,n){for(const a in t)!qt(t[a])&&!Ak(a,n)&&(e[a]=t[a])}function FO({transformTemplate:e},t){return k.useMemo(()=>{const n=Qp();return Gp(n,t,e),Object.assign({},n.vars,n.style)},[t])}function VO(e,t){const n=e.style||{},a={};return Qk(a,n,e),Object.assign(a,FO(e,t)),a}function zO(e,t){const n={},a=VO(e,t);return e.drag&&e.dragListener!==!1&&(n.draggable=!1,a.userSelect=a.WebkitUserSelect=a.WebkitTouchCallout="none",a.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(n.tabIndex=0),n.style=a,n}const Xk=()=>({...Qp(),attrs:{}});function $O(e,t,n,a){const s=k.useMemo(()=>{const o=Xk();return Lk(o,t,Mk(a),e.transformTemplate,e.style),{...o.attrs,style:{...o.style}}},[t]);if(e.style){const o={};Qk(o,e.style,e),s.style={...o,...s.style}}return s}const HO=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Xp(e){return typeof e!="string"||e.includes("-")?!1:!!(HO.indexOf(e)>-1||/[A-Z]/u.test(e))}function WO(e,t,n,{latestValues:a},s,o=!1,u){const h=(u??Xp(e)?$O:zO)(t,a,s,e),f=jO(t,typeof e=="string",o),m=e!==k.Fragment?{...f,...h,ref:n}:{},{children:y}=t,b=k.useMemo(()=>qt(y)?y.get():y,[y]);return k.createElement(e,{...m,children:b})}function KO({scrapeMotionValuesFromProps:e,createRenderState:t},n,a,s){return{latestValues:qO(n,a,s,e),renderState:t()}}function qO(e,t,n,a){const s={},o=a(e,{});for(const b in o)s[b]=Iu(o[b]);let{initial:u,animate:c}=e;const h=Tc(e),f=wk(e);t&&f&&!h&&e.inherit!==!1&&(u===void 0&&(u=t.initial),c===void 0&&(c=t.animate));let m=n?n.initial===!1:!1;m=m||u===!1;const y=m?c:u;if(y&&typeof y!="boolean"&&!Pc(y)){const b=Array.isArray(y)?y:[y];for(let w=0;w<b.length;w++){const x=Fp(e,b[w]);if(x){const{transitionEnd:T,transition:P,...L}=x;for(const D in L){let M=L[D];if(Array.isArray(M)){const j=m?M.length-1:0;M=M[j]}M!==null&&(s[D]=M)}for(const D in T)s[D]=T[D]}}}return s}const Jk=e=>(t,n)=>{const a=k.useContext(Cc),s=k.useContext(xc),o=()=>KO(e,t,a,s);return n?o():Pp(o)},GO=Jk({scrapeMotionValuesFromProps:Yp,createRenderState:Qp}),YO=Jk({scrapeMotionValuesFromProps:Nk,createRenderState:Xk}),ZO=Symbol.for("motionComponentSymbol");function QO(e,t,n){const a=k.useRef(n);k.useInsertionEffect(()=>{a.current=n});const s=k.useRef(null);return k.useCallback(o=>{o&&e.onMount?.(o);const u=a.current;if(typeof u=="function")if(o){const c=u(o);typeof c=="function"&&(s.current=c)}else s.current?(s.current(),s.current=null):u(o);else u&&(u.current=o);t&&(o?t.mount(o):t.unmount())},[t])}const ex=k.createContext({});function ts(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function XO(e,t,n,a,s,o){const{visualElement:u}=k.useContext(Cc),c=k.useContext(Gk),h=k.useContext(xc),f=k.useContext(Zp),m=f.reducedMotion,y=f.skipAnimations,b=k.useRef(null),w=k.useRef(!1);a=a||c.renderer,!b.current&&a&&(b.current=a(e,{visualState:t,parent:u,props:n,presenceContext:h,blockInitialAnimation:h?h.initial===!1:!1,reducedMotionConfig:m,skipAnimations:y,isSVG:o}),w.current&&b.current&&(b.current.manuallyAnimateOnMount=!0));const x=b.current,T=k.useContext(ex);x&&!x.projection&&s&&(x.type==="html"||x.type==="svg")&&JO(b.current,n,s,T);const P=k.useRef(!1);k.useInsertionEffect(()=>{x&&P.current&&x.update(n,h)});const L=n[lk],D=k.useRef(!!L&&typeof window<"u"&&!window.MotionHandoffIsComplete?.(L)&&window.MotionHasOptimisedAnimation?.(L));return _w(()=>{w.current=!0,x&&(P.current=!0,window.MotionIsMounted=!0,x.updateFeatures(),x.scheduleRenderMicrotask(),D.current&&x.animationState&&x.animationState.animateChanges())}),k.useEffect(()=>{x&&(!D.current&&x.animationState&&x.animationState.animateChanges(),D.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(L)}),D.current=!1),x.enteringChildren=void 0)}),x}function JO(e,t,n,a){const{layoutId:s,layout:o,drag:u,dragConstraints:c,layoutScroll:h,layoutRoot:f,layoutAnchor:m,layoutCrossfade:y}=t;e.projection=new n(e.latestValues,t["data-framer-portal-id"]?void 0:tx(e.parent)),e.projection.setOptions({layoutId:s,layout:o,alwaysMeasureLayout:!!u||c&&ts(c),visualElement:e,animationType:typeof o=="string"?o:"both",initialPromotionConfig:a,crossfade:y,layoutScroll:h,layoutRoot:f,layoutAnchor:m})}function tx(e){if(e)return e.options.allowProjection!==!1?e.projection:tx(e.parent)}function Fh(e,{forwardMotionProps:t=!1,type:n}={},a,s){a&&NO(a);const o=n?n==="svg":Xp(e),u=o?YO:GO;function c(f,m){let y;const b={...k.useContext(Zp),...f,layoutId:eI(f)},{isStatic:w}=b,x=BO(f),T=u(f,w);if(!w&&typeof window<"u"){tI();const P=nI(b);y=P.MeasureLayout,x.visualElement=XO(e,T,b,s,P.ProjectionNode,o)}return I.jsxs(Cc.Provider,{value:x,children:[y&&x.visualElement?I.jsx(y,{visualElement:x.visualElement,...b}):null,WO(e,f,QO(T,x.visualElement,m),T,w,t,o)]})}c.displayName=`motion.${typeof e=="string"?e:`create(${e.displayName??e.name??""})`}`;const h=k.forwardRef(c);return h[ZO]=e,h}function eI({layoutId:e}){const t=k.useContext(Sp).id;return t&&e!==void 0?t+"-"+e:e}function tI(e,t){k.useContext(Gk).strict}function nI(e){const t=Yk(),{drag:n,layout:a}=t;if(!n&&!a)return{};const s={...n,...a};return{MeasureLayout:n?.isEnabled(e)||a?.isEnabled(e)?s.MeasureLayout:void 0,ProjectionNode:s.ProjectionNode}}function rI(e,t){if(typeof Proxy>"u")return Fh;const n=new Map,a=(o,u)=>Fh(o,u,e,t),s=(o,u)=>a(o,u);return new Proxy(s,{get:(o,u)=>u==="create"?a:(n.has(u)||n.set(u,Fh(u,void 0,e,t)),n.get(u))})}const aI=(e,t)=>t.isSVG??Xp(e)?new MN(t):new CN(t,{allowProjection:e!==k.Fragment});class iI extends Ia{constructor(t){super(t),t.animationState||(t.animationState=UN(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();Pc(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let sI=0;class oI extends Ia{constructor(){super(...arguments),this.id=sI++,this.isExitComplete=!1}update(){if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n}=this.node.presenceContext,{isPresent:a}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===a)return;if(t&&a===!1){if(this.isExitComplete){const{initial:o,custom:u}=this.node.getProps();if(typeof o=="string"){const c=si(this.node,o,u);if(c){const{transition:h,transitionEnd:f,...m}=c;for(const y in m)this.node.getValue(y)?.jump(m[y])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const s=this.node.animationState.setActive("exit",!t);n&&!t&&s.then(()=>{this.isExitComplete=!0,n(this.id)})}mount(){const{register:t,onExitComplete:n}=this.node.presenceContext||{};n&&n(this.id),t&&(this.unmount=t(this.id))}unmount(){}}const lI={animation:{Feature:iI},exit:{Feature:oI}};function Zo(e){return{point:{x:e.pageX,y:e.pageY}}}const uI=e=>t=>Hp(t)&&e(t,Zo(t));function To(e,t,n,a){return Oo(e,t,uI(n),a)}const nx=({current:e})=>e?e.ownerDocument.defaultView:null,J0=(e,t)=>Math.abs(e-t);function cI(e,t){const n=J0(e.x,t.x),a=J0(e.y,t.y);return Math.sqrt(n**2+a**2)}const eb=new Set(["auto","scroll"]);class rx{constructor(t,n,{transformPagePoint:a,contextWindow:s=window,dragSnapToOrigin:o=!1,distanceThreshold:u=3,element:c}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=w=>{this.handleScroll(w.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=mu(this.lastRawMoveEventInfo,this.transformPagePoint));const w=Vh(this.lastMoveEventInfo,this.history),x=this.startEvent!==null,T=cI(w.offset,{x:0,y:0})>=this.distanceThreshold;if(!x&&!T)return;const{point:P}=w,{timestamp:L}=Kt;this.history.push({...P,timestamp:L});const{onStart:D,onMove:M}=this.handlers;x||(D&&D(this.lastMoveEvent,w),this.startEvent=this.lastMoveEvent),M&&M(this.lastMoveEvent,w)},this.handlePointerMove=(w,x)=>{this.lastMoveEvent=w,this.lastRawMoveEventInfo=x,this.lastMoveEventInfo=mu(x,this.transformPagePoint),dt.update(this.updatePoint,!0)},this.handlePointerUp=(w,x)=>{this.end();const{onEnd:T,onSessionEnd:P,resumeAnimation:L}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&L&&L(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const D=Vh(w.type==="pointercancel"?this.lastMoveEventInfo:mu(x,this.transformPagePoint),this.history);this.startEvent&&T&&T(w,D),P&&P(w,D)},!Hp(t))return;this.dragSnapToOrigin=o,this.handlers=n,this.transformPagePoint=a,this.distanceThreshold=u,this.contextWindow=s||window;const h=Zo(t),f=mu(h,this.transformPagePoint),{point:m}=f,{timestamp:y}=Kt;this.history=[{...m,timestamp:y}];const{onSessionStart:b}=n;b&&b(t,Vh(f,this.history)),this.removeListeners=qo(To(this.contextWindow,"pointermove",this.handlePointerMove),To(this.contextWindow,"pointerup",this.handlePointerUp),To(this.contextWindow,"pointercancel",this.handlePointerUp)),c&&this.startScrollTracking(c)}startScrollTracking(t){let n=t.parentElement;for(;n;){const a=getComputedStyle(n);(eb.has(a.overflowX)||eb.has(a.overflowY))&&this.scrollPositions.set(n,{x:n.scrollLeft,y:n.scrollTop}),n=n.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(t){const n=this.scrollPositions.get(t);if(!n)return;const a=t===window,s=a?{x:window.scrollX,y:window.scrollY}:{x:t.scrollLeft,y:t.scrollTop},o={x:s.x-n.x,y:s.y-n.y};o.x===0&&o.y===0||(a?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=o.x,this.lastMoveEventInfo.point.y+=o.y):this.history.length>0&&(this.history[0].x-=o.x,this.history[0].y-=o.y),this.scrollPositions.set(t,s),dt.update(this.updatePoint,!0))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),Na(this.updatePoint)}}function mu(e,t){return t?{point:t(e.point)}:e}function tb(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Vh({point:e},t){return{point:e,delta:tb(e,ax(t)),offset:tb(e,dI(t)),velocity:hI(t,.1)}}function dI(e){return e[0]}function ax(e){return e[e.length-1]}function hI(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,a=null;const s=ax(e);for(;n>=0&&(a=e[n],!(s.timestamp-a.timestamp>Sn(t)));)n--;if(!a)return{x:0,y:0};a===e[0]&&e.length>2&&s.timestamp-a.timestamp>Sn(t)*2&&(a=e[1]);const o=In(s.timestamp-a.timestamp);if(o===0)return{x:0,y:0};const u={x:(s.x-a.x)/o,y:(s.y-a.y)/o};return u.x===1/0&&(u.x=0),u.y===1/0&&(u.y=0),u}function fI(e,{min:t,max:n},a){return t!==void 0&&e<t?e=a?vt(t,e,a.min):Math.max(e,t):n!==void 0&&e>n&&(e=a?vt(n,e,a.max):Math.min(e,n)),e}function nb(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function pI(e,{top:t,left:n,bottom:a,right:s}){return{x:nb(e.x,n,s),y:nb(e.y,t,a)}}function rb(e,t){let n=t.min-e.min,a=t.max-e.max;return t.max-t.min<e.max-e.min&&([n,a]=[a,n]),{min:n,max:a}}function mI(e,t){return{x:rb(e.x,t.x),y:rb(e.y,t.y)}}function gI(e,t){let n=.5;const a=ln(e),s=ln(t);return s>a?n=Do(t.min,t.max-a,e.min):a>s&&(n=Do(e.min,e.max-s,t.min)),kr(0,1,n)}function yI(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const Bf=.35;function vI(e=Bf){return e===!1?e=0:e===!0&&(e=Bf),{x:ab(e,"left","right"),y:ab(e,"top","bottom")}}function ab(e,t,n){return{min:ib(e,t),max:ib(e,n)}}function ib(e,t){return typeof e=="number"?e:e[t]||0}const bI=new WeakMap;class _I{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=It(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=t}start(t,{snapToCursor:n=!1,distanceThreshold:a}={}){const{presenceContext:s}=this.visualElement;if(s&&s.isPresent===!1)return;const o=y=>{n&&this.snapToCursor(Zo(y).point),this.stopAnimation()},u=(y,b)=>{const{drag:w,dragPropagation:x,onDragStart:T}=this.getProps();if(w&&!x&&(this.openDragLock&&this.openDragLock(),this.openDragLock=K2(w),!this.openDragLock))return;this.latestPointerEvent=y,this.latestPanInfo=b,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),hr(L=>{let D=this.getAxisMotionValue(L).get()||0;if(yr.test(D)){const{projection:M}=this.visualElement;if(M&&M.layout){const j=M.layout.layoutBox[L];j&&(D=ln(j)*(parseFloat(D)/100))}}this.originPoint[L]=D}),T&&dt.update(()=>T(y,b),!1,!0),Af(this.visualElement,"transform");const{animationState:P}=this.visualElement;P&&P.setActive("whileDrag",!0)},c=(y,b)=>{this.latestPointerEvent=y,this.latestPanInfo=b;const{dragPropagation:w,dragDirectionLock:x,onDirectionLock:T,onDrag:P}=this.getProps();if(!w&&!this.openDragLock)return;const{offset:L}=b;if(x&&this.currentDirection===null){this.currentDirection=kI(L),this.currentDirection!==null&&T&&T(this.currentDirection);return}this.updateAxis("x",b.point,L),this.updateAxis("y",b.point,L),this.visualElement.render(),P&&dt.update(()=>P(y,b),!1,!0)},h=(y,b)=>{this.latestPointerEvent=y,this.latestPanInfo=b,this.stop(y,b),this.latestPointerEvent=null,this.latestPanInfo=null},f=()=>{const{dragSnapToOrigin:y}=this.getProps();(y||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:m}=this.getProps();this.panSession=new rx(t,{onSessionStart:o,onStart:u,onMove:c,onSessionEnd:h,resumeAnimation:f},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:m,distanceThreshold:a,contextWindow:nx(this.visualElement),element:this.visualElement.current})}stop(t,n){const a=t||this.latestPointerEvent,s=n||this.latestPanInfo,o=this.isDragging;if(this.cancel(),!o||!s||!a)return;const{velocity:u}=s;this.startAnimation(u);const{onDragEnd:c}=this.getProps();c&&dt.postRender(()=>c(a,s))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:a}=this.getProps();!a&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(t,n,a){const{drag:s}=this.getProps();if(!a||!gu(t,s,this.currentDirection))return;const o=this.getAxisMotionValue(t);let u=this.originPoint[t]+a[t];this.constraints&&this.constraints[t]&&(u=fI(u,this.constraints[t],this.elastic[t])),o.set(u)}resolveConstraints(){const{dragConstraints:t,dragElastic:n}=this.getProps(),a=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,s=this.constraints;t&&ts(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&a?this.constraints=pI(a.layoutBox,t):this.constraints=!1,this.elastic=vI(n),s!==this.constraints&&!ts(t)&&a&&this.constraints&&!this.hasMutatedConstraints&&hr(o=>{this.constraints!==!1&&this.getAxisMotionValue(o)&&(this.constraints[o]=yI(a.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!ts(t))return!1;const a=t.current,{projection:s}=this.visualElement;if(!s||!s.layout)return!1;const o=wN(a,s.root,this.visualElement.getTransformPagePoint());let u=mI(s.layout.layoutBox,o);if(n){const c=n(vN(u));this.hasMutatedConstraints=!!c,c&&(u=Pk(c))}return u}startAnimation(t){const{drag:n,dragMomentum:a,dragElastic:s,dragTransition:o,dragSnapToOrigin:u,onDragTransitionEnd:c}=this.getProps(),h=this.constraints||{},f=hr(m=>{if(!gu(m,n,this.currentDirection))return;let y=h&&h[m]||{};(u===!0||u===m)&&(y={min:0,max:0});const b=s?200:1e6,w=s?40:1e7,x={type:"inertia",velocity:a?t[m]:0,bounceStiffness:b,bounceDamping:w,timeConstant:750,restDelta:1,restSpeed:10,...o,...y};return this.startAxisValueAnimation(m,x)});return Promise.all(f).then(c)}startAxisValueAnimation(t,n){const a=this.getAxisMotionValue(t);return Af(this.visualElement,t),a.start(Bp(t,a,0,n,this.visualElement,!1))}stopAnimation(){hr(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){const n=`_drag${t.toUpperCase()}`,a=this.visualElement.getProps(),s=a[n];return s||this.visualElement.getValue(t,(a.initial?a.initial[t]:void 0)||0)}snapToCursor(t){hr(n=>{const{drag:a}=this.getProps();if(!gu(n,a,this.currentDirection))return;const{projection:s}=this.visualElement,o=this.getAxisMotionValue(n);if(s&&s.layout){const{min:u,max:c}=s.layout.layoutBox[n],h=o.get()||0;o.set(t[n]-vt(u,c,.5)+h)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:a}=this.visualElement;if(!ts(n)||!a||!this.constraints)return;this.stopAnimation();const s={x:0,y:0};hr(u=>{const c=this.getAxisMotionValue(u);if(c&&this.constraints!==!1){const h=c.get();s[u]=gI({min:h,max:h},this.constraints[u])}});const{transformTemplate:o}=this.visualElement.getProps();this.visualElement.current.style.transform=o?o({},""):"none",a.root&&a.root.updateScroll(),a.updateLayout(),this.constraints=!1,this.resolveConstraints(),hr(u=>{if(!gu(u,t,null))return;const c=this.getAxisMotionValue(u),{min:h,max:f}=this.constraints[u];c.set(vt(h,f,s[u]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;bI.set(this.visualElement,this);const t=this.visualElement.current,n=To(t,"pointerdown",f=>{const{drag:m,dragListener:y=!0}=this.getProps(),b=f.target,w=b!==t&&X2(b);m&&y&&!w&&this.start(f)});let a;const s=()=>{const{dragConstraints:f}=this.getProps();ts(f)&&f.current&&(this.constraints=this.resolveRefConstraints(),a||(a=wI(t,f.current,()=>this.scalePositionWithinConstraints())))},{projection:o}=this.visualElement,u=o.addEventListener("measure",s);o&&!o.layout&&(o.root&&o.root.updateScroll(),o.updateLayout()),dt.read(s);const c=Oo(window,"resize",()=>this.scalePositionWithinConstraints()),h=o.addEventListener("didUpdate",(({delta:f,hasLayoutChanged:m})=>{this.isDragging&&m&&(hr(y=>{const b=this.getAxisMotionValue(y);b&&(this.originPoint[y]+=f[y].translate,b.set(b.get()+f[y].translate))}),this.visualElement.render())}));return()=>{c(),n(),u(),h&&h(),a&&a()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:a=!1,dragPropagation:s=!1,dragConstraints:o=!1,dragElastic:u=Bf,dragMomentum:c=!0}=t;return{...t,drag:n,dragDirectionLock:a,dragPropagation:s,dragConstraints:o,dragElastic:u,dragMomentum:c}}}function sb(e){let t=!0;return()=>{if(t){t=!1;return}e()}}function wI(e,t,n){const a=f0(e,sb(n)),s=f0(t,sb(n));return()=>{a(),s()}}function gu(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function kI(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class xI extends Ia{constructor(t){super(t),this.removeGroupControls=jn,this.removeListeners=jn,this.controls=new _I(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||jn}update(){const{dragControls:t}=this.node.getProps(),{dragControls:n}=this.node.prevProps||{};t!==n&&(this.removeGroupControls(),t&&(this.removeGroupControls=t.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const zh=e=>(t,n)=>{e&&dt.update(()=>e(t,n),!1,!0)};class SI extends Ia{constructor(){super(...arguments),this.removePointerDownListener=jn}onPointerDown(t){this.session=new rx(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:nx(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:a,onPanEnd:s}=this.node.getProps();return{onSessionStart:zh(t),onStart:zh(n),onMove:zh(a),onEnd:(o,u)=>{delete this.session,s&&dt.postRender(()=>s(o,u))}}}mount(){this.removePointerDownListener=To(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let $h=!1;class PI extends k.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:a,layoutId:s}=this.props,{projection:o}=t;o&&(n.group&&n.group.add(o),a&&a.register&&s&&a.register(o),$h&&o.root.didUpdate(),o.addEventListener("animationComplete",()=>{this.safeToRemove()}),o.setOptions({...o.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),ju.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:a,drag:s,isPresent:o}=this.props,{projection:u}=a;return u&&(u.isPresent=o,t.layoutDependency!==n&&u.setOptions({...u.options,layoutDependency:n}),$h=!0,s||t.layoutDependency!==n||n===void 0||t.isPresent!==o?u.willUpdate():this.safeToRemove(),t.isPresent!==o&&(o?u.promote():u.relegate()||dt.postRender(()=>{const c=u.getStack();(!c||!c.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:t,layoutAnchor:n}=this.props,{projection:a}=t;a&&(a.options.layoutAnchor=n,a.root.didUpdate(),$p.postRender(()=>{!a.currentAnimation&&a.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:a}=this.props,{projection:s}=t;$h=!0,s&&(s.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(s),a&&a.deregister&&a.deregister(s))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function ix(e){const[t,n]=qk(),a=k.useContext(Sp);return I.jsx(PI,{...e,layoutGroup:a,switchLayoutGroup:k.useContext(ex),isPresent:t,safeToRemove:n})}const TI={pan:{Feature:SI},drag:{Feature:xI,ProjectionNode:Kk,MeasureLayout:ix}};function ob(e,t,n){const{props:a}=e;e.animationState&&a.whileHover&&e.animationState.setActive("whileHover",n==="Start");const s="onHover"+n,o=a[s];o&&dt.postRender(()=>o(t,Zo(t)))}class CI extends Ia{mount(){const{current:t}=this.node;t&&(this.unmount=G2(t,(n,a)=>(ob(this.node,a,"Start"),s=>ob(this.node,s,"End"))))}unmount(){}}class EI extends Ia{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=qo(Oo(this.node.current,"focus",()=>this.onFocus()),Oo(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function lb(e,t,n){const{props:a}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&a.whileTap&&e.animationState.setActive("whileTap",n==="Start");const s="onTap"+(n==="End"?"":n),o=a[s];o&&dt.postRender(()=>o(t,Zo(t)))}class RI extends Ia{mount(){const{current:t}=this.node;if(!t)return;const{globalTapTarget:n,propagate:a}=this.node.props;this.unmount=eN(t,(s,o)=>(lb(this.node,o,"Start"),(u,{success:c})=>lb(this.node,u,c?"End":"Cancel")),{useGlobalTarget:n,stopPropagation:a?.tap===!1})}unmount(){}}const Ff=new WeakMap,Hh=new WeakMap,AI=e=>{const t=Ff.get(e.target);t&&t(e)},LI=e=>{e.forEach(AI)};function DI({root:e,...t}){const n=e||document;Hh.has(n)||Hh.set(n,{});const a=Hh.get(n),s=JSON.stringify(t);return a[s]||(a[s]=new IntersectionObserver(LI,{root:e,...t})),a[s]}function MI(e,t,n){const a=DI(t);return Ff.set(e,n),a.observe(e),()=>{Ff.delete(e),a.unobserve(e)}}const NI={some:0,all:1};class OI extends Ia{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.stopObserver?.();const{viewport:t={}}=this.node.getProps(),{root:n,margin:a,amount:s="some",once:o}=t,u={root:n?n.current:void 0,rootMargin:a,threshold:typeof s=="number"?s:NI[s]},c=h=>{const{isIntersecting:f}=h;if(this.isInView===f||(this.isInView=f,o&&!f&&this.hasEnteredView))return;f&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",f);const{onViewportEnter:m,onViewportLeave:y}=this.node.getProps(),b=f?m:y;b&&b(h)};this.stopObserver=MI(this.node.current,u,c)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(II(t,n))&&this.startObserver()}unmount(){this.stopObserver?.(),this.hasEnteredView=!1,this.isInView=!1}}function II({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const jI={inView:{Feature:OI},tap:{Feature:RI},focus:{Feature:EI},hover:{Feature:CI}},UI={layout:{ProjectionNode:Kk,MeasureLayout:ix}},BI={...lI,...jI,...TI,...UI},Wh=rI(BI,aI);function sx(e){var t,n,a="";if(typeof e=="string"||typeof e=="number")a+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(n=sx(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}function FI(){for(var e,t,n=0,a="",s=arguments.length;n<s;n++)(e=arguments[n])&&(t=sx(e))&&(a&&(a+=" "),a+=t);return a}const VI=(e,t)=>{const n=new Array(e.length+t.length);for(let a=0;a<e.length;a++)n[a]=e[a];for(let a=0;a<t.length;a++)n[e.length+a]=t[a];return n},zI=(e,t)=>({classGroupId:e,validator:t}),ox=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),cc="-",ub=[],$I="arbitrary..",HI=e=>{const t=KI(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:a}=e;return{getClassGroupId:u=>{if(u.startsWith("[")&&u.endsWith("]"))return WI(u);const c=u.split(cc),h=c[0]===""&&c.length>1?1:0;return lx(c,h,t)},getConflictingClassGroupIds:(u,c)=>{if(c){const h=a[u],f=n[u];return h?f?VI(f,h):h:f||ub}return n[u]||ub}}},lx=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;const s=e[t],o=n.nextPart.get(s);if(o){const f=lx(e,t+1,o);if(f)return f}const u=n.validators;if(u===null)return;const c=t===0?e.join(cc):e.slice(t).join(cc),h=u.length;for(let f=0;f<h;f++){const m=u[f];if(m.validator(c))return m.classGroupId}},WI=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),n=t.indexOf(":"),a=t.slice(0,n);return a?$I+a:void 0})(),KI=e=>{const{theme:t,classGroups:n}=e;return qI(n,t)},qI=(e,t)=>{const n=ox();for(const a in e){const s=e[a];Jp(s,n,a,t)}return n},Jp=(e,t,n,a)=>{const s=e.length;for(let o=0;o<s;o++){const u=e[o];GI(u,t,n,a)}},GI=(e,t,n,a)=>{if(typeof e=="string"){YI(e,t,n);return}if(typeof e=="function"){ZI(e,t,n,a);return}QI(e,t,n,a)},YI=(e,t,n)=>{const a=e===""?t:ux(t,e);a.classGroupId=n},ZI=(e,t,n,a)=>{if(XI(e)){Jp(e(a),t,n,a);return}t.validators===null&&(t.validators=[]),t.validators.push(zI(n,e))},QI=(e,t,n,a)=>{const s=Object.entries(e),o=s.length;for(let u=0;u<o;u++){const[c,h]=s[u];Jp(h,ux(t,c),n,a)}},ux=(e,t)=>{let n=e;const a=t.split(cc),s=a.length;for(let o=0;o<s;o++){const u=a[o];let c=n.nextPart.get(u);c||(c=ox(),n.nextPart.set(u,c)),n=c}return n},XI=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,JI=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=Object.create(null),a=Object.create(null);const s=(o,u)=>{n[o]=u,t++,t>e&&(t=0,a=n,n=Object.create(null))};return{get(o){let u=n[o];if(u!==void 0)return u;if((u=a[o])!==void 0)return s(o,u),u},set(o,u){o in n?n[o]=u:s(o,u)}}},Vf="!",cb=":",ej=[],db=(e,t,n,a,s)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:a,isExternal:s}),tj=e=>{const{prefix:t,experimentalParseClassName:n}=e;let a=s=>{const o=[];let u=0,c=0,h=0,f;const m=s.length;for(let T=0;T<m;T++){const P=s[T];if(u===0&&c===0){if(P===cb){o.push(s.slice(h,T)),h=T+1;continue}if(P==="/"){f=T;continue}}P==="["?u++:P==="]"?u--:P==="("?c++:P===")"&&c--}const y=o.length===0?s:s.slice(h);let b=y,w=!1;y.endsWith(Vf)?(b=y.slice(0,-1),w=!0):y.startsWith(Vf)&&(b=y.slice(1),w=!0);const x=f&&f>h?f-h:void 0;return db(o,w,b,x)};if(t){const s=t+cb,o=a;a=u=>u.startsWith(s)?o(u.slice(s.length)):db(ej,!1,u,void 0,!0)}if(n){const s=a;a=o=>n({className:o,parseClassName:s})}return a},nj=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((n,a)=>{t.set(n,1e6+a)}),n=>{const a=[];let s=[];for(let o=0;o<n.length;o++){const u=n[o],c=u[0]==="[",h=t.has(u);c||h?(s.length>0&&(s.sort(),a.push(...s),s=[]),a.push(u)):s.push(u)}return s.length>0&&(s.sort(),a.push(...s)),a}},rj=e=>({cache:JI(e.cacheSize),parseClassName:tj(e),sortModifiers:nj(e),...HI(e)}),aj=/\s+/,ij=(e,t)=>{const{parseClassName:n,getClassGroupId:a,getConflictingClassGroupIds:s,sortModifiers:o}=t,u=[],c=e.trim().split(aj);let h="";for(let f=c.length-1;f>=0;f-=1){const m=c[f],{isExternal:y,modifiers:b,hasImportantModifier:w,baseClassName:x,maybePostfixModifierPosition:T}=n(m);if(y){h=m+(h.length>0?" "+h:h);continue}let P=!!T,L=a(P?x.substring(0,T):x);if(!L){if(!P){h=m+(h.length>0?" "+h:h);continue}if(L=a(x),!L){h=m+(h.length>0?" "+h:h);continue}P=!1}const D=b.length===0?"":b.length===1?b[0]:o(b).join(":"),M=w?D+Vf:D,j=M+L;if(u.indexOf(j)>-1)continue;u.push(j);const K=s(L,P);for(let G=0;G<K.length;++G){const W=K[G];u.push(M+W)}h=m+(h.length>0?" "+h:h)}return h},sj=(...e)=>{let t=0,n,a,s="";for(;t<e.length;)(n=e[t++])&&(a=cx(n))&&(s&&(s+=" "),s+=a);return s},cx=e=>{if(typeof e=="string")return e;let t,n="";for(let a=0;a<e.length;a++)e[a]&&(t=cx(e[a]))&&(n&&(n+=" "),n+=t);return n},oj=(e,...t)=>{let n,a,s,o;const u=h=>{const f=t.reduce((m,y)=>y(m),e());return n=rj(f),a=n.cache.get,s=n.cache.set,o=c,c(h)},c=h=>{const f=a(h);if(f)return f;const m=ij(h,n);return s(h,m),m};return o=u,(...h)=>o(sj(...h))},lj=[],Ot=e=>{const t=n=>n[e]||lj;return t.isThemeGetter=!0,t},dx=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,hx=/^\((?:(\w[\w-]*):)?(.+)\)$/i,uj=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,cj=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,dj=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,hj=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,fj=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,pj=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ka=e=>uj.test(e),Ge=e=>!!e&&!Number.isNaN(Number(e)),xa=e=>!!e&&Number.isInteger(Number(e)),Kh=e=>e.endsWith("%")&&Ge(e.slice(0,-1)),Fr=e=>cj.test(e),fx=()=>!0,mj=e=>dj.test(e)&&!hj.test(e),em=()=>!1,gj=e=>fj.test(e),yj=e=>pj.test(e),vj=e=>!ve(e)&&!we(e),bj=e=>ja(e,gx,em),ve=e=>dx.test(e),Ja=e=>ja(e,yx,mj),hb=e=>ja(e,Cj,Ge),_j=e=>ja(e,bx,fx),wj=e=>ja(e,vx,em),fb=e=>ja(e,px,em),kj=e=>ja(e,mx,yj),yu=e=>ja(e,_x,gj),we=e=>hx.test(e),mo=e=>gi(e,yx),xj=e=>gi(e,vx),pb=e=>gi(e,px),Sj=e=>gi(e,gx),Pj=e=>gi(e,mx),vu=e=>gi(e,_x,!0),Tj=e=>gi(e,bx,!0),ja=(e,t,n)=>{const a=dx.exec(e);return a?a[1]?t(a[1]):n(a[2]):!1},gi=(e,t,n=!1)=>{const a=hx.exec(e);return a?a[1]?t(a[1]):n:!1},px=e=>e==="position"||e==="percentage",mx=e=>e==="image"||e==="url",gx=e=>e==="length"||e==="size"||e==="bg-size",yx=e=>e==="length",Cj=e=>e==="number",vx=e=>e==="family-name",bx=e=>e==="number"||e==="weight",_x=e=>e==="shadow",Ej=()=>{const e=Ot("color"),t=Ot("font"),n=Ot("text"),a=Ot("font-weight"),s=Ot("tracking"),o=Ot("leading"),u=Ot("breakpoint"),c=Ot("container"),h=Ot("spacing"),f=Ot("radius"),m=Ot("shadow"),y=Ot("inset-shadow"),b=Ot("text-shadow"),w=Ot("drop-shadow"),x=Ot("blur"),T=Ot("perspective"),P=Ot("aspect"),L=Ot("ease"),D=Ot("animate"),M=()=>["auto","avoid","all","avoid-page","page","left","right","column"],j=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],K=()=>[...j(),we,ve],G=()=>["auto","hidden","clip","visible","scroll"],W=()=>["auto","contain","none"],S=()=>[we,ve,h],Z=()=>[ka,"full","auto",...S()],X=()=>[xa,"none","subgrid",we,ve],_e=()=>["auto",{span:["full",xa,we,ve]},xa,we,ve],oe=()=>[xa,"auto",we,ve],Re=()=>["auto","min","max","fr",we,ve],fe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ce=()=>["start","end","center","stretch","center-safe","end-safe"],ue=()=>["auto",...S()],Me=()=>[ka,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...S()],H=()=>[ka,"screen","full","dvw","lvw","svw","min","max","fit",...S()],Y=()=>[ka,"screen","full","lh","dvh","lvh","svh","min","max","fit",...S()],$=()=>[e,we,ve],N=()=>[...j(),pb,fb,{position:[we,ve]}],q=()=>["no-repeat",{repeat:["","x","y","space","round"]}],xe=()=>["auto","cover","contain",Sj,bj,{size:[we,ve]}],Ae=()=>[Kh,mo,Ja],Se=()=>["","none","full",f,we,ve],Ce=()=>["",Ge,mo,Ja],qe=()=>["solid","dashed","dotted","double"],Xe=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Ue=()=>[Ge,Kh,pb,fb],jt=()=>["","none",x,we,ve],$n=()=>["none",Ge,we,ve],Tr=()=>["none",Ge,we,ve],pt=()=>[Ge,we,ve],en=()=>[ka,"full",...S()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Fr],breakpoint:[Fr],color:[fx],container:[Fr],"drop-shadow":[Fr],ease:["in","out","in-out"],font:[vj],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Fr],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Fr],shadow:[Fr],spacing:["px",Ge],text:[Fr],"text-shadow":[Fr],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ka,ve,we,P]}],container:["container"],columns:[{columns:[Ge,ve,we,c]}],"break-after":[{"break-after":M()}],"break-before":[{"break-before":M()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:K()}],overflow:[{overflow:G()}],"overflow-x":[{"overflow-x":G()}],"overflow-y":[{"overflow-y":G()}],overscroll:[{overscroll:W()}],"overscroll-x":[{"overscroll-x":W()}],"overscroll-y":[{"overscroll-y":W()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Z()}],"inset-x":[{"inset-x":Z()}],"inset-y":[{"inset-y":Z()}],start:[{"inset-s":Z(),start:Z()}],end:[{"inset-e":Z(),end:Z()}],"inset-bs":[{"inset-bs":Z()}],"inset-be":[{"inset-be":Z()}],top:[{top:Z()}],right:[{right:Z()}],bottom:[{bottom:Z()}],left:[{left:Z()}],visibility:["visible","invisible","collapse"],z:[{z:[xa,"auto",we,ve]}],basis:[{basis:[ka,"full","auto",c,...S()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Ge,ka,"auto","initial","none",ve]}],grow:[{grow:["",Ge,we,ve]}],shrink:[{shrink:["",Ge,we,ve]}],order:[{order:[xa,"first","last","none",we,ve]}],"grid-cols":[{"grid-cols":X()}],"col-start-end":[{col:_e()}],"col-start":[{"col-start":oe()}],"col-end":[{"col-end":oe()}],"grid-rows":[{"grid-rows":X()}],"row-start-end":[{row:_e()}],"row-start":[{"row-start":oe()}],"row-end":[{"row-end":oe()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":Re()}],"auto-rows":[{"auto-rows":Re()}],gap:[{gap:S()}],"gap-x":[{"gap-x":S()}],"gap-y":[{"gap-y":S()}],"justify-content":[{justify:[...fe(),"normal"]}],"justify-items":[{"justify-items":[...ce(),"normal"]}],"justify-self":[{"justify-self":["auto",...ce()]}],"align-content":[{content:["normal",...fe()]}],"align-items":[{items:[...ce(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ce(),{baseline:["","last"]}]}],"place-content":[{"place-content":fe()}],"place-items":[{"place-items":[...ce(),"baseline"]}],"place-self":[{"place-self":["auto",...ce()]}],p:[{p:S()}],px:[{px:S()}],py:[{py:S()}],ps:[{ps:S()}],pe:[{pe:S()}],pbs:[{pbs:S()}],pbe:[{pbe:S()}],pt:[{pt:S()}],pr:[{pr:S()}],pb:[{pb:S()}],pl:[{pl:S()}],m:[{m:ue()}],mx:[{mx:ue()}],my:[{my:ue()}],ms:[{ms:ue()}],me:[{me:ue()}],mbs:[{mbs:ue()}],mbe:[{mbe:ue()}],mt:[{mt:ue()}],mr:[{mr:ue()}],mb:[{mb:ue()}],ml:[{ml:ue()}],"space-x":[{"space-x":S()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":S()}],"space-y-reverse":["space-y-reverse"],size:[{size:Me()}],"inline-size":[{inline:["auto",...H()]}],"min-inline-size":[{"min-inline":["auto",...H()]}],"max-inline-size":[{"max-inline":["none",...H()]}],"block-size":[{block:["auto",...Y()]}],"min-block-size":[{"min-block":["auto",...Y()]}],"max-block-size":[{"max-block":["none",...Y()]}],w:[{w:[c,"screen",...Me()]}],"min-w":[{"min-w":[c,"screen","none",...Me()]}],"max-w":[{"max-w":[c,"screen","none","prose",{screen:[u]},...Me()]}],h:[{h:["screen","lh",...Me()]}],"min-h":[{"min-h":["screen","lh","none",...Me()]}],"max-h":[{"max-h":["screen","lh",...Me()]}],"font-size":[{text:["base",n,mo,Ja]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[a,Tj,_j]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Kh,ve]}],"font-family":[{font:[xj,wj,t]}],"font-features":[{"font-features":[ve]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,we,ve]}],"line-clamp":[{"line-clamp":[Ge,"none",we,hb]}],leading:[{leading:[o,...S()]}],"list-image":[{"list-image":["none",we,ve]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",we,ve]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:$()}],"text-color":[{text:$()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...qe(),"wavy"]}],"text-decoration-thickness":[{decoration:[Ge,"from-font","auto",we,Ja]}],"text-decoration-color":[{decoration:$()}],"underline-offset":[{"underline-offset":[Ge,"auto",we,ve]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:S()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",we,ve]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",we,ve]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:N()}],"bg-repeat":[{bg:q()}],"bg-size":[{bg:xe()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},xa,we,ve],radial:["",we,ve],conic:[xa,we,ve]},Pj,kj]}],"bg-color":[{bg:$()}],"gradient-from-pos":[{from:Ae()}],"gradient-via-pos":[{via:Ae()}],"gradient-to-pos":[{to:Ae()}],"gradient-from":[{from:$()}],"gradient-via":[{via:$()}],"gradient-to":[{to:$()}],rounded:[{rounded:Se()}],"rounded-s":[{"rounded-s":Se()}],"rounded-e":[{"rounded-e":Se()}],"rounded-t":[{"rounded-t":Se()}],"rounded-r":[{"rounded-r":Se()}],"rounded-b":[{"rounded-b":Se()}],"rounded-l":[{"rounded-l":Se()}],"rounded-ss":[{"rounded-ss":Se()}],"rounded-se":[{"rounded-se":Se()}],"rounded-ee":[{"rounded-ee":Se()}],"rounded-es":[{"rounded-es":Se()}],"rounded-tl":[{"rounded-tl":Se()}],"rounded-tr":[{"rounded-tr":Se()}],"rounded-br":[{"rounded-br":Se()}],"rounded-bl":[{"rounded-bl":Se()}],"border-w":[{border:Ce()}],"border-w-x":[{"border-x":Ce()}],"border-w-y":[{"border-y":Ce()}],"border-w-s":[{"border-s":Ce()}],"border-w-e":[{"border-e":Ce()}],"border-w-bs":[{"border-bs":Ce()}],"border-w-be":[{"border-be":Ce()}],"border-w-t":[{"border-t":Ce()}],"border-w-r":[{"border-r":Ce()}],"border-w-b":[{"border-b":Ce()}],"border-w-l":[{"border-l":Ce()}],"divide-x":[{"divide-x":Ce()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":Ce()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...qe(),"hidden","none"]}],"divide-style":[{divide:[...qe(),"hidden","none"]}],"border-color":[{border:$()}],"border-color-x":[{"border-x":$()}],"border-color-y":[{"border-y":$()}],"border-color-s":[{"border-s":$()}],"border-color-e":[{"border-e":$()}],"border-color-bs":[{"border-bs":$()}],"border-color-be":[{"border-be":$()}],"border-color-t":[{"border-t":$()}],"border-color-r":[{"border-r":$()}],"border-color-b":[{"border-b":$()}],"border-color-l":[{"border-l":$()}],"divide-color":[{divide:$()}],"outline-style":[{outline:[...qe(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Ge,we,ve]}],"outline-w":[{outline:["",Ge,mo,Ja]}],"outline-color":[{outline:$()}],shadow:[{shadow:["","none",m,vu,yu]}],"shadow-color":[{shadow:$()}],"inset-shadow":[{"inset-shadow":["none",y,vu,yu]}],"inset-shadow-color":[{"inset-shadow":$()}],"ring-w":[{ring:Ce()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:$()}],"ring-offset-w":[{"ring-offset":[Ge,Ja]}],"ring-offset-color":[{"ring-offset":$()}],"inset-ring-w":[{"inset-ring":Ce()}],"inset-ring-color":[{"inset-ring":$()}],"text-shadow":[{"text-shadow":["none",b,vu,yu]}],"text-shadow-color":[{"text-shadow":$()}],opacity:[{opacity:[Ge,we,ve]}],"mix-blend":[{"mix-blend":[...Xe(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Xe()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Ge]}],"mask-image-linear-from-pos":[{"mask-linear-from":Ue()}],"mask-image-linear-to-pos":[{"mask-linear-to":Ue()}],"mask-image-linear-from-color":[{"mask-linear-from":$()}],"mask-image-linear-to-color":[{"mask-linear-to":$()}],"mask-image-t-from-pos":[{"mask-t-from":Ue()}],"mask-image-t-to-pos":[{"mask-t-to":Ue()}],"mask-image-t-from-color":[{"mask-t-from":$()}],"mask-image-t-to-color":[{"mask-t-to":$()}],"mask-image-r-from-pos":[{"mask-r-from":Ue()}],"mask-image-r-to-pos":[{"mask-r-to":Ue()}],"mask-image-r-from-color":[{"mask-r-from":$()}],"mask-image-r-to-color":[{"mask-r-to":$()}],"mask-image-b-from-pos":[{"mask-b-from":Ue()}],"mask-image-b-to-pos":[{"mask-b-to":Ue()}],"mask-image-b-from-color":[{"mask-b-from":$()}],"mask-image-b-to-color":[{"mask-b-to":$()}],"mask-image-l-from-pos":[{"mask-l-from":Ue()}],"mask-image-l-to-pos":[{"mask-l-to":Ue()}],"mask-image-l-from-color":[{"mask-l-from":$()}],"mask-image-l-to-color":[{"mask-l-to":$()}],"mask-image-x-from-pos":[{"mask-x-from":Ue()}],"mask-image-x-to-pos":[{"mask-x-to":Ue()}],"mask-image-x-from-color":[{"mask-x-from":$()}],"mask-image-x-to-color":[{"mask-x-to":$()}],"mask-image-y-from-pos":[{"mask-y-from":Ue()}],"mask-image-y-to-pos":[{"mask-y-to":Ue()}],"mask-image-y-from-color":[{"mask-y-from":$()}],"mask-image-y-to-color":[{"mask-y-to":$()}],"mask-image-radial":[{"mask-radial":[we,ve]}],"mask-image-radial-from-pos":[{"mask-radial-from":Ue()}],"mask-image-radial-to-pos":[{"mask-radial-to":Ue()}],"mask-image-radial-from-color":[{"mask-radial-from":$()}],"mask-image-radial-to-color":[{"mask-radial-to":$()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":j()}],"mask-image-conic-pos":[{"mask-conic":[Ge]}],"mask-image-conic-from-pos":[{"mask-conic-from":Ue()}],"mask-image-conic-to-pos":[{"mask-conic-to":Ue()}],"mask-image-conic-from-color":[{"mask-conic-from":$()}],"mask-image-conic-to-color":[{"mask-conic-to":$()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:N()}],"mask-repeat":[{mask:q()}],"mask-size":[{mask:xe()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",we,ve]}],filter:[{filter:["","none",we,ve]}],blur:[{blur:jt()}],brightness:[{brightness:[Ge,we,ve]}],contrast:[{contrast:[Ge,we,ve]}],"drop-shadow":[{"drop-shadow":["","none",w,vu,yu]}],"drop-shadow-color":[{"drop-shadow":$()}],grayscale:[{grayscale:["",Ge,we,ve]}],"hue-rotate":[{"hue-rotate":[Ge,we,ve]}],invert:[{invert:["",Ge,we,ve]}],saturate:[{saturate:[Ge,we,ve]}],sepia:[{sepia:["",Ge,we,ve]}],"backdrop-filter":[{"backdrop-filter":["","none",we,ve]}],"backdrop-blur":[{"backdrop-blur":jt()}],"backdrop-brightness":[{"backdrop-brightness":[Ge,we,ve]}],"backdrop-contrast":[{"backdrop-contrast":[Ge,we,ve]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Ge,we,ve]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Ge,we,ve]}],"backdrop-invert":[{"backdrop-invert":["",Ge,we,ve]}],"backdrop-opacity":[{"backdrop-opacity":[Ge,we,ve]}],"backdrop-saturate":[{"backdrop-saturate":[Ge,we,ve]}],"backdrop-sepia":[{"backdrop-sepia":["",Ge,we,ve]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":S()}],"border-spacing-x":[{"border-spacing-x":S()}],"border-spacing-y":[{"border-spacing-y":S()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",we,ve]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Ge,"initial",we,ve]}],ease:[{ease:["linear","initial",L,we,ve]}],delay:[{delay:[Ge,we,ve]}],animate:[{animate:["none",D,we,ve]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[T,we,ve]}],"perspective-origin":[{"perspective-origin":K()}],rotate:[{rotate:$n()}],"rotate-x":[{"rotate-x":$n()}],"rotate-y":[{"rotate-y":$n()}],"rotate-z":[{"rotate-z":$n()}],scale:[{scale:Tr()}],"scale-x":[{"scale-x":Tr()}],"scale-y":[{"scale-y":Tr()}],"scale-z":[{"scale-z":Tr()}],"scale-3d":["scale-3d"],skew:[{skew:pt()}],"skew-x":[{"skew-x":pt()}],"skew-y":[{"skew-y":pt()}],transform:[{transform:[we,ve,"","none","gpu","cpu"]}],"transform-origin":[{origin:K()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:en()}],"translate-x":[{"translate-x":en()}],"translate-y":[{"translate-y":en()}],"translate-z":[{"translate-z":en()}],"translate-none":["translate-none"],accent:[{accent:$()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:$()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",we,ve]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":S()}],"scroll-mx":[{"scroll-mx":S()}],"scroll-my":[{"scroll-my":S()}],"scroll-ms":[{"scroll-ms":S()}],"scroll-me":[{"scroll-me":S()}],"scroll-mbs":[{"scroll-mbs":S()}],"scroll-mbe":[{"scroll-mbe":S()}],"scroll-mt":[{"scroll-mt":S()}],"scroll-mr":[{"scroll-mr":S()}],"scroll-mb":[{"scroll-mb":S()}],"scroll-ml":[{"scroll-ml":S()}],"scroll-p":[{"scroll-p":S()}],"scroll-px":[{"scroll-px":S()}],"scroll-py":[{"scroll-py":S()}],"scroll-ps":[{"scroll-ps":S()}],"scroll-pe":[{"scroll-pe":S()}],"scroll-pbs":[{"scroll-pbs":S()}],"scroll-pbe":[{"scroll-pbe":S()}],"scroll-pt":[{"scroll-pt":S()}],"scroll-pr":[{"scroll-pr":S()}],"scroll-pb":[{"scroll-pb":S()}],"scroll-pl":[{"scroll-pl":S()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",we,ve]}],fill:[{fill:["none",...$()]}],"stroke-w":[{stroke:[Ge,mo,Ja,hb]}],stroke:[{stroke:["none",...$()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Rj=oj(Ej);function Ct(...e){return Rj(FI(e))}const Aj=I.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",children:[I.jsx("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1Z",fill:"#4285F4"}),I.jsx("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23Z",fill:"#34A853"}),I.jsx("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18A10.96 10.96 0 0 0 1 12c0 1.77.42 3.44 1.18 4.93l3.66-2.84Z",fill:"#FBBC05"}),I.jsx("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53Z",fill:"#EA4335"})]}),Lj=I.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor",children:I.jsx("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12Z"})}),Dj={google:Aj,github:Lj},Mj={google:"Google",github:"GitHub",microsoft:"Microsoft",discord:"Discord",apple:"Apple"};function Nj(e){return Mj[e]||String(e||"").replace(/-/g," ")}function Oj(){Ko();const{isOpen:e,closeLoginModal:t}=bw(),{enabled:n,signedIn:a,refreshUser:s,signInWithPassword:o,signUp:u,signInWithOAuth:c,getPublicAuthConfig:h}=Ho(),[f,m]=k.useState("signin"),[y,b]=k.useState(""),[w,x]=k.useState(""),[T,P]=k.useState(""),[L,D]=k.useState(!1),[M,j]=k.useState(null),[K,G]=k.useState(null),[W,S]=k.useState(!1),[Z,X]=k.useState(!0),[_e,oe]=k.useState([]),[Re,fe]=k.useState(8);k.useEffect(()=>{e&&(j(null),G(null),m("signin"),b(""),x(""),P(""),S(!1))},[e]),k.useEffect(()=>{if(!e||!n){X(!1);return}let H=!0;return(async()=>{const{data:Y,error:$}=await h();if(H){if($||!Y)oe(["google","github"]);else{const N=Array.isArray(Y.oAuthProviders)?Y.oAuthProviders:[],q=Array.isArray(Y.customOAuthProviders)?Y.customOAuthProviders:[];oe([...N,...q]),typeof Y.passwordMinLength=="number"&&Y.passwordMinLength>0&&fe(Y.passwordMinLength)}X(!1)}})(),()=>{H=!1}},[e,n,h]),k.useEffect(()=>{e&&a&&t()},[e,a,t]);const ce=k.useMemo(()=>typeof window>"u"?"":!!window.webkit?.messageHandlers?.nativeOAuth?`${window.location.origin}/auth/callback`:`${window.location.origin}/`,[]),ue=k.useCallback(async H=>{j(null),D(!0);try{const{error:Y}=await c(H,ce);Y&&j(Y.message||String(Y))}finally{D(!1)}},[c,ce]),Me=k.useCallback(async H=>{H.preventDefault(),j(null),D(!0);try{if(f==="signup"){const{data:$,error:N}=await u({email:y.trim(),password:w,name:T.trim()||void 0});if(N){j(N.message||String(N));return}if($?.requireEmailVerification){G(Fe("login.verify_email_pending")),m("signin");return}await s();return}const{error:Y}=await o({email:y.trim(),password:w});if(Y){j(Y.message||String(Y));return}await s()}finally{D(!1)}},[f,y,w,T,u,o,s]);return k.useEffect(()=>{if(!e)return;const H=Y=>{Y.key==="Escape"&&t()};return document.addEventListener("keydown",H),()=>document.removeEventListener("keydown",H)},[e,t]),n?I.jsx(DO,{children:e&&I.jsxs(Wh.div,{className:"fixed inset-0 z-[100] flex items-center justify-center p-4",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},children:[I.jsx(Wh.div,{className:"absolute inset-0 bg-black/40 dark:bg-black/60 ",onClick:t,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0}}),I.jsxs(Wh.div,{className:"relative w-full max-w-[420px] rounded-2xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-950 p-6 shadow-2xl",initial:{opacity:0,scale:.95,y:10},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:10},transition:{duration:.2},onClick:H=>H.stopPropagation(),children:[I.jsx("button",{type:"button",onClick:t,className:"absolute right-4 top-4 text-oai-gray-400 dark:text-oai-gray-500 hover:text-oai-black dark:hover:text-white transition-colors",children:I.jsx(gw,{className:"h-5 w-5"})}),I.jsxs("div",{className:"text-center mb-6",children:[I.jsxs("div",{className:"flex items-center justify-center gap-2 mb-2",children:[I.jsx("img",{src:"/app-icon.png",alt:"",width:28,height:28,className:"rounded-md"}),I.jsx("span",{className:"text-lg font-semibold text-oai-black dark:text-white",children:"Token Tracker"})]}),I.jsx("p",{className:"text-sm text-oai-gray-500",children:Fe("login_modal.subtitle")})]}),K&&I.jsx("div",{className:"mb-4 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900/50 px-3 py-2 text-xs text-oai-gray-700 dark:text-oai-gray-300",children:K}),M&&I.jsx("p",{className:"mb-4 text-sm text-red-500 dark:text-red-400",role:"alert",children:M}),I.jsx("div",{className:"space-y-2.5 mb-5",children:Z?I.jsx("div",{className:"h-10 rounded-lg bg-oai-gray-100 dark:bg-oai-gray-900 animate-pulse"}):_e.map(H=>I.jsxs("button",{type:"button",disabled:L,onClick:()=>ue(H),className:Ct("w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-700 bg-oai-gray-50 dark:bg-oai-gray-900 text-sm font-medium text-oai-black dark:text-white","hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 hover:border-oai-gray-300 dark:hover:border-oai-gray-600 transition-colors disabled:opacity-50","flex items-center justify-center gap-2.5"),children:[Dj[H]||null,Fe("login.oauth.continue",{provider:Nj(H)})]},H))}),W?I.jsxs(I.Fragment,{children:[I.jsxs("div",{className:"relative mb-5",children:[I.jsx("div",{className:"absolute inset-0 flex items-center",children:I.jsx("span",{className:"w-full border-t border-oai-gray-200 dark:border-oai-gray-800"})}),I.jsx("div",{className:"relative flex justify-center text-xs uppercase tracking-wider",children:I.jsx("span",{className:"bg-white dark:bg-oai-gray-950 px-3 text-oai-gray-400 dark:text-oai-gray-600",children:Fe("login_modal.divider_email")})})]}),I.jsxs("div",{className:"flex rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 p-0.5 bg-oai-gray-50 dark:bg-oai-gray-900/50 mb-4",children:[I.jsx("button",{type:"button",className:Ct("flex-1 py-1.5 text-xs font-medium rounded-md transition-colors",f==="signin"?"bg-white dark:bg-oai-gray-800 text-oai-black dark:text-white shadow-sm":"text-oai-gray-500 hover:text-oai-gray-700 dark:hover:text-oai-gray-300"),onClick:()=>{m("signin"),j(null)},children:Fe("login.tab.sign_in")}),I.jsx("button",{type:"button",className:Ct("flex-1 py-1.5 text-xs font-medium rounded-md transition-colors",f==="signup"?"bg-white dark:bg-oai-gray-800 text-oai-black dark:text-white shadow-sm":"text-oai-gray-500 hover:text-oai-gray-700 dark:hover:text-oai-gray-300"),onClick:()=>{m("signup"),j(null)},children:Fe("login.tab.sign_up")})]}),I.jsxs("form",{onSubmit:Me,className:"space-y-3",children:[f==="signup"&&I.jsxs("div",{children:[I.jsx("label",{htmlFor:"modal-name",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:Fe("login.field.name")}),I.jsx("input",{id:"modal-name",type:"text",autoComplete:"name",value:T,onChange:H=>P(H.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500",placeholder:Fe("login.field.name_placeholder")})]}),I.jsxs("div",{children:[I.jsx("label",{htmlFor:"modal-email",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:Fe("login.field.email")}),I.jsx("input",{id:"modal-email",type:"email",autoComplete:"email",required:!0,value:y,onChange:H=>b(H.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500"})]}),I.jsxs("div",{children:[I.jsx("label",{htmlFor:"modal-password",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:Fe("login.field.password")}),I.jsx("input",{id:"modal-password",type:"password",autoComplete:f==="signup"?"new-password":"current-password",required:!0,minLength:f==="signup"?Re:void 0,value:w,onChange:H=>x(H.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500"}),f==="signup"&&I.jsx("p",{className:"mt-1 text-xs text-oai-gray-400 dark:text-oai-gray-600",children:Fe("login.password_hint",{min:String(Re)})})]}),I.jsx("button",{type:"submit",disabled:L,className:"w-full h-10 rounded-lg bg-oai-gray-900 dark:bg-white text-white dark:text-oai-gray-950 text-sm font-semibold hover:bg-oai-gray-800 dark:hover:bg-oai-gray-100 transition-colors disabled:opacity-50",children:Fe(f==="signup"?"login.submit.sign_up":"login.submit.sign_in")})]})]}):I.jsxs(I.Fragment,{children:[I.jsxs("div",{className:"relative mb-5",children:[I.jsx("div",{className:"absolute inset-0 flex items-center",children:I.jsx("span",{className:"w-full border-t border-oai-gray-200 dark:border-oai-gray-800"})}),I.jsx("div",{className:"relative flex justify-center text-xs uppercase tracking-wider",children:I.jsx("span",{className:"bg-white dark:bg-oai-gray-950 px-3 text-oai-gray-400 dark:text-oai-gray-600",children:Fe("login.divider")})})]}),I.jsxs("button",{type:"button",onClick:()=>S(!0),className:Ct("w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-700 bg-oai-gray-50 dark:bg-oai-gray-900 text-sm font-medium text-oai-black dark:text-white","hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 hover:border-oai-gray-300 dark:hover:border-oai-gray-600 transition-colors","flex items-center justify-center gap-2.5"),children:[I.jsx(yD,{className:"h-[18px] w-[18px] text-oai-gray-500 dark:text-oai-gray-400",strokeWidth:1.75}),Fe("login_modal.continue_email")]})]})]})]})}):null}const Ij={VITE_INSFORGE_BASE_URL:"https://srctyff5.us-east.insforge.app"};function jj(){if(typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"))return"";const t=typeof import.meta<"u"?Ij:void 0;return(t?.VITE_TOKENTRACKER_BACKEND_BASE_URL||t?.VITE_INSFORGE_BASE_URL||"").trim()}function h3(){return fi()}function Uj(e=""){if(typeof e!="string"||e.length===0)return!1;const t=new URLSearchParams(e),n=String(t.get("screenshot")||"").toLowerCase();return n==="1"||n==="true"}const Bj=300*1e3,Fj=720*60*1e3;function tm(e){return typeof e=="string"&&/^https?:\/\//i.test(e.trim())}function Vj(e,t=Date.now()){if(!e?.token||!e?.deviceId||!e?.issuedAt)return!0;const n=Date.parse(e.issuedAt);return Number.isFinite(n)?n+Fj<=t:!0}async function wx(e,t){const n=fi();if(!tm(n)||!e)return;const a=n.replace(/\/$/,""),s=_c(),o={Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${e}`};s&&(o.apikey=s);try{await fetch(`${a}/functions/tokentracker-leaderboard-refresh`,{method:"POST",headers:o,body:JSON.stringify({period:"week",source:t})})}catch{}}async function zj(e){const t=fi();if(!tm(t)||!e)return null;const n=t.replace(/\/$/,""),a=_c(),s={Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${e}`};a&&(s.apikey=a);const o=typeof navigator<"u"&&typeof navigator.platform=="string"?navigator.platform:"web",u=await fetch(`${n}/functions/tokentracker-device-token-issue`,{method:"POST",headers:s,body:JSON.stringify({device_name:"Token Tracker (dashboard)",platform:o})});if(!u.ok)return null;const c=await u.json().catch(()=>null),h=typeof c?.token=="string"?c.token:null,f=typeof c?.device_id=="string"?c.device_id:null;return!h||!f?null:{token:h,deviceId:f,issuedAt:typeof c?.created_at=="string"?c.created_at:new Date().toISOString()}}async function mb(e){const{deviceToken:t,insforgeBaseUrl:n}=e,a={deviceToken:t},s=n||fi();tm(s)&&(a.insforgeBaseUrl=s.trim());const o=await _p(),u=await fetch("/functions/tokentracker-local-sync",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json",...o},body:JSON.stringify(a)}),c=await u.json().catch(()=>({}));if(!u.ok){const h=typeof c.error=="string"?c.error:`HTTP ${u.status}`;throw new Error(h)}return c}async function gb(e){const t=await e();if(!t)return null;const n=W_();if(n&&!Vj(n))return n;const a=await zj(t);return a?(_A(a),a):null}async function kx(e){let t=await e();if(!t)return null;let n=await gb(async()=>t);if(!n)return t;try{return await mb({deviceToken:n.token,insforgeBaseUrl:fi()}),t}catch(a){if(!W_()||(K_(),t=await e(),!t)||(n=await gb(async()=>t),!n))throw a;return await mb({deviceToken:n.token,insforgeBaseUrl:fi()}),t}}async function $j(e){const t=wA();if(Date.now()-t<Bj)return;const n=await kx(e);n&&(q_(Date.now()),await wx(n,"cloud-sync-auto"))}async function f3(e){const t=await kx(e);t&&(q_(Date.now()),await wx(t,"cloud-sync-now"))}function Hj(e){const t=e.replace(/\/+$/,"")||"/";return t==="/share"||t==="/share.html"||t.startsWith("/share/")}function Wj(e){const t=e.replace(/\/+$/,"")||"/";return t==="/login"||t==="/landing"||Hj(t)?!1:t==="/"||t==="/dashboard"||t.startsWith("/leaderboard")}function Kj(){const e=Fn(),t=Ho(),n=k.useRef(!1);k.useEffect(()=>{if(!vA()||!Wj(e.pathname||"/")||!t.enabled||!t.signedIn||t.loading||!bA())return;let a=!1;const s=window.setTimeout(()=>{(async()=>{if(!(a||n.current)){n.current=!0;try{await $j(()=>t.getAccessToken())}catch(o){console.warn("[tokentracker] cloud usage sync:",o)}finally{n.current=!1}}})()},2500);return()=>{a=!0,window.clearTimeout(s)}},[e.pathname,t.enabled,t.signedIn,t.loading,t.getAccessToken])}function qj(){const e=k.useContext(yw);if(e===null)throw new Error("useTheme must be used within a ThemeProvider");return e}function Gj({prefersReducedMotion:e,screenshotCapture:t}){return!(t||e)}function Yj(e){if(!e||typeof e!="object")return null;const t=e.user_metadata&&typeof e.user_metadata=="object"?e.user_metadata:{},n=e.profile&&typeof e.profile=="object"?e.profile:{},a=t.avatar_url||t.picture||n.avatar_url||e.avatar_url;return typeof a=="string"&&a.trim()?a.trim():null}function yb(e){const t=String(e||"").trim();if(!t)return"?";const n=t.split(/\s+/).filter(Boolean);return n.length>=2?(n[0][0]+n[n.length-1][0]).toUpperCase():t.slice(0,2).toUpperCase()}function vb({className:e,variant:t="header",collapsed:n=!1,onAfterAction:a}){Ko();const s=t==="sidebar",{enabled:o,loading:u,signedIn:c,user:h,displayName:f}=Ho(),{openLoginModal:m}=bw(),y=fc(),b=k.useMemo(()=>Yj(h),[h]);if(!o)return null;if(u)return I.jsx("div",{className:Ct("h-9 w-9 shrink-0 rounded-full bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse",e),"aria-hidden":!0});if(!c)return s?I.jsxs("button",{type:"button",onClick:()=>{m(),a?.()},className:Ct("flex items-center gap-2 rounded-md px-2 py-1.5 text-[13px] font-medium text-oai-gray-700 dark:text-oai-gray-300 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500 min-w-0",n?"h-8 w-8 justify-center px-0":"w-full",e),"aria-label":Fe("header.auth.sign_in_aria"),title:n?Fe("header.auth.sign_in_aria"):void 0,children:[I.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:I.jsx("img",{src:"/app-icon.png",alt:"",width:18,height:18,className:"h-[18px] w-[18px] rounded"})}),!n&&I.jsx("span",{className:"truncate flex-1 text-left",children:Fe("header.auth.sign_in_aria")})]}):I.jsx("button",{type:"button",onClick:m,className:Ct("shrink-0 inline-flex h-9 items-center justify-center gap-1.5 rounded-full px-5 text-sm font-medium transition-colors duration-200 ease-out shadow-sm ring-1 ring-oai-gray-200 dark:ring-white/10 bg-oai-gray-900 text-white hover:bg-oai-gray-800 active:bg-oai-gray-950 dark:bg-white dark:text-oai-gray-900 dark:hover:bg-oai-gray-100 dark:active:bg-oai-gray-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-oai-gray-950",e),"aria-label":Fe("header.auth.sign_in_aria"),children:Fe("header.auth.sign_in_aria")});const w=()=>{y("/settings"),a?.()};return I.jsx("div",{className:Ct(s?"relative flex w-full shrink-0 items-center":"relative flex shrink-0 items-center",e),children:I.jsxs("button",{type:"button",onClick:w,className:Ct(s?Ct("flex w-full items-center gap-2 rounded-md px-2 py-1.5 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 transition-colors min-w-0",n&&"justify-center px-0 py-0 h-9 w-9"):"flex items-center gap-2 rounded-full pl-1 pr-2 py-1 border border-transparent hover:bg-oai-gray-100 dark:hover:bg-oai-gray-900/80 hover:border-oai-gray-200 dark:hover:border-oai-gray-800 transition-colors"),"aria-label":Fe("header.auth.open_settings"),title:s&&n?f:void 0,children:[s?I.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:b?I.jsx("img",{src:b,alt:"",width:20,height:20,className:"h-5 w-5 rounded-full object-cover ring-1 ring-oai-gray-300 dark:ring-oai-gray-700",referrerPolicy:"no-referrer"}):I.jsx("span",{className:"flex h-5 w-5 items-center justify-center rounded-full bg-oai-brand-600 text-[9px] font-semibold text-white ring-1 ring-oai-brand-500/50",children:yb(f)})}):b?I.jsx("img",{src:b,alt:"",width:32,height:32,className:"h-8 w-8 rounded-full object-cover ring-1 ring-oai-gray-300 dark:ring-oai-gray-700 shrink-0",referrerPolicy:"no-referrer"}):I.jsx("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-oai-brand-600 text-xs font-semibold text-white ring-1 ring-oai-brand-500/50",children:yb(f)}),s?!n&&I.jsx("span",{className:"truncate text-[13px] font-medium text-oai-gray-900 dark:text-oai-gray-200 flex-1 text-left min-w-0",children:f}):I.jsx("span",{className:"hidden sm:inline truncate text-sm font-medium text-oai-gray-900 dark:text-oai-gray-200 max-w-[120px]",children:f})]})})}const zf="tt.sidebarCollapsed";function Zj(){return[{id:"general",label:Fe("nav.group.general"),items:[{id:"usage",to:"/dashboard",icon:uD,label:Fe("nav.usage")},{id:"limits",to:"/limits",icon:dD,label:Fe("nav.limits")},{id:"leaderboard",to:"/leaderboard",icon:MD,label:Fe("nav.leaderboard")}]},{id:"tools",label:Fe("nav.group.tools"),items:[{id:"widgets",to:"/widgets",icon:mD,label:Fe("nav.widgets")},{id:"skills",to:"/skills",icon:SD,label:Fe("nav.skills")},{id:"ip-check",to:"/ip-check",icon:fD,label:Fe("nav.ip_check")}]},{id:"account",label:Fe("nav.group.account"),items:[{id:"settings",to:"/settings",icon:ED,label:Fe("nav.settings")}]}]}function Qj(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(zf)==="1"}catch{return!1}}function Xj(){const[e,t]=k.useState(Qj),n=k.useCallback(()=>{t(a=>{const s=!a;try{typeof window<"u"&&window.localStorage.setItem(zf,s?"1":"0")}catch{}return s})},[]);return k.useEffect(()=>{if(typeof window>"u")return;const a=s=>{s.key===zf&&t(s.newValue==="1")};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)},[]),{collapsed:e,toggle:n}}function Jj(e,t){const n=e.replace(/\/+$/,"")||"/";return t==="/dashboard"?n==="/dashboard"||n==="/":t==="/leaderboard"?n==="/leaderboard"||n.startsWith("/leaderboard/"):n===t}function e4({label:e,collapsed:t,first:n}){return t?n?null:I.jsx("div",{className:"mx-2 my-2 h-px bg-oai-gray-200/70 dark:bg-oai-gray-800/70","aria-hidden":!0}):I.jsx("div",{className:Ct("px-3 pb-1 text-[10px] uppercase tracking-wider text-oai-gray-500 dark:text-oai-gray-500",n?"pt-2":"pt-4"),children:e})}function t4({item:e,collapsed:t,active:n,onClick:a}){const s=e.icon;return I.jsxs(mc,{to:e.to,onClick:a,title:t?e.label:void 0,"aria-current":n?"page":void 0,className:Ct("flex items-center gap-2 rounded-md px-2 py-1.5 text-[13px] no-underline transition-colors",t&&"justify-center px-0 py-2",n?"bg-oai-gray-200/70 text-oai-black font-medium dark:bg-oai-gray-800 dark:text-white":"text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/50 hover:text-oai-black dark:hover:bg-oai-gray-800/60 dark:hover:text-white"),children:[I.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:I.jsx(s,{className:"h-[15px] w-[15px]","aria-hidden":!0})}),!t&&I.jsx("span",{className:"truncate",children:e.label})]})}function n4({as:e="button",title:t,onClick:n,href:a,children:s,className:o,...u}){const c=Ct("flex h-10 w-10 items-center justify-center rounded-lg text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors no-underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",o);return e==="a"?I.jsx("a",{href:a,target:"_blank",rel:"noopener noreferrer",title:t,"aria-label":t,className:c,...u,children:s}):I.jsx("button",{type:"button",title:t,"aria-label":t,onClick:n,className:c,...u,children:s})}function r4({repo:e="mm7894215/TokenTracker",glassChrome:t=!1}){const[n,a]=k.useState(null);return k.useEffect(()=>{if(typeof window>"u")return;const s=typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;Gj({prefersReducedMotion:s,screenshotCapture:!1})&&fetch(`https://api.github.com/repos/${e}`).then(o=>o.json()).then(o=>{o&&typeof o.stargazers_count=="number"&&a(o.stargazers_count)}).catch(()=>{})},[e]),I.jsxs("a",{href:`https://github.com/${e}`,target:"_blank",rel:"noopener noreferrer","aria-label":n!==null?`Star on GitHub (${n})`:"Star on GitHub",className:Ct("inline-flex h-7 items-center gap-1.5 rounded-full px-2.5 text-xs font-medium transition-colors no-underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",t?"border border-gray-500/20 dark:border-gray-500/30 bg-gray-500/[0.04] dark:bg-gray-500/[0.06] backdrop-blur-[2px] text-oai-gray-700 dark:text-oai-gray-300 hover:bg-gray-500/10 dark:hover:bg-gray-500/12 hover:border-gray-500/30 dark:hover:border-gray-500/40 hover:text-oai-black dark:hover:text-white":"border border-oai-gray-200 dark:border-oai-gray-700 text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white hover:border-oai-gray-300 dark:hover:border-oai-gray-600"),children:[I.jsx("svg",{height:"12",viewBox:"0 0 16 16",width:"12",className:"shrink-0 fill-current",children:I.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"})}),I.jsx("span",{children:"Star"}),n!==null&&I.jsx("span",{className:"text-[10px] text-oai-gray-500 dark:text-oai-gray-500 tabular-nums",children:n})]})}const a4=[{value:"light",label:"Light",Icon:mw},{value:"dark",label:"Dark",Icon:pw},{value:"system",label:"System",Icon:wD}];function i4({theme:e,resolvedTheme:t,onSetTheme:n,glassChrome:a=!1}){const[s,o]=k.useState(!1),u=k.useRef(null),c=t==="dark"?pw:mw;return k.useEffect(()=>{if(!s)return;const h=m=>{u.current&&!u.current.contains(m.target)&&o(!1)},f=m=>{m.key==="Escape"&&o(!1)};return document.addEventListener("mousedown",h),document.addEventListener("keydown",f),()=>{document.removeEventListener("mousedown",h),document.removeEventListener("keydown",f)}},[s]),I.jsxs("div",{ref:u,className:"relative",children:[I.jsx("button",{type:"button","aria-label":"Theme","aria-expanded":s,"aria-haspopup":"menu",title:"Theme",onClick:()=>o(h=>!h),className:Ct("inline-flex h-7 w-7 items-center justify-center rounded-full transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",a?"border border-gray-500/20 dark:border-gray-500/30 bg-gray-500/[0.04] dark:bg-gray-500/[0.06] backdrop-blur-[2px] text-oai-gray-700 dark:text-oai-gray-300 hover:bg-gray-500/10 dark:hover:bg-gray-500/12 hover:border-gray-500/30 dark:hover:border-gray-500/40 hover:text-oai-black dark:hover:text-white":"border border-oai-gray-200 dark:border-oai-gray-700 text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white hover:border-oai-gray-300 dark:hover:border-oai-gray-600"),children:I.jsx(c,{className:"h-3.5 w-3.5","aria-hidden":!0})}),s&&I.jsx("div",{role:"menu",className:"absolute bottom-full left-0 mb-2 z-50 min-w-[140px] py-1 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 shadow-lg",children:a4.map(({value:h,label:f,Icon:m})=>{const y=e===h;return I.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{n(h),o(!1)},className:Ct("flex w-full items-center gap-2.5 px-3 py-1.5 text-[13px] transition-colors",y?"text-oai-black dark:text-white bg-oai-gray-100 dark:bg-oai-gray-800":"text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-50 dark:hover:bg-oai-gray-800/60 hover:text-oai-black dark:hover:text-white"),children:[I.jsx(m,{className:"h-3.5 w-3.5 shrink-0","aria-hidden":!0}),I.jsx("span",{children:f})]},h)})})]})}function xx({collapsed:e,onToggleCollapsed:t,onItemClick:n,showCloseButton:a=!1,onClose:s,glassChrome:o=!1}){const c=Fn()?.pathname||"/",{theme:h,resolvedTheme:f,setTheme:m}=qj(),{resolvedLocale:y}=Ko(),b=k.useMemo(()=>Zj(),[y]);return I.jsxs(I.Fragment,{children:[I.jsx("div",{className:Ct("px-2 pt-2 pb-2",e&&"flex justify-center"),children:a?I.jsxs("div",{className:"flex items-center gap-2",children:[I.jsx("div",{className:"flex-1 min-w-0",children:I.jsx(vb,{variant:"sidebar",collapsed:e,onAfterAction:n})}),I.jsx("button",{type:"button",onClick:s,"aria-label":Fe("nav.close_menu"),title:Fe("nav.close_menu"),className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-oai-gray-500 dark:text-oai-gray-500 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-gray-900 dark:hover:text-oai-gray-200 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",children:I.jsx(gw,{className:"h-4 w-4",strokeWidth:1.75,"aria-hidden":!0})})]}):I.jsx(vb,{variant:"sidebar",collapsed:e,onAfterAction:n})}),I.jsx("nav",{"aria-label":Fe("nav.nav_label"),className:"flex-1 px-2 pb-2 flex flex-col overflow-y-auto",children:b.map((w,x)=>I.jsxs("div",{className:"flex flex-col",children:[I.jsx(e4,{label:w.label,collapsed:e,first:x===0}),I.jsx("div",{className:"flex flex-col gap-0.5",children:w.items.map(T=>I.jsx(t4,{item:T,collapsed:e,active:Jj(c,T.to),onClick:n},T.id))})]},w.id))}),I.jsxs("div",{className:Ct("flex items-center px-2 py-3",e?"flex-col justify-center gap-2":"justify-between gap-2"),children:[I.jsx(i4,{theme:h,resolvedTheme:f,onSetTheme:m,glassChrome:o}),I.jsx("div",{className:"flex items-center gap-1.5",children:!e&&I.jsx(r4,{glassChrome:o})})]})]})}function s4({collapsed:e,onToggleCollapsed:t}){const n=k.useMemo(()=>typeof window>"u"?!1:pr()||ow(),[]);return I.jsx("aside",{"aria-label":Fe("nav.aside_label"),className:Ct("hidden lg:flex flex-col shrink-0 h-full min-h-0 transition-[width] duration-200",e?"w-[72px]":"w-[220px]"),children:I.jsx(xx,{collapsed:e,onToggleCollapsed:t,glassChrome:n})})}function o4({open:e,onClose:t}){return k.useEffect(()=>{if(!e)return;const n=a=>{a.key==="Escape"&&t()};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[e,t]),k.useEffect(()=>{if(!e)return;const n=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=n}},[e]),e?I.jsxs("div",{className:"lg:hidden fixed inset-0 z-[80] flex",children:[I.jsx("div",{className:"absolute inset-0 bg-black/40 backdrop-blur-sm",onClick:t,"aria-hidden":!0}),I.jsx("aside",{"aria-label":Fe("nav.aside_label"),className:"relative w-[260px] max-w-[80vw] flex flex-col bg-oai-white dark:bg-oai-gray-900 border-r border-oai-gray-200 dark:border-oai-gray-800 shadow-2xl",children:I.jsx(xx,{collapsed:!1,showCloseButton:!0,onClose:t,onItemClick:t})})]}):null}function l4({onOpenDrawer:e}){return I.jsxs("div",{className:"lg:hidden flex items-center justify-between gap-2 px-3 h-14 border-b border-oai-gray-200 dark:border-oai-gray-800",children:[I.jsx(n4,{title:Fe("nav.menu"),onClick:e,children:I.jsx(bD,{className:"h-5 w-5","aria-hidden":!0})}),I.jsxs(mc,{to:"/landing",className:"flex items-center gap-2 no-underline hover:opacity-80 transition-opacity","aria-label":"Token Tracker",children:[I.jsx("img",{src:"/app-icon.png",alt:"",width:24,height:24,className:"rounded-md"}),I.jsx("span",{className:"text-sm font-semibold text-oai-black dark:text-oai-white",children:"Token Tracker"})]}),I.jsx("div",{className:"w-10 shrink-0","aria-hidden":!0})]})}function u4({children:e}){const{collapsed:t,toggle:n}=Xj(),[a,s]=k.useState(!1),o=k.useCallback(()=>s(!0),[]),u=k.useCallback(()=>s(!1),[]),c=k.useMemo(()=>typeof window>"u"?!1:pr()||ow(),[]);return I.jsxs("div",{className:Ct("fixed inset-0 flex flex-col text-oai-black dark:text-oai-white font-sans overflow-hidden",c?"bg-transparent":"bg-oai-gray-100 dark:bg-oai-gray-950"),children:[c&&I.jsx("div",{className:"h-7 shrink-0",style:{WebkitAppRegion:"drag"},"aria-hidden":!0}),I.jsxs("div",{className:"flex-1 min-h-0 flex",children:[I.jsx(s4,{collapsed:t,onToggleCollapsed:n}),I.jsx(o4,{open:a,onClose:u}),I.jsx("div",{className:"flex-1 min-w-0 min-h-0 p-2 lg:pl-0 lg:pr-3 lg:pb-3 flex flex-col",children:I.jsxs("div",{className:Ct("flex-1 min-h-0 flex flex-col bg-oai-white dark:bg-oai-gray-900 border border-oai-gray-200 dark:border-oai-gray-800 overflow-hidden",c?"tt-native-main-card":"rounded-2xl",!c&&"shadow-sm"),children:[I.jsx(l4,{onOpenDrawer:o}),I.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto",children:e})]})})]})]})}const c4=typeof window<"u"?window.location.search:"",bb=new URLSearchParams(c4),bu=bb.get("insforge_code")||bb.get("code")||null;function d4(){Ko();const{loading:e,signedIn:t}=Ho(),n=fc(),[a,s]=k.useState("processing"),[o,u]=k.useState(null),c=k.useRef(!1);return k.useEffect(()=>{!bu||c.current||(c.current=!0,(async()=>{try{const f=await(await fetch("/api/auth-bridge/verifier")).json();u(!!f?.native)}catch{u(!1)}})())},[]),k.useEffect(()=>{if(o!==!0||!bu)return;s("redirecting");const h=setTimeout(()=>{window.location.href=`tokentracker://auth/callback?insforge_code=${encodeURIComponent(bu)}`},200);return()=>clearTimeout(h)},[o]),k.useEffect(()=>{if(o!==!1||e)return;if(t){n("/dashboard",{replace:!0});return}const h=setTimeout(()=>{t||s("failed")},5e3);return()=>clearTimeout(h)},[o,e,t,n]),k.useEffect(()=>{if(!bu&&o===null){const h=setTimeout(()=>s("failed"),3e3);return()=>clearTimeout(h)}},[o]),a==="processing"&&o!==!0&&(o===null||o===!1&&e)?I.jsx("div",{className:"min-h-screen bg-oai-gray-950"}):I.jsx("div",{className:"min-h-screen bg-oai-gray-950 text-white font-oai antialiased dark flex items-center justify-center",children:I.jsxs("div",{className:"text-center space-y-4 max-w-sm px-4",children:[a==="processing"&&I.jsxs(I.Fragment,{children:[I.jsx("div",{className:"w-8 h-8 border-2 border-oai-gray-600 border-t-white rounded-full animate-spin mx-auto"}),I.jsx("p",{className:"text-oai-gray-400 text-sm",children:Fe("auth.callback.processing")})]}),a==="redirecting"&&I.jsxs(I.Fragment,{children:[I.jsx("div",{className:"w-12 h-12 mx-auto rounded-full bg-green-500/15 flex items-center justify-center",children:I.jsx("svg",{className:"w-6 h-6 text-green-400",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:I.jsx("path",{d:"M20 6 9 17l-5-5"})})}),I.jsx("p",{className:"text-white text-sm font-medium",children:Fe("auth.callback.success")}),I.jsx("p",{className:"text-oai-gray-500 text-xs",children:Fe("auth.callback.redirecting")})]}),a==="failed"&&I.jsxs("div",{className:"space-y-3",children:[I.jsx("p",{className:"text-oai-gray-300 text-sm",children:Fe("auth.callback.failed")}),I.jsx("button",{type:"button",onClick:()=>window.close(),className:"px-4 py-2 rounded-lg bg-oai-gray-800 text-sm text-white hover:bg-oai-gray-700 transition-colors",children:Fe("auth.callback.close")})]})]})})}const h4=k.lazy(()=>Pr(()=>import("./DashboardPage-OVP6u_7i.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.DashboardPage}))),f4=k.lazy(()=>Pr(()=>import("./IpCheckPage-yagKgpi7.js"),[])),p4=k.lazy(()=>Pr(()=>import("./LandingPage-Ca72J5F0.js"),__vite__mapDeps([7,8,4])).then(e=>({default:e.LandingPage}))),m4=k.lazy(()=>Pr(()=>import("./LeaderboardPage-CSmW4lBz.js"),__vite__mapDeps([9,5,10,11])).then(e=>({default:e.LeaderboardPage}))),g4=k.lazy(()=>Pr(()=>import("./LeaderboardProfilePage-BOihURRE.js"),__vite__mapDeps([12,8,10])).then(e=>({default:e.LeaderboardProfilePage}))),y4=k.lazy(()=>Pr(()=>import("./LimitsPage-Bq4zB2w9.js"),__vite__mapDeps([13,1,14,3,6,4])).then(e=>({default:e.LimitsPage}))),v4=k.lazy(()=>Pr(()=>import("./LoginPage-CoB1ZkE6.js"),[]).then(e=>({default:e.LoginPage}))),b4=k.lazy(()=>Pr(()=>import("./SettingsPage-BeyW1iTj.js"),__vite__mapDeps([15,14,16,3,17])).then(e=>({default:e.SettingsPage}))),_4=k.lazy(()=>Pr(()=>import("./SkillsPage-B6auz1NO.js"),__vite__mapDeps([18,3,2,5,4,11,17])).then(e=>({default:e.SkillsPage}))),w4=k.lazy(()=>Pr(()=>import("./WidgetsPage-C9t8qw0F.js"),__vite__mapDeps([19,16,3,6,4,17,11])).then(e=>({default:e.WidgetsPage})));function k4(){const{resolvedLocale:e}=Ko(),t=Fn(),n=Ho();Kj();const a=Pn(),s=k.useMemo(()=>typeof window>"u"?!1:Uj(window.location.search),[]),o=t?.pathname||"/",u=new URL(window.location.href),c=u.pathname.replace(/\/+$/,"")||"/",f=c.match(/^\/share\/([^/?#]+)$/i)?.[1]||null,m=u.searchParams.get("token")||null,y=f||m,b=c==="/share"||c==="/share.html"||c.startsWith("/share/"),w=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),x=o.replace(/\/+$/,"")||"/",T=x.match(/^\/leaderboard\/u\/([^/]+)$/i),P=T?T[1]:null,L=x==="/leaderboard"||!!P,D=!!(n.enabled&&n.signedIn),M=w||D,j=!1,K=jj(),G=k.useMemo(()=>!n.enabled||!D?null:{getAccessToken:()=>n.getAccessToken(),name:n.displayName||"",userId:n.user?.id||null},[D,n]);let W=w||a||s?"dashboard":"landing";x==="/landing"&&(W="landing"),x==="/dashboard"&&(W="dashboard"),L&&(W="dashboard");const S=x==="/limits",Z=x==="/settings",X=x==="/skills",_e=x==="/widgets",oe=x==="/ip-check";(S||Z||X||_e||oe)&&(W="dashboard");let Re=h4;P?Re=g4:x==="/leaderboard"?Re=m4:S?Re=y4:Z?Re=b4:X?Re=_4:_e?Re=w4:oe&&(Re=f4);const ce=!b&&(x==="/dashboard"||x==="/"||x==="/leaderboard"||S||Z||X||_e||oe);let ue=null;if(x==="/auth/callback"||x==="/auth/native-callback")ue=I.jsx(d4,{});else if(x==="/login")ue=I.jsx(v4,{});else if(W==="landing")ue=I.jsx(p4,{signInUrl:"/login",signUpUrl:"/login"});else{const Me=I.jsx(Re,{baseUrl:K,auth:G,signedIn:M,sessionSoftExpired:j,signOut:()=>n.enabled?n.signOut():Promise.resolve(),publicMode:b,publicToken:y,userId:P,signInUrl:"/login",signUpUrl:"/login"},e);ce?ue=I.jsx(u4,{children:Me}):ue=Me}return I.jsx(ID,{children:I.jsx(BD,{children:I.jsxs(FD,{children:[I.jsx(k.Suspense,{fallback:null,children:ue}),I.jsx(Oj,{}),I.jsx(HL,{}),I.jsx(tD,{})]})})})}const x4=CT([{path:"*",element:I.jsx(k4,{})}]);mP.createRoot(document.getElementById("root")).render(I.jsx(Hf.StrictMode,{children:I.jsx(AL,{children:I.jsx(aL,{children:I.jsx(FT,{router:x4})})})}));export{LA as $,Y_ as A,Fe as B,qj as C,I as D,Wh as E,z4 as F,V4 as G,OD as H,J4 as I,ic as J,O4 as K,mc as L,Zp as M,N4 as N,DO as O,bw as P,Ho as Q,Hf as R,s3 as S,K4 as T,Ko as U,Uj as V,Ea as W,gw as X,Z4 as Y,$4 as Z,Pr as _,qt as a,I4 as a0,j4 as a1,Q4 as a2,F4 as a3,i3 as a4,Ct as a5,vb as a6,BT as a7,Fn as a8,fc as a9,pr as aA,ow as aB,o3 as aC,c3 as aD,l3 as aE,zv as aF,kk as aG,mN as aH,Nf as aI,h3 as aa,bA as ab,L4 as ac,f3 as ad,D4 as ae,G4 as af,Y4 as ag,Gj as ah,ED as ai,r3 as aj,S4 as ak,Sp as al,vA as am,Uv as an,q4 as ao,mw as ap,pw as aq,wD as ar,ps as as,Zu as at,wp as au,TD as av,_p as aw,cP as ax,$f as ay,u3 as az,_w as b,dn as c,Na as d,o0 as e,dt as f,Z_ as g,Pn as h,IM as i,M4 as j,PA as k,a3 as l,gs as m,NA as n,OA as o,e3 as p,B4 as q,k as r,W4 as s,t3 as t,Pp as u,n3 as v,U4 as w,yt as x,H4 as y,X4 as z};
629
+ `),()=>{c.current?.removeAttribute("data-motion-pop-id"),K.contains(j)&&K.removeChild(j)}},[t]),I.jsx(EO,{isPresent:t,childRef:c,sizeRef:h,pop:o,children:o===!1?e:k.cloneElement(e,{ref:y})})}const AO=({children:e,initial:t,isPresent:n,onExitComplete:a,custom:s,presenceAffectsLayout:o,mode:u,anchorX:c,anchorY:h,root:f})=>{const m=Pp(LO),y=k.useId();let b=!0,w=k.useMemo(()=>(b=!1,{id:y,initial:t,isPresent:n,custom:s,onExitComplete:x=>{m.set(x,!0);for(const T of m.values())if(!T)return;a&&a()},register:x=>(m.set(x,!1),()=>m.delete(x))}),[n,m,a]);return o&&b&&(w={...w}),k.useMemo(()=>{m.forEach((x,T)=>m.set(T,!1))},[n]),k.useEffect(()=>{!n&&!m.size&&a&&a()},[n]),e=I.jsx(RO,{pop:u==="popLayout",isPresent:n,anchorX:c,anchorY:h,root:f,children:e}),I.jsx(xc.Provider,{value:w,children:e})};function LO(){return new Map}function qk(e=!0){const t=k.useContext(xc);if(t===null)return[!0,null];const{isPresent:n,onExitComplete:a,register:s}=t,o=k.useId();k.useEffect(()=>{if(e)return s(o)},[e]);const u=k.useCallback(()=>e&&a&&a(o),[o,a,e]);return!n&&a?[!1,u]:[!0]}const pu=e=>e.key||"";function Y0(e){const t=[];return k.Children.forEach(e,n=>{k.isValidElement(n)&&t.push(n)}),t}const DO=({children:e,custom:t,initial:n=!0,onExitComplete:a,presenceAffectsLayout:s=!0,mode:o="sync",propagate:u=!1,anchorX:c="left",anchorY:h="top",root:f})=>{const[m,y]=qk(u),b=k.useMemo(()=>Y0(e),[e]),w=u&&!m?[]:b.map(pu),x=k.useRef(!0),T=k.useRef(b),P=Pp(()=>new Map),L=k.useRef(new Set),[D,M]=k.useState(b),[j,K]=k.useState(b);_w(()=>{x.current=!1,T.current=b;for(let S=0;S<j.length;S++){const Z=pu(j[S]);w.includes(Z)?(P.delete(Z),L.current.delete(Z)):P.get(Z)!==!0&&P.set(Z,!1)}},[j,w.length,w.join("-")]);const G=[];if(b!==D){let S=[...b];for(let Z=0;Z<j.length;Z++){const X=j[Z],_e=pu(X);w.includes(_e)||(S.splice(Z,0,X),G.push(X))}return o==="wait"&&G.length&&(S=G),K(Y0(S)),M(b),null}const{forceRender:W}=k.useContext(Sp);return I.jsx(I.Fragment,{children:j.map(S=>{const Z=pu(S),X=u&&!m?!1:b===j||w.includes(Z),_e=()=>{if(L.current.has(Z))return;if(P.has(Z))L.current.add(Z),P.set(Z,!0);else return;let oe=!0;P.forEach(Re=>{Re||(oe=!1)}),oe&&(W?.(),K(T.current),u&&y?.(),a&&a())};return I.jsx(AO,{isPresent:X,initial:!x.current||n?void 0:!1,custom:t,presenceAffectsLayout:s,mode:o,root:f,onExitComplete:X?void 0:_e,anchorX:c,anchorY:h,children:S},Z)})})},Gk=k.createContext({strict:!1}),Z0={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let Q0=!1;function MO(){if(Q0)return;const e={};for(const t in Z0)e[t]={isEnabled:n=>Z0[t].some(a=>!!n[a])};xk(e),Q0=!0}function Yk(){return MO(),gN()}function NO(e){const t=Yk();for(const n in e)t[n]={...t[n],...e[n]};xk(t)}const OO=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function uc(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||OO.has(e)}let Zk=e=>!uc(e);function IO(e){typeof e=="function"&&(Zk=t=>t.startsWith("on")?!uc(t):e(t))}try{IO(require("@emotion/is-prop-valid").default)}catch{}function jO(e,t,n){const a={};for(const s in e)s==="values"&&typeof e.values=="object"||qt(e[s])||(Zk(s)||n===!0&&uc(s)||!t&&!uc(s)||e.draggable&&s.startsWith("onDrag"))&&(a[s]=e[s]);return a}const Cc=k.createContext({});function UO(e,t){if(Tc(e)){const{initial:n,animate:a}=e;return{initial:n===!1||No(n)?n:void 0,animate:No(a)?a:void 0}}return e.inherit!==!1?t:{}}function BO(e){const{initial:t,animate:n}=UO(e,k.useContext(Cc));return k.useMemo(()=>({initial:t,animate:n}),[X0(t),X0(n)])}function X0(e){return Array.isArray(e)?e.join(" "):e}const Qp=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function Qk(e,t,n){for(const a in t)!qt(t[a])&&!Ak(a,n)&&(e[a]=t[a])}function FO({transformTemplate:e},t){return k.useMemo(()=>{const n=Qp();return Gp(n,t,e),Object.assign({},n.vars,n.style)},[t])}function VO(e,t){const n=e.style||{},a={};return Qk(a,n,e),Object.assign(a,FO(e,t)),a}function zO(e,t){const n={},a=VO(e,t);return e.drag&&e.dragListener!==!1&&(n.draggable=!1,a.userSelect=a.WebkitUserSelect=a.WebkitTouchCallout="none",a.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(n.tabIndex=0),n.style=a,n}const Xk=()=>({...Qp(),attrs:{}});function $O(e,t,n,a){const s=k.useMemo(()=>{const o=Xk();return Lk(o,t,Mk(a),e.transformTemplate,e.style),{...o.attrs,style:{...o.style}}},[t]);if(e.style){const o={};Qk(o,e.style,e),s.style={...o,...s.style}}return s}const HO=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Xp(e){return typeof e!="string"||e.includes("-")?!1:!!(HO.indexOf(e)>-1||/[A-Z]/u.test(e))}function WO(e,t,n,{latestValues:a},s,o=!1,u){const h=(u??Xp(e)?$O:zO)(t,a,s,e),f=jO(t,typeof e=="string",o),m=e!==k.Fragment?{...f,...h,ref:n}:{},{children:y}=t,b=k.useMemo(()=>qt(y)?y.get():y,[y]);return k.createElement(e,{...m,children:b})}function KO({scrapeMotionValuesFromProps:e,createRenderState:t},n,a,s){return{latestValues:qO(n,a,s,e),renderState:t()}}function qO(e,t,n,a){const s={},o=a(e,{});for(const b in o)s[b]=Iu(o[b]);let{initial:u,animate:c}=e;const h=Tc(e),f=wk(e);t&&f&&!h&&e.inherit!==!1&&(u===void 0&&(u=t.initial),c===void 0&&(c=t.animate));let m=n?n.initial===!1:!1;m=m||u===!1;const y=m?c:u;if(y&&typeof y!="boolean"&&!Pc(y)){const b=Array.isArray(y)?y:[y];for(let w=0;w<b.length;w++){const x=Fp(e,b[w]);if(x){const{transitionEnd:T,transition:P,...L}=x;for(const D in L){let M=L[D];if(Array.isArray(M)){const j=m?M.length-1:0;M=M[j]}M!==null&&(s[D]=M)}for(const D in T)s[D]=T[D]}}}return s}const Jk=e=>(t,n)=>{const a=k.useContext(Cc),s=k.useContext(xc),o=()=>KO(e,t,a,s);return n?o():Pp(o)},GO=Jk({scrapeMotionValuesFromProps:Yp,createRenderState:Qp}),YO=Jk({scrapeMotionValuesFromProps:Nk,createRenderState:Xk}),ZO=Symbol.for("motionComponentSymbol");function QO(e,t,n){const a=k.useRef(n);k.useInsertionEffect(()=>{a.current=n});const s=k.useRef(null);return k.useCallback(o=>{o&&e.onMount?.(o);const u=a.current;if(typeof u=="function")if(o){const c=u(o);typeof c=="function"&&(s.current=c)}else s.current?(s.current(),s.current=null):u(o);else u&&(u.current=o);t&&(o?t.mount(o):t.unmount())},[t])}const ex=k.createContext({});function ts(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function XO(e,t,n,a,s,o){const{visualElement:u}=k.useContext(Cc),c=k.useContext(Gk),h=k.useContext(xc),f=k.useContext(Zp),m=f.reducedMotion,y=f.skipAnimations,b=k.useRef(null),w=k.useRef(!1);a=a||c.renderer,!b.current&&a&&(b.current=a(e,{visualState:t,parent:u,props:n,presenceContext:h,blockInitialAnimation:h?h.initial===!1:!1,reducedMotionConfig:m,skipAnimations:y,isSVG:o}),w.current&&b.current&&(b.current.manuallyAnimateOnMount=!0));const x=b.current,T=k.useContext(ex);x&&!x.projection&&s&&(x.type==="html"||x.type==="svg")&&JO(b.current,n,s,T);const P=k.useRef(!1);k.useInsertionEffect(()=>{x&&P.current&&x.update(n,h)});const L=n[lk],D=k.useRef(!!L&&typeof window<"u"&&!window.MotionHandoffIsComplete?.(L)&&window.MotionHasOptimisedAnimation?.(L));return _w(()=>{w.current=!0,x&&(P.current=!0,window.MotionIsMounted=!0,x.updateFeatures(),x.scheduleRenderMicrotask(),D.current&&x.animationState&&x.animationState.animateChanges())}),k.useEffect(()=>{x&&(!D.current&&x.animationState&&x.animationState.animateChanges(),D.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(L)}),D.current=!1),x.enteringChildren=void 0)}),x}function JO(e,t,n,a){const{layoutId:s,layout:o,drag:u,dragConstraints:c,layoutScroll:h,layoutRoot:f,layoutAnchor:m,layoutCrossfade:y}=t;e.projection=new n(e.latestValues,t["data-framer-portal-id"]?void 0:tx(e.parent)),e.projection.setOptions({layoutId:s,layout:o,alwaysMeasureLayout:!!u||c&&ts(c),visualElement:e,animationType:typeof o=="string"?o:"both",initialPromotionConfig:a,crossfade:y,layoutScroll:h,layoutRoot:f,layoutAnchor:m})}function tx(e){if(e)return e.options.allowProjection!==!1?e.projection:tx(e.parent)}function Fh(e,{forwardMotionProps:t=!1,type:n}={},a,s){a&&NO(a);const o=n?n==="svg":Xp(e),u=o?YO:GO;function c(f,m){let y;const b={...k.useContext(Zp),...f,layoutId:eI(f)},{isStatic:w}=b,x=BO(f),T=u(f,w);if(!w&&typeof window<"u"){tI();const P=nI(b);y=P.MeasureLayout,x.visualElement=XO(e,T,b,s,P.ProjectionNode,o)}return I.jsxs(Cc.Provider,{value:x,children:[y&&x.visualElement?I.jsx(y,{visualElement:x.visualElement,...b}):null,WO(e,f,QO(T,x.visualElement,m),T,w,t,o)]})}c.displayName=`motion.${typeof e=="string"?e:`create(${e.displayName??e.name??""})`}`;const h=k.forwardRef(c);return h[ZO]=e,h}function eI({layoutId:e}){const t=k.useContext(Sp).id;return t&&e!==void 0?t+"-"+e:e}function tI(e,t){k.useContext(Gk).strict}function nI(e){const t=Yk(),{drag:n,layout:a}=t;if(!n&&!a)return{};const s={...n,...a};return{MeasureLayout:n?.isEnabled(e)||a?.isEnabled(e)?s.MeasureLayout:void 0,ProjectionNode:s.ProjectionNode}}function rI(e,t){if(typeof Proxy>"u")return Fh;const n=new Map,a=(o,u)=>Fh(o,u,e,t),s=(o,u)=>a(o,u);return new Proxy(s,{get:(o,u)=>u==="create"?a:(n.has(u)||n.set(u,Fh(u,void 0,e,t)),n.get(u))})}const aI=(e,t)=>t.isSVG??Xp(e)?new MN(t):new CN(t,{allowProjection:e!==k.Fragment});class iI extends Ia{constructor(t){super(t),t.animationState||(t.animationState=UN(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();Pc(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let sI=0;class oI extends Ia{constructor(){super(...arguments),this.id=sI++,this.isExitComplete=!1}update(){if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n}=this.node.presenceContext,{isPresent:a}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===a)return;if(t&&a===!1){if(this.isExitComplete){const{initial:o,custom:u}=this.node.getProps();if(typeof o=="string"){const c=si(this.node,o,u);if(c){const{transition:h,transitionEnd:f,...m}=c;for(const y in m)this.node.getValue(y)?.jump(m[y])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const s=this.node.animationState.setActive("exit",!t);n&&!t&&s.then(()=>{this.isExitComplete=!0,n(this.id)})}mount(){const{register:t,onExitComplete:n}=this.node.presenceContext||{};n&&n(this.id),t&&(this.unmount=t(this.id))}unmount(){}}const lI={animation:{Feature:iI},exit:{Feature:oI}};function Zo(e){return{point:{x:e.pageX,y:e.pageY}}}const uI=e=>t=>Hp(t)&&e(t,Zo(t));function To(e,t,n,a){return Oo(e,t,uI(n),a)}const nx=({current:e})=>e?e.ownerDocument.defaultView:null,J0=(e,t)=>Math.abs(e-t);function cI(e,t){const n=J0(e.x,t.x),a=J0(e.y,t.y);return Math.sqrt(n**2+a**2)}const eb=new Set(["auto","scroll"]);class rx{constructor(t,n,{transformPagePoint:a,contextWindow:s=window,dragSnapToOrigin:o=!1,distanceThreshold:u=3,element:c}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=w=>{this.handleScroll(w.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=mu(this.lastRawMoveEventInfo,this.transformPagePoint));const w=Vh(this.lastMoveEventInfo,this.history),x=this.startEvent!==null,T=cI(w.offset,{x:0,y:0})>=this.distanceThreshold;if(!x&&!T)return;const{point:P}=w,{timestamp:L}=Kt;this.history.push({...P,timestamp:L});const{onStart:D,onMove:M}=this.handlers;x||(D&&D(this.lastMoveEvent,w),this.startEvent=this.lastMoveEvent),M&&M(this.lastMoveEvent,w)},this.handlePointerMove=(w,x)=>{this.lastMoveEvent=w,this.lastRawMoveEventInfo=x,this.lastMoveEventInfo=mu(x,this.transformPagePoint),dt.update(this.updatePoint,!0)},this.handlePointerUp=(w,x)=>{this.end();const{onEnd:T,onSessionEnd:P,resumeAnimation:L}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&L&&L(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const D=Vh(w.type==="pointercancel"?this.lastMoveEventInfo:mu(x,this.transformPagePoint),this.history);this.startEvent&&T&&T(w,D),P&&P(w,D)},!Hp(t))return;this.dragSnapToOrigin=o,this.handlers=n,this.transformPagePoint=a,this.distanceThreshold=u,this.contextWindow=s||window;const h=Zo(t),f=mu(h,this.transformPagePoint),{point:m}=f,{timestamp:y}=Kt;this.history=[{...m,timestamp:y}];const{onSessionStart:b}=n;b&&b(t,Vh(f,this.history)),this.removeListeners=qo(To(this.contextWindow,"pointermove",this.handlePointerMove),To(this.contextWindow,"pointerup",this.handlePointerUp),To(this.contextWindow,"pointercancel",this.handlePointerUp)),c&&this.startScrollTracking(c)}startScrollTracking(t){let n=t.parentElement;for(;n;){const a=getComputedStyle(n);(eb.has(a.overflowX)||eb.has(a.overflowY))&&this.scrollPositions.set(n,{x:n.scrollLeft,y:n.scrollTop}),n=n.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(t){const n=this.scrollPositions.get(t);if(!n)return;const a=t===window,s=a?{x:window.scrollX,y:window.scrollY}:{x:t.scrollLeft,y:t.scrollTop},o={x:s.x-n.x,y:s.y-n.y};o.x===0&&o.y===0||(a?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=o.x,this.lastMoveEventInfo.point.y+=o.y):this.history.length>0&&(this.history[0].x-=o.x,this.history[0].y-=o.y),this.scrollPositions.set(t,s),dt.update(this.updatePoint,!0))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),Na(this.updatePoint)}}function mu(e,t){return t?{point:t(e.point)}:e}function tb(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Vh({point:e},t){return{point:e,delta:tb(e,ax(t)),offset:tb(e,dI(t)),velocity:hI(t,.1)}}function dI(e){return e[0]}function ax(e){return e[e.length-1]}function hI(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,a=null;const s=ax(e);for(;n>=0&&(a=e[n],!(s.timestamp-a.timestamp>Sn(t)));)n--;if(!a)return{x:0,y:0};a===e[0]&&e.length>2&&s.timestamp-a.timestamp>Sn(t)*2&&(a=e[1]);const o=In(s.timestamp-a.timestamp);if(o===0)return{x:0,y:0};const u={x:(s.x-a.x)/o,y:(s.y-a.y)/o};return u.x===1/0&&(u.x=0),u.y===1/0&&(u.y=0),u}function fI(e,{min:t,max:n},a){return t!==void 0&&e<t?e=a?vt(t,e,a.min):Math.max(e,t):n!==void 0&&e>n&&(e=a?vt(n,e,a.max):Math.min(e,n)),e}function nb(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function pI(e,{top:t,left:n,bottom:a,right:s}){return{x:nb(e.x,n,s),y:nb(e.y,t,a)}}function rb(e,t){let n=t.min-e.min,a=t.max-e.max;return t.max-t.min<e.max-e.min&&([n,a]=[a,n]),{min:n,max:a}}function mI(e,t){return{x:rb(e.x,t.x),y:rb(e.y,t.y)}}function gI(e,t){let n=.5;const a=ln(e),s=ln(t);return s>a?n=Do(t.min,t.max-a,e.min):a>s&&(n=Do(e.min,e.max-s,t.min)),kr(0,1,n)}function yI(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const Bf=.35;function vI(e=Bf){return e===!1?e=0:e===!0&&(e=Bf),{x:ab(e,"left","right"),y:ab(e,"top","bottom")}}function ab(e,t,n){return{min:ib(e,t),max:ib(e,n)}}function ib(e,t){return typeof e=="number"?e:e[t]||0}const bI=new WeakMap;class _I{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=It(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=t}start(t,{snapToCursor:n=!1,distanceThreshold:a}={}){const{presenceContext:s}=this.visualElement;if(s&&s.isPresent===!1)return;const o=y=>{n&&this.snapToCursor(Zo(y).point),this.stopAnimation()},u=(y,b)=>{const{drag:w,dragPropagation:x,onDragStart:T}=this.getProps();if(w&&!x&&(this.openDragLock&&this.openDragLock(),this.openDragLock=K2(w),!this.openDragLock))return;this.latestPointerEvent=y,this.latestPanInfo=b,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),hr(L=>{let D=this.getAxisMotionValue(L).get()||0;if(yr.test(D)){const{projection:M}=this.visualElement;if(M&&M.layout){const j=M.layout.layoutBox[L];j&&(D=ln(j)*(parseFloat(D)/100))}}this.originPoint[L]=D}),T&&dt.update(()=>T(y,b),!1,!0),Af(this.visualElement,"transform");const{animationState:P}=this.visualElement;P&&P.setActive("whileDrag",!0)},c=(y,b)=>{this.latestPointerEvent=y,this.latestPanInfo=b;const{dragPropagation:w,dragDirectionLock:x,onDirectionLock:T,onDrag:P}=this.getProps();if(!w&&!this.openDragLock)return;const{offset:L}=b;if(x&&this.currentDirection===null){this.currentDirection=kI(L),this.currentDirection!==null&&T&&T(this.currentDirection);return}this.updateAxis("x",b.point,L),this.updateAxis("y",b.point,L),this.visualElement.render(),P&&dt.update(()=>P(y,b),!1,!0)},h=(y,b)=>{this.latestPointerEvent=y,this.latestPanInfo=b,this.stop(y,b),this.latestPointerEvent=null,this.latestPanInfo=null},f=()=>{const{dragSnapToOrigin:y}=this.getProps();(y||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:m}=this.getProps();this.panSession=new rx(t,{onSessionStart:o,onStart:u,onMove:c,onSessionEnd:h,resumeAnimation:f},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:m,distanceThreshold:a,contextWindow:nx(this.visualElement),element:this.visualElement.current})}stop(t,n){const a=t||this.latestPointerEvent,s=n||this.latestPanInfo,o=this.isDragging;if(this.cancel(),!o||!s||!a)return;const{velocity:u}=s;this.startAnimation(u);const{onDragEnd:c}=this.getProps();c&&dt.postRender(()=>c(a,s))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:a}=this.getProps();!a&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(t,n,a){const{drag:s}=this.getProps();if(!a||!gu(t,s,this.currentDirection))return;const o=this.getAxisMotionValue(t);let u=this.originPoint[t]+a[t];this.constraints&&this.constraints[t]&&(u=fI(u,this.constraints[t],this.elastic[t])),o.set(u)}resolveConstraints(){const{dragConstraints:t,dragElastic:n}=this.getProps(),a=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,s=this.constraints;t&&ts(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&a?this.constraints=pI(a.layoutBox,t):this.constraints=!1,this.elastic=vI(n),s!==this.constraints&&!ts(t)&&a&&this.constraints&&!this.hasMutatedConstraints&&hr(o=>{this.constraints!==!1&&this.getAxisMotionValue(o)&&(this.constraints[o]=yI(a.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!ts(t))return!1;const a=t.current,{projection:s}=this.visualElement;if(!s||!s.layout)return!1;const o=wN(a,s.root,this.visualElement.getTransformPagePoint());let u=mI(s.layout.layoutBox,o);if(n){const c=n(vN(u));this.hasMutatedConstraints=!!c,c&&(u=Pk(c))}return u}startAnimation(t){const{drag:n,dragMomentum:a,dragElastic:s,dragTransition:o,dragSnapToOrigin:u,onDragTransitionEnd:c}=this.getProps(),h=this.constraints||{},f=hr(m=>{if(!gu(m,n,this.currentDirection))return;let y=h&&h[m]||{};(u===!0||u===m)&&(y={min:0,max:0});const b=s?200:1e6,w=s?40:1e7,x={type:"inertia",velocity:a?t[m]:0,bounceStiffness:b,bounceDamping:w,timeConstant:750,restDelta:1,restSpeed:10,...o,...y};return this.startAxisValueAnimation(m,x)});return Promise.all(f).then(c)}startAxisValueAnimation(t,n){const a=this.getAxisMotionValue(t);return Af(this.visualElement,t),a.start(Bp(t,a,0,n,this.visualElement,!1))}stopAnimation(){hr(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){const n=`_drag${t.toUpperCase()}`,a=this.visualElement.getProps(),s=a[n];return s||this.visualElement.getValue(t,(a.initial?a.initial[t]:void 0)||0)}snapToCursor(t){hr(n=>{const{drag:a}=this.getProps();if(!gu(n,a,this.currentDirection))return;const{projection:s}=this.visualElement,o=this.getAxisMotionValue(n);if(s&&s.layout){const{min:u,max:c}=s.layout.layoutBox[n],h=o.get()||0;o.set(t[n]-vt(u,c,.5)+h)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:a}=this.visualElement;if(!ts(n)||!a||!this.constraints)return;this.stopAnimation();const s={x:0,y:0};hr(u=>{const c=this.getAxisMotionValue(u);if(c&&this.constraints!==!1){const h=c.get();s[u]=gI({min:h,max:h},this.constraints[u])}});const{transformTemplate:o}=this.visualElement.getProps();this.visualElement.current.style.transform=o?o({},""):"none",a.root&&a.root.updateScroll(),a.updateLayout(),this.constraints=!1,this.resolveConstraints(),hr(u=>{if(!gu(u,t,null))return;const c=this.getAxisMotionValue(u),{min:h,max:f}=this.constraints[u];c.set(vt(h,f,s[u]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;bI.set(this.visualElement,this);const t=this.visualElement.current,n=To(t,"pointerdown",f=>{const{drag:m,dragListener:y=!0}=this.getProps(),b=f.target,w=b!==t&&X2(b);m&&y&&!w&&this.start(f)});let a;const s=()=>{const{dragConstraints:f}=this.getProps();ts(f)&&f.current&&(this.constraints=this.resolveRefConstraints(),a||(a=wI(t,f.current,()=>this.scalePositionWithinConstraints())))},{projection:o}=this.visualElement,u=o.addEventListener("measure",s);o&&!o.layout&&(o.root&&o.root.updateScroll(),o.updateLayout()),dt.read(s);const c=Oo(window,"resize",()=>this.scalePositionWithinConstraints()),h=o.addEventListener("didUpdate",(({delta:f,hasLayoutChanged:m})=>{this.isDragging&&m&&(hr(y=>{const b=this.getAxisMotionValue(y);b&&(this.originPoint[y]+=f[y].translate,b.set(b.get()+f[y].translate))}),this.visualElement.render())}));return()=>{c(),n(),u(),h&&h(),a&&a()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:a=!1,dragPropagation:s=!1,dragConstraints:o=!1,dragElastic:u=Bf,dragMomentum:c=!0}=t;return{...t,drag:n,dragDirectionLock:a,dragPropagation:s,dragConstraints:o,dragElastic:u,dragMomentum:c}}}function sb(e){let t=!0;return()=>{if(t){t=!1;return}e()}}function wI(e,t,n){const a=f0(e,sb(n)),s=f0(t,sb(n));return()=>{a(),s()}}function gu(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function kI(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class xI extends Ia{constructor(t){super(t),this.removeGroupControls=jn,this.removeListeners=jn,this.controls=new _I(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||jn}update(){const{dragControls:t}=this.node.getProps(),{dragControls:n}=this.node.prevProps||{};t!==n&&(this.removeGroupControls(),t&&(this.removeGroupControls=t.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const zh=e=>(t,n)=>{e&&dt.update(()=>e(t,n),!1,!0)};class SI extends Ia{constructor(){super(...arguments),this.removePointerDownListener=jn}onPointerDown(t){this.session=new rx(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:nx(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:a,onPanEnd:s}=this.node.getProps();return{onSessionStart:zh(t),onStart:zh(n),onMove:zh(a),onEnd:(o,u)=>{delete this.session,s&&dt.postRender(()=>s(o,u))}}}mount(){this.removePointerDownListener=To(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let $h=!1;class PI extends k.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:a,layoutId:s}=this.props,{projection:o}=t;o&&(n.group&&n.group.add(o),a&&a.register&&s&&a.register(o),$h&&o.root.didUpdate(),o.addEventListener("animationComplete",()=>{this.safeToRemove()}),o.setOptions({...o.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),ju.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:a,drag:s,isPresent:o}=this.props,{projection:u}=a;return u&&(u.isPresent=o,t.layoutDependency!==n&&u.setOptions({...u.options,layoutDependency:n}),$h=!0,s||t.layoutDependency!==n||n===void 0||t.isPresent!==o?u.willUpdate():this.safeToRemove(),t.isPresent!==o&&(o?u.promote():u.relegate()||dt.postRender(()=>{const c=u.getStack();(!c||!c.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:t,layoutAnchor:n}=this.props,{projection:a}=t;a&&(a.options.layoutAnchor=n,a.root.didUpdate(),$p.postRender(()=>{!a.currentAnimation&&a.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:a}=this.props,{projection:s}=t;$h=!0,s&&(s.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(s),a&&a.deregister&&a.deregister(s))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function ix(e){const[t,n]=qk(),a=k.useContext(Sp);return I.jsx(PI,{...e,layoutGroup:a,switchLayoutGroup:k.useContext(ex),isPresent:t,safeToRemove:n})}const TI={pan:{Feature:SI},drag:{Feature:xI,ProjectionNode:Kk,MeasureLayout:ix}};function ob(e,t,n){const{props:a}=e;e.animationState&&a.whileHover&&e.animationState.setActive("whileHover",n==="Start");const s="onHover"+n,o=a[s];o&&dt.postRender(()=>o(t,Zo(t)))}class CI extends Ia{mount(){const{current:t}=this.node;t&&(this.unmount=G2(t,(n,a)=>(ob(this.node,a,"Start"),s=>ob(this.node,s,"End"))))}unmount(){}}class EI extends Ia{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=qo(Oo(this.node.current,"focus",()=>this.onFocus()),Oo(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function lb(e,t,n){const{props:a}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&a.whileTap&&e.animationState.setActive("whileTap",n==="Start");const s="onTap"+(n==="End"?"":n),o=a[s];o&&dt.postRender(()=>o(t,Zo(t)))}class RI extends Ia{mount(){const{current:t}=this.node;if(!t)return;const{globalTapTarget:n,propagate:a}=this.node.props;this.unmount=eN(t,(s,o)=>(lb(this.node,o,"Start"),(u,{success:c})=>lb(this.node,u,c?"End":"Cancel")),{useGlobalTarget:n,stopPropagation:a?.tap===!1})}unmount(){}}const Ff=new WeakMap,Hh=new WeakMap,AI=e=>{const t=Ff.get(e.target);t&&t(e)},LI=e=>{e.forEach(AI)};function DI({root:e,...t}){const n=e||document;Hh.has(n)||Hh.set(n,{});const a=Hh.get(n),s=JSON.stringify(t);return a[s]||(a[s]=new IntersectionObserver(LI,{root:e,...t})),a[s]}function MI(e,t,n){const a=DI(t);return Ff.set(e,n),a.observe(e),()=>{Ff.delete(e),a.unobserve(e)}}const NI={some:0,all:1};class OI extends Ia{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.stopObserver?.();const{viewport:t={}}=this.node.getProps(),{root:n,margin:a,amount:s="some",once:o}=t,u={root:n?n.current:void 0,rootMargin:a,threshold:typeof s=="number"?s:NI[s]},c=h=>{const{isIntersecting:f}=h;if(this.isInView===f||(this.isInView=f,o&&!f&&this.hasEnteredView))return;f&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",f);const{onViewportEnter:m,onViewportLeave:y}=this.node.getProps(),b=f?m:y;b&&b(h)};this.stopObserver=MI(this.node.current,u,c)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(II(t,n))&&this.startObserver()}unmount(){this.stopObserver?.(),this.hasEnteredView=!1,this.isInView=!1}}function II({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const jI={inView:{Feature:OI},tap:{Feature:RI},focus:{Feature:EI},hover:{Feature:CI}},UI={layout:{ProjectionNode:Kk,MeasureLayout:ix}},BI={...lI,...jI,...TI,...UI},Wh=rI(BI,aI);function sx(e){var t,n,a="";if(typeof e=="string"||typeof e=="number")a+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(n=sx(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}function FI(){for(var e,t,n=0,a="",s=arguments.length;n<s;n++)(e=arguments[n])&&(t=sx(e))&&(a&&(a+=" "),a+=t);return a}const VI=(e,t)=>{const n=new Array(e.length+t.length);for(let a=0;a<e.length;a++)n[a]=e[a];for(let a=0;a<t.length;a++)n[e.length+a]=t[a];return n},zI=(e,t)=>({classGroupId:e,validator:t}),ox=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),cc="-",ub=[],$I="arbitrary..",HI=e=>{const t=KI(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:a}=e;return{getClassGroupId:u=>{if(u.startsWith("[")&&u.endsWith("]"))return WI(u);const c=u.split(cc),h=c[0]===""&&c.length>1?1:0;return lx(c,h,t)},getConflictingClassGroupIds:(u,c)=>{if(c){const h=a[u],f=n[u];return h?f?VI(f,h):h:f||ub}return n[u]||ub}}},lx=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;const s=e[t],o=n.nextPart.get(s);if(o){const f=lx(e,t+1,o);if(f)return f}const u=n.validators;if(u===null)return;const c=t===0?e.join(cc):e.slice(t).join(cc),h=u.length;for(let f=0;f<h;f++){const m=u[f];if(m.validator(c))return m.classGroupId}},WI=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),n=t.indexOf(":"),a=t.slice(0,n);return a?$I+a:void 0})(),KI=e=>{const{theme:t,classGroups:n}=e;return qI(n,t)},qI=(e,t)=>{const n=ox();for(const a in e){const s=e[a];Jp(s,n,a,t)}return n},Jp=(e,t,n,a)=>{const s=e.length;for(let o=0;o<s;o++){const u=e[o];GI(u,t,n,a)}},GI=(e,t,n,a)=>{if(typeof e=="string"){YI(e,t,n);return}if(typeof e=="function"){ZI(e,t,n,a);return}QI(e,t,n,a)},YI=(e,t,n)=>{const a=e===""?t:ux(t,e);a.classGroupId=n},ZI=(e,t,n,a)=>{if(XI(e)){Jp(e(a),t,n,a);return}t.validators===null&&(t.validators=[]),t.validators.push(zI(n,e))},QI=(e,t,n,a)=>{const s=Object.entries(e),o=s.length;for(let u=0;u<o;u++){const[c,h]=s[u];Jp(h,ux(t,c),n,a)}},ux=(e,t)=>{let n=e;const a=t.split(cc),s=a.length;for(let o=0;o<s;o++){const u=a[o];let c=n.nextPart.get(u);c||(c=ox(),n.nextPart.set(u,c)),n=c}return n},XI=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,JI=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=Object.create(null),a=Object.create(null);const s=(o,u)=>{n[o]=u,t++,t>e&&(t=0,a=n,n=Object.create(null))};return{get(o){let u=n[o];if(u!==void 0)return u;if((u=a[o])!==void 0)return s(o,u),u},set(o,u){o in n?n[o]=u:s(o,u)}}},Vf="!",cb=":",ej=[],db=(e,t,n,a,s)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:a,isExternal:s}),tj=e=>{const{prefix:t,experimentalParseClassName:n}=e;let a=s=>{const o=[];let u=0,c=0,h=0,f;const m=s.length;for(let T=0;T<m;T++){const P=s[T];if(u===0&&c===0){if(P===cb){o.push(s.slice(h,T)),h=T+1;continue}if(P==="/"){f=T;continue}}P==="["?u++:P==="]"?u--:P==="("?c++:P===")"&&c--}const y=o.length===0?s:s.slice(h);let b=y,w=!1;y.endsWith(Vf)?(b=y.slice(0,-1),w=!0):y.startsWith(Vf)&&(b=y.slice(1),w=!0);const x=f&&f>h?f-h:void 0;return db(o,w,b,x)};if(t){const s=t+cb,o=a;a=u=>u.startsWith(s)?o(u.slice(s.length)):db(ej,!1,u,void 0,!0)}if(n){const s=a;a=o=>n({className:o,parseClassName:s})}return a},nj=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((n,a)=>{t.set(n,1e6+a)}),n=>{const a=[];let s=[];for(let o=0;o<n.length;o++){const u=n[o],c=u[0]==="[",h=t.has(u);c||h?(s.length>0&&(s.sort(),a.push(...s),s=[]),a.push(u)):s.push(u)}return s.length>0&&(s.sort(),a.push(...s)),a}},rj=e=>({cache:JI(e.cacheSize),parseClassName:tj(e),sortModifiers:nj(e),...HI(e)}),aj=/\s+/,ij=(e,t)=>{const{parseClassName:n,getClassGroupId:a,getConflictingClassGroupIds:s,sortModifiers:o}=t,u=[],c=e.trim().split(aj);let h="";for(let f=c.length-1;f>=0;f-=1){const m=c[f],{isExternal:y,modifiers:b,hasImportantModifier:w,baseClassName:x,maybePostfixModifierPosition:T}=n(m);if(y){h=m+(h.length>0?" "+h:h);continue}let P=!!T,L=a(P?x.substring(0,T):x);if(!L){if(!P){h=m+(h.length>0?" "+h:h);continue}if(L=a(x),!L){h=m+(h.length>0?" "+h:h);continue}P=!1}const D=b.length===0?"":b.length===1?b[0]:o(b).join(":"),M=w?D+Vf:D,j=M+L;if(u.indexOf(j)>-1)continue;u.push(j);const K=s(L,P);for(let G=0;G<K.length;++G){const W=K[G];u.push(M+W)}h=m+(h.length>0?" "+h:h)}return h},sj=(...e)=>{let t=0,n,a,s="";for(;t<e.length;)(n=e[t++])&&(a=cx(n))&&(s&&(s+=" "),s+=a);return s},cx=e=>{if(typeof e=="string")return e;let t,n="";for(let a=0;a<e.length;a++)e[a]&&(t=cx(e[a]))&&(n&&(n+=" "),n+=t);return n},oj=(e,...t)=>{let n,a,s,o;const u=h=>{const f=t.reduce((m,y)=>y(m),e());return n=rj(f),a=n.cache.get,s=n.cache.set,o=c,c(h)},c=h=>{const f=a(h);if(f)return f;const m=ij(h,n);return s(h,m),m};return o=u,(...h)=>o(sj(...h))},lj=[],Ot=e=>{const t=n=>n[e]||lj;return t.isThemeGetter=!0,t},dx=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,hx=/^\((?:(\w[\w-]*):)?(.+)\)$/i,uj=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,cj=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,dj=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,hj=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,fj=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,pj=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ka=e=>uj.test(e),Ge=e=>!!e&&!Number.isNaN(Number(e)),xa=e=>!!e&&Number.isInteger(Number(e)),Kh=e=>e.endsWith("%")&&Ge(e.slice(0,-1)),Fr=e=>cj.test(e),fx=()=>!0,mj=e=>dj.test(e)&&!hj.test(e),em=()=>!1,gj=e=>fj.test(e),yj=e=>pj.test(e),vj=e=>!ve(e)&&!we(e),bj=e=>ja(e,gx,em),ve=e=>dx.test(e),Ja=e=>ja(e,yx,mj),hb=e=>ja(e,Cj,Ge),_j=e=>ja(e,bx,fx),wj=e=>ja(e,vx,em),fb=e=>ja(e,px,em),kj=e=>ja(e,mx,yj),yu=e=>ja(e,_x,gj),we=e=>hx.test(e),mo=e=>gi(e,yx),xj=e=>gi(e,vx),pb=e=>gi(e,px),Sj=e=>gi(e,gx),Pj=e=>gi(e,mx),vu=e=>gi(e,_x,!0),Tj=e=>gi(e,bx,!0),ja=(e,t,n)=>{const a=dx.exec(e);return a?a[1]?t(a[1]):n(a[2]):!1},gi=(e,t,n=!1)=>{const a=hx.exec(e);return a?a[1]?t(a[1]):n:!1},px=e=>e==="position"||e==="percentage",mx=e=>e==="image"||e==="url",gx=e=>e==="length"||e==="size"||e==="bg-size",yx=e=>e==="length",Cj=e=>e==="number",vx=e=>e==="family-name",bx=e=>e==="number"||e==="weight",_x=e=>e==="shadow",Ej=()=>{const e=Ot("color"),t=Ot("font"),n=Ot("text"),a=Ot("font-weight"),s=Ot("tracking"),o=Ot("leading"),u=Ot("breakpoint"),c=Ot("container"),h=Ot("spacing"),f=Ot("radius"),m=Ot("shadow"),y=Ot("inset-shadow"),b=Ot("text-shadow"),w=Ot("drop-shadow"),x=Ot("blur"),T=Ot("perspective"),P=Ot("aspect"),L=Ot("ease"),D=Ot("animate"),M=()=>["auto","avoid","all","avoid-page","page","left","right","column"],j=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],K=()=>[...j(),we,ve],G=()=>["auto","hidden","clip","visible","scroll"],W=()=>["auto","contain","none"],S=()=>[we,ve,h],Z=()=>[ka,"full","auto",...S()],X=()=>[xa,"none","subgrid",we,ve],_e=()=>["auto",{span:["full",xa,we,ve]},xa,we,ve],oe=()=>[xa,"auto",we,ve],Re=()=>["auto","min","max","fr",we,ve],fe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ce=()=>["start","end","center","stretch","center-safe","end-safe"],ue=()=>["auto",...S()],Me=()=>[ka,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...S()],H=()=>[ka,"screen","full","dvw","lvw","svw","min","max","fit",...S()],Y=()=>[ka,"screen","full","lh","dvh","lvh","svh","min","max","fit",...S()],$=()=>[e,we,ve],N=()=>[...j(),pb,fb,{position:[we,ve]}],q=()=>["no-repeat",{repeat:["","x","y","space","round"]}],xe=()=>["auto","cover","contain",Sj,bj,{size:[we,ve]}],Ae=()=>[Kh,mo,Ja],Se=()=>["","none","full",f,we,ve],Ce=()=>["",Ge,mo,Ja],qe=()=>["solid","dashed","dotted","double"],Xe=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Ue=()=>[Ge,Kh,pb,fb],jt=()=>["","none",x,we,ve],$n=()=>["none",Ge,we,ve],Tr=()=>["none",Ge,we,ve],pt=()=>[Ge,we,ve],en=()=>[ka,"full",...S()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Fr],breakpoint:[Fr],color:[fx],container:[Fr],"drop-shadow":[Fr],ease:["in","out","in-out"],font:[vj],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Fr],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Fr],shadow:[Fr],spacing:["px",Ge],text:[Fr],"text-shadow":[Fr],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ka,ve,we,P]}],container:["container"],columns:[{columns:[Ge,ve,we,c]}],"break-after":[{"break-after":M()}],"break-before":[{"break-before":M()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:K()}],overflow:[{overflow:G()}],"overflow-x":[{"overflow-x":G()}],"overflow-y":[{"overflow-y":G()}],overscroll:[{overscroll:W()}],"overscroll-x":[{"overscroll-x":W()}],"overscroll-y":[{"overscroll-y":W()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Z()}],"inset-x":[{"inset-x":Z()}],"inset-y":[{"inset-y":Z()}],start:[{"inset-s":Z(),start:Z()}],end:[{"inset-e":Z(),end:Z()}],"inset-bs":[{"inset-bs":Z()}],"inset-be":[{"inset-be":Z()}],top:[{top:Z()}],right:[{right:Z()}],bottom:[{bottom:Z()}],left:[{left:Z()}],visibility:["visible","invisible","collapse"],z:[{z:[xa,"auto",we,ve]}],basis:[{basis:[ka,"full","auto",c,...S()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Ge,ka,"auto","initial","none",ve]}],grow:[{grow:["",Ge,we,ve]}],shrink:[{shrink:["",Ge,we,ve]}],order:[{order:[xa,"first","last","none",we,ve]}],"grid-cols":[{"grid-cols":X()}],"col-start-end":[{col:_e()}],"col-start":[{"col-start":oe()}],"col-end":[{"col-end":oe()}],"grid-rows":[{"grid-rows":X()}],"row-start-end":[{row:_e()}],"row-start":[{"row-start":oe()}],"row-end":[{"row-end":oe()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":Re()}],"auto-rows":[{"auto-rows":Re()}],gap:[{gap:S()}],"gap-x":[{"gap-x":S()}],"gap-y":[{"gap-y":S()}],"justify-content":[{justify:[...fe(),"normal"]}],"justify-items":[{"justify-items":[...ce(),"normal"]}],"justify-self":[{"justify-self":["auto",...ce()]}],"align-content":[{content:["normal",...fe()]}],"align-items":[{items:[...ce(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ce(),{baseline:["","last"]}]}],"place-content":[{"place-content":fe()}],"place-items":[{"place-items":[...ce(),"baseline"]}],"place-self":[{"place-self":["auto",...ce()]}],p:[{p:S()}],px:[{px:S()}],py:[{py:S()}],ps:[{ps:S()}],pe:[{pe:S()}],pbs:[{pbs:S()}],pbe:[{pbe:S()}],pt:[{pt:S()}],pr:[{pr:S()}],pb:[{pb:S()}],pl:[{pl:S()}],m:[{m:ue()}],mx:[{mx:ue()}],my:[{my:ue()}],ms:[{ms:ue()}],me:[{me:ue()}],mbs:[{mbs:ue()}],mbe:[{mbe:ue()}],mt:[{mt:ue()}],mr:[{mr:ue()}],mb:[{mb:ue()}],ml:[{ml:ue()}],"space-x":[{"space-x":S()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":S()}],"space-y-reverse":["space-y-reverse"],size:[{size:Me()}],"inline-size":[{inline:["auto",...H()]}],"min-inline-size":[{"min-inline":["auto",...H()]}],"max-inline-size":[{"max-inline":["none",...H()]}],"block-size":[{block:["auto",...Y()]}],"min-block-size":[{"min-block":["auto",...Y()]}],"max-block-size":[{"max-block":["none",...Y()]}],w:[{w:[c,"screen",...Me()]}],"min-w":[{"min-w":[c,"screen","none",...Me()]}],"max-w":[{"max-w":[c,"screen","none","prose",{screen:[u]},...Me()]}],h:[{h:["screen","lh",...Me()]}],"min-h":[{"min-h":["screen","lh","none",...Me()]}],"max-h":[{"max-h":["screen","lh",...Me()]}],"font-size":[{text:["base",n,mo,Ja]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[a,Tj,_j]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Kh,ve]}],"font-family":[{font:[xj,wj,t]}],"font-features":[{"font-features":[ve]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,we,ve]}],"line-clamp":[{"line-clamp":[Ge,"none",we,hb]}],leading:[{leading:[o,...S()]}],"list-image":[{"list-image":["none",we,ve]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",we,ve]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:$()}],"text-color":[{text:$()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...qe(),"wavy"]}],"text-decoration-thickness":[{decoration:[Ge,"from-font","auto",we,Ja]}],"text-decoration-color":[{decoration:$()}],"underline-offset":[{"underline-offset":[Ge,"auto",we,ve]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:S()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",we,ve]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",we,ve]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:N()}],"bg-repeat":[{bg:q()}],"bg-size":[{bg:xe()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},xa,we,ve],radial:["",we,ve],conic:[xa,we,ve]},Pj,kj]}],"bg-color":[{bg:$()}],"gradient-from-pos":[{from:Ae()}],"gradient-via-pos":[{via:Ae()}],"gradient-to-pos":[{to:Ae()}],"gradient-from":[{from:$()}],"gradient-via":[{via:$()}],"gradient-to":[{to:$()}],rounded:[{rounded:Se()}],"rounded-s":[{"rounded-s":Se()}],"rounded-e":[{"rounded-e":Se()}],"rounded-t":[{"rounded-t":Se()}],"rounded-r":[{"rounded-r":Se()}],"rounded-b":[{"rounded-b":Se()}],"rounded-l":[{"rounded-l":Se()}],"rounded-ss":[{"rounded-ss":Se()}],"rounded-se":[{"rounded-se":Se()}],"rounded-ee":[{"rounded-ee":Se()}],"rounded-es":[{"rounded-es":Se()}],"rounded-tl":[{"rounded-tl":Se()}],"rounded-tr":[{"rounded-tr":Se()}],"rounded-br":[{"rounded-br":Se()}],"rounded-bl":[{"rounded-bl":Se()}],"border-w":[{border:Ce()}],"border-w-x":[{"border-x":Ce()}],"border-w-y":[{"border-y":Ce()}],"border-w-s":[{"border-s":Ce()}],"border-w-e":[{"border-e":Ce()}],"border-w-bs":[{"border-bs":Ce()}],"border-w-be":[{"border-be":Ce()}],"border-w-t":[{"border-t":Ce()}],"border-w-r":[{"border-r":Ce()}],"border-w-b":[{"border-b":Ce()}],"border-w-l":[{"border-l":Ce()}],"divide-x":[{"divide-x":Ce()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":Ce()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...qe(),"hidden","none"]}],"divide-style":[{divide:[...qe(),"hidden","none"]}],"border-color":[{border:$()}],"border-color-x":[{"border-x":$()}],"border-color-y":[{"border-y":$()}],"border-color-s":[{"border-s":$()}],"border-color-e":[{"border-e":$()}],"border-color-bs":[{"border-bs":$()}],"border-color-be":[{"border-be":$()}],"border-color-t":[{"border-t":$()}],"border-color-r":[{"border-r":$()}],"border-color-b":[{"border-b":$()}],"border-color-l":[{"border-l":$()}],"divide-color":[{divide:$()}],"outline-style":[{outline:[...qe(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Ge,we,ve]}],"outline-w":[{outline:["",Ge,mo,Ja]}],"outline-color":[{outline:$()}],shadow:[{shadow:["","none",m,vu,yu]}],"shadow-color":[{shadow:$()}],"inset-shadow":[{"inset-shadow":["none",y,vu,yu]}],"inset-shadow-color":[{"inset-shadow":$()}],"ring-w":[{ring:Ce()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:$()}],"ring-offset-w":[{"ring-offset":[Ge,Ja]}],"ring-offset-color":[{"ring-offset":$()}],"inset-ring-w":[{"inset-ring":Ce()}],"inset-ring-color":[{"inset-ring":$()}],"text-shadow":[{"text-shadow":["none",b,vu,yu]}],"text-shadow-color":[{"text-shadow":$()}],opacity:[{opacity:[Ge,we,ve]}],"mix-blend":[{"mix-blend":[...Xe(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Xe()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Ge]}],"mask-image-linear-from-pos":[{"mask-linear-from":Ue()}],"mask-image-linear-to-pos":[{"mask-linear-to":Ue()}],"mask-image-linear-from-color":[{"mask-linear-from":$()}],"mask-image-linear-to-color":[{"mask-linear-to":$()}],"mask-image-t-from-pos":[{"mask-t-from":Ue()}],"mask-image-t-to-pos":[{"mask-t-to":Ue()}],"mask-image-t-from-color":[{"mask-t-from":$()}],"mask-image-t-to-color":[{"mask-t-to":$()}],"mask-image-r-from-pos":[{"mask-r-from":Ue()}],"mask-image-r-to-pos":[{"mask-r-to":Ue()}],"mask-image-r-from-color":[{"mask-r-from":$()}],"mask-image-r-to-color":[{"mask-r-to":$()}],"mask-image-b-from-pos":[{"mask-b-from":Ue()}],"mask-image-b-to-pos":[{"mask-b-to":Ue()}],"mask-image-b-from-color":[{"mask-b-from":$()}],"mask-image-b-to-color":[{"mask-b-to":$()}],"mask-image-l-from-pos":[{"mask-l-from":Ue()}],"mask-image-l-to-pos":[{"mask-l-to":Ue()}],"mask-image-l-from-color":[{"mask-l-from":$()}],"mask-image-l-to-color":[{"mask-l-to":$()}],"mask-image-x-from-pos":[{"mask-x-from":Ue()}],"mask-image-x-to-pos":[{"mask-x-to":Ue()}],"mask-image-x-from-color":[{"mask-x-from":$()}],"mask-image-x-to-color":[{"mask-x-to":$()}],"mask-image-y-from-pos":[{"mask-y-from":Ue()}],"mask-image-y-to-pos":[{"mask-y-to":Ue()}],"mask-image-y-from-color":[{"mask-y-from":$()}],"mask-image-y-to-color":[{"mask-y-to":$()}],"mask-image-radial":[{"mask-radial":[we,ve]}],"mask-image-radial-from-pos":[{"mask-radial-from":Ue()}],"mask-image-radial-to-pos":[{"mask-radial-to":Ue()}],"mask-image-radial-from-color":[{"mask-radial-from":$()}],"mask-image-radial-to-color":[{"mask-radial-to":$()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":j()}],"mask-image-conic-pos":[{"mask-conic":[Ge]}],"mask-image-conic-from-pos":[{"mask-conic-from":Ue()}],"mask-image-conic-to-pos":[{"mask-conic-to":Ue()}],"mask-image-conic-from-color":[{"mask-conic-from":$()}],"mask-image-conic-to-color":[{"mask-conic-to":$()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:N()}],"mask-repeat":[{mask:q()}],"mask-size":[{mask:xe()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",we,ve]}],filter:[{filter:["","none",we,ve]}],blur:[{blur:jt()}],brightness:[{brightness:[Ge,we,ve]}],contrast:[{contrast:[Ge,we,ve]}],"drop-shadow":[{"drop-shadow":["","none",w,vu,yu]}],"drop-shadow-color":[{"drop-shadow":$()}],grayscale:[{grayscale:["",Ge,we,ve]}],"hue-rotate":[{"hue-rotate":[Ge,we,ve]}],invert:[{invert:["",Ge,we,ve]}],saturate:[{saturate:[Ge,we,ve]}],sepia:[{sepia:["",Ge,we,ve]}],"backdrop-filter":[{"backdrop-filter":["","none",we,ve]}],"backdrop-blur":[{"backdrop-blur":jt()}],"backdrop-brightness":[{"backdrop-brightness":[Ge,we,ve]}],"backdrop-contrast":[{"backdrop-contrast":[Ge,we,ve]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Ge,we,ve]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Ge,we,ve]}],"backdrop-invert":[{"backdrop-invert":["",Ge,we,ve]}],"backdrop-opacity":[{"backdrop-opacity":[Ge,we,ve]}],"backdrop-saturate":[{"backdrop-saturate":[Ge,we,ve]}],"backdrop-sepia":[{"backdrop-sepia":["",Ge,we,ve]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":S()}],"border-spacing-x":[{"border-spacing-x":S()}],"border-spacing-y":[{"border-spacing-y":S()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",we,ve]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Ge,"initial",we,ve]}],ease:[{ease:["linear","initial",L,we,ve]}],delay:[{delay:[Ge,we,ve]}],animate:[{animate:["none",D,we,ve]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[T,we,ve]}],"perspective-origin":[{"perspective-origin":K()}],rotate:[{rotate:$n()}],"rotate-x":[{"rotate-x":$n()}],"rotate-y":[{"rotate-y":$n()}],"rotate-z":[{"rotate-z":$n()}],scale:[{scale:Tr()}],"scale-x":[{"scale-x":Tr()}],"scale-y":[{"scale-y":Tr()}],"scale-z":[{"scale-z":Tr()}],"scale-3d":["scale-3d"],skew:[{skew:pt()}],"skew-x":[{"skew-x":pt()}],"skew-y":[{"skew-y":pt()}],transform:[{transform:[we,ve,"","none","gpu","cpu"]}],"transform-origin":[{origin:K()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:en()}],"translate-x":[{"translate-x":en()}],"translate-y":[{"translate-y":en()}],"translate-z":[{"translate-z":en()}],"translate-none":["translate-none"],accent:[{accent:$()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:$()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",we,ve]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":S()}],"scroll-mx":[{"scroll-mx":S()}],"scroll-my":[{"scroll-my":S()}],"scroll-ms":[{"scroll-ms":S()}],"scroll-me":[{"scroll-me":S()}],"scroll-mbs":[{"scroll-mbs":S()}],"scroll-mbe":[{"scroll-mbe":S()}],"scroll-mt":[{"scroll-mt":S()}],"scroll-mr":[{"scroll-mr":S()}],"scroll-mb":[{"scroll-mb":S()}],"scroll-ml":[{"scroll-ml":S()}],"scroll-p":[{"scroll-p":S()}],"scroll-px":[{"scroll-px":S()}],"scroll-py":[{"scroll-py":S()}],"scroll-ps":[{"scroll-ps":S()}],"scroll-pe":[{"scroll-pe":S()}],"scroll-pbs":[{"scroll-pbs":S()}],"scroll-pbe":[{"scroll-pbe":S()}],"scroll-pt":[{"scroll-pt":S()}],"scroll-pr":[{"scroll-pr":S()}],"scroll-pb":[{"scroll-pb":S()}],"scroll-pl":[{"scroll-pl":S()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",we,ve]}],fill:[{fill:["none",...$()]}],"stroke-w":[{stroke:[Ge,mo,Ja,hb]}],stroke:[{stroke:["none",...$()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Rj=oj(Ej);function Ct(...e){return Rj(FI(e))}const Aj=I.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",children:[I.jsx("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1Z",fill:"#4285F4"}),I.jsx("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23Z",fill:"#34A853"}),I.jsx("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18A10.96 10.96 0 0 0 1 12c0 1.77.42 3.44 1.18 4.93l3.66-2.84Z",fill:"#FBBC05"}),I.jsx("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53Z",fill:"#EA4335"})]}),Lj=I.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor",children:I.jsx("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12Z"})}),Dj={google:Aj,github:Lj},Mj={google:"Google",github:"GitHub",microsoft:"Microsoft",discord:"Discord",apple:"Apple"};function Nj(e){return Mj[e]||String(e||"").replace(/-/g," ")}function Oj(){Ko();const{isOpen:e,closeLoginModal:t}=bw(),{enabled:n,signedIn:a,refreshUser:s,signInWithPassword:o,signUp:u,signInWithOAuth:c,getPublicAuthConfig:h}=Ho(),[f,m]=k.useState("signin"),[y,b]=k.useState(""),[w,x]=k.useState(""),[T,P]=k.useState(""),[L,D]=k.useState(!1),[M,j]=k.useState(null),[K,G]=k.useState(null),[W,S]=k.useState(!1),[Z,X]=k.useState(!0),[_e,oe]=k.useState([]),[Re,fe]=k.useState(8);k.useEffect(()=>{e&&(j(null),G(null),m("signin"),b(""),x(""),P(""),S(!1))},[e]),k.useEffect(()=>{if(!e||!n){X(!1);return}let H=!0;return(async()=>{const{data:Y,error:$}=await h();if(H){if($||!Y)oe(["google","github"]);else{const N=Array.isArray(Y.oAuthProviders)?Y.oAuthProviders:[],q=Array.isArray(Y.customOAuthProviders)?Y.customOAuthProviders:[];oe([...N,...q]),typeof Y.passwordMinLength=="number"&&Y.passwordMinLength>0&&fe(Y.passwordMinLength)}X(!1)}})(),()=>{H=!1}},[e,n,h]),k.useEffect(()=>{e&&a&&t()},[e,a,t]);const ce=k.useMemo(()=>typeof window>"u"?"":!!window.webkit?.messageHandlers?.nativeOAuth?`${window.location.origin}/auth/callback`:`${window.location.origin}/`,[]),ue=k.useCallback(async H=>{j(null),D(!0);try{const{error:Y}=await c(H,ce);Y&&j(Y.message||String(Y))}finally{D(!1)}},[c,ce]),Me=k.useCallback(async H=>{H.preventDefault(),j(null),D(!0);try{if(f==="signup"){const{data:$,error:N}=await u({email:y.trim(),password:w,name:T.trim()||void 0});if(N){j(N.message||String(N));return}if($?.requireEmailVerification){G(Fe("login.verify_email_pending")),m("signin");return}await s();return}const{error:Y}=await o({email:y.trim(),password:w});if(Y){j(Y.message||String(Y));return}await s()}finally{D(!1)}},[f,y,w,T,u,o,s]);return k.useEffect(()=>{if(!e)return;const H=Y=>{Y.key==="Escape"&&t()};return document.addEventListener("keydown",H),()=>document.removeEventListener("keydown",H)},[e,t]),n?I.jsx(DO,{children:e&&I.jsxs(Wh.div,{className:"fixed inset-0 z-[100] flex items-center justify-center p-4",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},children:[I.jsx(Wh.div,{className:"absolute inset-0 bg-black/40 dark:bg-black/60 ",onClick:t,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0}}),I.jsxs(Wh.div,{className:"relative w-full max-w-[420px] rounded-2xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-950 p-6 shadow-2xl",initial:{opacity:0,scale:.95,y:10},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:10},transition:{duration:.2},onClick:H=>H.stopPropagation(),children:[I.jsx("button",{type:"button",onClick:t,className:"absolute right-4 top-4 text-oai-gray-400 dark:text-oai-gray-500 hover:text-oai-black dark:hover:text-white transition-colors",children:I.jsx(gw,{className:"h-5 w-5"})}),I.jsxs("div",{className:"text-center mb-6",children:[I.jsxs("div",{className:"flex items-center justify-center gap-2 mb-2",children:[I.jsx("img",{src:"/app-icon.png",alt:"",width:28,height:28,className:"rounded-md"}),I.jsx("span",{className:"text-lg font-semibold text-oai-black dark:text-white",children:"Token Tracker"})]}),I.jsx("p",{className:"text-sm text-oai-gray-500",children:Fe("login_modal.subtitle")})]}),K&&I.jsx("div",{className:"mb-4 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900/50 px-3 py-2 text-xs text-oai-gray-700 dark:text-oai-gray-300",children:K}),M&&I.jsx("p",{className:"mb-4 text-sm text-red-500 dark:text-red-400",role:"alert",children:M}),I.jsx("div",{className:"space-y-2.5 mb-5",children:Z?I.jsx("div",{className:"h-10 rounded-lg bg-oai-gray-100 dark:bg-oai-gray-900 animate-pulse"}):_e.map(H=>I.jsxs("button",{type:"button",disabled:L,onClick:()=>ue(H),className:Ct("w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-700 bg-oai-gray-50 dark:bg-oai-gray-900 text-sm font-medium text-oai-black dark:text-white","hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 hover:border-oai-gray-300 dark:hover:border-oai-gray-600 transition-colors disabled:opacity-50","flex items-center justify-center gap-2.5"),children:[Dj[H]||null,Fe("login.oauth.continue",{provider:Nj(H)})]},H))}),W?I.jsxs(I.Fragment,{children:[I.jsxs("div",{className:"relative mb-5",children:[I.jsx("div",{className:"absolute inset-0 flex items-center",children:I.jsx("span",{className:"w-full border-t border-oai-gray-200 dark:border-oai-gray-800"})}),I.jsx("div",{className:"relative flex justify-center text-xs uppercase tracking-wider",children:I.jsx("span",{className:"bg-white dark:bg-oai-gray-950 px-3 text-oai-gray-400 dark:text-oai-gray-600",children:Fe("login_modal.divider_email")})})]}),I.jsxs("div",{className:"flex rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 p-0.5 bg-oai-gray-50 dark:bg-oai-gray-900/50 mb-4",children:[I.jsx("button",{type:"button",className:Ct("flex-1 py-1.5 text-xs font-medium rounded-md transition-colors",f==="signin"?"bg-white dark:bg-oai-gray-800 text-oai-black dark:text-white shadow-sm":"text-oai-gray-500 hover:text-oai-gray-700 dark:hover:text-oai-gray-300"),onClick:()=>{m("signin"),j(null)},children:Fe("login.tab.sign_in")}),I.jsx("button",{type:"button",className:Ct("flex-1 py-1.5 text-xs font-medium rounded-md transition-colors",f==="signup"?"bg-white dark:bg-oai-gray-800 text-oai-black dark:text-white shadow-sm":"text-oai-gray-500 hover:text-oai-gray-700 dark:hover:text-oai-gray-300"),onClick:()=>{m("signup"),j(null)},children:Fe("login.tab.sign_up")})]}),I.jsxs("form",{onSubmit:Me,className:"space-y-3",children:[f==="signup"&&I.jsxs("div",{children:[I.jsx("label",{htmlFor:"modal-name",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:Fe("login.field.name")}),I.jsx("input",{id:"modal-name",type:"text",autoComplete:"name",value:T,onChange:H=>P(H.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500",placeholder:Fe("login.field.name_placeholder")})]}),I.jsxs("div",{children:[I.jsx("label",{htmlFor:"modal-email",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:Fe("login.field.email")}),I.jsx("input",{id:"modal-email",type:"email",autoComplete:"email",required:!0,value:y,onChange:H=>b(H.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500"})]}),I.jsxs("div",{children:[I.jsx("label",{htmlFor:"modal-password",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:Fe("login.field.password")}),I.jsx("input",{id:"modal-password",type:"password",autoComplete:f==="signup"?"new-password":"current-password",required:!0,minLength:f==="signup"?Re:void 0,value:w,onChange:H=>x(H.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500"}),f==="signup"&&I.jsx("p",{className:"mt-1 text-xs text-oai-gray-400 dark:text-oai-gray-600",children:Fe("login.password_hint",{min:String(Re)})})]}),I.jsx("button",{type:"submit",disabled:L,className:"w-full h-10 rounded-lg bg-oai-gray-900 dark:bg-white text-white dark:text-oai-gray-950 text-sm font-semibold hover:bg-oai-gray-800 dark:hover:bg-oai-gray-100 transition-colors disabled:opacity-50",children:Fe(f==="signup"?"login.submit.sign_up":"login.submit.sign_in")})]})]}):I.jsxs(I.Fragment,{children:[I.jsxs("div",{className:"relative mb-5",children:[I.jsx("div",{className:"absolute inset-0 flex items-center",children:I.jsx("span",{className:"w-full border-t border-oai-gray-200 dark:border-oai-gray-800"})}),I.jsx("div",{className:"relative flex justify-center text-xs uppercase tracking-wider",children:I.jsx("span",{className:"bg-white dark:bg-oai-gray-950 px-3 text-oai-gray-400 dark:text-oai-gray-600",children:Fe("login.divider")})})]}),I.jsxs("button",{type:"button",onClick:()=>S(!0),className:Ct("w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-700 bg-oai-gray-50 dark:bg-oai-gray-900 text-sm font-medium text-oai-black dark:text-white","hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 hover:border-oai-gray-300 dark:hover:border-oai-gray-600 transition-colors","flex items-center justify-center gap-2.5"),children:[I.jsx(yD,{className:"h-[18px] w-[18px] text-oai-gray-500 dark:text-oai-gray-400",strokeWidth:1.75}),Fe("login_modal.continue_email")]})]})]})]})}):null}const Ij={VITE_INSFORGE_BASE_URL:"https://srctyff5.us-east.insforge.app"};function jj(){if(typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"))return"";const t=typeof import.meta<"u"?Ij:void 0;return(t?.VITE_TOKENTRACKER_BACKEND_BASE_URL||t?.VITE_INSFORGE_BASE_URL||"").trim()}function h3(){return fi()}function Uj(e=""){if(typeof e!="string"||e.length===0)return!1;const t=new URLSearchParams(e),n=String(t.get("screenshot")||"").toLowerCase();return n==="1"||n==="true"}const Bj=300*1e3,Fj=720*60*1e3;function tm(e){return typeof e=="string"&&/^https?:\/\//i.test(e.trim())}function Vj(e,t=Date.now()){if(!e?.token||!e?.deviceId||!e?.issuedAt)return!0;const n=Date.parse(e.issuedAt);return Number.isFinite(n)?n+Fj<=t:!0}async function wx(e,t){const n=fi();if(!tm(n)||!e)return;const a=n.replace(/\/$/,""),s=_c(),o={Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${e}`};s&&(o.apikey=s);try{await fetch(`${a}/functions/tokentracker-leaderboard-refresh`,{method:"POST",headers:o,body:JSON.stringify({period:"week",source:t})})}catch{}}async function zj(e){const t=fi();if(!tm(t)||!e)return null;const n=t.replace(/\/$/,""),a=_c(),s={Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${e}`};a&&(s.apikey=a);const o=typeof navigator<"u"&&typeof navigator.platform=="string"?navigator.platform:"web",u=await fetch(`${n}/functions/tokentracker-device-token-issue`,{method:"POST",headers:s,body:JSON.stringify({device_name:"Token Tracker (dashboard)",platform:o})});if(!u.ok)return null;const c=await u.json().catch(()=>null),h=typeof c?.token=="string"?c.token:null,f=typeof c?.device_id=="string"?c.device_id:null;return!h||!f?null:{token:h,deviceId:f,issuedAt:typeof c?.created_at=="string"?c.created_at:new Date().toISOString()}}async function mb(e){const{deviceToken:t,insforgeBaseUrl:n}=e,a={deviceToken:t},s=n||fi();tm(s)&&(a.insforgeBaseUrl=s.trim());const o=await _p(),u=await fetch("/functions/tokentracker-local-sync",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json",...o},body:JSON.stringify(a)}),c=await u.json().catch(()=>({}));if(!u.ok){const h=typeof c.error=="string"?c.error:`HTTP ${u.status}`;throw new Error(h)}return c}async function gb(e){const t=await e();if(!t)return null;const n=W_();if(n&&!Vj(n))return n;const a=await zj(t);return a?(_A(a),a):null}async function kx(e){let t=await e();if(!t)return null;let n=await gb(async()=>t);if(!n)return t;try{return await mb({deviceToken:n.token,insforgeBaseUrl:fi()}),t}catch(a){if(!W_()||(K_(),t=await e(),!t)||(n=await gb(async()=>t),!n))throw a;return await mb({deviceToken:n.token,insforgeBaseUrl:fi()}),t}}async function $j(e){const t=wA();if(Date.now()-t<Bj)return;const n=await kx(e);n&&(q_(Date.now()),await wx(n,"cloud-sync-auto"))}async function f3(e){const t=await kx(e);t&&(q_(Date.now()),await wx(t,"cloud-sync-now"))}function Hj(e){const t=e.replace(/\/+$/,"")||"/";return t==="/share"||t==="/share.html"||t.startsWith("/share/")}function Wj(e){const t=e.replace(/\/+$/,"")||"/";return t==="/login"||t==="/landing"||Hj(t)?!1:t==="/"||t==="/dashboard"||t.startsWith("/leaderboard")}function Kj(){const e=Fn(),t=Ho(),n=k.useRef(!1);k.useEffect(()=>{if(!vA()||!Wj(e.pathname||"/")||!t.enabled||!t.signedIn||t.loading||!bA())return;let a=!1;const s=window.setTimeout(()=>{(async()=>{if(!(a||n.current)){n.current=!0;try{await $j(()=>t.getAccessToken())}catch(o){console.warn("[tokentracker] cloud usage sync:",o)}finally{n.current=!1}}})()},2500);return()=>{a=!0,window.clearTimeout(s)}},[e.pathname,t.enabled,t.signedIn,t.loading,t.getAccessToken])}function qj(){const e=k.useContext(yw);if(e===null)throw new Error("useTheme must be used within a ThemeProvider");return e}function Gj({prefersReducedMotion:e,screenshotCapture:t}){return!(t||e)}function Yj(e){if(!e||typeof e!="object")return null;const t=e.user_metadata&&typeof e.user_metadata=="object"?e.user_metadata:{},n=e.profile&&typeof e.profile=="object"?e.profile:{},a=t.avatar_url||t.picture||n.avatar_url||e.avatar_url;return typeof a=="string"&&a.trim()?a.trim():null}function yb(e){const t=String(e||"").trim();if(!t)return"?";const n=t.split(/\s+/).filter(Boolean);return n.length>=2?(n[0][0]+n[n.length-1][0]).toUpperCase():t.slice(0,2).toUpperCase()}function vb({className:e,variant:t="header",collapsed:n=!1,onAfterAction:a}){Ko();const s=t==="sidebar",{enabled:o,loading:u,signedIn:c,user:h,displayName:f}=Ho(),{openLoginModal:m}=bw(),y=fc(),b=k.useMemo(()=>Yj(h),[h]);if(!o)return null;if(u)return I.jsx("div",{className:Ct("h-9 w-9 shrink-0 rounded-full bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse",e),"aria-hidden":!0});if(!c)return s?I.jsxs("button",{type:"button",onClick:()=>{m(),a?.()},className:Ct("flex items-center gap-2 rounded-md px-2 py-1.5 text-[13px] font-medium text-oai-gray-700 dark:text-oai-gray-300 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500 min-w-0",n?"h-8 w-8 justify-center px-0":"w-full",e),"aria-label":Fe("header.auth.sign_in_aria"),title:n?Fe("header.auth.sign_in_aria"):void 0,children:[I.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:I.jsx("img",{src:"/app-icon.png",alt:"",width:18,height:18,className:"h-[18px] w-[18px] rounded"})}),!n&&I.jsx("span",{className:"truncate flex-1 text-left",children:Fe("header.auth.sign_in_aria")})]}):I.jsx("button",{type:"button",onClick:m,className:Ct("shrink-0 inline-flex h-9 items-center justify-center gap-1.5 rounded-full px-5 text-sm font-medium transition-colors duration-200 ease-out shadow-sm ring-1 ring-oai-gray-200 dark:ring-white/10 bg-oai-gray-900 text-white hover:bg-oai-gray-800 active:bg-oai-gray-950 dark:bg-white dark:text-oai-gray-900 dark:hover:bg-oai-gray-100 dark:active:bg-oai-gray-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-oai-gray-950",e),"aria-label":Fe("header.auth.sign_in_aria"),children:Fe("header.auth.sign_in_aria")});const w=()=>{y("/settings"),a?.()};return I.jsx("div",{className:Ct(s?"relative flex w-full shrink-0 items-center":"relative flex shrink-0 items-center",e),children:I.jsxs("button",{type:"button",onClick:w,className:Ct(s?Ct("flex w-full items-center gap-2 rounded-md px-2 py-1.5 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 transition-colors min-w-0",n&&"justify-center px-0 py-0 h-9 w-9"):"flex items-center gap-2 rounded-full pl-1 pr-2 py-1 border border-transparent hover:bg-oai-gray-100 dark:hover:bg-oai-gray-900/80 hover:border-oai-gray-200 dark:hover:border-oai-gray-800 transition-colors"),"aria-label":Fe("header.auth.open_settings"),title:s&&n?f:void 0,children:[s?I.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:b?I.jsx("img",{src:b,alt:"",width:20,height:20,className:"h-5 w-5 rounded-full object-cover ring-1 ring-oai-gray-300 dark:ring-oai-gray-700",referrerPolicy:"no-referrer"}):I.jsx("span",{className:"flex h-5 w-5 items-center justify-center rounded-full bg-oai-brand-600 text-[9px] font-semibold text-white ring-1 ring-oai-brand-500/50",children:yb(f)})}):b?I.jsx("img",{src:b,alt:"",width:32,height:32,className:"h-8 w-8 rounded-full object-cover ring-1 ring-oai-gray-300 dark:ring-oai-gray-700 shrink-0",referrerPolicy:"no-referrer"}):I.jsx("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-oai-brand-600 text-xs font-semibold text-white ring-1 ring-oai-brand-500/50",children:yb(f)}),s?!n&&I.jsx("span",{className:"truncate text-[13px] font-medium text-oai-gray-900 dark:text-oai-gray-200 flex-1 text-left min-w-0",children:f}):I.jsx("span",{className:"hidden sm:inline truncate text-sm font-medium text-oai-gray-900 dark:text-oai-gray-200 max-w-[120px]",children:f})]})})}const zf="tt.sidebarCollapsed";function Zj(){return[{id:"general",label:Fe("nav.group.general"),items:[{id:"usage",to:"/dashboard",icon:uD,label:Fe("nav.usage")},{id:"limits",to:"/limits",icon:dD,label:Fe("nav.limits")},{id:"leaderboard",to:"/leaderboard",icon:MD,label:Fe("nav.leaderboard")}]},{id:"tools",label:Fe("nav.group.tools"),items:[{id:"widgets",to:"/widgets",icon:mD,label:Fe("nav.widgets")},{id:"skills",to:"/skills",icon:SD,label:Fe("nav.skills")},{id:"ip-check",to:"/ip-check",icon:fD,label:Fe("nav.ip_check")}]},{id:"account",label:Fe("nav.group.account"),items:[{id:"settings",to:"/settings",icon:ED,label:Fe("nav.settings")}]}]}function Qj(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(zf)==="1"}catch{return!1}}function Xj(){const[e,t]=k.useState(Qj),n=k.useCallback(()=>{t(a=>{const s=!a;try{typeof window<"u"&&window.localStorage.setItem(zf,s?"1":"0")}catch{}return s})},[]);return k.useEffect(()=>{if(typeof window>"u")return;const a=s=>{s.key===zf&&t(s.newValue==="1")};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)},[]),{collapsed:e,toggle:n}}function Jj(e,t){const n=e.replace(/\/+$/,"")||"/";return t==="/dashboard"?n==="/dashboard"||n==="/":t==="/leaderboard"?n==="/leaderboard"||n.startsWith("/leaderboard/"):n===t}function e4({label:e,collapsed:t,first:n}){return t?n?null:I.jsx("div",{className:"mx-2 my-2 h-px bg-oai-gray-200/70 dark:bg-oai-gray-800/70","aria-hidden":!0}):I.jsx("div",{className:Ct("px-3 pb-1 text-[10px] uppercase tracking-wider text-oai-gray-500 dark:text-oai-gray-500",n?"pt-2":"pt-4"),children:e})}function t4({item:e,collapsed:t,active:n,onClick:a}){const s=e.icon;return I.jsxs(mc,{to:e.to,onClick:a,title:t?e.label:void 0,"aria-current":n?"page":void 0,className:Ct("flex items-center gap-2 rounded-md px-2 py-1.5 text-[13px] no-underline transition-colors",t&&"justify-center px-0 py-2",n?"bg-oai-gray-200/70 text-oai-black font-medium dark:bg-oai-gray-800 dark:text-white":"text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/50 hover:text-oai-black dark:hover:bg-oai-gray-800/60 dark:hover:text-white"),children:[I.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:I.jsx(s,{className:"h-[15px] w-[15px]","aria-hidden":!0})}),!t&&I.jsx("span",{className:"truncate",children:e.label})]})}function n4({as:e="button",title:t,onClick:n,href:a,children:s,className:o,...u}){const c=Ct("flex h-10 w-10 items-center justify-center rounded-lg text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors no-underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",o);return e==="a"?I.jsx("a",{href:a,target:"_blank",rel:"noopener noreferrer",title:t,"aria-label":t,className:c,...u,children:s}):I.jsx("button",{type:"button",title:t,"aria-label":t,onClick:n,className:c,...u,children:s})}function r4({repo:e="mm7894215/TokenTracker",glassChrome:t=!1}){const[n,a]=k.useState(null);return k.useEffect(()=>{if(typeof window>"u")return;const s=typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;Gj({prefersReducedMotion:s,screenshotCapture:!1})&&fetch(`https://api.github.com/repos/${e}`).then(o=>o.json()).then(o=>{o&&typeof o.stargazers_count=="number"&&a(o.stargazers_count)}).catch(()=>{})},[e]),I.jsxs("a",{href:`https://github.com/${e}`,target:"_blank",rel:"noopener noreferrer","aria-label":n!==null?`Star on GitHub (${n})`:"Star on GitHub",className:Ct("inline-flex h-7 items-center gap-1.5 rounded-full px-2.5 text-xs font-medium transition-colors no-underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",t?"border border-gray-500/20 dark:border-gray-500/30 bg-gray-500/[0.04] dark:bg-gray-500/[0.06] backdrop-blur-[2px] text-oai-gray-700 dark:text-oai-gray-300 hover:bg-gray-500/10 dark:hover:bg-gray-500/12 hover:border-gray-500/30 dark:hover:border-gray-500/40 hover:text-oai-black dark:hover:text-white":"border border-oai-gray-200 dark:border-oai-gray-700 text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white hover:border-oai-gray-300 dark:hover:border-oai-gray-600"),children:[I.jsx("svg",{height:"12",viewBox:"0 0 16 16",width:"12",className:"shrink-0 fill-current",children:I.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"})}),I.jsx("span",{children:"Star"}),n!==null&&I.jsx("span",{className:"text-[10px] text-oai-gray-500 dark:text-oai-gray-500 tabular-nums",children:n})]})}const a4=[{value:"light",label:"Light",Icon:mw},{value:"dark",label:"Dark",Icon:pw},{value:"system",label:"System",Icon:wD}];function i4({theme:e,resolvedTheme:t,onSetTheme:n,glassChrome:a=!1}){const[s,o]=k.useState(!1),u=k.useRef(null),c=t==="dark"?pw:mw;return k.useEffect(()=>{if(!s)return;const h=m=>{u.current&&!u.current.contains(m.target)&&o(!1)},f=m=>{m.key==="Escape"&&o(!1)};return document.addEventListener("mousedown",h),document.addEventListener("keydown",f),()=>{document.removeEventListener("mousedown",h),document.removeEventListener("keydown",f)}},[s]),I.jsxs("div",{ref:u,className:"relative",children:[I.jsx("button",{type:"button","aria-label":"Theme","aria-expanded":s,"aria-haspopup":"menu",title:"Theme",onClick:()=>o(h=>!h),className:Ct("inline-flex h-7 w-7 items-center justify-center rounded-full transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",a?"border border-gray-500/20 dark:border-gray-500/30 bg-gray-500/[0.04] dark:bg-gray-500/[0.06] backdrop-blur-[2px] text-oai-gray-700 dark:text-oai-gray-300 hover:bg-gray-500/10 dark:hover:bg-gray-500/12 hover:border-gray-500/30 dark:hover:border-gray-500/40 hover:text-oai-black dark:hover:text-white":"border border-oai-gray-200 dark:border-oai-gray-700 text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white hover:border-oai-gray-300 dark:hover:border-oai-gray-600"),children:I.jsx(c,{className:"h-3.5 w-3.5","aria-hidden":!0})}),s&&I.jsx("div",{role:"menu",className:"absolute bottom-full left-0 mb-2 z-50 min-w-[140px] py-1 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 shadow-lg",children:a4.map(({value:h,label:f,Icon:m})=>{const y=e===h;return I.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{n(h),o(!1)},className:Ct("flex w-full items-center gap-2.5 px-3 py-1.5 text-[13px] transition-colors",y?"text-oai-black dark:text-white bg-oai-gray-100 dark:bg-oai-gray-800":"text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-50 dark:hover:bg-oai-gray-800/60 hover:text-oai-black dark:hover:text-white"),children:[I.jsx(m,{className:"h-3.5 w-3.5 shrink-0","aria-hidden":!0}),I.jsx("span",{children:f})]},h)})})]})}function xx({collapsed:e,onToggleCollapsed:t,onItemClick:n,showCloseButton:a=!1,onClose:s,glassChrome:o=!1}){const c=Fn()?.pathname||"/",{theme:h,resolvedTheme:f,setTheme:m}=qj(),{resolvedLocale:y}=Ko(),b=k.useMemo(()=>Zj(),[y]);return I.jsxs(I.Fragment,{children:[I.jsx("div",{className:Ct("px-2 pt-2 pb-2",e&&"flex justify-center"),children:a?I.jsxs("div",{className:"flex items-center gap-2",children:[I.jsx("div",{className:"flex-1 min-w-0",children:I.jsx(vb,{variant:"sidebar",collapsed:e,onAfterAction:n})}),I.jsx("button",{type:"button",onClick:s,"aria-label":Fe("nav.close_menu"),title:Fe("nav.close_menu"),className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-oai-gray-500 dark:text-oai-gray-500 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-gray-900 dark:hover:text-oai-gray-200 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",children:I.jsx(gw,{className:"h-4 w-4",strokeWidth:1.75,"aria-hidden":!0})})]}):I.jsx(vb,{variant:"sidebar",collapsed:e,onAfterAction:n})}),I.jsx("nav",{"aria-label":Fe("nav.nav_label"),className:"flex-1 px-2 pb-2 flex flex-col overflow-y-auto",children:b.map((w,x)=>I.jsxs("div",{className:"flex flex-col",children:[I.jsx(e4,{label:w.label,collapsed:e,first:x===0}),I.jsx("div",{className:"flex flex-col gap-0.5",children:w.items.map(T=>I.jsx(t4,{item:T,collapsed:e,active:Jj(c,T.to),onClick:n},T.id))})]},w.id))}),I.jsxs("div",{className:Ct("flex items-center px-2 py-3",e?"flex-col justify-center gap-2":"justify-between gap-2"),children:[I.jsx(i4,{theme:h,resolvedTheme:f,onSetTheme:m,glassChrome:o}),I.jsx("div",{className:"flex items-center gap-1.5",children:!e&&I.jsx(r4,{glassChrome:o})})]})]})}function s4({collapsed:e,onToggleCollapsed:t}){const n=k.useMemo(()=>typeof window>"u"?!1:pr()||ow(),[]);return I.jsx("aside",{"aria-label":Fe("nav.aside_label"),className:Ct("hidden lg:flex flex-col shrink-0 h-full min-h-0 transition-[width] duration-200",e?"w-[72px]":"w-[220px]"),children:I.jsx(xx,{collapsed:e,onToggleCollapsed:t,glassChrome:n})})}function o4({open:e,onClose:t}){return k.useEffect(()=>{if(!e)return;const n=a=>{a.key==="Escape"&&t()};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[e,t]),k.useEffect(()=>{if(!e)return;const n=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=n}},[e]),e?I.jsxs("div",{className:"lg:hidden fixed inset-0 z-[80] flex",children:[I.jsx("div",{className:"absolute inset-0 bg-black/40 backdrop-blur-sm",onClick:t,"aria-hidden":!0}),I.jsx("aside",{"aria-label":Fe("nav.aside_label"),className:"relative w-[260px] max-w-[80vw] flex flex-col bg-oai-white dark:bg-oai-gray-900 border-r border-oai-gray-200 dark:border-oai-gray-800 shadow-2xl",children:I.jsx(xx,{collapsed:!1,showCloseButton:!0,onClose:t,onItemClick:t})})]}):null}function l4({onOpenDrawer:e}){return I.jsxs("div",{className:"lg:hidden flex items-center justify-between gap-2 px-3 h-14 border-b border-oai-gray-200 dark:border-oai-gray-800",children:[I.jsx(n4,{title:Fe("nav.menu"),onClick:e,children:I.jsx(bD,{className:"h-5 w-5","aria-hidden":!0})}),I.jsxs(mc,{to:"/landing",className:"flex items-center gap-2 no-underline hover:opacity-80 transition-opacity","aria-label":"Token Tracker",children:[I.jsx("img",{src:"/app-icon.png",alt:"",width:24,height:24,className:"rounded-md"}),I.jsx("span",{className:"text-sm font-semibold text-oai-black dark:text-oai-white",children:"Token Tracker"})]}),I.jsx("div",{className:"w-10 shrink-0","aria-hidden":!0})]})}function u4({children:e}){const{collapsed:t,toggle:n}=Xj(),[a,s]=k.useState(!1),o=k.useCallback(()=>s(!0),[]),u=k.useCallback(()=>s(!1),[]),c=k.useMemo(()=>typeof window>"u"?!1:pr()||ow(),[]);return I.jsxs("div",{className:Ct("fixed inset-0 flex flex-col text-oai-black dark:text-oai-white font-sans overflow-hidden",c?"bg-transparent":"bg-oai-gray-100 dark:bg-oai-gray-950"),children:[c&&I.jsx("div",{className:"h-7 shrink-0",style:{WebkitAppRegion:"drag"},"aria-hidden":!0}),I.jsxs("div",{className:"flex-1 min-h-0 flex",children:[I.jsx(s4,{collapsed:t,onToggleCollapsed:n}),I.jsx(o4,{open:a,onClose:u}),I.jsx("div",{className:"flex-1 min-w-0 min-h-0 p-2 lg:pl-0 lg:pr-3 lg:pb-3 flex flex-col",children:I.jsxs("div",{className:Ct("flex-1 min-h-0 flex flex-col bg-oai-white dark:bg-oai-gray-900 border border-oai-gray-200 dark:border-oai-gray-800 overflow-hidden",c?"tt-native-main-card":"rounded-2xl",!c&&"shadow-sm"),children:[I.jsx(l4,{onOpenDrawer:o}),I.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto",children:e})]})})]})]})}const c4=typeof window<"u"?window.location.search:"",bb=new URLSearchParams(c4),bu=bb.get("insforge_code")||bb.get("code")||null;function d4(){Ko();const{loading:e,signedIn:t}=Ho(),n=fc(),[a,s]=k.useState("processing"),[o,u]=k.useState(null),c=k.useRef(!1);return k.useEffect(()=>{!bu||c.current||(c.current=!0,(async()=>{try{const f=await(await fetch("/api/auth-bridge/verifier")).json();u(!!f?.native)}catch{u(!1)}})())},[]),k.useEffect(()=>{if(o!==!0||!bu)return;s("redirecting");const h=setTimeout(()=>{window.location.href=`tokentracker://auth/callback?insforge_code=${encodeURIComponent(bu)}`},200);return()=>clearTimeout(h)},[o]),k.useEffect(()=>{if(o!==!1||e)return;if(t){n("/dashboard",{replace:!0});return}const h=setTimeout(()=>{t||s("failed")},5e3);return()=>clearTimeout(h)},[o,e,t,n]),k.useEffect(()=>{if(!bu&&o===null){const h=setTimeout(()=>s("failed"),3e3);return()=>clearTimeout(h)}},[o]),a==="processing"&&o!==!0&&(o===null||o===!1&&e)?I.jsx("div",{className:"min-h-screen bg-oai-gray-950"}):I.jsx("div",{className:"min-h-screen bg-oai-gray-950 text-white font-oai antialiased dark flex items-center justify-center",children:I.jsxs("div",{className:"text-center space-y-4 max-w-sm px-4",children:[a==="processing"&&I.jsxs(I.Fragment,{children:[I.jsx("div",{className:"w-8 h-8 border-2 border-oai-gray-600 border-t-white rounded-full animate-spin mx-auto"}),I.jsx("p",{className:"text-oai-gray-400 text-sm",children:Fe("auth.callback.processing")})]}),a==="redirecting"&&I.jsxs(I.Fragment,{children:[I.jsx("div",{className:"w-12 h-12 mx-auto rounded-full bg-green-500/15 flex items-center justify-center",children:I.jsx("svg",{className:"w-6 h-6 text-green-400",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:I.jsx("path",{d:"M20 6 9 17l-5-5"})})}),I.jsx("p",{className:"text-white text-sm font-medium",children:Fe("auth.callback.success")}),I.jsx("p",{className:"text-oai-gray-500 text-xs",children:Fe("auth.callback.redirecting")})]}),a==="failed"&&I.jsxs("div",{className:"space-y-3",children:[I.jsx("p",{className:"text-oai-gray-300 text-sm",children:Fe("auth.callback.failed")}),I.jsx("button",{type:"button",onClick:()=>window.close(),className:"px-4 py-2 rounded-lg bg-oai-gray-800 text-sm text-white hover:bg-oai-gray-700 transition-colors",children:Fe("auth.callback.close")})]})]})})}const h4=k.lazy(()=>Pr(()=>import("./DashboardPage-chDVOYmG.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.DashboardPage}))),f4=k.lazy(()=>Pr(()=>import("./IpCheckPage-CkEZ9yLK.js"),[])),p4=k.lazy(()=>Pr(()=>import("./LandingPage-BgckTHRQ.js"),__vite__mapDeps([7,8,4])).then(e=>({default:e.LandingPage}))),m4=k.lazy(()=>Pr(()=>import("./LeaderboardPage-BCNW7UWp.js"),__vite__mapDeps([9,5,10,11])).then(e=>({default:e.LeaderboardPage}))),g4=k.lazy(()=>Pr(()=>import("./LeaderboardProfilePage-BLATxMt-.js"),__vite__mapDeps([12,8,10])).then(e=>({default:e.LeaderboardProfilePage}))),y4=k.lazy(()=>Pr(()=>import("./LimitsPage-arF--WgR.js"),__vite__mapDeps([13,1,14,3,6,4])).then(e=>({default:e.LimitsPage}))),v4=k.lazy(()=>Pr(()=>import("./LoginPage-DpoFP0va.js"),[]).then(e=>({default:e.LoginPage}))),b4=k.lazy(()=>Pr(()=>import("./SettingsPage-Bb22ORmU.js"),__vite__mapDeps([15,14,16,3,17])).then(e=>({default:e.SettingsPage}))),_4=k.lazy(()=>Pr(()=>import("./SkillsPage-xhtBqVKC.js"),__vite__mapDeps([18,3,2,5,4,11,17])).then(e=>({default:e.SkillsPage}))),w4=k.lazy(()=>Pr(()=>import("./WidgetsPage-CUoSVDET.js"),__vite__mapDeps([19,16,3,6,4,17,11])).then(e=>({default:e.WidgetsPage})));function k4(){const{resolvedLocale:e}=Ko(),t=Fn(),n=Ho();Kj();const a=Pn(),s=k.useMemo(()=>typeof window>"u"?!1:Uj(window.location.search),[]),o=t?.pathname||"/",u=new URL(window.location.href),c=u.pathname.replace(/\/+$/,"")||"/",f=c.match(/^\/share\/([^/?#]+)$/i)?.[1]||null,m=u.searchParams.get("token")||null,y=f||m,b=c==="/share"||c==="/share.html"||c.startsWith("/share/"),w=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),x=o.replace(/\/+$/,"")||"/",T=x.match(/^\/leaderboard\/u\/([^/]+)$/i),P=T?T[1]:null,L=x==="/leaderboard"||!!P,D=!!(n.enabled&&n.signedIn),M=w||D,j=!1,K=jj(),G=k.useMemo(()=>!n.enabled||!D?null:{getAccessToken:()=>n.getAccessToken(),name:n.displayName||"",userId:n.user?.id||null},[D,n]);let W=w||a||s?"dashboard":"landing";x==="/landing"&&(W="landing"),x==="/dashboard"&&(W="dashboard"),L&&(W="dashboard");const S=x==="/limits",Z=x==="/settings",X=x==="/skills",_e=x==="/widgets",oe=x==="/ip-check";(S||Z||X||_e||oe)&&(W="dashboard");let Re=h4;P?Re=g4:x==="/leaderboard"?Re=m4:S?Re=y4:Z?Re=b4:X?Re=_4:_e?Re=w4:oe&&(Re=f4);const ce=!b&&(x==="/dashboard"||x==="/"||x==="/leaderboard"||S||Z||X||_e||oe);let ue=null;if(x==="/auth/callback"||x==="/auth/native-callback")ue=I.jsx(d4,{});else if(x==="/login")ue=I.jsx(v4,{});else if(W==="landing")ue=I.jsx(p4,{signInUrl:"/login",signUpUrl:"/login"});else{const Me=I.jsx(Re,{baseUrl:K,auth:G,signedIn:M,sessionSoftExpired:j,signOut:()=>n.enabled?n.signOut():Promise.resolve(),publicMode:b,publicToken:y,userId:P,signInUrl:"/login",signUpUrl:"/login"},e);ce?ue=I.jsx(u4,{children:Me}):ue=Me}return I.jsx(ID,{children:I.jsx(BD,{children:I.jsxs(FD,{children:[I.jsx(k.Suspense,{fallback:null,children:ue}),I.jsx(Oj,{}),I.jsx(HL,{}),I.jsx(tD,{})]})})})}const x4=CT([{path:"*",element:I.jsx(k4,{})}]);mP.createRoot(document.getElementById("root")).render(I.jsx(Hf.StrictMode,{children:I.jsx(AL,{children:I.jsx(aL,{children:I.jsx(FT,{router:x4})})})}));export{LA as $,Y_ as A,Fe as B,qj as C,I as D,Wh as E,z4 as F,V4 as G,OD as H,J4 as I,ic as J,O4 as K,mc as L,Zp as M,N4 as N,DO as O,bw as P,Ho as Q,Hf as R,s3 as S,K4 as T,Ko as U,Uj as V,Ea as W,gw as X,Z4 as Y,$4 as Z,Pr as _,qt as a,I4 as a0,j4 as a1,Q4 as a2,F4 as a3,i3 as a4,Ct as a5,vb as a6,BT as a7,Fn as a8,fc as a9,pr as aA,ow as aB,o3 as aC,c3 as aD,l3 as aE,zv as aF,kk as aG,mN as aH,Nf as aI,h3 as aa,bA as ab,L4 as ac,f3 as ad,D4 as ae,G4 as af,Y4 as ag,Gj as ah,ED as ai,r3 as aj,S4 as ak,Sp as al,vA as am,Uv as an,q4 as ao,mw as ap,pw as aq,wD as ar,ps as as,Zu as at,wp as au,TD as av,_p as aw,cP as ax,$f as ay,u3 as az,_w as b,dn as c,Na as d,o0 as e,dt as f,Z_ as g,Pn as h,IM as i,M4 as j,PA as k,a3 as l,gs as m,NA as n,OA as o,e3 as p,B4 as q,k as r,W4 as s,t3 as t,Pp as u,n3 as v,U4 as w,yt as x,H4 as y,X4 as z};