@zhangferry-dev/tokendash 1.1.3 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # tokendash
2
2
 
3
- A beautiful, local web dashboard for visualizing your Claude Code and Codex token usage statistics.
3
+ A beautiful, local web dashboard for visualizing your Claude Code, Codex, and OpenClaw token usage statistics.
4
4
 
5
- It runs locally, fetches your data via the `ccusage` and `@ccusage/codex` CLI tools, and presents it in a clean, interactive React dashboard.
5
+ It runs locally and parses token usage data directly from local session files, presenting it in a clean, interactive React dashboard. Claude Code partially relies on the `ccusage` CLI for some data.
6
6
 
7
7
  ![Product Screenshoot](resources/product_screenshoot.png)
8
8
 
@@ -83,7 +83,7 @@ If you want to contribute or modify the dashboard locally:
83
83
 
84
84
  - **Frontend:** React 19, Recharts, Tailwind CSS (via Vite plugin), built with Vite.
85
85
  - **Backend:** Express, TypeScript.
86
- - **Data Source:** Spawns child processes to run `ccusage --json` and parses the output. Uses a short-lived in-memory cache to ensure snappy UI updates when toggling filters.
86
+ - **Data Source:** Codex and OpenClaw data is parsed directly from local session files. Claude Code data partially uses `ccusage --json` CLI. Uses a short-lived in-memory cache to ensure snappy UI updates when toggling filters.
87
87
 
88
88
  ## License
89
89
 
@@ -118,4 +118,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
118
118
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function pK(e,t){if(e){if(typeof e=="string")return x0(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return x0(e,t)}}function vK(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function yK(e){if(Array.isArray(e))return x0(e)}function x0(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function mK(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function DM(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,eN(r.key),r)}}function gK(e,t,n){return t&&DM(e.prototype,t),n&&DM(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function bK(e,t,n){return t=Vf(t),xK(e,JD()?Reflect.construct(t,n||[],Vf(e).constructor):t.apply(e,n))}function xK(e,t){if(t&&(Yo(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return SK(e)}function SK(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function JD(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(JD=function(){return!!e})()}function Vf(e){return Vf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Vf(e)}function OK(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&S0(e,t)}function S0(e,t){return S0=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,o){return r.__proto__=o,r},S0(e,t)}function Vn(e,t,n){return t=eN(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function eN(e){var t=_K(e,"string");return Yo(t)=="symbol"?t:t+""}function _K(e,t){if(Yo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(Yo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}var Si=(function(e){function t(){var n;mK(this,t);for(var r=arguments.length,o=new Array(r),l=0;l<r;l++)o[l]=arguments[l];return n=bK(this,t,[].concat(o)),Vn(n,"state",{isAnimationFinished:!0,totalLength:0}),Vn(n,"generateSimpleStrokeDasharray",function(c,f){return"".concat(f,"px ").concat(c-f,"px")}),Vn(n,"getStrokeDasharray",function(c,f,d){var h=d.reduce(function(w,E){return w+E});if(!h)return n.generateSimpleStrokeDasharray(f,c);for(var y=Math.floor(c/h),v=c%h,g=f-c,b=[],_=0,S=0;_<d.length;S+=d[_],++_)if(S+d[_]>v){b=[].concat(po(d.slice(0,_)),[v-S]);break}var x=b.length%2===0?[0,g]:[g];return[].concat(po(t.repeat(d,y)),po(b),x).map(function(w){return"".concat(w,"px")}).join(", ")}),Vn(n,"id",Na("recharts-line-")),Vn(n,"pathRef",function(c){n.mainCurve=c}),Vn(n,"handleAnimationEnd",function(){n.setState({isAnimationFinished:!0}),n.props.onAnimationEnd&&n.props.onAnimationEnd()}),Vn(n,"handleAnimationStart",function(){n.setState({isAnimationFinished:!1}),n.props.onAnimationStart&&n.props.onAnimationStart()}),n}return OK(t,e),gK(t,[{key:"componentDidMount",value:function(){if(this.props.isAnimationActive){var r=this.getTotalLength();this.setState({totalLength:r})}}},{key:"componentDidUpdate",value:function(){if(this.props.isAnimationActive){var r=this.getTotalLength();r!==this.state.totalLength&&this.setState({totalLength:r})}}},{key:"getTotalLength",value:function(){var r=this.mainCurve;try{return r&&r.getTotalLength&&r.getTotalLength()||0}catch{return 0}}},{key:"renderErrorBar",value:function(r,o){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var l=this.props,c=l.points,f=l.xAxis,d=l.yAxis,h=l.layout,y=l.children,v=Ft(y,uu);if(!v)return null;var g=function(S,x){return{x:S.x,y:S.y,value:S.value,errorVal:ot(S.payload,x)}},b={clipPath:r?"url(#clipPath-".concat(o,")"):null};return R.createElement(je,b,v.map(function(_){return R.cloneElement(_,{key:"bar-".concat(_.props.dataKey),data:c,xAxis:f,yAxis:d,layout:h,dataPointFormatter:g})}))}},{key:"renderDots",value:function(r,o,l){var c=this.props.isAnimationActive;if(c&&!this.state.isAnimationFinished)return null;var f=this.props,d=f.dot,h=f.points,y=f.dataKey,v=ye(this.props,!1),g=ye(d,!0),b=h.map(function(S,x){var w=yn(yn(yn({key:"dot-".concat(x),r:3},v),g),{},{index:x,cx:S.x,cy:S.y,value:S.value,dataKey:y,payload:S.payload,points:h});return t.renderDotItem(d,w)}),_={clipPath:r?"url(#clipPath-".concat(o?"":"dots-").concat(l,")"):null};return R.createElement(je,wl({className:"recharts-line-dots",key:"dots"},_),b)}},{key:"renderCurveStatically",value:function(r,o,l,c){var f=this.props,d=f.type,h=f.layout,y=f.connectNulls;f.ref;var v=PM(f,sK),g=yn(yn(yn({},ye(v,!0)),{},{fill:"none",className:"recharts-line-curve",clipPath:o?"url(#clipPath-".concat(l,")"):null,points:r},c),{},{type:d,layout:h,connectNulls:y});return R.createElement(Ma,wl({},g,{pathRef:this.pathRef}))}},{key:"renderCurveWithAnimation",value:function(r,o){var l=this,c=this.props,f=c.points,d=c.strokeDasharray,h=c.isAnimationActive,y=c.animationBegin,v=c.animationDuration,g=c.animationEasing,b=c.animationId,_=c.animateNewValues,S=c.width,x=c.height,w=this.state,E=w.prevPoints,j=w.totalLength;return R.createElement(Bn,{begin:y,duration:v,isActive:h,easing:g,from:{t:0},to:{t:1},key:"line-".concat(b),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(P){var A=P.t;if(E){var T=E.length/f.length,M=f.map(function(q,X){var Q=Math.floor(X*T);if(E[Q]){var Z=E[Q],$=ft(Z.x,q.x),H=ft(Z.y,q.y);return yn(yn({},q),{},{x:$(A),y:H(A)})}if(_){var te=ft(S*2,q.x),I=ft(x/2,q.y);return yn(yn({},q),{},{x:te(A),y:I(A)})}return yn(yn({},q),{},{x:q.x,y:q.y})});return l.renderCurveStatically(M,r,o)}var N=ft(0,j),k=N(A),Y;if(d){var U="".concat(d).split(/[,\s]+/gim).map(function(q){return parseFloat(q)});Y=l.getStrokeDasharray(k,j,U)}else Y=l.generateSimpleStrokeDasharray(j,k);return l.renderCurveStatically(f,r,o,{strokeDasharray:Y})})}},{key:"renderCurve",value:function(r,o){var l=this.props,c=l.points,f=l.isAnimationActive,d=this.state,h=d.prevPoints,y=d.totalLength;return f&&c&&c.length&&(!h&&y>0||!Ca(h,c))?this.renderCurveWithAnimation(r,o):this.renderCurveStatically(c,r,o)}},{key:"render",value:function(){var r,o=this.props,l=o.hide,c=o.dot,f=o.points,d=o.className,h=o.xAxis,y=o.yAxis,v=o.top,g=o.left,b=o.width,_=o.height,S=o.isAnimationActive,x=o.id;if(l||!f||!f.length)return null;var w=this.state.isAnimationFinished,E=f.length===1,j=Te("recharts-line",d),P=h&&h.allowDataOverflow,A=y&&y.allowDataOverflow,T=P||A,M=be(x)?this.id:x,N=(r=ye(c,!1))!==null&&r!==void 0?r:{r:3,strokeWidth:2},k=N.r,Y=k===void 0?3:k,U=N.strokeWidth,q=U===void 0?2:U,X=rP(c)?c:{},Q=X.clipDot,Z=Q===void 0?!0:Q,$=Y*2+q;return R.createElement(je,{className:j},P||A?R.createElement("defs",null,R.createElement("clipPath",{id:"clipPath-".concat(M)},R.createElement("rect",{x:P?g:g-b/2,y:A?v:v-_/2,width:P?b:b*2,height:A?_:_*2})),!Z&&R.createElement("clipPath",{id:"clipPath-dots-".concat(M)},R.createElement("rect",{x:g-$/2,y:v-$/2,width:b+$,height:_+$}))):null,!E&&this.renderCurve(T,M),this.renderErrorBar(T,M),(E||c)&&this.renderDots(T,Z,M),(!S||w)&&Qn.renderCallByParent(this.props,f))}}],[{key:"getDerivedStateFromProps",value:function(r,o){return r.animationId!==o.prevAnimationId?{prevAnimationId:r.animationId,curPoints:r.points,prevPoints:o.curPoints}:r.points!==o.curPoints?{curPoints:r.points}:null}},{key:"repeat",value:function(r,o){for(var l=r.length%2!==0?[].concat(po(r),[0]):r,c=[],f=0;f<o;++f)c=[].concat(po(c),po(l));return c}},{key:"renderDotItem",value:function(r,o){var l;if(R.isValidElement(r))l=R.cloneElement(r,o);else if(Se(r))l=r(o);else{var c=o.key,f=PM(o,fK),d=Te("recharts-line-dot",typeof r!="boolean"?r.className:"");l=R.createElement(vc,wl({key:c},f,{className:d}))}return l}}])})(ie.PureComponent);Vn(Si,"displayName","Line");Vn(Si,"defaultProps",{xAxisId:0,yAxisId:0,connectNulls:!1,activeDot:!0,dot:!0,legendType:"line",stroke:"#3182bd",strokeWidth:1,fill:"#fff",points:[],isAnimationActive:!Xr.isSsr,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",hide:!1,label:!1});Vn(Si,"getComposedData",function(e){var t=e.props,n=e.xAxis,r=e.yAxis,o=e.xAxisTicks,l=e.yAxisTicks,c=e.dataKey,f=e.bandSize,d=e.displayedData,h=e.offset,y=t.layout,v=d.map(function(g,b){var _=ot(g,c);return y==="horizontal"?{x:Ro({axis:n,ticks:o,bandSize:f,entry:g,index:b}),y:be(_)?null:r.scale(_),value:_,payload:g}:{x:be(_)?null:n.scale(_),y:Ro({axis:r,ticks:l,bandSize:f,entry:g,index:b}),value:_,payload:g}});return yn({points:v,layout:y},h)});var AK=["layout","type","stroke","connectNulls","isRange","ref"],wK=["key"],tN;function Xo(e){"@babel/helpers - typeof";return Xo=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Xo(e)}function nN(e,t){if(e==null)return{};var n=TK(e,t),r,o;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(o=0;o<l.length;o++)r=l[o],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function TK(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function hi(){return hi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},hi.apply(this,arguments)}function NM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function Oa(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?NM(Object(n),!0).forEach(function(r){ur(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):NM(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function EK(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function RM(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,aN(r.key),r)}}function jK(e,t,n){return t&&RM(e.prototype,t),n&&RM(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function MK(e,t,n){return t=Ff(t),PK(e,rN()?Reflect.construct(t,n||[],Ff(e).constructor):t.apply(e,n))}function PK(e,t){if(t&&(Xo(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return CK(e)}function CK(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function rN(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(rN=function(){return!!e})()}function Ff(e){return Ff=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Ff(e)}function DK(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&O0(e,t)}function O0(e,t){return O0=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,o){return r.__proto__=o,r},O0(e,t)}function ur(e,t,n){return t=aN(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function aN(e){var t=NK(e,"string");return Xo(t)=="symbol"?t:t+""}function NK(e,t){if(Xo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(Xo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}var za=(function(e){function t(){var n;EK(this,t);for(var r=arguments.length,o=new Array(r),l=0;l<r;l++)o[l]=arguments[l];return n=MK(this,t,[].concat(o)),ur(n,"state",{isAnimationFinished:!0}),ur(n,"id",Na("recharts-area-")),ur(n,"handleAnimationEnd",function(){var c=n.props.onAnimationEnd;n.setState({isAnimationFinished:!0}),Se(c)&&c()}),ur(n,"handleAnimationStart",function(){var c=n.props.onAnimationStart;n.setState({isAnimationFinished:!1}),Se(c)&&c()}),n}return DK(t,e),jK(t,[{key:"renderDots",value:function(r,o,l){var c=this.props.isAnimationActive,f=this.state.isAnimationFinished;if(c&&!f)return null;var d=this.props,h=d.dot,y=d.points,v=d.dataKey,g=ye(this.props,!1),b=ye(h,!0),_=y.map(function(x,w){var E=Oa(Oa(Oa({key:"dot-".concat(w),r:3},g),b),{},{index:w,cx:x.x,cy:x.y,dataKey:v,value:x.value,payload:x.payload,points:y});return t.renderDotItem(h,E)}),S={clipPath:r?"url(#clipPath-".concat(o?"":"dots-").concat(l,")"):null};return R.createElement(je,hi({className:"recharts-area-dots"},S),_)}},{key:"renderHorizontalRect",value:function(r){var o=this.props,l=o.baseLine,c=o.points,f=o.strokeWidth,d=c[0].x,h=c[c.length-1].x,y=r*Math.abs(d-h),v=wa(c.map(function(g){return g.y||0}));return ce(l)&&typeof l=="number"?v=Math.max(l,v):l&&Array.isArray(l)&&l.length&&(v=Math.max(wa(l.map(function(g){return g.y||0})),v)),ce(v)?R.createElement("rect",{x:d<h?d:d-y,y:0,width:y,height:Math.floor(v+(f?parseInt("".concat(f),10):1))}):null}},{key:"renderVerticalRect",value:function(r){var o=this.props,l=o.baseLine,c=o.points,f=o.strokeWidth,d=c[0].y,h=c[c.length-1].y,y=r*Math.abs(d-h),v=wa(c.map(function(g){return g.x||0}));return ce(l)&&typeof l=="number"?v=Math.max(l,v):l&&Array.isArray(l)&&l.length&&(v=Math.max(wa(l.map(function(g){return g.x||0})),v)),ce(v)?R.createElement("rect",{x:0,y:d<h?d:d-y,width:v+(f?parseInt("".concat(f),10):1),height:Math.floor(y)}):null}},{key:"renderClipRect",value:function(r){var o=this.props.layout;return o==="vertical"?this.renderVerticalRect(r):this.renderHorizontalRect(r)}},{key:"renderAreaStatically",value:function(r,o,l,c){var f=this.props,d=f.layout,h=f.type,y=f.stroke,v=f.connectNulls,g=f.isRange;f.ref;var b=nN(f,AK);return R.createElement(je,{clipPath:l?"url(#clipPath-".concat(c,")"):null},R.createElement(Ma,hi({},ye(b,!0),{points:r,connectNulls:v,type:h,baseLine:o,layout:d,stroke:"none",className:"recharts-area-area"})),y!=="none"&&R.createElement(Ma,hi({},ye(this.props,!1),{className:"recharts-area-curve",layout:d,type:h,connectNulls:v,fill:"none",points:r})),y!=="none"&&g&&R.createElement(Ma,hi({},ye(this.props,!1),{className:"recharts-area-curve",layout:d,type:h,connectNulls:v,fill:"none",points:o})))}},{key:"renderAreaWithAnimation",value:function(r,o){var l=this,c=this.props,f=c.points,d=c.baseLine,h=c.isAnimationActive,y=c.animationBegin,v=c.animationDuration,g=c.animationEasing,b=c.animationId,_=this.state,S=_.prevPoints,x=_.prevBaseLine;return R.createElement(Bn,{begin:y,duration:v,isActive:h,easing:g,from:{t:0},to:{t:1},key:"area-".concat(b),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(w){var E=w.t;if(S){var j=S.length/f.length,P=f.map(function(N,k){var Y=Math.floor(k*j);if(S[Y]){var U=S[Y],q=ft(U.x,N.x),X=ft(U.y,N.y);return Oa(Oa({},N),{},{x:q(E),y:X(E)})}return N}),A;if(ce(d)&&typeof d=="number"){var T=ft(x,d);A=T(E)}else if(be(d)||nu(d)){var M=ft(x,0);A=M(E)}else A=d.map(function(N,k){var Y=Math.floor(k*j);if(x[Y]){var U=x[Y],q=ft(U.x,N.x),X=ft(U.y,N.y);return Oa(Oa({},N),{},{x:q(E),y:X(E)})}return N});return l.renderAreaStatically(P,A,r,o)}return R.createElement(je,null,R.createElement("defs",null,R.createElement("clipPath",{id:"animationClipPath-".concat(o)},l.renderClipRect(E))),R.createElement(je,{clipPath:"url(#animationClipPath-".concat(o,")")},l.renderAreaStatically(f,d,r,o)))})}},{key:"renderArea",value:function(r,o){var l=this.props,c=l.points,f=l.baseLine,d=l.isAnimationActive,h=this.state,y=h.prevPoints,v=h.prevBaseLine,g=h.totalLength;return d&&c&&c.length&&(!y&&g>0||!Ca(y,c)||!Ca(v,f))?this.renderAreaWithAnimation(r,o):this.renderAreaStatically(c,f,r,o)}},{key:"render",value:function(){var r,o=this.props,l=o.hide,c=o.dot,f=o.points,d=o.className,h=o.top,y=o.left,v=o.xAxis,g=o.yAxis,b=o.width,_=o.height,S=o.isAnimationActive,x=o.id;if(l||!f||!f.length)return null;var w=this.state.isAnimationFinished,E=f.length===1,j=Te("recharts-area",d),P=v&&v.allowDataOverflow,A=g&&g.allowDataOverflow,T=P||A,M=be(x)?this.id:x,N=(r=ye(c,!1))!==null&&r!==void 0?r:{r:3,strokeWidth:2},k=N.r,Y=k===void 0?3:k,U=N.strokeWidth,q=U===void 0?2:U,X=rP(c)?c:{},Q=X.clipDot,Z=Q===void 0?!0:Q,$=Y*2+q;return R.createElement(je,{className:j},P||A?R.createElement("defs",null,R.createElement("clipPath",{id:"clipPath-".concat(M)},R.createElement("rect",{x:P?y:y-b/2,y:A?h:h-_/2,width:P?b:b*2,height:A?_:_*2})),!Z&&R.createElement("clipPath",{id:"clipPath-dots-".concat(M)},R.createElement("rect",{x:y-$/2,y:h-$/2,width:b+$,height:_+$}))):null,E?null:this.renderArea(T,M),(c||E)&&this.renderDots(T,Z,M),(!S||w)&&Qn.renderCallByParent(this.props,f))}}],[{key:"getDerivedStateFromProps",value:function(r,o){return r.animationId!==o.prevAnimationId?{prevAnimationId:r.animationId,curPoints:r.points,curBaseLine:r.baseLine,prevPoints:o.curPoints,prevBaseLine:o.curBaseLine}:r.points!==o.curPoints||r.baseLine!==o.curBaseLine?{curPoints:r.points,curBaseLine:r.baseLine}:null}}])})(ie.PureComponent);tN=za;ur(za,"displayName","Area");ur(za,"defaultProps",{stroke:"#3182bd",fill:"#3182bd",fillOpacity:.6,xAxisId:0,yAxisId:0,legendType:"line",connectNulls:!1,points:[],dot:!1,activeDot:!0,hide:!1,isAnimationActive:!Xr.isSsr,animationBegin:0,animationDuration:1500,animationEasing:"ease"});ur(za,"getBaseValue",function(e,t,n,r){var o=e.layout,l=e.baseValue,c=t.props.baseValue,f=c??l;if(ce(f)&&typeof f=="number")return f;var d=o==="horizontal"?r:n,h=d.scale.domain();if(d.type==="number"){var y=Math.max(h[0],h[1]),v=Math.min(h[0],h[1]);return f==="dataMin"?v:f==="dataMax"||y<0?y:Math.max(Math.min(h[0],h[1]),0)}return f==="dataMin"?h[0]:f==="dataMax"?h[1]:h[0]});ur(za,"getComposedData",function(e){var t=e.props,n=e.item,r=e.xAxis,o=e.yAxis,l=e.xAxisTicks,c=e.yAxisTicks,f=e.bandSize,d=e.dataKey,h=e.stackedData,y=e.dataStartIndex,v=e.displayedData,g=e.offset,b=t.layout,_=h&&h.length,S=tN.getBaseValue(t,n,r,o),x=b==="horizontal",w=!1,E=v.map(function(P,A){var T;_?T=h[y+A]:(T=ot(P,d),Array.isArray(T)?w=!0:T=[S,T]);var M=T[1]==null||_&&ot(P,d)==null;return x?{x:Ro({axis:r,ticks:l,bandSize:f,entry:P,index:A}),y:M?null:o.scale(T[1]),value:T,payload:P}:{x:M?null:r.scale(T[1]),y:Ro({axis:o,ticks:c,bandSize:f,entry:P,index:A}),value:T,payload:P}}),j;return _||w?j=E.map(function(P){var A=Array.isArray(P.value)?P.value[0]:null;return x?{x:P.x,y:A!=null&&P.y!=null?o.scale(A):null}:{x:A!=null?r.scale(A):null,y:P.y}}):j=x?o.scale(S):r.scale(S),Oa({points:E,baseLine:j,layout:b,isRange:w},g)});ur(za,"renderDotItem",function(e,t){var n;if(R.isValidElement(e))n=R.cloneElement(e,t);else if(Se(e))n=e(t);else{var r=Te("recharts-area-dot",typeof e!="boolean"?e.className:""),o=t.key,l=nN(t,wK);n=R.createElement(vc,hi({},l,{key:o,className:r}))}return n});function Vo(e){"@babel/helpers - typeof";return Vo=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Vo(e)}function RK(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function $K(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,uN(r.key),r)}}function kK(e,t,n){return t&&$K(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function zK(e,t,n){return t=Zf(t),qK(e,iN()?Reflect.construct(t,n||[],Zf(e).constructor):t.apply(e,n))}function qK(e,t){if(t&&(Vo(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return BK(e)}function BK(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function iN(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(iN=function(){return!!e})()}function Zf(e){return Zf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Zf(e)}function LK(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_0(e,t)}function _0(e,t){return _0=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,o){return r.__proto__=o,r},_0(e,t)}function oN(e,t,n){return t=uN(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function uN(e){var t=UK(e,"string");return Vo(t)=="symbol"?t:t+""}function UK(e,t){if(Vo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(Vo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var kd=(function(e){function t(){return RK(this,t),zK(this,t,arguments)}return LK(t,e),kK(t,[{key:"render",value:function(){return null}}])})(ie.Component);oN(kd,"displayName","ZAxis");oN(kd,"defaultProps",{zAxisId:0,range:[64,64],scale:"auto",type:"number"});var IK=["option","isActive"];function Tl(){return Tl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Tl.apply(this,arguments)}function HK(e,t){if(e==null)return{};var n=GK(e,t),r,o;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(o=0;o<l.length;o++)r=l[o],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function GK(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function KK(e){var t=e.option,n=e.isActive,r=HK(e,IK);return typeof t=="string"?ie.createElement(kf,Tl({option:ie.createElement(fd,Tl({type:t},r)),isActive:n,shapeType:"symbols"},r)):ie.createElement(kf,Tl({option:t,isActive:n,shapeType:"symbols"},r))}function Fo(e){"@babel/helpers - typeof";return Fo=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Fo(e)}function El(){return El=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},El.apply(this,arguments)}function $M(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function $n(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?$M(Object(n),!0).forEach(function(r){Ea(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$M(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function YK(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function kM(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,cN(r.key),r)}}function XK(e,t,n){return t&&kM(e.prototype,t),n&&kM(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function VK(e,t,n){return t=Wf(t),FK(e,lN()?Reflect.construct(t,n||[],Wf(e).constructor):t.apply(e,n))}function FK(e,t){if(t&&(Fo(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return ZK(e)}function ZK(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function lN(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(lN=function(){return!!e})()}function Wf(e){return Wf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Wf(e)}function WK(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&A0(e,t)}function A0(e,t){return A0=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,o){return r.__proto__=o,r},A0(e,t)}function Ea(e,t,n){return t=cN(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function cN(e){var t=QK(e,"string");return Fo(t)=="symbol"?t:t+""}function QK(e,t){if(Fo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(Fo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var zd=(function(e){function t(){var n;YK(this,t);for(var r=arguments.length,o=new Array(r),l=0;l<r;l++)o[l]=arguments[l];return n=VK(this,t,[].concat(o)),Ea(n,"state",{isAnimationFinished:!1}),Ea(n,"handleAnimationEnd",function(){n.setState({isAnimationFinished:!0})}),Ea(n,"handleAnimationStart",function(){n.setState({isAnimationFinished:!1})}),Ea(n,"id",Na("recharts-scatter-")),n}return WK(t,e),XK(t,[{key:"renderSymbolsStatically",value:function(r){var o=this,l=this.props,c=l.shape,f=l.activeShape,d=l.activeIndex,h=ye(this.props,!1);return r.map(function(y,v){var g=d===v,b=g?f:c,_=$n($n({},h),y);return R.createElement(je,El({className:"recharts-scatter-symbol",key:"symbol-".concat(y==null?void 0:y.cx,"-").concat(y==null?void 0:y.cy,"-").concat(y==null?void 0:y.size,"-").concat(v)},Pa(o.props,y,v),{role:"img"}),R.createElement(KK,El({option:b,isActive:g,key:"symbol-".concat(v)},_)))})}},{key:"renderSymbolsWithAnimation",value:function(){var r=this,o=this.props,l=o.points,c=o.isAnimationActive,f=o.animationBegin,d=o.animationDuration,h=o.animationEasing,y=o.animationId,v=this.state.prevPoints;return R.createElement(Bn,{begin:f,duration:d,isActive:c,easing:h,from:{t:0},to:{t:1},key:"pie-".concat(y),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(g){var b=g.t,_=l.map(function(S,x){var w=v&&v[x];if(w){var E=ft(w.cx,S.cx),j=ft(w.cy,S.cy),P=ft(w.size,S.size);return $n($n({},S),{},{cx:E(b),cy:j(b),size:P(b)})}var A=ft(0,S.size);return $n($n({},S),{},{size:A(b)})});return R.createElement(je,null,r.renderSymbolsStatically(_))})}},{key:"renderSymbols",value:function(){var r=this.props,o=r.points,l=r.isAnimationActive,c=this.state.prevPoints;return l&&o&&o.length&&(!c||!Ca(c,o))?this.renderSymbolsWithAnimation():this.renderSymbolsStatically(o)}},{key:"renderErrorBar",value:function(){var r=this.props.isAnimationActive;if(r&&!this.state.isAnimationFinished)return null;var o=this.props,l=o.points,c=o.xAxis,f=o.yAxis,d=o.children,h=Ft(d,uu);return h?h.map(function(y,v){var g=y.props,b=g.direction,_=g.dataKey;return R.cloneElement(y,{key:"".concat(b,"-").concat(_,"-").concat(l[v]),data:l,xAxis:c,yAxis:f,layout:b==="x"?"vertical":"horizontal",dataPointFormatter:function(x,w){return{x:x.cx,y:x.cy,value:b==="x"?+x.node.x:+x.node.y,errorVal:ot(x,w)}}})}):null}},{key:"renderLine",value:function(){var r=this.props,o=r.points,l=r.line,c=r.lineType,f=r.lineJointType,d=ye(this.props,!1),h=ye(l,!1),y,v;if(c==="joint")y=o.map(function(j){return{x:j.cx,y:j.cy}});else if(c==="fitting"){var g=H$(o),b=g.xmin,_=g.xmax,S=g.a,x=g.b,w=function(P){return S*P+x};y=[{x:b,y:w(b)},{x:_,y:w(_)}]}var E=$n($n($n({},d),{},{fill:"none",stroke:d&&d.fill},h),{},{points:y});return R.isValidElement(l)?v=R.cloneElement(l,E):Se(l)?v=l(E):v=R.createElement(Ma,El({},E,{type:f})),R.createElement(je,{className:"recharts-scatter-line",key:"recharts-scatter-line"},v)}},{key:"render",value:function(){var r=this.props,o=r.hide,l=r.points,c=r.line,f=r.className,d=r.xAxis,h=r.yAxis,y=r.left,v=r.top,g=r.width,b=r.height,_=r.id,S=r.isAnimationActive;if(o||!l||!l.length)return null;var x=this.state.isAnimationFinished,w=Te("recharts-scatter",f),E=d&&d.allowDataOverflow,j=h&&h.allowDataOverflow,P=E||j,A=be(_)?this.id:_;return R.createElement(je,{className:w,clipPath:P?"url(#clipPath-".concat(A,")"):null},E||j?R.createElement("defs",null,R.createElement("clipPath",{id:"clipPath-".concat(A)},R.createElement("rect",{x:E?y:y-g/2,y:j?v:v-b/2,width:E?g:g*2,height:j?b:b*2}))):null,c&&this.renderLine(),this.renderErrorBar(),R.createElement(je,{key:"recharts-scatter-symbols"},this.renderSymbols()),(!S||x)&&Qn.renderCallByParent(this.props,l))}}],[{key:"getDerivedStateFromProps",value:function(r,o){return r.animationId!==o.prevAnimationId?{prevAnimationId:r.animationId,curPoints:r.points,prevPoints:o.curPoints}:r.points!==o.curPoints?{curPoints:r.points}:null}}])})(ie.PureComponent);Ea(zd,"displayName","Scatter");Ea(zd,"defaultProps",{xAxisId:0,yAxisId:0,zAxisId:0,legendType:"circle",lineType:"joint",lineJointType:"linear",data:[],shape:"circle",hide:!1,isAnimationActive:!Xr.isSsr,animationBegin:0,animationDuration:400,animationEasing:"linear"});Ea(zd,"getComposedData",function(e){var t=e.xAxis,n=e.yAxis,r=e.zAxis,o=e.item,l=e.displayedData,c=e.xAxisTicks,f=e.yAxisTicks,d=e.offset,h=o.props.tooltipType,y=Ft(o.props.children,Mo),v=be(t.dataKey)?o.props.dataKey:t.dataKey,g=be(n.dataKey)?o.props.dataKey:n.dataKey,b=r&&r.dataKey,_=r?r.range:kd.defaultProps.range,S=_&&_[0],x=t.scale.bandwidth?t.scale.bandwidth():0,w=n.scale.bandwidth?n.scale.bandwidth():0,E=l.map(function(j,P){var A=ot(j,v),T=ot(j,g),M=!be(b)&&ot(j,b)||"-",N=[{name:be(t.dataKey)?o.props.name:t.name||t.dataKey,unit:t.unit||"",value:A,payload:j,dataKey:v,type:h},{name:be(n.dataKey)?o.props.name:n.name||n.dataKey,unit:n.unit||"",value:T,payload:j,dataKey:g,type:h}];M!=="-"&&N.push({name:r.name||r.dataKey,unit:r.unit||"",value:M,payload:j,dataKey:b,type:h});var k=Ro({axis:t,ticks:c,bandSize:x,entry:j,index:P,dataKey:v}),Y=Ro({axis:n,ticks:f,bandSize:w,entry:j,index:P,dataKey:g}),U=M!=="-"?r.scale(M):S,q=Math.sqrt(Math.max(U,0)/Math.PI);return $n($n({},j),{},{cx:k,cy:Y,x:k-q,y:Y-q,xAxis:t,yAxis:n,zAxis:r,width:2*q,height:2*q,size:U,node:{x:A,y:T,z:M},tooltipPayload:N,tooltipPosition:{x:k,y:Y},payload:j},y&&y[P]&&y[P].props)});return $n({points:E},d)});function Zo(e){"@babel/helpers - typeof";return Zo=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Zo(e)}function JK(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function eY(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,dN(r.key),r)}}function tY(e,t,n){return t&&eY(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function nY(e,t,n){return t=Qf(t),rY(e,sN()?Reflect.construct(t,n||[],Qf(e).constructor):t.apply(e,n))}function rY(e,t){if(t&&(Zo(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return aY(e)}function aY(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function sN(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(sN=function(){return!!e})()}function Qf(e){return Qf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Qf(e)}function iY(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&w0(e,t)}function w0(e,t){return w0=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,o){return r.__proto__=o,r},w0(e,t)}function fN(e,t,n){return t=dN(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function dN(e){var t=oY(e,"string");return Zo(t)=="symbol"?t:t+""}function oY(e,t){if(Zo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(Zo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}function T0(){return T0=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},T0.apply(this,arguments)}function uY(e){var t=e.xAxisId,n=Dx(),r=Nx(),o=UD(t);return o==null?null:ie.createElement(lu,T0({},o,{className:Te("recharts-".concat(o.axisType," ").concat(o.axisType),o.className),viewBox:{x:0,y:0,width:n,height:r},ticksGenerator:function(c){return zr(c,!0)}}))}var qr=(function(e){function t(){return JK(this,t),nY(this,t,arguments)}return iY(t,e),tY(t,[{key:"render",value:function(){return ie.createElement(uY,this.props)}}])})(ie.Component);fN(qr,"displayName","XAxis");fN(qr,"defaultProps",{allowDecimals:!0,hide:!1,orientation:"bottom",width:0,height:30,mirror:!1,xAxisId:0,tickCount:5,type:"category",padding:{left:0,right:0},allowDataOverflow:!1,scale:"auto",reversed:!1,allowDuplicatedCategory:!0});function Wo(e){"@babel/helpers - typeof";return Wo=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Wo(e)}function lY(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function cY(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,vN(r.key),r)}}function sY(e,t,n){return t&&cY(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function fY(e,t,n){return t=Jf(t),dY(e,hN()?Reflect.construct(t,n||[],Jf(e).constructor):t.apply(e,n))}function dY(e,t){if(t&&(Wo(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return hY(e)}function hY(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function hN(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(hN=function(){return!!e})()}function Jf(e){return Jf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Jf(e)}function pY(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&E0(e,t)}function E0(e,t){return E0=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,o){return r.__proto__=o,r},E0(e,t)}function pN(e,t,n){return t=vN(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function vN(e){var t=vY(e,"string");return Wo(t)=="symbol"?t:t+""}function vY(e,t){if(Wo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(Wo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}function j0(){return j0=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},j0.apply(this,arguments)}var yY=function(t){var n=t.yAxisId,r=Dx(),o=Nx(),l=ID(n);return l==null?null:ie.createElement(lu,j0({},l,{className:Te("recharts-".concat(l.axisType," ").concat(l.axisType),l.className),viewBox:{x:0,y:0,width:r,height:o},ticksGenerator:function(f){return zr(f,!0)}}))},ir=(function(e){function t(){return lY(this,t),fY(this,t,arguments)}return pY(t,e),sY(t,[{key:"render",value:function(){return ie.createElement(yY,this.props)}}])})(ie.Component);pN(ir,"displayName","YAxis");pN(ir,"defaultProps",{allowDuplicatedCategory:!0,allowDecimals:!0,hide:!1,orientation:"left",width:60,height:0,mirror:!1,yAxisId:0,tickCount:5,type:"number",padding:{top:0,bottom:0},allowDataOverflow:!1,scale:"auto",reversed:!1});function zM(e){return xY(e)||bY(e)||gY(e)||mY()}function mY(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
119
119
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function gY(e,t){if(e){if(typeof e=="string")return M0(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return M0(e,t)}}function bY(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function xY(e){if(Array.isArray(e))return M0(e)}function M0(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var P0=function(t,n,r,o,l){var c=Ft(t,$x),f=Ft(t,Nd),d=[].concat(zM(c),zM(f)),h=Ft(t,$d),y="".concat(o,"Id"),v=o[0],g=n;if(d.length&&(g=d.reduce(function(S,x){if(x.props[y]===r&&cr(x.props,"extendDomain")&&ce(x.props[v])){var w=x.props[v];return[Math.min(S[0],w),Math.max(S[1],w)]}return S},g)),h.length){var b="".concat(v,"1"),_="".concat(v,"2");g=h.reduce(function(S,x){if(x.props[y]===r&&cr(x.props,"extendDomain")&&ce(x.props[b])&&ce(x.props[_])){var w=x.props[b],E=x.props[_];return[Math.min(S[0],w,E),Math.max(S[1],w,E)]}return S},g)}return l&&l.length&&(g=l.reduce(function(S,x){return ce(x)?[Math.min(S[0],x),Math.max(S[1],x)]:S},g)),g},rb={exports:{}},qM;function SY(){return qM||(qM=1,(function(e){var t=Object.prototype.hasOwnProperty,n="~";function r(){}Object.create&&(r.prototype=Object.create(null),new r().__proto__||(n=!1));function o(d,h,y){this.fn=d,this.context=h,this.once=y||!1}function l(d,h,y,v,g){if(typeof y!="function")throw new TypeError("The listener must be a function");var b=new o(y,v||d,g),_=n?n+h:h;return d._events[_]?d._events[_].fn?d._events[_]=[d._events[_],b]:d._events[_].push(b):(d._events[_]=b,d._eventsCount++),d}function c(d,h){--d._eventsCount===0?d._events=new r:delete d._events[h]}function f(){this._events=new r,this._eventsCount=0}f.prototype.eventNames=function(){var h=[],y,v;if(this._eventsCount===0)return h;for(v in y=this._events)t.call(y,v)&&h.push(n?v.slice(1):v);return Object.getOwnPropertySymbols?h.concat(Object.getOwnPropertySymbols(y)):h},f.prototype.listeners=function(h){var y=n?n+h:h,v=this._events[y];if(!v)return[];if(v.fn)return[v.fn];for(var g=0,b=v.length,_=new Array(b);g<b;g++)_[g]=v[g].fn;return _},f.prototype.listenerCount=function(h){var y=n?n+h:h,v=this._events[y];return v?v.fn?1:v.length:0},f.prototype.emit=function(h,y,v,g,b,_){var S=n?n+h:h;if(!this._events[S])return!1;var x=this._events[S],w=arguments.length,E,j;if(x.fn){switch(x.once&&this.removeListener(h,x.fn,void 0,!0),w){case 1:return x.fn.call(x.context),!0;case 2:return x.fn.call(x.context,y),!0;case 3:return x.fn.call(x.context,y,v),!0;case 4:return x.fn.call(x.context,y,v,g),!0;case 5:return x.fn.call(x.context,y,v,g,b),!0;case 6:return x.fn.call(x.context,y,v,g,b,_),!0}for(j=1,E=new Array(w-1);j<w;j++)E[j-1]=arguments[j];x.fn.apply(x.context,E)}else{var P=x.length,A;for(j=0;j<P;j++)switch(x[j].once&&this.removeListener(h,x[j].fn,void 0,!0),w){case 1:x[j].fn.call(x[j].context);break;case 2:x[j].fn.call(x[j].context,y);break;case 3:x[j].fn.call(x[j].context,y,v);break;case 4:x[j].fn.call(x[j].context,y,v,g);break;default:if(!E)for(A=1,E=new Array(w-1);A<w;A++)E[A-1]=arguments[A];x[j].fn.apply(x[j].context,E)}}return!0},f.prototype.on=function(h,y,v){return l(this,h,y,v,!1)},f.prototype.once=function(h,y,v){return l(this,h,y,v,!0)},f.prototype.removeListener=function(h,y,v,g){var b=n?n+h:h;if(!this._events[b])return this;if(!y)return c(this,b),this;var _=this._events[b];if(_.fn)_.fn===y&&(!g||_.once)&&(!v||_.context===v)&&c(this,b);else{for(var S=0,x=[],w=_.length;S<w;S++)(_[S].fn!==y||g&&!_[S].once||v&&_[S].context!==v)&&x.push(_[S]);x.length?this._events[b]=x.length===1?x[0]:x:c(this,b)}return this},f.prototype.removeAllListeners=function(h){var y;return h?(y=n?n+h:h,this._events[y]&&c(this,y)):(this._events=new r,this._eventsCount=0),this},f.prototype.off=f.prototype.removeListener,f.prototype.addListener=f.prototype.on,f.prefixed=n,f.EventEmitter=f,e.exports=f})(rb)),rb.exports}var OY=SY();const _Y=Ye(OY);var ab=new _Y,ib="recharts.syncMouseEvents";function uc(e){"@babel/helpers - typeof";return uc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},uc(e)}function AY(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function wY(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,yN(r.key),r)}}function TY(e,t,n){return t&&wY(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function ob(e,t,n){return t=yN(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function yN(e){var t=EY(e,"string");return uc(t)=="symbol"?t:t+""}function EY(e,t){if(uc(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(uc(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}var jY=(function(){function e(){AY(this,e),ob(this,"activeIndex",0),ob(this,"coordinateList",[]),ob(this,"layout","horizontal")}return TY(e,[{key:"setDetails",value:function(n){var r,o=n.coordinateList,l=o===void 0?null:o,c=n.container,f=c===void 0?null:c,d=n.layout,h=d===void 0?null:d,y=n.offset,v=y===void 0?null:y,g=n.mouseHandlerCallback,b=g===void 0?null:g;this.coordinateList=(r=l??this.coordinateList)!==null&&r!==void 0?r:[],this.container=f??this.container,this.layout=h??this.layout,this.offset=v??this.offset,this.mouseHandlerCallback=b??this.mouseHandlerCallback,this.activeIndex=Math.min(Math.max(this.activeIndex,0),this.coordinateList.length-1)}},{key:"focus",value:function(){this.spoofMouse()}},{key:"keyboardEvent",value:function(n){if(this.coordinateList.length!==0)switch(n.key){case"ArrowRight":{if(this.layout!=="horizontal")return;this.activeIndex=Math.min(this.activeIndex+1,this.coordinateList.length-1),this.spoofMouse();break}case"ArrowLeft":{if(this.layout!=="horizontal")return;this.activeIndex=Math.max(this.activeIndex-1,0),this.spoofMouse();break}}}},{key:"setIndex",value:function(n){this.activeIndex=n}},{key:"spoofMouse",value:function(){var n,r;if(this.layout==="horizontal"&&this.coordinateList.length!==0){var o=this.container.getBoundingClientRect(),l=o.x,c=o.y,f=o.height,d=this.coordinateList[this.activeIndex].coordinate,h=((n=window)===null||n===void 0?void 0:n.scrollX)||0,y=((r=window)===null||r===void 0?void 0:r.scrollY)||0,v=l+d+h,g=c+this.offset.top+f/2+y;this.mouseHandlerCallback({pageX:v,pageY:g})}}}])})();function MY(e,t,n){if(n==="number"&&t===!0&&Array.isArray(e)){var r=e==null?void 0:e[0],o=e==null?void 0:e[1];if(r&&o&&ce(r)&&ce(o))return!0}return!1}function PY(e,t,n,r){var o=r/2;return{stroke:"none",fill:"#ccc",x:e==="horizontal"?t.x-o:n.left+.5,y:e==="horizontal"?n.top+.5:t.y-o,width:e==="horizontal"?r:n.width-1,height:e==="horizontal"?n.height-1:r}}function mN(e){var t=e.cx,n=e.cy,r=e.radius,o=e.startAngle,l=e.endAngle,c=tt(t,n,r,o),f=tt(t,n,r,l);return{points:[c,f],cx:t,cy:n,radius:r,startAngle:o,endAngle:l}}function CY(e,t,n){var r,o,l,c;if(e==="horizontal")r=t.x,l=r,o=n.top,c=n.top+n.height;else if(e==="vertical")o=t.y,c=o,r=n.left,l=n.left+n.width;else if(t.cx!=null&&t.cy!=null)if(e==="centric"){var f=t.cx,d=t.cy,h=t.innerRadius,y=t.outerRadius,v=t.angle,g=tt(f,d,h,v),b=tt(f,d,y,v);r=g.x,o=g.y,l=b.x,c=b.y}else return mN(t);return[{x:r,y:o},{x:l,y:c}]}function lc(e){"@babel/helpers - typeof";return lc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},lc(e)}function BM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function Ys(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?BM(Object(n),!0).forEach(function(r){DY(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):BM(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function DY(e,t,n){return t=NY(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function NY(e){var t=RY(e,"string");return lc(t)=="symbol"?t:t+""}function RY(e,t){if(lc(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(lc(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function $Y(e){var t,n,r=e.element,o=e.tooltipEventType,l=e.isActive,c=e.activeCoordinate,f=e.activePayload,d=e.offset,h=e.activeTooltipIndex,y=e.tooltipAxisBandSize,v=e.layout,g=e.chartName,b=(t=r.props.cursor)!==null&&t!==void 0?t:(n=r.type.defaultProps)===null||n===void 0?void 0:n.cursor;if(!r||!b||!l||!c||g!=="ScatterChart"&&o!=="axis")return null;var _,S=Ma;if(g==="ScatterChart")_=c,S=jH;else if(g==="BarChart")_=PY(v,c,d,y),S=Ex;else if(v==="radial"){var x=mN(c),w=x.cx,E=x.cy,j=x.radius,P=x.startAngle,A=x.endAngle;_={cx:w,cy:E,startAngle:P,endAngle:A,innerRadius:j,outerRadius:j},S=fD}else _={points:CY(v,c,d)},S=Ma;var T=Ys(Ys(Ys(Ys({stroke:"#ccc",pointerEvents:"none"},d),_),ye(b,!1)),{},{payload:f,payloadIndex:h,className:Te("recharts-tooltip-cursor",b.className)});return ie.isValidElement(b)?ie.cloneElement(b,T):ie.createElement(S,T)}var kY=["item"],zY=["children","className","width","height","style","compact","title","desc"];function Qo(e){"@babel/helpers - typeof";return Qo=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Qo(e)}function xo(){return xo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},xo.apply(this,arguments)}function LM(e,t){return LY(e)||BY(e,t)||bN(e,t)||qY()}function qY(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
120
120
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function BY(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,o,l,c,f=[],d=!0,h=!1;try{if(l=(n=n.call(e)).next,t!==0)for(;!(d=(r=l.call(n)).done)&&(f.push(r.value),f.length!==t);d=!0);}catch(y){h=!0,o=y}finally{try{if(!d&&n.return!=null&&(c=n.return(),Object(c)!==c))return}finally{if(h)throw o}}return f}}function LY(e){if(Array.isArray(e))return e}function UM(e,t){if(e==null)return{};var n=UY(e,t),r,o;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(o=0;o<l.length;o++)r=l[o],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function UY(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function IY(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function HY(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,xN(r.key),r)}}function GY(e,t,n){return t&&HY(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function KY(e,t,n){return t=ed(t),YY(e,gN()?Reflect.construct(t,n||[],ed(e).constructor):t.apply(e,n))}function YY(e,t){if(t&&(Qo(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return XY(e)}function XY(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function gN(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(gN=function(){return!!e})()}function ed(e){return ed=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},ed(e)}function VY(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&C0(e,t)}function C0(e,t){return C0=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,o){return r.__proto__=o,r},C0(e,t)}function Jo(e){return WY(e)||ZY(e)||bN(e)||FY()}function FY(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
121
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function bN(e,t){if(e){if(typeof e=="string")return D0(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return D0(e,t)}}function ZY(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function WY(e){if(Array.isArray(e))return D0(e)}function D0(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function IM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function ae(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?IM(Object(n),!0).forEach(function(r){Oe(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):IM(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function Oe(e,t,n){return t=xN(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function xN(e){var t=QY(e,"string");return Qo(t)=="symbol"?t:t+""}function QY(e,t){if(Qo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(Qo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var JY={xAxis:["bottom","top"],yAxis:["left","right"]},eX={width:"100%",height:"100%"},SN={x:0,y:0};function Xs(e){return e}var tX=function(t,n){return n==="horizontal"?t.x:n==="vertical"?t.y:n==="centric"?t.angle:t.radius},nX=function(t,n,r,o){var l=n.find(function(y){return y&&y.index===r});if(l){if(t==="horizontal")return{x:l.coordinate,y:o.y};if(t==="vertical")return{x:o.x,y:l.coordinate};if(t==="centric"){var c=l.coordinate,f=o.radius;return ae(ae(ae({},o),tt(o.cx,o.cy,f,c)),{},{angle:c,radius:f})}var d=l.coordinate,h=o.angle;return ae(ae(ae({},o),tt(o.cx,o.cy,d,h)),{},{angle:h,radius:d})}return SN},qd=function(t,n){var r=n.graphicalItems,o=n.dataStartIndex,l=n.dataEndIndex,c=(r??[]).reduce(function(f,d){var h=d.props.data;return h&&h.length?[].concat(Jo(f),Jo(h)):f},[]);return c.length>0?c:t&&t.length&&ce(o)&&ce(l)?t.slice(o,l+1):[]};function ON(e){return e==="number"?[0,"auto"]:void 0}var N0=function(t,n,r,o){var l=t.graphicalItems,c=t.tooltipAxis,f=qd(n,t);return r<0||!l||!l.length||r>=f.length?null:l.reduce(function(d,h){var y,v=(y=h.props.data)!==null&&y!==void 0?y:n;v&&t.dataStartIndex+t.dataEndIndex!==0&&t.dataEndIndex-t.dataStartIndex>=r&&(v=v.slice(t.dataStartIndex,t.dataEndIndex+1));var g;if(c.dataKey&&!c.allowDuplicatedCategory){var b=v===void 0?f:v;g=Ws(b,c.dataKey,o)}else g=v&&v[r]||f[r];return g?[].concat(Jo(d),[iD(h,g)]):d},[])},HM=function(t,n,r,o){var l=o||{x:t.chartX,y:t.chartY},c=tX(l,r),f=t.orderedTooltipTicks,d=t.tooltipAxis,h=t.tooltipTicks,y=F6(c,f,h,d);if(y>=0&&h){var v=h[y]&&h[y].value,g=N0(t,n,y,v),b=nX(r,f,y,l);return{activeTooltipIndex:y,activeLabel:v,activePayload:g,activeCoordinate:b}}return null},rX=function(t,n){var r=n.axes,o=n.graphicalItems,l=n.axisType,c=n.axisIdKey,f=n.stackGroups,d=n.dataStartIndex,h=n.dataEndIndex,y=t.layout,v=t.children,g=t.stackOffset,b=JC(y,l);return r.reduce(function(_,S){var x,w=S.type.defaultProps!==void 0?ae(ae({},S.type.defaultProps),S.props):S.props,E=w.type,j=w.dataKey,P=w.allowDataOverflow,A=w.allowDuplicatedCategory,T=w.scale,M=w.ticks,N=w.includeHidden,k=w[c];if(_[k])return _;var Y=qd(t.data,{graphicalItems:o.filter(function(B){var ne,se=c in B.props?B.props[c]:(ne=B.type.defaultProps)===null||ne===void 0?void 0:ne[c];return se===k}),dataStartIndex:d,dataEndIndex:h}),U=Y.length,q,X,Q;MY(w.domain,P,E)&&(q=Gb(w.domain,null,P),b&&(E==="number"||T!=="auto")&&(Q=Sl(Y,j,"category")));var Z=ON(E);if(!q||q.length===0){var $,H=($=w.domain)!==null&&$!==void 0?$:Z;if(j){if(q=Sl(Y,j,E),E==="category"&&b){var te=I$(q);A&&te?(X=q,q=qf(0,U)):A||(q=Uj(H,q,S).reduce(function(B,ne){return B.indexOf(ne)>=0?B:[].concat(Jo(B),[ne])},[]))}else if(E==="category")A?q=q.filter(function(B){return B!==""&&!be(B)}):q=Uj(H,q,S).reduce(function(B,ne){return B.indexOf(ne)>=0||ne===""||be(ne)?B:[].concat(Jo(B),[ne])},[]);else if(E==="number"){var I=e8(Y,o.filter(function(B){var ne,se,de=c in B.props?B.props[c]:(ne=B.type.defaultProps)===null||ne===void 0?void 0:ne[c],ge="hide"in B.props?B.props.hide:(se=B.type.defaultProps)===null||se===void 0?void 0:se.hide;return de===k&&(N||!ge)}),j,l,y);I&&(q=I)}b&&(E==="number"||T!=="auto")&&(Q=Sl(Y,j,"category"))}else b?q=qf(0,U):f&&f[k]&&f[k].hasStack&&E==="number"?q=g==="expand"?[0,1]:aD(f[k].stackGroups,d,h):q=QC(Y,o.filter(function(B){var ne=c in B.props?B.props[c]:B.type.defaultProps[c],se="hide"in B.props?B.props.hide:B.type.defaultProps.hide;return ne===k&&(N||!se)}),E,y,!0);if(E==="number")q=P0(v,q,k,l,M),H&&(q=Gb(H,q,P));else if(E==="category"&&H){var ee=H,D=q.every(function(B){return ee.indexOf(B)>=0});D&&(q=ee)}}return ae(ae({},_),{},Oe({},k,ae(ae({},w),{},{axisType:l,domain:q,categoricalDomain:Q,duplicateDomain:X,originalDomain:(x=w.domain)!==null&&x!==void 0?x:Z,isCategorical:b,layout:y})))},{})},aX=function(t,n){var r=n.graphicalItems,o=n.Axis,l=n.axisType,c=n.axisIdKey,f=n.stackGroups,d=n.dataStartIndex,h=n.dataEndIndex,y=t.layout,v=t.children,g=qd(t.data,{graphicalItems:r,dataStartIndex:d,dataEndIndex:h}),b=g.length,_=JC(y,l),S=-1;return r.reduce(function(x,w){var E=w.type.defaultProps!==void 0?ae(ae({},w.type.defaultProps),w.props):w.props,j=E[c],P=ON("number");if(!x[j]){S++;var A;return _?A=qf(0,b):f&&f[j]&&f[j].hasStack?(A=aD(f[j].stackGroups,d,h),A=P0(v,A,j,l)):(A=Gb(P,QC(g,r.filter(function(T){var M,N,k=c in T.props?T.props[c]:(M=T.type.defaultProps)===null||M===void 0?void 0:M[c],Y="hide"in T.props?T.props.hide:(N=T.type.defaultProps)===null||N===void 0?void 0:N.hide;return k===j&&!Y}),"number",y),o.defaultProps.allowDataOverflow),A=P0(v,A,j,l)),ae(ae({},x),{},Oe({},j,ae(ae({axisType:l},o.defaultProps),{},{hide:!0,orientation:xn(JY,"".concat(l,".").concat(S%2),null),domain:A,originalDomain:P,isCategorical:_,layout:y})))}return x},{})},iX=function(t,n){var r=n.axisType,o=r===void 0?"xAxis":r,l=n.AxisComp,c=n.graphicalItems,f=n.stackGroups,d=n.dataStartIndex,h=n.dataEndIndex,y=t.children,v="".concat(o,"Id"),g=Ft(y,l),b={};return g&&g.length?b=rX(t,{axes:g,graphicalItems:c,axisType:o,axisIdKey:v,stackGroups:f,dataStartIndex:d,dataEndIndex:h}):c&&c.length&&(b=aX(t,{Axis:l,graphicalItems:c,axisType:o,axisIdKey:v,stackGroups:f,dataStartIndex:d,dataEndIndex:h})),b},oX=function(t){var n=Aa(t),r=zr(n,!1,!0);return{tooltipTicks:r,orderedTooltipTicks:ex(r,function(o){return o.coordinate}),tooltipAxis:n,tooltipAxisBandSize:Af(n,r)}},GM=function(t){var n=t.children,r=t.defaultShowTooltip,o=gn(n,Lo),l=0,c=0;return t.data&&t.data.length!==0&&(c=t.data.length-1),o&&o.props&&(o.props.startIndex>=0&&(l=o.props.startIndex),o.props.endIndex>=0&&(c=o.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:l,dataEndIndex:c,activeTooltipIndex:-1,isTooltipActive:!!r}},uX=function(t){return!t||!t.length?!1:t.some(function(n){var r=Br(n&&n.type);return r&&r.indexOf("Bar")>=0})},KM=function(t){return t==="horizontal"?{numericAxisName:"yAxis",cateAxisName:"xAxis"}:t==="vertical"?{numericAxisName:"xAxis",cateAxisName:"yAxis"}:t==="centric"?{numericAxisName:"radiusAxis",cateAxisName:"angleAxis"}:{numericAxisName:"angleAxis",cateAxisName:"radiusAxis"}},lX=function(t,n){var r=t.props,o=t.graphicalItems,l=t.xAxisMap,c=l===void 0?{}:l,f=t.yAxisMap,d=f===void 0?{}:f,h=r.width,y=r.height,v=r.children,g=r.margin||{},b=gn(v,Lo),_=gn(v,Lr),S=Object.keys(d).reduce(function(A,T){var M=d[T],N=M.orientation;return!M.mirror&&!M.hide?ae(ae({},A),{},Oe({},N,A[N]+M.width)):A},{left:g.left||0,right:g.right||0}),x=Object.keys(c).reduce(function(A,T){var M=c[T],N=M.orientation;return!M.mirror&&!M.hide?ae(ae({},A),{},Oe({},N,xn(A,"".concat(N))+M.height)):A},{top:g.top||0,bottom:g.bottom||0}),w=ae(ae({},x),S),E=w.bottom;b&&(w.bottom+=b.props.height||Lo.defaultProps.height),_&&n&&(w=Q6(w,o,r,n));var j=h-w.left-w.right,P=y-w.top-w.bottom;return ae(ae({brushBottom:E},w),{},{width:Math.max(j,0),height:Math.max(P,0)})},cX=function(t,n){if(n==="xAxis")return t[n].width;if(n==="yAxis")return t[n].height},Bd=function(t){var n=t.chartName,r=t.GraphicalChild,o=t.defaultTooltipEventType,l=o===void 0?"axis":o,c=t.validateTooltipEventTypes,f=c===void 0?["axis"]:c,d=t.axisComponents,h=t.legendContent,y=t.formatAxisMap,v=t.defaultProps,g=function(w,E){var j=E.graphicalItems,P=E.stackGroups,A=E.offset,T=E.updateId,M=E.dataStartIndex,N=E.dataEndIndex,k=w.barSize,Y=w.layout,U=w.barGap,q=w.barCategoryGap,X=w.maxBarSize,Q=KM(Y),Z=Q.numericAxisName,$=Q.cateAxisName,H=uX(j),te=[];return j.forEach(function(I,ee){var D=qd(w.data,{graphicalItems:[I],dataStartIndex:M,dataEndIndex:N}),B=I.type.defaultProps!==void 0?ae(ae({},I.type.defaultProps),I.props):I.props,ne=B.dataKey,se=B.maxBarSize,de=B["".concat(Z,"Id")],ge=B["".concat($,"Id")],Ce={},Ue=d.reduce(function(In,hr){var cu=E["".concat(hr.axisType,"Map")],Ut=B["".concat(hr.axisType,"Id")];cu&&cu[Ut]||hr.axisType==="zAxis"||bi();var yc=cu[Ut];return ae(ae({},In),{},Oe(Oe({},hr.axisType,yc),"".concat(hr.axisType,"Ticks"),zr(yc)))},Ce),fe=Ue[$],_e=Ue["".concat($,"Ticks")],Ae=P&&P[de]&&P[de].hasStack&&c8(I,P[de].stackGroups),le=Br(I.type).indexOf("Bar")>=0,nt=Af(fe,_e),Me=[],ct=H&&Z6({barSize:k,stackGroups:P,totalSize:cX(Ue,$)});if(le){var st,Lt,Un=be(se)?X:se,er=(st=(Lt=Af(fe,_e,!0))!==null&&Lt!==void 0?Lt:Un)!==null&&st!==void 0?st:0;Me=W6({barGap:U,barCategoryGap:q,bandSize:er!==nt?er:nt,sizeList:ct[ge],maxBarSize:Un}),er!==nt&&(Me=Me.map(function(In){return ae(ae({},In),{},{position:ae(ae({},In.position),{},{offset:In.position.offset-er/2})})}))}var Zr=I&&I.type&&I.type.getComposedData;Zr&&te.push({props:ae(ae({},Zr(ae(ae({},Ue),{},{displayedData:D,props:w,dataKey:ne,item:I,bandSize:nt,barPosition:Me,offset:A,stackedData:Ae,layout:Y,dataStartIndex:M,dataEndIndex:N}))),{},Oe(Oe(Oe({key:I.key||"item-".concat(ee)},Z,Ue[Z]),$,Ue[$]),"animationId",T)),childIndex:tk(I,w.children),item:I})}),te},b=function(w,E){var j=w.props,P=w.dataStartIndex,A=w.dataEndIndex,T=w.updateId;if(!nw({props:j}))return null;var M=j.children,N=j.layout,k=j.stackOffset,Y=j.data,U=j.reverseStackOrder,q=KM(N),X=q.numericAxisName,Q=q.cateAxisName,Z=Ft(M,r),$=u8(Y,Z,"".concat(X,"Id"),"".concat(Q,"Id"),k,U),H=d.reduce(function(B,ne){var se="".concat(ne.axisType,"Map");return ae(ae({},B),{},Oe({},se,iX(j,ae(ae({},ne),{},{graphicalItems:Z,stackGroups:ne.axisType===X&&$,dataStartIndex:P,dataEndIndex:A}))))},{}),te=lX(ae(ae({},H),{},{props:j,graphicalItems:Z}),E==null?void 0:E.legendBBox);Object.keys(H).forEach(function(B){H[B]=y(j,H[B],te,B.replace("Map",""),n)});var I=H["".concat(Q,"Map")],ee=oX(I),D=g(j,ae(ae({},H),{},{dataStartIndex:P,dataEndIndex:A,updateId:T,graphicalItems:Z,stackGroups:$,offset:te}));return ae(ae({formattedGraphicalItems:D,graphicalItems:Z,offset:te,stackGroups:$},ee),H)},_=(function(x){function w(E){var j,P,A;return IY(this,w),A=KY(this,w,[E]),Oe(A,"eventEmitterSymbol",Symbol("rechartsEventEmitter")),Oe(A,"accessibilityManager",new jY),Oe(A,"handleLegendBBoxUpdate",function(T){if(T){var M=A.state,N=M.dataStartIndex,k=M.dataEndIndex,Y=M.updateId;A.setState(ae({legendBBox:T},b({props:A.props,dataStartIndex:N,dataEndIndex:k,updateId:Y},ae(ae({},A.state),{},{legendBBox:T}))))}}),Oe(A,"handleReceiveSyncEvent",function(T,M,N){if(A.props.syncId===T){if(N===A.eventEmitterSymbol&&typeof A.props.syncMethod!="function")return;A.applySyncEvent(M)}}),Oe(A,"handleBrushChange",function(T){var M=T.startIndex,N=T.endIndex;if(M!==A.state.dataStartIndex||N!==A.state.dataEndIndex){var k=A.state.updateId;A.setState(function(){return ae({dataStartIndex:M,dataEndIndex:N},b({props:A.props,dataStartIndex:M,dataEndIndex:N,updateId:k},A.state))}),A.triggerSyncEvent({dataStartIndex:M,dataEndIndex:N})}}),Oe(A,"handleMouseEnter",function(T){var M=A.getMouseInfo(T);if(M){var N=ae(ae({},M),{},{isTooltipActive:!0});A.setState(N),A.triggerSyncEvent(N);var k=A.props.onMouseEnter;Se(k)&&k(N,T)}}),Oe(A,"triggeredAfterMouseMove",function(T){var M=A.getMouseInfo(T),N=M?ae(ae({},M),{},{isTooltipActive:!0}):{isTooltipActive:!1};A.setState(N),A.triggerSyncEvent(N);var k=A.props.onMouseMove;Se(k)&&k(N,T)}),Oe(A,"handleItemMouseEnter",function(T){A.setState(function(){return{isTooltipActive:!0,activeItem:T,activePayload:T.tooltipPayload,activeCoordinate:T.tooltipPosition||{x:T.cx,y:T.cy}}})}),Oe(A,"handleItemMouseLeave",function(){A.setState(function(){return{isTooltipActive:!1}})}),Oe(A,"handleMouseMove",function(T){T.persist(),A.throttleTriggeredAfterMouseMove(T)}),Oe(A,"handleMouseLeave",function(T){A.throttleTriggeredAfterMouseMove.cancel();var M={isTooltipActive:!1};A.setState(M),A.triggerSyncEvent(M);var N=A.props.onMouseLeave;Se(N)&&N(M,T)}),Oe(A,"handleOuterEvent",function(T){var M=ek(T),N=xn(A.props,"".concat(M));if(M&&Se(N)){var k,Y;/.*touch.*/i.test(M)?Y=A.getMouseInfo(T.changedTouches[0]):Y=A.getMouseInfo(T),N((k=Y)!==null&&k!==void 0?k:{},T)}}),Oe(A,"handleClick",function(T){var M=A.getMouseInfo(T);if(M){var N=ae(ae({},M),{},{isTooltipActive:!0});A.setState(N),A.triggerSyncEvent(N);var k=A.props.onClick;Se(k)&&k(N,T)}}),Oe(A,"handleMouseDown",function(T){var M=A.props.onMouseDown;if(Se(M)){var N=A.getMouseInfo(T);M(N,T)}}),Oe(A,"handleMouseUp",function(T){var M=A.props.onMouseUp;if(Se(M)){var N=A.getMouseInfo(T);M(N,T)}}),Oe(A,"handleTouchMove",function(T){T.changedTouches!=null&&T.changedTouches.length>0&&A.throttleTriggeredAfterMouseMove(T.changedTouches[0])}),Oe(A,"handleTouchStart",function(T){T.changedTouches!=null&&T.changedTouches.length>0&&A.handleMouseDown(T.changedTouches[0])}),Oe(A,"handleTouchEnd",function(T){T.changedTouches!=null&&T.changedTouches.length>0&&A.handleMouseUp(T.changedTouches[0])}),Oe(A,"handleDoubleClick",function(T){var M=A.props.onDoubleClick;if(Se(M)){var N=A.getMouseInfo(T);M(N,T)}}),Oe(A,"handleContextMenu",function(T){var M=A.props.onContextMenu;if(Se(M)){var N=A.getMouseInfo(T);M(N,T)}}),Oe(A,"triggerSyncEvent",function(T){A.props.syncId!==void 0&&ab.emit(ib,A.props.syncId,T,A.eventEmitterSymbol)}),Oe(A,"applySyncEvent",function(T){var M=A.props,N=M.layout,k=M.syncMethod,Y=A.state.updateId,U=T.dataStartIndex,q=T.dataEndIndex;if(T.dataStartIndex!==void 0||T.dataEndIndex!==void 0)A.setState(ae({dataStartIndex:U,dataEndIndex:q},b({props:A.props,dataStartIndex:U,dataEndIndex:q,updateId:Y},A.state)));else if(T.activeTooltipIndex!==void 0){var X=T.chartX,Q=T.chartY,Z=T.activeTooltipIndex,$=A.state,H=$.offset,te=$.tooltipTicks;if(!H)return;if(typeof k=="function")Z=k(te,T);else if(k==="value"){Z=-1;for(var I=0;I<te.length;I++)if(te[I].value===T.activeLabel){Z=I;break}}var ee=ae(ae({},H),{},{x:H.left,y:H.top}),D=Math.min(X,ee.x+ee.width),B=Math.min(Q,ee.y+ee.height),ne=te[Z]&&te[Z].value,se=N0(A.state,A.props.data,Z),de=te[Z]?{x:N==="horizontal"?te[Z].coordinate:D,y:N==="horizontal"?B:te[Z].coordinate}:SN;A.setState(ae(ae({},T),{},{activeLabel:ne,activeCoordinate:de,activePayload:se,activeTooltipIndex:Z}))}else A.setState(T)}),Oe(A,"renderCursor",function(T){var M,N=A.state,k=N.isTooltipActive,Y=N.activeCoordinate,U=N.activePayload,q=N.offset,X=N.activeTooltipIndex,Q=N.tooltipAxisBandSize,Z=A.getTooltipEventType(),$=(M=T.props.active)!==null&&M!==void 0?M:k,H=A.props.layout,te=T.key||"_recharts-cursor";return R.createElement($Y,{key:te,activeCoordinate:Y,activePayload:U,activeTooltipIndex:X,chartName:n,element:T,isActive:$,layout:H,offset:q,tooltipAxisBandSize:Q,tooltipEventType:Z})}),Oe(A,"renderPolarAxis",function(T,M,N){var k=xn(T,"type.axisType"),Y=xn(A.state,"".concat(k,"Map")),U=T.type.defaultProps,q=U!==void 0?ae(ae({},U),T.props):T.props,X=Y&&Y[q["".concat(k,"Id")]];return ie.cloneElement(T,ae(ae({},X),{},{className:Te(k,X.className),key:T.key||"".concat(M,"-").concat(N),ticks:zr(X,!0)}))}),Oe(A,"renderPolarGrid",function(T){var M=T.props,N=M.radialLines,k=M.polarAngles,Y=M.polarRadius,U=A.state,q=U.radiusAxisMap,X=U.angleAxisMap,Q=Aa(q),Z=Aa(X),$=Z.cx,H=Z.cy,te=Z.innerRadius,I=Z.outerRadius;return ie.cloneElement(T,{polarAngles:Array.isArray(k)?k:zr(Z,!0).map(function(ee){return ee.coordinate}),polarRadius:Array.isArray(Y)?Y:zr(Q,!0).map(function(ee){return ee.coordinate}),cx:$,cy:H,innerRadius:te,outerRadius:I,key:T.key||"polar-grid",radialLines:N})}),Oe(A,"renderLegend",function(){var T=A.state.formattedGraphicalItems,M=A.props,N=M.children,k=M.width,Y=M.height,U=A.props.margin||{},q=k-(U.left||0)-(U.right||0),X=ZC({children:N,formattedGraphicalItems:T,legendWidth:q,legendContent:h});if(!X)return null;var Q=X.item,Z=UM(X,kY);return ie.cloneElement(Q,ae(ae({},Z),{},{chartWidth:k,chartHeight:Y,margin:U,onBBoxUpdate:A.handleLegendBBoxUpdate}))}),Oe(A,"renderTooltip",function(){var T,M=A.props,N=M.children,k=M.accessibilityLayer,Y=gn(N,rn);if(!Y)return null;var U=A.state,q=U.isTooltipActive,X=U.activeCoordinate,Q=U.activePayload,Z=U.activeLabel,$=U.offset,H=(T=Y.props.active)!==null&&T!==void 0?T:q;return ie.cloneElement(Y,{viewBox:ae(ae({},$),{},{x:$.left,y:$.top}),active:H,label:Z,payload:H?Q:[],coordinate:X,accessibilityLayer:k})}),Oe(A,"renderBrush",function(T){var M=A.props,N=M.margin,k=M.data,Y=A.state,U=Y.offset,q=Y.dataStartIndex,X=Y.dataEndIndex,Q=Y.updateId;return ie.cloneElement(T,{key:T.key||"_recharts-brush",onChange:Is(A.handleBrushChange,T.props.onChange),data:k,x:ce(T.props.x)?T.props.x:U.left,y:ce(T.props.y)?T.props.y:U.top+U.height+U.brushBottom-(N.bottom||0),width:ce(T.props.width)?T.props.width:U.width,startIndex:q,endIndex:X,updateId:"brush-".concat(Q)})}),Oe(A,"renderReferenceElement",function(T,M,N){if(!T)return null;var k=A,Y=k.clipPathId,U=A.state,q=U.xAxisMap,X=U.yAxisMap,Q=U.offset,Z=T.type.defaultProps||{},$=T.props,H=$.xAxisId,te=H===void 0?Z.xAxisId:H,I=$.yAxisId,ee=I===void 0?Z.yAxisId:I;return ie.cloneElement(T,{key:T.key||"".concat(M,"-").concat(N),xAxis:q[te],yAxis:X[ee],viewBox:{x:Q.left,y:Q.top,width:Q.width,height:Q.height},clipPathId:Y})}),Oe(A,"renderActivePoints",function(T){var M=T.item,N=T.activePoint,k=T.basePoint,Y=T.childIndex,U=T.isRange,q=[],X=M.props.key,Q=M.item.type.defaultProps!==void 0?ae(ae({},M.item.type.defaultProps),M.item.props):M.item.props,Z=Q.activeDot,$=Q.dataKey,H=ae(ae({index:Y,dataKey:$,cx:N.x,cy:N.y,r:4,fill:Tx(M.item),strokeWidth:2,stroke:"#fff",payload:N.payload,value:N.value},ye(Z,!1)),Qs(Z));return q.push(w.renderActiveDot(Z,H,"".concat(X,"-activePoint-").concat(Y))),k?q.push(w.renderActiveDot(Z,ae(ae({},H),{},{cx:k.x,cy:k.y}),"".concat(X,"-basePoint-").concat(Y))):U&&q.push(null),q}),Oe(A,"renderGraphicChild",function(T,M,N){var k=A.filterFormatItem(T,M,N);if(!k)return null;var Y=A.getTooltipEventType(),U=A.state,q=U.isTooltipActive,X=U.tooltipAxis,Q=U.activeTooltipIndex,Z=U.activeLabel,$=A.props.children,H=gn($,rn),te=k.props,I=te.points,ee=te.isRange,D=te.baseLine,B=k.item.type.defaultProps!==void 0?ae(ae({},k.item.type.defaultProps),k.item.props):k.item.props,ne=B.activeDot,se=B.hide,de=B.activeBar,ge=B.activeShape,Ce=!!(!se&&q&&H&&(ne||de||ge)),Ue={};Y!=="axis"&&H&&H.props.trigger==="click"?Ue={onClick:Is(A.handleItemMouseEnter,T.props.onClick)}:Y!=="axis"&&(Ue={onMouseLeave:Is(A.handleItemMouseLeave,T.props.onMouseLeave),onMouseEnter:Is(A.handleItemMouseEnter,T.props.onMouseEnter)});var fe=ie.cloneElement(T,ae(ae({},k.props),Ue));function _e(hr){return typeof X.dataKey=="function"?X.dataKey(hr.payload):null}if(Ce)if(Q>=0){var Ae,le;if(X.dataKey&&!X.allowDuplicatedCategory){var nt=typeof X.dataKey=="function"?_e:"payload.".concat(X.dataKey.toString());Ae=Ws(I,nt,Z),le=ee&&D&&Ws(D,nt,Z)}else Ae=I==null?void 0:I[Q],le=ee&&D&&D[Q];if(ge||de){var Me=T.props.activeIndex!==void 0?T.props.activeIndex:Q;return[ie.cloneElement(T,ae(ae(ae({},k.props),Ue),{},{activeIndex:Me})),null,null]}if(!be(Ae))return[fe].concat(Jo(A.renderActivePoints({item:k,activePoint:Ae,basePoint:le,childIndex:Q,isRange:ee})))}else{var ct,st=(ct=A.getItemByXY(A.state.activeCoordinate))!==null&&ct!==void 0?ct:{graphicalItem:fe},Lt=st.graphicalItem,Un=Lt.item,er=Un===void 0?T:Un,Zr=Lt.childIndex,In=ae(ae(ae({},k.props),Ue),{},{activeIndex:Zr});return[ie.cloneElement(er,In),null,null]}return ee?[fe,null,null]:[fe,null]}),Oe(A,"renderCustomized",function(T,M,N){return ie.cloneElement(T,ae(ae({key:"recharts-customized-".concat(N)},A.props),A.state))}),Oe(A,"renderMap",{CartesianGrid:{handler:Xs,once:!0},ReferenceArea:{handler:A.renderReferenceElement},ReferenceLine:{handler:Xs},ReferenceDot:{handler:A.renderReferenceElement},XAxis:{handler:Xs},YAxis:{handler:Xs},Brush:{handler:A.renderBrush,once:!0},Bar:{handler:A.renderGraphicChild},Line:{handler:A.renderGraphicChild},Area:{handler:A.renderGraphicChild},Radar:{handler:A.renderGraphicChild},RadialBar:{handler:A.renderGraphicChild},Scatter:{handler:A.renderGraphicChild},Pie:{handler:A.renderGraphicChild},Funnel:{handler:A.renderGraphicChild},Tooltip:{handler:A.renderCursor,once:!0},PolarGrid:{handler:A.renderPolarGrid,once:!0},PolarAngleAxis:{handler:A.renderPolarAxis},PolarRadiusAxis:{handler:A.renderPolarAxis},Customized:{handler:A.renderCustomized}}),A.clipPathId="".concat((j=E.id)!==null&&j!==void 0?j:Na("recharts"),"-clip"),A.throttleTriggeredAfterMouseMove=ZP(A.triggeredAfterMouseMove,(P=E.throttleDelay)!==null&&P!==void 0?P:1e3/60),A.state={},A}return VY(w,x),GY(w,[{key:"componentDidMount",value:function(){var j,P;this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:(j=this.props.margin.left)!==null&&j!==void 0?j:0,top:(P=this.props.margin.top)!==null&&P!==void 0?P:0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout}),this.displayDefaultTooltip()}},{key:"displayDefaultTooltip",value:function(){var j=this.props,P=j.children,A=j.data,T=j.height,M=j.layout,N=gn(P,rn);if(N){var k=N.props.defaultIndex;if(!(typeof k!="number"||k<0||k>this.state.tooltipTicks.length-1)){var Y=this.state.tooltipTicks[k]&&this.state.tooltipTicks[k].value,U=N0(this.state,A,k,Y),q=this.state.tooltipTicks[k].coordinate,X=(this.state.offset.top+T)/2,Q=M==="horizontal",Z=Q?{x:q,y:X}:{y:q,x:X},$=this.state.formattedGraphicalItems.find(function(te){var I=te.item;return I.type.name==="Scatter"});$&&(Z=ae(ae({},Z),$.props.points[k].tooltipPosition),U=$.props.points[k].tooltipPayload);var H={activeTooltipIndex:k,isTooltipActive:!0,activeLabel:Y,activePayload:U,activeCoordinate:Z};this.setState(H),this.renderCursor(N),this.accessibilityManager.setIndex(k)}}}},{key:"getSnapshotBeforeUpdate",value:function(j,P){if(!this.props.accessibilityLayer)return null;if(this.state.tooltipTicks!==P.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==j.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==j.margin){var A,T;this.accessibilityManager.setDetails({offset:{left:(A=this.props.margin.left)!==null&&A!==void 0?A:0,top:(T=this.props.margin.top)!==null&&T!==void 0?T:0}})}return null}},{key:"componentDidUpdate",value:function(j){db([gn(j.children,rn)],[gn(this.props.children,rn)])||this.displayDefaultTooltip()}},{key:"componentWillUnmount",value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:"getTooltipEventType",value:function(){var j=gn(this.props.children,rn);if(j&&typeof j.props.shared=="boolean"){var P=j.props.shared?"axis":"item";return f.indexOf(P)>=0?P:l}return l}},{key:"getMouseInfo",value:function(j){if(!this.container)return null;var P=this.container,A=P.getBoundingClientRect(),T=UB(A),M={chartX:Math.round(j.pageX-T.left),chartY:Math.round(j.pageY-T.top)},N=A.width/P.offsetWidth||1,k=this.inRange(M.chartX,M.chartY,N);if(!k)return null;var Y=this.state,U=Y.xAxisMap,q=Y.yAxisMap,X=this.getTooltipEventType(),Q=HM(this.state,this.props.data,this.props.layout,k);if(X!=="axis"&&U&&q){var Z=Aa(U).scale,$=Aa(q).scale,H=Z&&Z.invert?Z.invert(M.chartX):null,te=$&&$.invert?$.invert(M.chartY):null;return ae(ae({},M),{},{xValue:H,yValue:te},Q)}return Q?ae(ae({},M),Q):null}},{key:"inRange",value:function(j,P){var A=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,T=this.props.layout,M=j/A,N=P/A;if(T==="horizontal"||T==="vertical"){var k=this.state.offset,Y=M>=k.left&&M<=k.left+k.width&&N>=k.top&&N<=k.top+k.height;return Y?{x:M,y:N}:null}var U=this.state,q=U.angleAxisMap,X=U.radiusAxisMap;if(q&&X){var Q=Aa(q);return Gj({x:M,y:N},Q)}return null}},{key:"parseEventsOfWrapper",value:function(){var j=this.props.children,P=this.getTooltipEventType(),A=gn(j,rn),T={};A&&P==="axis"&&(A.props.trigger==="click"?T={onClick:this.handleClick}:T={onMouseEnter:this.handleMouseEnter,onDoubleClick:this.handleDoubleClick,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd,onContextMenu:this.handleContextMenu});var M=Qs(this.props,this.handleOuterEvent);return ae(ae({},M),T)}},{key:"addListener",value:function(){ab.on(ib,this.handleReceiveSyncEvent)}},{key:"removeListener",value:function(){ab.removeListener(ib,this.handleReceiveSyncEvent)}},{key:"filterFormatItem",value:function(j,P,A){for(var T=this.state.formattedGraphicalItems,M=0,N=T.length;M<N;M++){var k=T[M];if(k.item===j||k.props.key===j.key||P===Br(k.item.type)&&A===k.childIndex)return k}return null}},{key:"renderClipPath",value:function(){var j=this.clipPathId,P=this.state.offset,A=P.left,T=P.top,M=P.height,N=P.width;return R.createElement("defs",null,R.createElement("clipPath",{id:j},R.createElement("rect",{x:A,y:T,height:M,width:N})))}},{key:"getXScales",value:function(){var j=this.state.xAxisMap;return j?Object.entries(j).reduce(function(P,A){var T=LM(A,2),M=T[0],N=T[1];return ae(ae({},P),{},Oe({},M,N.scale))},{}):null}},{key:"getYScales",value:function(){var j=this.state.yAxisMap;return j?Object.entries(j).reduce(function(P,A){var T=LM(A,2),M=T[0],N=T[1];return ae(ae({},P),{},Oe({},M,N.scale))},{}):null}},{key:"getXScaleByAxisId",value:function(j){var P;return(P=this.state.xAxisMap)===null||P===void 0||(P=P[j])===null||P===void 0?void 0:P.scale}},{key:"getYScaleByAxisId",value:function(j){var P;return(P=this.state.yAxisMap)===null||P===void 0||(P=P[j])===null||P===void 0?void 0:P.scale}},{key:"getItemByXY",value:function(j){var P=this.state,A=P.formattedGraphicalItems,T=P.activeItem;if(A&&A.length)for(var M=0,N=A.length;M<N;M++){var k=A[M],Y=k.props,U=k.item,q=U.type.defaultProps!==void 0?ae(ae({},U.type.defaultProps),U.props):U.props,X=Br(U.type);if(X==="Bar"){var Q=(Y.data||[]).find(function(te){return lH(j,te)});if(Q)return{graphicalItem:k,payload:Q}}else if(X==="RadialBar"){var Z=(Y.data||[]).find(function(te){return Gj(j,te)});if(Z)return{graphicalItem:k,payload:Z}}else if(Md(k,T)||Pd(k,T)||nc(k,T)){var $=C9({graphicalItem:k,activeTooltipItem:T,itemData:q.data}),H=q.activeIndex===void 0?$:q.activeIndex;return{graphicalItem:ae(ae({},k),{},{childIndex:H}),payload:nc(k,T)?q.data[$]:k.props.data[$]}}}return null}},{key:"render",value:function(){var j=this;if(!nw(this))return null;var P=this.props,A=P.children,T=P.className,M=P.width,N=P.height,k=P.style,Y=P.compact,U=P.title,q=P.desc,X=UM(P,zY),Q=ye(X,!1);if(Y)return R.createElement(mM,{state:this.state,width:this.props.width,height:this.props.height,clipPathId:this.clipPathId},R.createElement(pb,xo({},Q,{width:M,height:N,title:U,desc:q}),this.renderClipPath(),aw(A,this.renderMap)));if(this.props.accessibilityLayer){var Z,$;Q.tabIndex=(Z=this.props.tabIndex)!==null&&Z!==void 0?Z:0,Q.role=($=this.props.role)!==null&&$!==void 0?$:"application",Q.onKeyDown=function(te){j.accessibilityManager.keyboardEvent(te)},Q.onFocus=function(){j.accessibilityManager.focus()}}var H=this.parseEventsOfWrapper();return R.createElement(mM,{state:this.state,width:this.props.width,height:this.props.height,clipPathId:this.clipPathId},R.createElement("div",xo({className:Te("recharts-wrapper",T),style:ae({position:"relative",cursor:"default",width:M,height:N},k)},H,{ref:function(I){j.container=I}}),R.createElement(pb,xo({},Q,{width:M,height:N,title:U,desc:q,style:eX}),this.renderClipPath(),aw(A,this.renderMap)),this.renderLegend(),this.renderTooltip()))}}])})(ie.Component);Oe(_,"displayName",n),Oe(_,"defaultProps",ae({layout:"horizontal",stackOffset:"none",barCategoryGap:"10%",barGap:4,margin:{top:5,right:5,bottom:5,left:5},reverseStackOrder:!1,syncMethod:"index"},v)),Oe(_,"getDerivedStateFromProps",function(x,w){var E=x.dataKey,j=x.data,P=x.children,A=x.width,T=x.height,M=x.layout,N=x.stackOffset,k=x.margin,Y=w.dataStartIndex,U=w.dataEndIndex;if(w.updateId===void 0){var q=GM(x);return ae(ae(ae({},q),{},{updateId:0},b(ae(ae({props:x},q),{},{updateId:0}),w)),{},{prevDataKey:E,prevData:j,prevWidth:A,prevHeight:T,prevLayout:M,prevStackOffset:N,prevMargin:k,prevChildren:P})}if(E!==w.prevDataKey||j!==w.prevData||A!==w.prevWidth||T!==w.prevHeight||M!==w.prevLayout||N!==w.prevStackOffset||!So(k,w.prevMargin)){var X=GM(x),Q={chartX:w.chartX,chartY:w.chartY,isTooltipActive:w.isTooltipActive},Z=ae(ae({},HM(w,j,M)),{},{updateId:w.updateId+1}),$=ae(ae(ae({},X),Q),Z);return ae(ae(ae({},$),b(ae({props:x},$),w)),{},{prevDataKey:E,prevData:j,prevWidth:A,prevHeight:T,prevLayout:M,prevStackOffset:N,prevMargin:k,prevChildren:P})}if(!db(P,w.prevChildren)){var H,te,I,ee,D=gn(P,Lo),B=D&&(H=(te=D.props)===null||te===void 0?void 0:te.startIndex)!==null&&H!==void 0?H:Y,ne=D&&(I=(ee=D.props)===null||ee===void 0?void 0:ee.endIndex)!==null&&I!==void 0?I:U,se=B!==Y||ne!==U,de=!be(j),ge=de&&!se?w.updateId:w.updateId+1;return ae(ae({updateId:ge},b(ae(ae({props:x},w),{},{updateId:ge,dataStartIndex:B,dataEndIndex:ne}),w)),{},{prevChildren:P,dataStartIndex:B,dataEndIndex:ne})}return null}),Oe(_,"renderActiveDot",function(x,w,E){var j;return ie.isValidElement(x)?j=ie.cloneElement(x,w):Se(x)?j=x(w):j=R.createElement(vc,w),R.createElement(je,{className:"recharts-active-dot",key:E},j)});var S=ie.forwardRef(function(w,E){return R.createElement(_,xo({},w,{ref:E}))});return S.displayName=_.displayName,S},sX=Bd({chartName:"LineChart",GraphicalChild:Si,axisComponents:[{axisType:"xAxis",AxisComp:qr},{axisType:"yAxis",AxisComp:ir}],formatAxisMap:jx}),YM=Bd({chartName:"BarChart",GraphicalChild:Zn,defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"xAxis",AxisComp:qr},{axisType:"yAxis",AxisComp:ir}],formatAxisMap:jx}),fX=Bd({chartName:"PieChart",GraphicalChild:Fr,validateTooltipEventTypes:["item"],defaultTooltipEventType:"item",legendContent:"children",axisComponents:[{axisType:"angleAxis",AxisComp:jd},{axisType:"radiusAxis",AxisComp:Td}],formatAxisMap:b8,defaultProps:{layout:"centric",startAngle:0,endAngle:360,cx:"50%",cy:"50%",innerRadius:0,outerRadius:"80%"}}),dX=Bd({chartName:"ComposedChart",GraphicalChild:[Si,za,Zn,zd],axisComponents:[{axisType:"xAxis",AxisComp:qr},{axisType:"yAxis",AxisComp:ir},{axisType:"zAxis",AxisComp:kd}],formatAxisMap:jx});const Ld="/api";async function hX(){const e=await fetch(`${Ld}/agents`);if(!e.ok)throw new Error(`Failed to fetch agents: ${e.status} ${e.statusText}`);return e.json()}function qx(e,t){const n=[];if(e==="codex"&&n.push("agent=codex"),t){const r=Object.keys(t);for(let o=0;o<r.length;o++){const l=t[r[o]];l&&n.push(encodeURIComponent(r[o])+"="+encodeURIComponent(l))}}return n.length>0?"?"+n.join("&"):""}async function pX(e="claude"){const t=await fetch(`${Ld}/daily${qx(e)}`);if(!t.ok)throw new Error(`Failed to fetch daily data: ${t.status} ${t.statusText}`);return t.json()}async function vX(e="claude"){const t=await fetch(`${Ld}/projects${qx(e)}`);if(!t.ok)throw new Error(`Failed to fetch projects data: ${t.status} ${t.statusText}`);return t.json()}async function yX(e="claude",t=""){const n=await fetch(`${Ld}/blocks${qx(e,t?{project:t}:void 0)}`);if(!n.ok)throw new Error(`Failed to fetch blocks data: ${n.status} ${n.statusText}`);return n.json()}function ub(e){const[t,n]=ie.useState(null),[r,o]=ie.useState(!0),[l,c]=ie.useState(null),f=ie.useCallback(async()=>{o(!0),c(null);try{const d=await e();n(d)}catch(d){c(d instanceof Error?d.message:"An error occurred")}finally{o(!1)}},[e]);return ie.useEffect(()=>{f()},[f]),{data:t,loading:r,error:l,refetch:f}}function Vs(e,t){const[n,r]=ie.useState(()=>{try{const o=window.localStorage.getItem(e);if(o!==null)return JSON.parse(o)}catch(o){console.warn(`Error reading localStorage key "${e}":`,o)}return t});return ie.useEffect(()=>{try{window.localStorage.setItem(e,JSON.stringify(n))}catch(o){console.warn(`Error setting localStorage key "${e}":`,o)}},[e,n]),[n,r]}function qt(e){return e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(0)+"K":e.toLocaleString("en-US",{maximumFractionDigits:0})}function Nr(e){return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:2,maximumFractionDigits:2}).format(e)}function Fs(e){return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric"})}function lb(e){return e.toFixed(1)+"%"}function _N(e,t){if(!e)return"";const n=l=>l.includes("/")?l.split("/").filter(Boolean):l.split("-").filter(Boolean),r=n(e);if(r.length===0)return e;const o=r[r.length-1];return t&&t.length>0&&t.some(c=>{if(c===e)return!1;const f=n(c);return f.length>0&&f[f.length-1]===o})&&r.length>=2?`${r[r.length-2]}/${o}`:o}function mX(e){return e/1e6*3*(1-.1)}const XM={"claude-opus-4-20250514":"Opus 4","claude-sonnet-4-20250514":"Sonnet 4","claude-haiku-3-5-20241022":"Haiku 3.5","claude-opus-3-20250214":"Opus 3","claude-sonnet-3-20250214":"Sonnet 3","claude-sonnet-3-5-20250214":"Sonnet 3.5","claude-haiku-3-20250214":"Haiku 3","claude-opus-4":"Opus 4","claude-sonnet-4":"Sonnet 4","claude-haiku-4":"Haiku 4"};function cb(e){if(XM[e])return XM[e];const t=e.match(/^claude-(opus|sonnet|haiku)-?[\d.]*-?/);if(t){const n=t[1],r=e.match(/(\d+[\d.]*)/);return r?`${n.charAt(0).toUpperCase()+n.slice(1)} ${r[1]}`:n.charAt(0).toUpperCase()+n.slice(1)}return e}const Rn=["#4f46e5","#10b981","#f59e0b","#ec4899","#0ea5e9","#8b5cf6","#ef4444","#14b8a6"],AN=[{key:"7d",label:"7D",days:7},{key:"30d",label:"30D",days:30},{key:"60d",label:"60D",days:60}];function vo({label:e,value:t,sub:n,insight:r,accent:o}){return K.jsxs("div",{className:"flex flex-col gap-1 p-5 rounded-2xl bg-white shadow-[0_1px_3px_rgba(120,113,108,0.06)] transition-shadow duration-200 hover:shadow-[0_4px_12px_rgba(120,113,108,0.09)]",children:[K.jsx("span",{className:"text-[12px] font-medium text-stone-400",children:e}),K.jsx("span",{className:`text-3xl font-extrabold tracking-tighter font-mono mt-1 ${o?"text-indigo-600":"text-stone-900"}`,children:t}),n&&K.jsx("span",{className:"text-xs font-medium text-stone-400 mt-0.5",children:n}),r&&K.jsx("div",{className:"mt-2.5 pt-2.5 border-t border-stone-100 text-[12px] font-medium text-stone-500 leading-relaxed",children:r})]})}function ii({title:e,subtitle:t,children:n,className:r=""}){return K.jsxs("div",{className:`flex flex-col rounded-2xl bg-white p-5 shadow-[0_1px_3px_rgba(120,113,108,0.06)] ${r}`,children:[K.jsxs("div",{className:"mb-5",children:[K.jsx("h3",{className:"text-[15px] font-semibold text-stone-900 tracking-tight",children:e}),t&&K.jsx("p",{className:"text-[13px] font-medium text-stone-400 mt-1",children:t})]}),K.jsx("div",{className:"flex-1 min-h-0",children:n})]})}function pl({active:e,payload:t,label:n,fmt:r=qt}){return!e||!(t!=null&&t.length)?null:K.jsxs("div",{className:"bg-white rounded-xl px-3.5 py-3 shadow-[0_8px_30px_rgba(120,113,108,0.12)] text-[11px] border border-stone-200/40",children:[n&&K.jsx("div",{className:"text-stone-400 mb-1.5 font-medium",children:n}),t.map((o,l)=>K.jsxs("div",{className:"flex items-center justify-between gap-5",children:[K.jsxs("span",{className:"flex items-center gap-1.5",children:[K.jsx("span",{className:"w-1.5 h-1.5 rounded-full",style:{backgroundColor:o.color}}),o.name]}),K.jsx("span",{className:"font-mono text-stone-700",children:r(o.value)})]},l))]})}function VM({options:e,value:t,onChange:n}){return K.jsx("div",{className:"flex items-center gap-0.5 p-0.5 bg-stone-100 rounded-lg",children:e.map(r=>K.jsx("button",{onClick:()=>n(r.key),className:`px-3 py-1.5 rounded-md text-[11px] font-semibold tracking-wide transition-all duration-200 ${t===r.key?"bg-stone-800 text-white shadow-sm":"text-stone-500 hover:text-stone-800 hover:bg-stone-50"}`,children:r.label},r.key))})}function gX({projects:e,value:t,onChange:n}){return K.jsxs("select",{value:t,onChange:r=>n(r.target.value),className:"bg-white border border-stone-200 rounded-lg px-3 py-1.5 text-[12px] font-semibold text-stone-800 outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 max-w-[220px]",children:[K.jsx("option",{value:"",children:"All Projects"}),e.map(r=>K.jsx("option",{value:r,children:_N(r,e)},r))]})}function td(e,t){const n=AN.find(l=>l.key===t),r=n?n.days:30,o=new Date;return o.setDate(o.getDate()-r),e.filter(l=>{const c=l.date||l.startTime||"";return new Date(c)>=o})}function bX(e,t,n){if(!t){const r={};for(const o of Object.values(e))for(const l of td(o,n))if(!r[l.date])r[l.date]={...l,modelsUsed:[...l.modelsUsed],modelBreakdowns:l.modelBreakdowns.map(c=>({...c}))};else{const c=r[l.date];c.inputTokens+=l.inputTokens,c.outputTokens+=l.outputTokens,c.cacheCreationTokens+=l.cacheCreationTokens,c.cacheReadTokens+=l.cacheReadTokens,c.totalTokens+=l.totalTokens,c.totalCost+=l.totalCost;for(const f of l.modelBreakdowns){const d=c.modelBreakdowns.find(h=>h.modelName===f.modelName);d?(d.inputTokens+=f.inputTokens,d.outputTokens+=f.outputTokens,d.cacheCreationTokens+=f.cacheCreationTokens,d.cacheReadTokens+=f.cacheReadTokens,d.cost+=f.cost):c.modelBreakdowns.push({...f})}}return Object.values(r).sort((o,l)=>o.date.localeCompare(l.date))}return td(e[t]||[],n)}function xX(){const[e,t]=ie.useState(null),[n,r]=ie.useState(!0),[o,l]=Vs("dashboard_agent","claude"),[c,f]=Vs("dashboard_timeRange","30d"),[d,h]=Vs("dashboard_project","");ie.useEffect(()=>{hX().then(I=>{t(I),I.available.length>0&&!I.available.includes(o)&&l(I.default)}).catch(()=>{}).finally(()=>r(!1))},[]);const y=((e==null?void 0:e.available.length)??0)>1,v=ub(ie.useCallback(()=>pX(o),[o])),g=ub(ie.useCallback(()=>vX(o),[o])),b=ub(ie.useCallback(()=>yX(o,d),[o,d])),[_,S]=Vs("dashboard_metric","tokens"),x=I=>{l(I),h("")},w=v.loading||g.loading||b.loading,E=v.error||g.error||b.error,j=_==="tokens",P=j?"tokens":"cost",A=ie.useMemo(()=>{var I;return Object.keys(((I=g.data)==null?void 0:I.projects)||{}).sort()},[g.data]),T=ie.useMemo(()=>g.data?bX(g.data.projects,d,c):[],[g.data,d,c]),M=ie.useMemo(()=>T.reduce((I,ee)=>({inputTokens:I.inputTokens+ee.inputTokens,outputTokens:I.outputTokens+ee.outputTokens,cacheCreationTokens:I.cacheCreationTokens+ee.cacheCreationTokens,cacheReadTokens:I.cacheReadTokens+ee.cacheReadTokens,totalTokens:I.totalTokens+ee.totalTokens,totalCost:I.totalCost+ee.totalCost}),{inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,totalTokens:0,totalCost:0}),[T]),N=ie.useMemo(()=>T.filter(I=>I.totalTokens>0).length,[T]),k=ie.useMemo(()=>{if(!T.length)return{date:"-",tokens:0};const I=T.reduce((ee,D)=>D.totalTokens>ee.totalTokens?D:ee,T[0]);return{date:I.date,tokens:I.totalTokens}},[T]),Y=M.inputTokens>0?M.cacheReadTokens/(M.cacheReadTokens+M.inputTokens)*100:0,U=M.inputTokens>0?M.outputTokens/M.inputTokens*100:0,q=ie.useMemo(()=>({tokensSaved:M.cacheReadTokens,costSaved:mX(M.cacheReadTokens),hitRate:Y}),[M.cacheReadTokens,Y]),X=ie.useMemo(()=>{const I={};for(const ee of T)for(const D of ee.modelBreakdowns){const B=cb(D.modelName);I[B]||(I[B]={tokens:0,cost:0,input:0,output:0,cacheRead:0}),I[B].tokens+=D.inputTokens+D.outputTokens,I[B].cost+=D.cost,I[B].input+=D.inputTokens,I[B].output+=D.outputTokens,I[B].cacheRead+=D.cacheReadTokens}return Object.entries(I).map(([ee,D])=>({name:ee,...D})).sort((ee,D)=>D.tokens-ee.tokens)},[T]),Q=ie.useMemo(()=>T.map(I=>{const ee={date:Fs(I.date)};for(const D of I.modelBreakdowns){const B=cb(D.modelName);ee[B]=(ee[B]||0)+(j?D.inputTokens+D.outputTokens:D.cost)}return ee}),[T,j]),Z=ie.useMemo(()=>g.data?Object.entries(g.data.projects).map(([I,ee])=>{const D=td(ee,c);return{name:_N(I,A),full:I,tokens:D.reduce((B,ne)=>B+ne.totalTokens,0),cost:D.reduce((B,ne)=>B+ne.totalCost,0)}}).filter(I=>I.tokens>0).sort((I,ee)=>ee.tokens-I.tokens):[],[g.data,c]),$=ie.useMemo(()=>T.map(I=>({date:Fs(I.date),cacheRead:I.cacheReadTokens,input:I.inputTokens,hitRate:I.inputTokens>0?I.cacheReadTokens/(I.cacheReadTokens+I.inputTokens)*100:0})),[T]),H=ie.useMemo(()=>{if(!b.data)return null;const I=td(b.data.blocks,c),ee=Array(7).fill(0).map(()=>Array(24).fill(0));let D=0;for(const B of I){if(B.isGap)continue;const ne=new Date(B.startTime),se=ne.getDay(),de=ne.getHours(),ge=j?B.totalTokens:B.costUSD;ee[se][de]+=ge,ee[se][de]>D&&(D=ee[se][de])}return{grid:ee,maxVal:D}},[b.data,c,j]),te=()=>K.jsxs("div",{className:"flex items-center gap-1 p-1 bg-stone-200/50 rounded-xl w-fit shadow-inner border border-stone-200/50",children:[K.jsxs("button",{onClick:()=>x("claude"),className:`flex items-center gap-2 px-5 py-2.5 rounded-lg text-[13px] font-bold tracking-wide transition-all duration-200 ${o==="claude"?"bg-white text-indigo-600 shadow-[0_1px_3px_rgba(0,0,0,0.1)] ring-1 ring-stone-900/5":"text-stone-500 hover:text-stone-800 hover:bg-stone-200/50"}`,children:[K.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:K.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M13 10V3L4 14h7v7l9-11h-7z"})}),"Claude Code"]}),K.jsxs("button",{onClick:()=>x("codex"),className:`flex items-center gap-2 px-5 py-2.5 rounded-lg text-[13px] font-bold tracking-wide transition-all duration-200 ${o==="codex"?"bg-white text-emerald-600 shadow-[0_1px_3px_rgba(0,0,0,0.1)] ring-1 ring-stone-900/5":"text-stone-500 hover:text-stone-800 hover:bg-stone-200/50"}`,children:[K.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:K.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"})}),"Codex"]})]});return w?K.jsxs("div",{className:"max-w-[1440px] mx-auto px-6 py-10",children:[K.jsxs("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between gap-6 mb-8",children:[K.jsx("div",{className:"flex flex-col gap-1.5",children:K.jsx("h1",{className:"text-3xl font-extrabold tracking-tight text-stone-900",children:"TokenDash"})}),y&&te()]}),K.jsx("div",{className:"skeleton h-8 w-48 rounded-lg mb-2"}),K.jsx("div",{className:"skeleton h-4 w-72 rounded-lg mb-8"}),K.jsx("div",{className:"grid grid-cols-3 md:grid-cols-6 gap-3 mb-6",children:[...Array(6)].map((I,ee)=>K.jsx("div",{className:"skeleton h-20 rounded-2xl"},ee))}),K.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[K.jsx("div",{className:"skeleton h-72 rounded-2xl"}),K.jsx("div",{className:"skeleton h-72 rounded-2xl"})]})]}):E?K.jsxs("div",{className:"max-w-[1440px] mx-auto px-6 py-10",children:[K.jsxs("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between gap-6 mb-8",children:[K.jsx("div",{className:"flex flex-col gap-1.5",children:K.jsx("h1",{className:"text-3xl font-extrabold tracking-tight text-stone-900",children:"TokenDash"})}),y&&te()]}),K.jsx("div",{className:"rounded-2xl bg-red-50 border border-red-200/60 p-5",children:K.jsx("div",{className:"text-red-600 text-sm font-medium",children:E})})]}):!v.data||!g.data?null:K.jsxs("div",{className:"max-w-[1440px] mx-auto px-6 py-10",children:[K.jsxs("div",{className:"mb-8",children:[K.jsxs("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between gap-6 mb-6",children:[K.jsxs("div",{className:"flex flex-col gap-1.5",children:[K.jsx("h1",{className:"text-3xl font-extrabold tracking-tight text-stone-900",children:"TokenDash"}),K.jsx("p",{className:"text-[14px] font-medium text-stone-500 leading-relaxed",children:"Monitor token consumption, costs, and cache efficiency for your AI coding assistants."})]}),y&&te()]}),K.jsx("div",{className:"flex flex-col gap-4",children:K.jsxs("div",{className:"flex flex-wrap items-center gap-6 p-4 bg-white rounded-2xl border border-stone-200/50 shadow-sm w-fit",children:[K.jsxs("div",{className:"flex flex-col gap-2",children:[K.jsx("span",{className:"text-[11px] font-semibold text-stone-400 uppercase tracking-wider",children:"Time range"}),K.jsx(VM,{options:AN,value:c,onChange:I=>f(I)})]}),A.length>0&&K.jsxs(K.Fragment,{children:[K.jsx("div",{className:"w-px h-10 bg-stone-200/60 hidden sm:block"}),K.jsxs("div",{className:"flex flex-col gap-2",children:[K.jsx("span",{className:"text-[11px] font-semibold text-stone-400 uppercase tracking-wider",children:"Project"}),K.jsx(gX,{projects:A,value:d,onChange:h})]})]}),K.jsx("div",{className:"w-px h-10 bg-stone-200/60 hidden sm:block"}),K.jsxs("div",{className:"flex flex-col gap-2",children:[K.jsx("span",{className:"text-[11px] font-semibold text-stone-400 uppercase tracking-wider",children:"Metric"}),K.jsx(VM,{options:[{key:"tokens",label:"Tokens"},{key:"usd",label:"Cost"}],value:_,onChange:I=>S(I)})]})]})})]}),K.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-6 gap-4 mb-6",children:[K.jsx(vo,{label:"Total tokens",value:qt(M.totalTokens),accent:!0,insight:"The primary volume indicator for the selected period."}),K.jsx(vo,{label:"Total cost",value:Nr(M.totalCost),insight:"Estimated spend based on current pricing."}),K.jsx(vo,{label:"Daily avg",value:qt(N>0?M.totalTokens/N:0),sub:`${N} active days`,insight:"Baseline for typical daily volume."}),K.jsx(vo,{label:"Peak day",value:qt(k.tokens),sub:k.date!=="-"?Fs(k.date):void 0,insight:"Highest single day usage."}),K.jsx(vo,{label:"Cache hit",value:lb(Y),insight:"Higher hit rate reduces cost."}),K.jsx(vo,{label:"Output/Input",value:lb(U),insight:"Ratio of generation to context."})]}),K.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4 mb-4",children:[K.jsxs(ii,{title:"Cache efficiency & savings",children:[K.jsxs("div",{className:"flex items-center gap-6 mb-6 px-4 py-3 bg-emerald-50/50 rounded-xl border border-emerald-100/50",children:[K.jsxs("div",{className:"flex flex-col",children:[K.jsx("span",{className:"text-[11px] font-bold text-emerald-600/70 uppercase tracking-wider mb-0.5",children:"Est. Cost Saved"}),K.jsx("span",{className:"text-2xl font-black text-emerald-600 tracking-tight",children:Nr(q.costSaved)})]}),K.jsx("div",{className:"w-px h-8 bg-emerald-200/50"}),K.jsxs("div",{className:"flex flex-col",children:[K.jsx("span",{className:"text-[11px] font-bold text-emerald-600/70 uppercase tracking-wider mb-0.5",children:"Tokens Saved"}),K.jsx("span",{className:"text-lg font-extrabold text-emerald-700/80 tracking-tight font-mono",children:qt(q.tokensSaved)})]}),K.jsx("div",{className:"w-px h-8 bg-emerald-200/50"}),K.jsxs("div",{className:"flex flex-col",children:[K.jsx("span",{className:"text-[11px] font-bold text-emerald-600/70 uppercase tracking-wider mb-0.5",children:"Avg Hit Rate"}),K.jsx("span",{className:"text-lg font-extrabold text-emerald-700/80 tracking-tight font-mono",children:lb(q.hitRate)})]})]}),K.jsx(il,{width:"100%",height:210,children:K.jsxs(dX,{data:$,children:[K.jsx(gl,{strokeDasharray:"3 3",stroke:"#e7e5e4",vertical:!1}),K.jsx(qr,{dataKey:"date",tick:{fill:"#78716c",fontSize:10},axisLine:!1,tickLine:!1}),K.jsx(ir,{yAxisId:"left",tick:{fill:"#78716c",fontSize:10},axisLine:!1,tickLine:!1,tickFormatter:I=>qt(I)}),K.jsx(ir,{yAxisId:"right",orientation:"right",tick:{fill:"#78716c",fontSize:10},axisLine:!1,tickLine:!1,tickFormatter:I=>`${I.toFixed(0)}%`}),K.jsx(rn,{content:K.jsx(pl,{})}),K.jsx(Lr,{wrapperStyle:{fontSize:11,paddingTop:12}}),K.jsx(za,{yAxisId:"left",type:"monotone",dataKey:"cacheRead",stroke:Rn[5],fill:Rn[5],fillOpacity:.08,name:"Cache Read",strokeWidth:1.5}),K.jsx(Si,{yAxisId:"right",type:"monotone",dataKey:"hitRate",stroke:Rn[3],strokeWidth:2,dot:!1,name:"Hit Rate (%)"})]})})]}),d?d?K.jsx(ii,{title:"Per-model breakdown",children:K.jsx(il,{width:"100%",height:280,children:K.jsxs(YM,{data:X,layout:"vertical",children:[K.jsx(gl,{strokeDasharray:"3 3",stroke:"#e7e5e4",horizontal:!1}),K.jsx(qr,{type:"number",tick:{fill:"#78716c",fontSize:10},axisLine:!1,tickLine:!1,tickFormatter:I=>qt(I)}),K.jsx(ir,{type:"category",dataKey:"name",tick:{fill:"#57534e",fontSize:11},axisLine:!1,tickLine:!1,width:80}),K.jsx(rn,{content:K.jsx(pl,{})}),K.jsx(Zn,{dataKey:"cacheRead",stackId:"a",fill:Rn[0],fillOpacity:.7,name:"Cache Read",maxBarSize:20}),K.jsx(Zn,{dataKey:"input",stackId:"a",fill:Rn[1],fillOpacity:.7,name:"Input",maxBarSize:20}),K.jsx(Zn,{dataKey:"output",stackId:"a",fill:Rn[2],fillOpacity:.7,name:"Output",maxBarSize:20})]})})}):null:K.jsx(ii,{title:"Project distribution",subtitle:`Top 8 projects by ${j?"tokens":"cost"}`,children:K.jsx(il,{width:"100%",height:280,children:K.jsxs(YM,{data:Z.slice(0,8),layout:"vertical",margin:{left:8,right:8,top:0,bottom:0},children:[K.jsx(gl,{strokeDasharray:"3 3",stroke:"#e7e5e4",horizontal:!1}),K.jsx(qr,{type:"number",tick:{fill:"#78716c",fontSize:11},axisLine:!1,tickLine:!1,tickFormatter:I=>j?qt(I):Nr(I)}),K.jsx(ir,{type:"category",dataKey:"name",tick:{fill:"#57534e",fontSize:11},axisLine:!1,tickLine:!1,width:110}),K.jsx(rn,{content:K.jsx(pl,{fmt:j?qt:Nr})}),K.jsx(Zn,{dataKey:P,radius:[0,6,6,0],maxBarSize:24,children:Z.slice(0,8).map((I,ee)=>K.jsx(Mo,{fill:Rn[ee%Rn.length],fillOpacity:.85},ee))})]})})})]}),K.jsx(ii,{title:"24-Hour Activity Heatmap",subtitle:"Activity distribution by hour and day of week",className:"mb-4",children:H?K.jsxs("div",{className:"flex flex-col w-full pt-1 pb-2",children:[K.jsxs("div",{className:"flex w-full gap-2",children:[K.jsx("div",{className:"w-8 shrink-0 flex flex-col justify-around text-[10px] font-medium text-stone-400 pt-0.5 pb-0.5",children:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"].map(I=>K.jsx("div",{className:"h-[22px] flex items-center",children:I},I))}),K.jsx("div",{className:"flex-1 flex flex-col gap-1",children:H.grid.map((I,ee)=>K.jsx("div",{className:"flex gap-1 h-[22px]",children:I.map((D,B)=>{const ne=H.maxVal>0?.15+D/H.maxVal*.85:0;return K.jsx("div",{className:"flex-1 rounded-[3px] relative group transition-all hover:ring-2 hover:ring-emerald-400 hover:ring-offset-1 hover:z-10",style:{backgroundColor:D>0?`rgba(16, 185, 129, ${ne})`:"#ebedf0"},children:D>0&&K.jsxs("div",{className:"absolute opacity-0 group-hover:opacity-100 z-20 bg-stone-900 text-white text-[10px] px-2 py-1 rounded bottom-full mb-1.5 left-1/2 -translate-x-1/2 pointer-events-none whitespace-nowrap shadow-lg font-mono",children:[B,":00 - ",j?qt(D)+" tokens":Nr(D)]})},B)})},ee))})]}),K.jsx("div",{className:"flex ml-10 mt-1.5 text-[10px] font-medium text-stone-400",children:[...Array(24)].map((I,ee)=>K.jsx("div",{className:"flex-1 text-center truncate",children:ee%2===0?ee:""},ee))})]}):K.jsx("div",{className:"h-48 flex items-center justify-center text-stone-400 text-sm",children:"No session data available"})}),K.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-4 mb-4",children:[K.jsx(ii,{title:"Model trend",subtitle:"Showing top 6 models to maintain readability",className:"lg:col-span-3",children:K.jsx(il,{width:"100%",height:260,children:K.jsxs(sX,{data:Q,children:[K.jsx(gl,{strokeDasharray:"3 3",stroke:"#e7e5e4",vertical:!1}),K.jsx(qr,{dataKey:"date",tick:{fill:"#78716c",fontSize:10},axisLine:!1,tickLine:!1}),K.jsx(ir,{tick:{fill:"#78716c",fontSize:10},axisLine:!1,tickLine:!1,tickFormatter:I=>j?qt(I):Nr(I)}),K.jsx(rn,{content:K.jsx(pl,{fmt:j?qt:Nr})}),K.jsx(Lr,{wrapperStyle:{fontSize:11,paddingTop:12}}),X.slice(0,6).map((I,ee)=>K.jsx(Si,{type:"monotone",dataKey:I.name,stroke:Rn[ee%Rn.length],strokeWidth:1.5,dot:!1},I.name))]})})}),K.jsx(ii,{title:"Model distribution",subtitle:"Ranked by total volume",className:"lg:col-span-2",children:K.jsx(il,{width:"100%",height:260,children:K.jsxs(fX,{margin:{left:0,right:0,top:0,bottom:0},children:[K.jsx(Fr,{data:X.slice(0,6),dataKey:P,nameKey:"name",cx:"50%",cy:"50%",innerRadius:60,outerRadius:90,paddingAngle:2,children:X.slice(0,6).map((I,ee)=>K.jsx(Mo,{fill:Rn[ee%Rn.length],fillOpacity:.85,stroke:"transparent"},ee))}),K.jsx(rn,{content:K.jsx(pl,{fmt:j?qt:Nr})}),K.jsx(Lr,{layout:"vertical",verticalAlign:"middle",align:"right",wrapperStyle:{fontSize:11}})]})})})]}),K.jsx(ii,{title:"Daily detail",subtitle:"Recent 30 days of usage breakdown",children:K.jsx("div",{className:"overflow-x-auto",children:K.jsxs("table",{className:"w-full text-[11px] whitespace-nowrap",children:[K.jsx("thead",{children:K.jsxs("tr",{className:"border-b border-stone-200",children:[K.jsx("th",{className:"text-left py-3 px-4 text-stone-400 font-semibold text-[10px]",children:"Date"}),K.jsx("th",{className:"text-right py-3 px-4 text-stone-400 font-semibold text-[10px]",children:"Input"}),K.jsx("th",{className:"text-right py-3 px-4 text-stone-400 font-semibold text-[10px]",children:"Output"}),K.jsx("th",{className:"text-right py-3 px-4 text-stone-400 font-semibold text-[10px]",children:"Cache read"}),K.jsx("th",{className:"text-right py-3 px-4 text-stone-600 font-semibold text-[10px]",children:"Total tokens"}),K.jsx("th",{className:"text-right py-3 px-4 text-stone-400 font-semibold text-[10px]",children:"Cost"}),K.jsx("th",{className:"text-left py-3 px-4 text-stone-400 font-semibold text-[10px]",children:"Models"})]})}),K.jsx("tbody",{children:[...T].reverse().slice(0,30).map(I=>K.jsxs("tr",{className:"border-b border-stone-100 hover:bg-stone-50/60 transition-colors",children:[K.jsx("td",{className:"py-2.5 px-4 text-stone-800 font-semibold",children:Fs(I.date)}),K.jsx("td",{className:"py-2.5 px-4 text-right font-mono text-stone-500",children:qt(I.inputTokens)}),K.jsx("td",{className:"py-2.5 px-4 text-right font-mono text-stone-500",children:qt(I.outputTokens)}),K.jsx("td",{className:"py-2.5 px-4 text-right font-mono text-indigo-500/70",children:qt(I.cacheReadTokens)}),K.jsx("td",{className:"py-2.5 px-4 text-right font-mono font-semibold text-indigo-600",children:qt(I.totalTokens)}),K.jsx("td",{className:"py-2.5 px-4 text-right font-mono font-medium text-stone-600 bg-stone-50/40",children:Nr(I.totalCost)}),K.jsx("td",{className:"py-2.5 px-4 text-stone-500 font-medium truncate max-w-[200px]",children:I.modelsUsed.map(cb).join(", ")})]},I.date))})]})})})]})}function SX(){return K.jsx("div",{className:"min-h-dvh bg-[radial-gradient(ellipse_at_top,#eef2ff_0%,#faf9f7_35%,#faf9f7_100%)] text-stone-900",children:K.jsx(xX,{})})}J3.createRoot(document.getElementById("root")).render(K.jsx(ie.StrictMode,{children:K.jsx(SX,{})}));
121
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function bN(e,t){if(e){if(typeof e=="string")return D0(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return D0(e,t)}}function ZY(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function WY(e){if(Array.isArray(e))return D0(e)}function D0(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function IM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function ae(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?IM(Object(n),!0).forEach(function(r){Oe(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):IM(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function Oe(e,t,n){return t=xN(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function xN(e){var t=QY(e,"string");return Qo(t)=="symbol"?t:t+""}function QY(e,t){if(Qo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(Qo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var JY={xAxis:["bottom","top"],yAxis:["left","right"]},eX={width:"100%",height:"100%"},SN={x:0,y:0};function Xs(e){return e}var tX=function(t,n){return n==="horizontal"?t.x:n==="vertical"?t.y:n==="centric"?t.angle:t.radius},nX=function(t,n,r,o){var l=n.find(function(y){return y&&y.index===r});if(l){if(t==="horizontal")return{x:l.coordinate,y:o.y};if(t==="vertical")return{x:o.x,y:l.coordinate};if(t==="centric"){var c=l.coordinate,f=o.radius;return ae(ae(ae({},o),tt(o.cx,o.cy,f,c)),{},{angle:c,radius:f})}var d=l.coordinate,h=o.angle;return ae(ae(ae({},o),tt(o.cx,o.cy,d,h)),{},{angle:h,radius:d})}return SN},qd=function(t,n){var r=n.graphicalItems,o=n.dataStartIndex,l=n.dataEndIndex,c=(r??[]).reduce(function(f,d){var h=d.props.data;return h&&h.length?[].concat(Jo(f),Jo(h)):f},[]);return c.length>0?c:t&&t.length&&ce(o)&&ce(l)?t.slice(o,l+1):[]};function ON(e){return e==="number"?[0,"auto"]:void 0}var N0=function(t,n,r,o){var l=t.graphicalItems,c=t.tooltipAxis,f=qd(n,t);return r<0||!l||!l.length||r>=f.length?null:l.reduce(function(d,h){var y,v=(y=h.props.data)!==null&&y!==void 0?y:n;v&&t.dataStartIndex+t.dataEndIndex!==0&&t.dataEndIndex-t.dataStartIndex>=r&&(v=v.slice(t.dataStartIndex,t.dataEndIndex+1));var g;if(c.dataKey&&!c.allowDuplicatedCategory){var b=v===void 0?f:v;g=Ws(b,c.dataKey,o)}else g=v&&v[r]||f[r];return g?[].concat(Jo(d),[iD(h,g)]):d},[])},HM=function(t,n,r,o){var l=o||{x:t.chartX,y:t.chartY},c=tX(l,r),f=t.orderedTooltipTicks,d=t.tooltipAxis,h=t.tooltipTicks,y=F6(c,f,h,d);if(y>=0&&h){var v=h[y]&&h[y].value,g=N0(t,n,y,v),b=nX(r,f,y,l);return{activeTooltipIndex:y,activeLabel:v,activePayload:g,activeCoordinate:b}}return null},rX=function(t,n){var r=n.axes,o=n.graphicalItems,l=n.axisType,c=n.axisIdKey,f=n.stackGroups,d=n.dataStartIndex,h=n.dataEndIndex,y=t.layout,v=t.children,g=t.stackOffset,b=JC(y,l);return r.reduce(function(_,S){var x,w=S.type.defaultProps!==void 0?ae(ae({},S.type.defaultProps),S.props):S.props,E=w.type,j=w.dataKey,P=w.allowDataOverflow,A=w.allowDuplicatedCategory,T=w.scale,M=w.ticks,N=w.includeHidden,k=w[c];if(_[k])return _;var Y=qd(t.data,{graphicalItems:o.filter(function(B){var ne,se=c in B.props?B.props[c]:(ne=B.type.defaultProps)===null||ne===void 0?void 0:ne[c];return se===k}),dataStartIndex:d,dataEndIndex:h}),U=Y.length,q,X,Q;MY(w.domain,P,E)&&(q=Gb(w.domain,null,P),b&&(E==="number"||T!=="auto")&&(Q=Sl(Y,j,"category")));var Z=ON(E);if(!q||q.length===0){var $,H=($=w.domain)!==null&&$!==void 0?$:Z;if(j){if(q=Sl(Y,j,E),E==="category"&&b){var te=I$(q);A&&te?(X=q,q=qf(0,U)):A||(q=Uj(H,q,S).reduce(function(B,ne){return B.indexOf(ne)>=0?B:[].concat(Jo(B),[ne])},[]))}else if(E==="category")A?q=q.filter(function(B){return B!==""&&!be(B)}):q=Uj(H,q,S).reduce(function(B,ne){return B.indexOf(ne)>=0||ne===""||be(ne)?B:[].concat(Jo(B),[ne])},[]);else if(E==="number"){var I=e8(Y,o.filter(function(B){var ne,se,de=c in B.props?B.props[c]:(ne=B.type.defaultProps)===null||ne===void 0?void 0:ne[c],ge="hide"in B.props?B.props.hide:(se=B.type.defaultProps)===null||se===void 0?void 0:se.hide;return de===k&&(N||!ge)}),j,l,y);I&&(q=I)}b&&(E==="number"||T!=="auto")&&(Q=Sl(Y,j,"category"))}else b?q=qf(0,U):f&&f[k]&&f[k].hasStack&&E==="number"?q=g==="expand"?[0,1]:aD(f[k].stackGroups,d,h):q=QC(Y,o.filter(function(B){var ne=c in B.props?B.props[c]:B.type.defaultProps[c],se="hide"in B.props?B.props.hide:B.type.defaultProps.hide;return ne===k&&(N||!se)}),E,y,!0);if(E==="number")q=P0(v,q,k,l,M),H&&(q=Gb(H,q,P));else if(E==="category"&&H){var ee=H,D=q.every(function(B){return ee.indexOf(B)>=0});D&&(q=ee)}}return ae(ae({},_),{},Oe({},k,ae(ae({},w),{},{axisType:l,domain:q,categoricalDomain:Q,duplicateDomain:X,originalDomain:(x=w.domain)!==null&&x!==void 0?x:Z,isCategorical:b,layout:y})))},{})},aX=function(t,n){var r=n.graphicalItems,o=n.Axis,l=n.axisType,c=n.axisIdKey,f=n.stackGroups,d=n.dataStartIndex,h=n.dataEndIndex,y=t.layout,v=t.children,g=qd(t.data,{graphicalItems:r,dataStartIndex:d,dataEndIndex:h}),b=g.length,_=JC(y,l),S=-1;return r.reduce(function(x,w){var E=w.type.defaultProps!==void 0?ae(ae({},w.type.defaultProps),w.props):w.props,j=E[c],P=ON("number");if(!x[j]){S++;var A;return _?A=qf(0,b):f&&f[j]&&f[j].hasStack?(A=aD(f[j].stackGroups,d,h),A=P0(v,A,j,l)):(A=Gb(P,QC(g,r.filter(function(T){var M,N,k=c in T.props?T.props[c]:(M=T.type.defaultProps)===null||M===void 0?void 0:M[c],Y="hide"in T.props?T.props.hide:(N=T.type.defaultProps)===null||N===void 0?void 0:N.hide;return k===j&&!Y}),"number",y),o.defaultProps.allowDataOverflow),A=P0(v,A,j,l)),ae(ae({},x),{},Oe({},j,ae(ae({axisType:l},o.defaultProps),{},{hide:!0,orientation:xn(JY,"".concat(l,".").concat(S%2),null),domain:A,originalDomain:P,isCategorical:_,layout:y})))}return x},{})},iX=function(t,n){var r=n.axisType,o=r===void 0?"xAxis":r,l=n.AxisComp,c=n.graphicalItems,f=n.stackGroups,d=n.dataStartIndex,h=n.dataEndIndex,y=t.children,v="".concat(o,"Id"),g=Ft(y,l),b={};return g&&g.length?b=rX(t,{axes:g,graphicalItems:c,axisType:o,axisIdKey:v,stackGroups:f,dataStartIndex:d,dataEndIndex:h}):c&&c.length&&(b=aX(t,{Axis:l,graphicalItems:c,axisType:o,axisIdKey:v,stackGroups:f,dataStartIndex:d,dataEndIndex:h})),b},oX=function(t){var n=Aa(t),r=zr(n,!1,!0);return{tooltipTicks:r,orderedTooltipTicks:ex(r,function(o){return o.coordinate}),tooltipAxis:n,tooltipAxisBandSize:Af(n,r)}},GM=function(t){var n=t.children,r=t.defaultShowTooltip,o=gn(n,Lo),l=0,c=0;return t.data&&t.data.length!==0&&(c=t.data.length-1),o&&o.props&&(o.props.startIndex>=0&&(l=o.props.startIndex),o.props.endIndex>=0&&(c=o.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:l,dataEndIndex:c,activeTooltipIndex:-1,isTooltipActive:!!r}},uX=function(t){return!t||!t.length?!1:t.some(function(n){var r=Br(n&&n.type);return r&&r.indexOf("Bar")>=0})},KM=function(t){return t==="horizontal"?{numericAxisName:"yAxis",cateAxisName:"xAxis"}:t==="vertical"?{numericAxisName:"xAxis",cateAxisName:"yAxis"}:t==="centric"?{numericAxisName:"radiusAxis",cateAxisName:"angleAxis"}:{numericAxisName:"angleAxis",cateAxisName:"radiusAxis"}},lX=function(t,n){var r=t.props,o=t.graphicalItems,l=t.xAxisMap,c=l===void 0?{}:l,f=t.yAxisMap,d=f===void 0?{}:f,h=r.width,y=r.height,v=r.children,g=r.margin||{},b=gn(v,Lo),_=gn(v,Lr),S=Object.keys(d).reduce(function(A,T){var M=d[T],N=M.orientation;return!M.mirror&&!M.hide?ae(ae({},A),{},Oe({},N,A[N]+M.width)):A},{left:g.left||0,right:g.right||0}),x=Object.keys(c).reduce(function(A,T){var M=c[T],N=M.orientation;return!M.mirror&&!M.hide?ae(ae({},A),{},Oe({},N,xn(A,"".concat(N))+M.height)):A},{top:g.top||0,bottom:g.bottom||0}),w=ae(ae({},x),S),E=w.bottom;b&&(w.bottom+=b.props.height||Lo.defaultProps.height),_&&n&&(w=Q6(w,o,r,n));var j=h-w.left-w.right,P=y-w.top-w.bottom;return ae(ae({brushBottom:E},w),{},{width:Math.max(j,0),height:Math.max(P,0)})},cX=function(t,n){if(n==="xAxis")return t[n].width;if(n==="yAxis")return t[n].height},Bd=function(t){var n=t.chartName,r=t.GraphicalChild,o=t.defaultTooltipEventType,l=o===void 0?"axis":o,c=t.validateTooltipEventTypes,f=c===void 0?["axis"]:c,d=t.axisComponents,h=t.legendContent,y=t.formatAxisMap,v=t.defaultProps,g=function(w,E){var j=E.graphicalItems,P=E.stackGroups,A=E.offset,T=E.updateId,M=E.dataStartIndex,N=E.dataEndIndex,k=w.barSize,Y=w.layout,U=w.barGap,q=w.barCategoryGap,X=w.maxBarSize,Q=KM(Y),Z=Q.numericAxisName,$=Q.cateAxisName,H=uX(j),te=[];return j.forEach(function(I,ee){var D=qd(w.data,{graphicalItems:[I],dataStartIndex:M,dataEndIndex:N}),B=I.type.defaultProps!==void 0?ae(ae({},I.type.defaultProps),I.props):I.props,ne=B.dataKey,se=B.maxBarSize,de=B["".concat(Z,"Id")],ge=B["".concat($,"Id")],Ce={},Ue=d.reduce(function(In,hr){var cu=E["".concat(hr.axisType,"Map")],Ut=B["".concat(hr.axisType,"Id")];cu&&cu[Ut]||hr.axisType==="zAxis"||bi();var yc=cu[Ut];return ae(ae({},In),{},Oe(Oe({},hr.axisType,yc),"".concat(hr.axisType,"Ticks"),zr(yc)))},Ce),fe=Ue[$],_e=Ue["".concat($,"Ticks")],Ae=P&&P[de]&&P[de].hasStack&&c8(I,P[de].stackGroups),le=Br(I.type).indexOf("Bar")>=0,nt=Af(fe,_e),Me=[],ct=H&&Z6({barSize:k,stackGroups:P,totalSize:cX(Ue,$)});if(le){var st,Lt,Un=be(se)?X:se,er=(st=(Lt=Af(fe,_e,!0))!==null&&Lt!==void 0?Lt:Un)!==null&&st!==void 0?st:0;Me=W6({barGap:U,barCategoryGap:q,bandSize:er!==nt?er:nt,sizeList:ct[ge],maxBarSize:Un}),er!==nt&&(Me=Me.map(function(In){return ae(ae({},In),{},{position:ae(ae({},In.position),{},{offset:In.position.offset-er/2})})}))}var Zr=I&&I.type&&I.type.getComposedData;Zr&&te.push({props:ae(ae({},Zr(ae(ae({},Ue),{},{displayedData:D,props:w,dataKey:ne,item:I,bandSize:nt,barPosition:Me,offset:A,stackedData:Ae,layout:Y,dataStartIndex:M,dataEndIndex:N}))),{},Oe(Oe(Oe({key:I.key||"item-".concat(ee)},Z,Ue[Z]),$,Ue[$]),"animationId",T)),childIndex:tk(I,w.children),item:I})}),te},b=function(w,E){var j=w.props,P=w.dataStartIndex,A=w.dataEndIndex,T=w.updateId;if(!nw({props:j}))return null;var M=j.children,N=j.layout,k=j.stackOffset,Y=j.data,U=j.reverseStackOrder,q=KM(N),X=q.numericAxisName,Q=q.cateAxisName,Z=Ft(M,r),$=u8(Y,Z,"".concat(X,"Id"),"".concat(Q,"Id"),k,U),H=d.reduce(function(B,ne){var se="".concat(ne.axisType,"Map");return ae(ae({},B),{},Oe({},se,iX(j,ae(ae({},ne),{},{graphicalItems:Z,stackGroups:ne.axisType===X&&$,dataStartIndex:P,dataEndIndex:A}))))},{}),te=lX(ae(ae({},H),{},{props:j,graphicalItems:Z}),E==null?void 0:E.legendBBox);Object.keys(H).forEach(function(B){H[B]=y(j,H[B],te,B.replace("Map",""),n)});var I=H["".concat(Q,"Map")],ee=oX(I),D=g(j,ae(ae({},H),{},{dataStartIndex:P,dataEndIndex:A,updateId:T,graphicalItems:Z,stackGroups:$,offset:te}));return ae(ae({formattedGraphicalItems:D,graphicalItems:Z,offset:te,stackGroups:$},ee),H)},_=(function(x){function w(E){var j,P,A;return IY(this,w),A=KY(this,w,[E]),Oe(A,"eventEmitterSymbol",Symbol("rechartsEventEmitter")),Oe(A,"accessibilityManager",new jY),Oe(A,"handleLegendBBoxUpdate",function(T){if(T){var M=A.state,N=M.dataStartIndex,k=M.dataEndIndex,Y=M.updateId;A.setState(ae({legendBBox:T},b({props:A.props,dataStartIndex:N,dataEndIndex:k,updateId:Y},ae(ae({},A.state),{},{legendBBox:T}))))}}),Oe(A,"handleReceiveSyncEvent",function(T,M,N){if(A.props.syncId===T){if(N===A.eventEmitterSymbol&&typeof A.props.syncMethod!="function")return;A.applySyncEvent(M)}}),Oe(A,"handleBrushChange",function(T){var M=T.startIndex,N=T.endIndex;if(M!==A.state.dataStartIndex||N!==A.state.dataEndIndex){var k=A.state.updateId;A.setState(function(){return ae({dataStartIndex:M,dataEndIndex:N},b({props:A.props,dataStartIndex:M,dataEndIndex:N,updateId:k},A.state))}),A.triggerSyncEvent({dataStartIndex:M,dataEndIndex:N})}}),Oe(A,"handleMouseEnter",function(T){var M=A.getMouseInfo(T);if(M){var N=ae(ae({},M),{},{isTooltipActive:!0});A.setState(N),A.triggerSyncEvent(N);var k=A.props.onMouseEnter;Se(k)&&k(N,T)}}),Oe(A,"triggeredAfterMouseMove",function(T){var M=A.getMouseInfo(T),N=M?ae(ae({},M),{},{isTooltipActive:!0}):{isTooltipActive:!1};A.setState(N),A.triggerSyncEvent(N);var k=A.props.onMouseMove;Se(k)&&k(N,T)}),Oe(A,"handleItemMouseEnter",function(T){A.setState(function(){return{isTooltipActive:!0,activeItem:T,activePayload:T.tooltipPayload,activeCoordinate:T.tooltipPosition||{x:T.cx,y:T.cy}}})}),Oe(A,"handleItemMouseLeave",function(){A.setState(function(){return{isTooltipActive:!1}})}),Oe(A,"handleMouseMove",function(T){T.persist(),A.throttleTriggeredAfterMouseMove(T)}),Oe(A,"handleMouseLeave",function(T){A.throttleTriggeredAfterMouseMove.cancel();var M={isTooltipActive:!1};A.setState(M),A.triggerSyncEvent(M);var N=A.props.onMouseLeave;Se(N)&&N(M,T)}),Oe(A,"handleOuterEvent",function(T){var M=ek(T),N=xn(A.props,"".concat(M));if(M&&Se(N)){var k,Y;/.*touch.*/i.test(M)?Y=A.getMouseInfo(T.changedTouches[0]):Y=A.getMouseInfo(T),N((k=Y)!==null&&k!==void 0?k:{},T)}}),Oe(A,"handleClick",function(T){var M=A.getMouseInfo(T);if(M){var N=ae(ae({},M),{},{isTooltipActive:!0});A.setState(N),A.triggerSyncEvent(N);var k=A.props.onClick;Se(k)&&k(N,T)}}),Oe(A,"handleMouseDown",function(T){var M=A.props.onMouseDown;if(Se(M)){var N=A.getMouseInfo(T);M(N,T)}}),Oe(A,"handleMouseUp",function(T){var M=A.props.onMouseUp;if(Se(M)){var N=A.getMouseInfo(T);M(N,T)}}),Oe(A,"handleTouchMove",function(T){T.changedTouches!=null&&T.changedTouches.length>0&&A.throttleTriggeredAfterMouseMove(T.changedTouches[0])}),Oe(A,"handleTouchStart",function(T){T.changedTouches!=null&&T.changedTouches.length>0&&A.handleMouseDown(T.changedTouches[0])}),Oe(A,"handleTouchEnd",function(T){T.changedTouches!=null&&T.changedTouches.length>0&&A.handleMouseUp(T.changedTouches[0])}),Oe(A,"handleDoubleClick",function(T){var M=A.props.onDoubleClick;if(Se(M)){var N=A.getMouseInfo(T);M(N,T)}}),Oe(A,"handleContextMenu",function(T){var M=A.props.onContextMenu;if(Se(M)){var N=A.getMouseInfo(T);M(N,T)}}),Oe(A,"triggerSyncEvent",function(T){A.props.syncId!==void 0&&ab.emit(ib,A.props.syncId,T,A.eventEmitterSymbol)}),Oe(A,"applySyncEvent",function(T){var M=A.props,N=M.layout,k=M.syncMethod,Y=A.state.updateId,U=T.dataStartIndex,q=T.dataEndIndex;if(T.dataStartIndex!==void 0||T.dataEndIndex!==void 0)A.setState(ae({dataStartIndex:U,dataEndIndex:q},b({props:A.props,dataStartIndex:U,dataEndIndex:q,updateId:Y},A.state)));else if(T.activeTooltipIndex!==void 0){var X=T.chartX,Q=T.chartY,Z=T.activeTooltipIndex,$=A.state,H=$.offset,te=$.tooltipTicks;if(!H)return;if(typeof k=="function")Z=k(te,T);else if(k==="value"){Z=-1;for(var I=0;I<te.length;I++)if(te[I].value===T.activeLabel){Z=I;break}}var ee=ae(ae({},H),{},{x:H.left,y:H.top}),D=Math.min(X,ee.x+ee.width),B=Math.min(Q,ee.y+ee.height),ne=te[Z]&&te[Z].value,se=N0(A.state,A.props.data,Z),de=te[Z]?{x:N==="horizontal"?te[Z].coordinate:D,y:N==="horizontal"?B:te[Z].coordinate}:SN;A.setState(ae(ae({},T),{},{activeLabel:ne,activeCoordinate:de,activePayload:se,activeTooltipIndex:Z}))}else A.setState(T)}),Oe(A,"renderCursor",function(T){var M,N=A.state,k=N.isTooltipActive,Y=N.activeCoordinate,U=N.activePayload,q=N.offset,X=N.activeTooltipIndex,Q=N.tooltipAxisBandSize,Z=A.getTooltipEventType(),$=(M=T.props.active)!==null&&M!==void 0?M:k,H=A.props.layout,te=T.key||"_recharts-cursor";return R.createElement($Y,{key:te,activeCoordinate:Y,activePayload:U,activeTooltipIndex:X,chartName:n,element:T,isActive:$,layout:H,offset:q,tooltipAxisBandSize:Q,tooltipEventType:Z})}),Oe(A,"renderPolarAxis",function(T,M,N){var k=xn(T,"type.axisType"),Y=xn(A.state,"".concat(k,"Map")),U=T.type.defaultProps,q=U!==void 0?ae(ae({},U),T.props):T.props,X=Y&&Y[q["".concat(k,"Id")]];return ie.cloneElement(T,ae(ae({},X),{},{className:Te(k,X.className),key:T.key||"".concat(M,"-").concat(N),ticks:zr(X,!0)}))}),Oe(A,"renderPolarGrid",function(T){var M=T.props,N=M.radialLines,k=M.polarAngles,Y=M.polarRadius,U=A.state,q=U.radiusAxisMap,X=U.angleAxisMap,Q=Aa(q),Z=Aa(X),$=Z.cx,H=Z.cy,te=Z.innerRadius,I=Z.outerRadius;return ie.cloneElement(T,{polarAngles:Array.isArray(k)?k:zr(Z,!0).map(function(ee){return ee.coordinate}),polarRadius:Array.isArray(Y)?Y:zr(Q,!0).map(function(ee){return ee.coordinate}),cx:$,cy:H,innerRadius:te,outerRadius:I,key:T.key||"polar-grid",radialLines:N})}),Oe(A,"renderLegend",function(){var T=A.state.formattedGraphicalItems,M=A.props,N=M.children,k=M.width,Y=M.height,U=A.props.margin||{},q=k-(U.left||0)-(U.right||0),X=ZC({children:N,formattedGraphicalItems:T,legendWidth:q,legendContent:h});if(!X)return null;var Q=X.item,Z=UM(X,kY);return ie.cloneElement(Q,ae(ae({},Z),{},{chartWidth:k,chartHeight:Y,margin:U,onBBoxUpdate:A.handleLegendBBoxUpdate}))}),Oe(A,"renderTooltip",function(){var T,M=A.props,N=M.children,k=M.accessibilityLayer,Y=gn(N,rn);if(!Y)return null;var U=A.state,q=U.isTooltipActive,X=U.activeCoordinate,Q=U.activePayload,Z=U.activeLabel,$=U.offset,H=(T=Y.props.active)!==null&&T!==void 0?T:q;return ie.cloneElement(Y,{viewBox:ae(ae({},$),{},{x:$.left,y:$.top}),active:H,label:Z,payload:H?Q:[],coordinate:X,accessibilityLayer:k})}),Oe(A,"renderBrush",function(T){var M=A.props,N=M.margin,k=M.data,Y=A.state,U=Y.offset,q=Y.dataStartIndex,X=Y.dataEndIndex,Q=Y.updateId;return ie.cloneElement(T,{key:T.key||"_recharts-brush",onChange:Is(A.handleBrushChange,T.props.onChange),data:k,x:ce(T.props.x)?T.props.x:U.left,y:ce(T.props.y)?T.props.y:U.top+U.height+U.brushBottom-(N.bottom||0),width:ce(T.props.width)?T.props.width:U.width,startIndex:q,endIndex:X,updateId:"brush-".concat(Q)})}),Oe(A,"renderReferenceElement",function(T,M,N){if(!T)return null;var k=A,Y=k.clipPathId,U=A.state,q=U.xAxisMap,X=U.yAxisMap,Q=U.offset,Z=T.type.defaultProps||{},$=T.props,H=$.xAxisId,te=H===void 0?Z.xAxisId:H,I=$.yAxisId,ee=I===void 0?Z.yAxisId:I;return ie.cloneElement(T,{key:T.key||"".concat(M,"-").concat(N),xAxis:q[te],yAxis:X[ee],viewBox:{x:Q.left,y:Q.top,width:Q.width,height:Q.height},clipPathId:Y})}),Oe(A,"renderActivePoints",function(T){var M=T.item,N=T.activePoint,k=T.basePoint,Y=T.childIndex,U=T.isRange,q=[],X=M.props.key,Q=M.item.type.defaultProps!==void 0?ae(ae({},M.item.type.defaultProps),M.item.props):M.item.props,Z=Q.activeDot,$=Q.dataKey,H=ae(ae({index:Y,dataKey:$,cx:N.x,cy:N.y,r:4,fill:Tx(M.item),strokeWidth:2,stroke:"#fff",payload:N.payload,value:N.value},ye(Z,!1)),Qs(Z));return q.push(w.renderActiveDot(Z,H,"".concat(X,"-activePoint-").concat(Y))),k?q.push(w.renderActiveDot(Z,ae(ae({},H),{},{cx:k.x,cy:k.y}),"".concat(X,"-basePoint-").concat(Y))):U&&q.push(null),q}),Oe(A,"renderGraphicChild",function(T,M,N){var k=A.filterFormatItem(T,M,N);if(!k)return null;var Y=A.getTooltipEventType(),U=A.state,q=U.isTooltipActive,X=U.tooltipAxis,Q=U.activeTooltipIndex,Z=U.activeLabel,$=A.props.children,H=gn($,rn),te=k.props,I=te.points,ee=te.isRange,D=te.baseLine,B=k.item.type.defaultProps!==void 0?ae(ae({},k.item.type.defaultProps),k.item.props):k.item.props,ne=B.activeDot,se=B.hide,de=B.activeBar,ge=B.activeShape,Ce=!!(!se&&q&&H&&(ne||de||ge)),Ue={};Y!=="axis"&&H&&H.props.trigger==="click"?Ue={onClick:Is(A.handleItemMouseEnter,T.props.onClick)}:Y!=="axis"&&(Ue={onMouseLeave:Is(A.handleItemMouseLeave,T.props.onMouseLeave),onMouseEnter:Is(A.handleItemMouseEnter,T.props.onMouseEnter)});var fe=ie.cloneElement(T,ae(ae({},k.props),Ue));function _e(hr){return typeof X.dataKey=="function"?X.dataKey(hr.payload):null}if(Ce)if(Q>=0){var Ae,le;if(X.dataKey&&!X.allowDuplicatedCategory){var nt=typeof X.dataKey=="function"?_e:"payload.".concat(X.dataKey.toString());Ae=Ws(I,nt,Z),le=ee&&D&&Ws(D,nt,Z)}else Ae=I==null?void 0:I[Q],le=ee&&D&&D[Q];if(ge||de){var Me=T.props.activeIndex!==void 0?T.props.activeIndex:Q;return[ie.cloneElement(T,ae(ae(ae({},k.props),Ue),{},{activeIndex:Me})),null,null]}if(!be(Ae))return[fe].concat(Jo(A.renderActivePoints({item:k,activePoint:Ae,basePoint:le,childIndex:Q,isRange:ee})))}else{var ct,st=(ct=A.getItemByXY(A.state.activeCoordinate))!==null&&ct!==void 0?ct:{graphicalItem:fe},Lt=st.graphicalItem,Un=Lt.item,er=Un===void 0?T:Un,Zr=Lt.childIndex,In=ae(ae(ae({},k.props),Ue),{},{activeIndex:Zr});return[ie.cloneElement(er,In),null,null]}return ee?[fe,null,null]:[fe,null]}),Oe(A,"renderCustomized",function(T,M,N){return ie.cloneElement(T,ae(ae({key:"recharts-customized-".concat(N)},A.props),A.state))}),Oe(A,"renderMap",{CartesianGrid:{handler:Xs,once:!0},ReferenceArea:{handler:A.renderReferenceElement},ReferenceLine:{handler:Xs},ReferenceDot:{handler:A.renderReferenceElement},XAxis:{handler:Xs},YAxis:{handler:Xs},Brush:{handler:A.renderBrush,once:!0},Bar:{handler:A.renderGraphicChild},Line:{handler:A.renderGraphicChild},Area:{handler:A.renderGraphicChild},Radar:{handler:A.renderGraphicChild},RadialBar:{handler:A.renderGraphicChild},Scatter:{handler:A.renderGraphicChild},Pie:{handler:A.renderGraphicChild},Funnel:{handler:A.renderGraphicChild},Tooltip:{handler:A.renderCursor,once:!0},PolarGrid:{handler:A.renderPolarGrid,once:!0},PolarAngleAxis:{handler:A.renderPolarAxis},PolarRadiusAxis:{handler:A.renderPolarAxis},Customized:{handler:A.renderCustomized}}),A.clipPathId="".concat((j=E.id)!==null&&j!==void 0?j:Na("recharts"),"-clip"),A.throttleTriggeredAfterMouseMove=ZP(A.triggeredAfterMouseMove,(P=E.throttleDelay)!==null&&P!==void 0?P:1e3/60),A.state={},A}return VY(w,x),GY(w,[{key:"componentDidMount",value:function(){var j,P;this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:(j=this.props.margin.left)!==null&&j!==void 0?j:0,top:(P=this.props.margin.top)!==null&&P!==void 0?P:0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout}),this.displayDefaultTooltip()}},{key:"displayDefaultTooltip",value:function(){var j=this.props,P=j.children,A=j.data,T=j.height,M=j.layout,N=gn(P,rn);if(N){var k=N.props.defaultIndex;if(!(typeof k!="number"||k<0||k>this.state.tooltipTicks.length-1)){var Y=this.state.tooltipTicks[k]&&this.state.tooltipTicks[k].value,U=N0(this.state,A,k,Y),q=this.state.tooltipTicks[k].coordinate,X=(this.state.offset.top+T)/2,Q=M==="horizontal",Z=Q?{x:q,y:X}:{y:q,x:X},$=this.state.formattedGraphicalItems.find(function(te){var I=te.item;return I.type.name==="Scatter"});$&&(Z=ae(ae({},Z),$.props.points[k].tooltipPosition),U=$.props.points[k].tooltipPayload);var H={activeTooltipIndex:k,isTooltipActive:!0,activeLabel:Y,activePayload:U,activeCoordinate:Z};this.setState(H),this.renderCursor(N),this.accessibilityManager.setIndex(k)}}}},{key:"getSnapshotBeforeUpdate",value:function(j,P){if(!this.props.accessibilityLayer)return null;if(this.state.tooltipTicks!==P.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==j.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==j.margin){var A,T;this.accessibilityManager.setDetails({offset:{left:(A=this.props.margin.left)!==null&&A!==void 0?A:0,top:(T=this.props.margin.top)!==null&&T!==void 0?T:0}})}return null}},{key:"componentDidUpdate",value:function(j){db([gn(j.children,rn)],[gn(this.props.children,rn)])||this.displayDefaultTooltip()}},{key:"componentWillUnmount",value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:"getTooltipEventType",value:function(){var j=gn(this.props.children,rn);if(j&&typeof j.props.shared=="boolean"){var P=j.props.shared?"axis":"item";return f.indexOf(P)>=0?P:l}return l}},{key:"getMouseInfo",value:function(j){if(!this.container)return null;var P=this.container,A=P.getBoundingClientRect(),T=UB(A),M={chartX:Math.round(j.pageX-T.left),chartY:Math.round(j.pageY-T.top)},N=A.width/P.offsetWidth||1,k=this.inRange(M.chartX,M.chartY,N);if(!k)return null;var Y=this.state,U=Y.xAxisMap,q=Y.yAxisMap,X=this.getTooltipEventType(),Q=HM(this.state,this.props.data,this.props.layout,k);if(X!=="axis"&&U&&q){var Z=Aa(U).scale,$=Aa(q).scale,H=Z&&Z.invert?Z.invert(M.chartX):null,te=$&&$.invert?$.invert(M.chartY):null;return ae(ae({},M),{},{xValue:H,yValue:te},Q)}return Q?ae(ae({},M),Q):null}},{key:"inRange",value:function(j,P){var A=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,T=this.props.layout,M=j/A,N=P/A;if(T==="horizontal"||T==="vertical"){var k=this.state.offset,Y=M>=k.left&&M<=k.left+k.width&&N>=k.top&&N<=k.top+k.height;return Y?{x:M,y:N}:null}var U=this.state,q=U.angleAxisMap,X=U.radiusAxisMap;if(q&&X){var Q=Aa(q);return Gj({x:M,y:N},Q)}return null}},{key:"parseEventsOfWrapper",value:function(){var j=this.props.children,P=this.getTooltipEventType(),A=gn(j,rn),T={};A&&P==="axis"&&(A.props.trigger==="click"?T={onClick:this.handleClick}:T={onMouseEnter:this.handleMouseEnter,onDoubleClick:this.handleDoubleClick,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd,onContextMenu:this.handleContextMenu});var M=Qs(this.props,this.handleOuterEvent);return ae(ae({},M),T)}},{key:"addListener",value:function(){ab.on(ib,this.handleReceiveSyncEvent)}},{key:"removeListener",value:function(){ab.removeListener(ib,this.handleReceiveSyncEvent)}},{key:"filterFormatItem",value:function(j,P,A){for(var T=this.state.formattedGraphicalItems,M=0,N=T.length;M<N;M++){var k=T[M];if(k.item===j||k.props.key===j.key||P===Br(k.item.type)&&A===k.childIndex)return k}return null}},{key:"renderClipPath",value:function(){var j=this.clipPathId,P=this.state.offset,A=P.left,T=P.top,M=P.height,N=P.width;return R.createElement("defs",null,R.createElement("clipPath",{id:j},R.createElement("rect",{x:A,y:T,height:M,width:N})))}},{key:"getXScales",value:function(){var j=this.state.xAxisMap;return j?Object.entries(j).reduce(function(P,A){var T=LM(A,2),M=T[0],N=T[1];return ae(ae({},P),{},Oe({},M,N.scale))},{}):null}},{key:"getYScales",value:function(){var j=this.state.yAxisMap;return j?Object.entries(j).reduce(function(P,A){var T=LM(A,2),M=T[0],N=T[1];return ae(ae({},P),{},Oe({},M,N.scale))},{}):null}},{key:"getXScaleByAxisId",value:function(j){var P;return(P=this.state.xAxisMap)===null||P===void 0||(P=P[j])===null||P===void 0?void 0:P.scale}},{key:"getYScaleByAxisId",value:function(j){var P;return(P=this.state.yAxisMap)===null||P===void 0||(P=P[j])===null||P===void 0?void 0:P.scale}},{key:"getItemByXY",value:function(j){var P=this.state,A=P.formattedGraphicalItems,T=P.activeItem;if(A&&A.length)for(var M=0,N=A.length;M<N;M++){var k=A[M],Y=k.props,U=k.item,q=U.type.defaultProps!==void 0?ae(ae({},U.type.defaultProps),U.props):U.props,X=Br(U.type);if(X==="Bar"){var Q=(Y.data||[]).find(function(te){return lH(j,te)});if(Q)return{graphicalItem:k,payload:Q}}else if(X==="RadialBar"){var Z=(Y.data||[]).find(function(te){return Gj(j,te)});if(Z)return{graphicalItem:k,payload:Z}}else if(Md(k,T)||Pd(k,T)||nc(k,T)){var $=C9({graphicalItem:k,activeTooltipItem:T,itemData:q.data}),H=q.activeIndex===void 0?$:q.activeIndex;return{graphicalItem:ae(ae({},k),{},{childIndex:H}),payload:nc(k,T)?q.data[$]:k.props.data[$]}}}return null}},{key:"render",value:function(){var j=this;if(!nw(this))return null;var P=this.props,A=P.children,T=P.className,M=P.width,N=P.height,k=P.style,Y=P.compact,U=P.title,q=P.desc,X=UM(P,zY),Q=ye(X,!1);if(Y)return R.createElement(mM,{state:this.state,width:this.props.width,height:this.props.height,clipPathId:this.clipPathId},R.createElement(pb,xo({},Q,{width:M,height:N,title:U,desc:q}),this.renderClipPath(),aw(A,this.renderMap)));if(this.props.accessibilityLayer){var Z,$;Q.tabIndex=(Z=this.props.tabIndex)!==null&&Z!==void 0?Z:0,Q.role=($=this.props.role)!==null&&$!==void 0?$:"application",Q.onKeyDown=function(te){j.accessibilityManager.keyboardEvent(te)},Q.onFocus=function(){j.accessibilityManager.focus()}}var H=this.parseEventsOfWrapper();return R.createElement(mM,{state:this.state,width:this.props.width,height:this.props.height,clipPathId:this.clipPathId},R.createElement("div",xo({className:Te("recharts-wrapper",T),style:ae({position:"relative",cursor:"default",width:M,height:N},k)},H,{ref:function(I){j.container=I}}),R.createElement(pb,xo({},Q,{width:M,height:N,title:U,desc:q,style:eX}),this.renderClipPath(),aw(A,this.renderMap)),this.renderLegend(),this.renderTooltip()))}}])})(ie.Component);Oe(_,"displayName",n),Oe(_,"defaultProps",ae({layout:"horizontal",stackOffset:"none",barCategoryGap:"10%",barGap:4,margin:{top:5,right:5,bottom:5,left:5},reverseStackOrder:!1,syncMethod:"index"},v)),Oe(_,"getDerivedStateFromProps",function(x,w){var E=x.dataKey,j=x.data,P=x.children,A=x.width,T=x.height,M=x.layout,N=x.stackOffset,k=x.margin,Y=w.dataStartIndex,U=w.dataEndIndex;if(w.updateId===void 0){var q=GM(x);return ae(ae(ae({},q),{},{updateId:0},b(ae(ae({props:x},q),{},{updateId:0}),w)),{},{prevDataKey:E,prevData:j,prevWidth:A,prevHeight:T,prevLayout:M,prevStackOffset:N,prevMargin:k,prevChildren:P})}if(E!==w.prevDataKey||j!==w.prevData||A!==w.prevWidth||T!==w.prevHeight||M!==w.prevLayout||N!==w.prevStackOffset||!So(k,w.prevMargin)){var X=GM(x),Q={chartX:w.chartX,chartY:w.chartY,isTooltipActive:w.isTooltipActive},Z=ae(ae({},HM(w,j,M)),{},{updateId:w.updateId+1}),$=ae(ae(ae({},X),Q),Z);return ae(ae(ae({},$),b(ae({props:x},$),w)),{},{prevDataKey:E,prevData:j,prevWidth:A,prevHeight:T,prevLayout:M,prevStackOffset:N,prevMargin:k,prevChildren:P})}if(!db(P,w.prevChildren)){var H,te,I,ee,D=gn(P,Lo),B=D&&(H=(te=D.props)===null||te===void 0?void 0:te.startIndex)!==null&&H!==void 0?H:Y,ne=D&&(I=(ee=D.props)===null||ee===void 0?void 0:ee.endIndex)!==null&&I!==void 0?I:U,se=B!==Y||ne!==U,de=!be(j),ge=de&&!se?w.updateId:w.updateId+1;return ae(ae({updateId:ge},b(ae(ae({props:x},w),{},{updateId:ge,dataStartIndex:B,dataEndIndex:ne}),w)),{},{prevChildren:P,dataStartIndex:B,dataEndIndex:ne})}return null}),Oe(_,"renderActiveDot",function(x,w,E){var j;return ie.isValidElement(x)?j=ie.cloneElement(x,w):Se(x)?j=x(w):j=R.createElement(vc,w),R.createElement(je,{className:"recharts-active-dot",key:E},j)});var S=ie.forwardRef(function(w,E){return R.createElement(_,xo({},w,{ref:E}))});return S.displayName=_.displayName,S},sX=Bd({chartName:"LineChart",GraphicalChild:Si,axisComponents:[{axisType:"xAxis",AxisComp:qr},{axisType:"yAxis",AxisComp:ir}],formatAxisMap:jx}),YM=Bd({chartName:"BarChart",GraphicalChild:Zn,defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"xAxis",AxisComp:qr},{axisType:"yAxis",AxisComp:ir}],formatAxisMap:jx}),fX=Bd({chartName:"PieChart",GraphicalChild:Fr,validateTooltipEventTypes:["item"],defaultTooltipEventType:"item",legendContent:"children",axisComponents:[{axisType:"angleAxis",AxisComp:jd},{axisType:"radiusAxis",AxisComp:Td}],formatAxisMap:b8,defaultProps:{layout:"centric",startAngle:0,endAngle:360,cx:"50%",cy:"50%",innerRadius:0,outerRadius:"80%"}}),dX=Bd({chartName:"ComposedChart",GraphicalChild:[Si,za,Zn,zd],axisComponents:[{axisType:"xAxis",AxisComp:qr},{axisType:"yAxis",AxisComp:ir},{axisType:"zAxis",AxisComp:kd}],formatAxisMap:jx});const Ld="/api";async function hX(){const e=await fetch(`${Ld}/agents`);if(!e.ok)throw new Error(`Failed to fetch agents: ${e.status} ${e.statusText}`);return e.json()}function qx(e,t){const n=[];if(e!=="claude"&&n.push(`agent=${e}`),t){const r=Object.keys(t);for(let o=0;o<r.length;o++){const l=t[r[o]];l&&n.push(encodeURIComponent(r[o])+"="+encodeURIComponent(l))}}return n.length>0?"?"+n.join("&"):""}async function pX(e="claude"){const t=await fetch(`${Ld}/daily${qx(e)}`);if(!t.ok)throw new Error(`Failed to fetch daily data: ${t.status} ${t.statusText}`);return t.json()}async function vX(e="claude"){const t=await fetch(`${Ld}/projects${qx(e)}`);if(!t.ok)throw new Error(`Failed to fetch projects data: ${t.status} ${t.statusText}`);return t.json()}async function yX(e="claude",t=""){const n=await fetch(`${Ld}/blocks${qx(e,t?{project:t}:void 0)}`);if(!n.ok)throw new Error(`Failed to fetch blocks data: ${n.status} ${n.statusText}`);return n.json()}function ub(e){const[t,n]=ie.useState(null),[r,o]=ie.useState(!0),[l,c]=ie.useState(null),f=ie.useCallback(async()=>{o(!0),c(null);try{const d=await e();n(d)}catch(d){c(d instanceof Error?d.message:"An error occurred")}finally{o(!1)}},[e]);return ie.useEffect(()=>{f()},[f]),{data:t,loading:r,error:l,refetch:f}}function Vs(e,t){const[n,r]=ie.useState(()=>{try{const o=window.localStorage.getItem(e);if(o!==null)return JSON.parse(o)}catch(o){console.warn(`Error reading localStorage key "${e}":`,o)}return t});return ie.useEffect(()=>{try{window.localStorage.setItem(e,JSON.stringify(n))}catch(o){console.warn(`Error setting localStorage key "${e}":`,o)}},[e,n]),[n,r]}function qt(e){return e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(0)+"K":e.toLocaleString("en-US",{maximumFractionDigits:0})}function Nr(e){return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:2,maximumFractionDigits:2}).format(e)}function Fs(e){return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric"})}function lb(e){return e.toFixed(1)+"%"}function _N(e,t){if(!e)return"";const n=l=>l.includes("/")?l.split("/").filter(Boolean):l.split("-").filter(Boolean),r=n(e);if(r.length===0)return e;const o=r[r.length-1];return t&&t.length>0&&t.some(c=>{if(c===e)return!1;const f=n(c);return f.length>0&&f[f.length-1]===o})&&r.length>=2?`${r[r.length-2]}/${o}`:o}function mX(e){return e/1e6*3*(1-.1)}const XM={"claude-opus-4-20250514":"Opus 4","claude-sonnet-4-20250514":"Sonnet 4","claude-haiku-3-5-20241022":"Haiku 3.5","claude-opus-3-20250214":"Opus 3","claude-sonnet-3-20250214":"Sonnet 3","claude-sonnet-3-5-20250214":"Sonnet 3.5","claude-haiku-3-20250214":"Haiku 3","claude-opus-4":"Opus 4","claude-sonnet-4":"Sonnet 4","claude-haiku-4":"Haiku 4"};function cb(e){if(XM[e])return XM[e];const t=e.match(/^claude-(opus|sonnet|haiku)-?[\d.]*-?/);if(t){const n=t[1],r=e.match(/(\d+[\d.]*)/);return r?`${n.charAt(0).toUpperCase()+n.slice(1)} ${r[1]}`:n.charAt(0).toUpperCase()+n.slice(1)}return e}const Rn=["#4f46e5","#10b981","#f59e0b","#ec4899","#0ea5e9","#8b5cf6","#ef4444","#14b8a6"],AN=[{key:"7d",label:"7D",days:7},{key:"30d",label:"30D",days:30},{key:"60d",label:"60D",days:60},{key:"all",label:"ALL",days:0}];function vo({label:e,value:t,sub:n,insight:r,accent:o}){return K.jsxs("div",{className:"flex flex-col gap-1 p-5 rounded-2xl bg-white shadow-[0_1px_3px_rgba(120,113,108,0.06)] transition-shadow duration-200 hover:shadow-[0_4px_12px_rgba(120,113,108,0.09)]",children:[K.jsx("span",{className:"text-[12px] font-medium text-stone-400",children:e}),K.jsx("span",{className:`text-3xl font-extrabold tracking-tighter font-mono mt-1 ${o?"text-indigo-600":"text-stone-900"}`,children:t}),n&&K.jsx("span",{className:"text-xs font-medium text-stone-400 mt-0.5",children:n}),r&&K.jsx("div",{className:"mt-2.5 pt-2.5 border-t border-stone-100 text-[12px] font-medium text-stone-500 leading-relaxed",children:r})]})}function ii({title:e,subtitle:t,children:n,className:r=""}){return K.jsxs("div",{className:`flex flex-col rounded-2xl bg-white p-5 shadow-[0_1px_3px_rgba(120,113,108,0.06)] ${r}`,children:[K.jsxs("div",{className:"mb-5",children:[K.jsx("h3",{className:"text-[15px] font-semibold text-stone-900 tracking-tight",children:e}),t&&K.jsx("p",{className:"text-[13px] font-medium text-stone-400 mt-1",children:t})]}),K.jsx("div",{className:"flex-1 min-h-0",children:n})]})}function pl({active:e,payload:t,label:n,fmt:r=qt}){return!e||!(t!=null&&t.length)?null:K.jsxs("div",{className:"bg-white rounded-xl px-3.5 py-3 shadow-[0_8px_30px_rgba(120,113,108,0.12)] text-[11px] border border-stone-200/40",children:[n&&K.jsx("div",{className:"text-stone-400 mb-1.5 font-medium",children:n}),t.map((o,l)=>K.jsxs("div",{className:"flex items-center justify-between gap-5",children:[K.jsxs("span",{className:"flex items-center gap-1.5",children:[K.jsx("span",{className:"w-1.5 h-1.5 rounded-full",style:{backgroundColor:o.color}}),o.name]}),K.jsx("span",{className:"font-mono text-stone-700",children:r(o.value)})]},l))]})}function VM({options:e,value:t,onChange:n}){return K.jsx("div",{className:"flex items-center gap-0.5 p-0.5 bg-stone-100 rounded-lg",children:e.map(r=>K.jsx("button",{onClick:()=>n(r.key),className:`px-3 py-1.5 rounded-md text-[11px] font-semibold tracking-wide transition-all duration-200 ${t===r.key?"bg-stone-800 text-white shadow-sm":"text-stone-500 hover:text-stone-800 hover:bg-stone-50"}`,children:r.label},r.key))})}function gX({projects:e,value:t,onChange:n}){return K.jsxs("select",{value:t,onChange:r=>n(r.target.value),className:"bg-white border border-stone-200 rounded-lg px-3 py-1.5 text-[12px] font-semibold text-stone-800 outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 max-w-[220px]",children:[K.jsx("option",{value:"",children:"All Projects"}),e.map(r=>K.jsx("option",{value:r,children:_N(r,e)},r))]})}function td(e,t){if(t==="all")return e;const n=AN.find(l=>l.key===t),r=n?n.days:30,o=new Date;return o.setDate(o.getDate()-r),e.filter(l=>{const c=l.date||l.startTime||"";return new Date(c)>=o})}function bX(e,t,n){if(!t){const r={};for(const o of Object.values(e))for(const l of td(o,n))if(!r[l.date])r[l.date]={...l,modelsUsed:[...l.modelsUsed],modelBreakdowns:l.modelBreakdowns.map(c=>({...c}))};else{const c=r[l.date];c.inputTokens+=l.inputTokens,c.outputTokens+=l.outputTokens,c.cacheCreationTokens+=l.cacheCreationTokens,c.cacheReadTokens+=l.cacheReadTokens,c.totalTokens+=l.totalTokens,c.totalCost+=l.totalCost;for(const f of l.modelBreakdowns){const d=c.modelBreakdowns.find(h=>h.modelName===f.modelName);d?(d.inputTokens+=f.inputTokens,d.outputTokens+=f.outputTokens,d.cacheCreationTokens+=f.cacheCreationTokens,d.cacheReadTokens+=f.cacheReadTokens,d.cost+=f.cost):c.modelBreakdowns.push({...f})}}return Object.values(r).sort((o,l)=>o.date.localeCompare(l.date))}return td(e[t]||[],n)}function xX(){const[e,t]=ie.useState(null),[n,r]=ie.useState(!0),[o,l]=Vs("dashboard_agent","claude"),[c,f]=Vs("dashboard_timeRange","30d"),[d,h]=Vs("dashboard_project","");ie.useEffect(()=>{hX().then(I=>{t(I),I.available.length>0&&!I.available.includes(o)&&l(I.default)}).catch(()=>{}).finally(()=>r(!1))},[]);const y=((e==null?void 0:e.available.length)??0)>1,v=ub(ie.useCallback(()=>pX(o),[o])),g=ub(ie.useCallback(()=>vX(o),[o])),b=ub(ie.useCallback(()=>yX(o,d),[o,d])),[_,S]=Vs("dashboard_metric","tokens"),x=I=>{l(I),h("")},w=v.loading||g.loading||b.loading,E=v.error||g.error||b.error,j=_==="tokens",P=j?"tokens":"cost",A=ie.useMemo(()=>{var I;return Object.keys(((I=g.data)==null?void 0:I.projects)||{}).sort()},[g.data]),T=ie.useMemo(()=>g.data?bX(g.data.projects,d,c):[],[g.data,d,c]),M=ie.useMemo(()=>T.reduce((I,ee)=>({inputTokens:I.inputTokens+ee.inputTokens,outputTokens:I.outputTokens+ee.outputTokens,cacheCreationTokens:I.cacheCreationTokens+ee.cacheCreationTokens,cacheReadTokens:I.cacheReadTokens+ee.cacheReadTokens,totalTokens:I.totalTokens+ee.totalTokens,totalCost:I.totalCost+ee.totalCost}),{inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,totalTokens:0,totalCost:0}),[T]),N=ie.useMemo(()=>T.filter(I=>I.totalTokens>0).length,[T]),k=ie.useMemo(()=>{if(!T.length)return{date:"-",tokens:0};const I=T.reduce((ee,D)=>D.totalTokens>ee.totalTokens?D:ee,T[0]);return{date:I.date,tokens:I.totalTokens}},[T]),Y=M.inputTokens>0?M.cacheReadTokens/(M.cacheReadTokens+M.inputTokens)*100:0,U=M.inputTokens>0?M.outputTokens/M.inputTokens*100:0,q=ie.useMemo(()=>({tokensSaved:M.cacheReadTokens,costSaved:mX(M.cacheReadTokens),hitRate:Y}),[M.cacheReadTokens,Y]),X=ie.useMemo(()=>{const I={};for(const ee of T)for(const D of ee.modelBreakdowns){const B=cb(D.modelName);I[B]||(I[B]={tokens:0,cost:0,input:0,output:0,cacheRead:0}),I[B].tokens+=D.inputTokens+D.outputTokens,I[B].cost+=D.cost,I[B].input+=D.inputTokens,I[B].output+=D.outputTokens,I[B].cacheRead+=D.cacheReadTokens}return Object.entries(I).map(([ee,D])=>({name:ee,...D})).sort((ee,D)=>D.tokens-ee.tokens)},[T]),Q=ie.useMemo(()=>T.map(I=>{const ee={date:Fs(I.date)};for(const D of I.modelBreakdowns){const B=cb(D.modelName);ee[B]=(ee[B]||0)+(j?D.inputTokens+D.outputTokens:D.cost)}return ee}),[T,j]),Z=ie.useMemo(()=>g.data?Object.entries(g.data.projects).map(([I,ee])=>{const D=td(ee,c);return{name:_N(I,A),full:I,tokens:D.reduce((B,ne)=>B+ne.totalTokens,0),cost:D.reduce((B,ne)=>B+ne.totalCost,0)}}).filter(I=>I.tokens>0).sort((I,ee)=>ee.tokens-I.tokens):[],[g.data,c]),$=ie.useMemo(()=>T.map(I=>({date:Fs(I.date),cacheRead:I.cacheReadTokens,input:I.inputTokens,hitRate:I.inputTokens>0?I.cacheReadTokens/(I.cacheReadTokens+I.inputTokens)*100:0})),[T]),H=ie.useMemo(()=>{if(!b.data)return null;const I=td(b.data.blocks,c),ee=Array(7).fill(0).map(()=>Array(24).fill(0));let D=0;for(const B of I){if(B.isGap)continue;const ne=new Date(B.startTime),se=ne.getDay(),de=ne.getHours(),ge=j?B.totalTokens:B.costUSD;ee[se][de]+=ge,ee[se][de]>D&&(D=ee[se][de])}return{grid:ee,maxVal:D}},[b.data,c,j]),te=()=>K.jsxs("div",{className:"flex items-center gap-1 p-1 bg-stone-200/50 rounded-xl w-fit shadow-inner border border-stone-200/50",children:[K.jsxs("button",{onClick:()=>x("claude"),className:`flex items-center gap-2 px-5 py-2.5 rounded-lg text-[13px] font-bold tracking-wide transition-all duration-200 ${o==="claude"?"bg-white text-indigo-600 shadow-[0_1px_3px_rgba(0,0,0,0.1)] ring-1 ring-stone-900/5":"text-stone-500 hover:text-stone-800 hover:bg-stone-200/50"}`,children:[K.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:K.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M13 10V3L4 14h7v7l9-11h-7z"})}),"Claude Code"]}),K.jsxs("button",{onClick:()=>x("codex"),className:`flex items-center gap-2 px-5 py-2.5 rounded-lg text-[13px] font-bold tracking-wide transition-all duration-200 ${o==="codex"?"bg-white text-emerald-600 shadow-[0_1px_3px_rgba(0,0,0,0.1)] ring-1 ring-stone-900/5":"text-stone-500 hover:text-stone-800 hover:bg-stone-200/50"}`,children:[K.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:K.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"})}),"Codex"]}),K.jsxs("button",{onClick:()=>x("openclaw"),className:`flex items-center gap-2 px-5 py-2.5 rounded-lg text-[13px] font-bold tracking-wide transition-all duration-200 ${o==="openclaw"?"bg-white text-orange-600 shadow-[0_1px_3px_rgba(0,0,0,0.1)] ring-1 ring-stone-900/5":"text-stone-500 hover:text-stone-800 hover:bg-stone-200/50"}`,children:[K.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:K.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4"})}),"OpenClaw"]})]});return w?K.jsxs("div",{className:"max-w-[1440px] mx-auto px-6 py-10",children:[K.jsxs("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between gap-6 mb-8",children:[K.jsx("div",{className:"flex flex-col gap-1.5",children:K.jsx("h1",{className:"text-3xl font-extrabold tracking-tight text-stone-900",children:"TokenDash"})}),y&&te()]}),K.jsx("div",{className:"skeleton h-8 w-48 rounded-lg mb-2"}),K.jsx("div",{className:"skeleton h-4 w-72 rounded-lg mb-8"}),K.jsx("div",{className:"grid grid-cols-3 md:grid-cols-6 gap-3 mb-6",children:[...Array(6)].map((I,ee)=>K.jsx("div",{className:"skeleton h-20 rounded-2xl"},ee))}),K.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[K.jsx("div",{className:"skeleton h-72 rounded-2xl"}),K.jsx("div",{className:"skeleton h-72 rounded-2xl"})]})]}):E?K.jsxs("div",{className:"max-w-[1440px] mx-auto px-6 py-10",children:[K.jsxs("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between gap-6 mb-8",children:[K.jsx("div",{className:"flex flex-col gap-1.5",children:K.jsx("h1",{className:"text-3xl font-extrabold tracking-tight text-stone-900",children:"TokenDash"})}),y&&te()]}),K.jsx("div",{className:"rounded-2xl bg-red-50 border border-red-200/60 p-5",children:K.jsx("div",{className:"text-red-600 text-sm font-medium",children:E})})]}):!v.data||!g.data?null:K.jsxs("div",{className:"max-w-[1440px] mx-auto px-6 py-10",children:[K.jsxs("div",{className:"mb-8",children:[K.jsxs("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between gap-6 mb-6",children:[K.jsxs("div",{className:"flex flex-col gap-1.5",children:[K.jsx("h1",{className:"text-3xl font-extrabold tracking-tight text-stone-900",children:"TokenDash"}),K.jsx("p",{className:"text-[14px] font-medium text-stone-500 leading-relaxed",children:"Monitor token consumption, costs, and cache efficiency for your AI coding assistants."})]}),y&&te()]}),K.jsx("div",{className:"flex flex-col gap-4",children:K.jsxs("div",{className:"flex flex-wrap items-center gap-6 p-4 bg-white rounded-2xl border border-stone-200/50 shadow-sm w-fit",children:[K.jsxs("div",{className:"flex flex-col gap-2",children:[K.jsx("span",{className:"text-[11px] font-semibold text-stone-400 uppercase tracking-wider",children:"Time range"}),K.jsx(VM,{options:AN,value:c,onChange:I=>f(I)})]}),A.length>0&&K.jsxs(K.Fragment,{children:[K.jsx("div",{className:"w-px h-10 bg-stone-200/60 hidden sm:block"}),K.jsxs("div",{className:"flex flex-col gap-2",children:[K.jsx("span",{className:"text-[11px] font-semibold text-stone-400 uppercase tracking-wider",children:"Project"}),K.jsx(gX,{projects:A,value:d,onChange:h})]})]}),K.jsx("div",{className:"w-px h-10 bg-stone-200/60 hidden sm:block"}),K.jsxs("div",{className:"flex flex-col gap-2",children:[K.jsx("span",{className:"text-[11px] font-semibold text-stone-400 uppercase tracking-wider",children:"Metric"}),K.jsx(VM,{options:[{key:"tokens",label:"Tokens"},{key:"usd",label:"Cost"}],value:_,onChange:I=>S(I)})]})]})})]}),K.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-6 gap-4 mb-6",children:[K.jsx(vo,{label:"Total tokens",value:qt(M.totalTokens),accent:!0,insight:"The primary volume indicator for the selected period."}),K.jsx(vo,{label:"Total cost",value:Nr(M.totalCost),insight:"Estimated spend based on current pricing."}),K.jsx(vo,{label:"Daily avg",value:qt(N>0?M.totalTokens/N:0),sub:`${N} active days`,insight:"Baseline for typical daily volume."}),K.jsx(vo,{label:"Peak day",value:qt(k.tokens),sub:k.date!=="-"?Fs(k.date):void 0,insight:"Highest single day usage."}),K.jsx(vo,{label:"Cache hit",value:lb(Y),insight:"Higher hit rate reduces cost."}),K.jsx(vo,{label:"Output/Input",value:lb(U),insight:"Ratio of generation to context."})]}),K.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4 mb-4",children:[K.jsxs(ii,{title:"Cache efficiency & savings",children:[K.jsxs("div",{className:"flex items-center gap-6 mb-6 px-4 py-3 bg-emerald-50/50 rounded-xl border border-emerald-100/50",children:[K.jsxs("div",{className:"flex flex-col",children:[K.jsx("span",{className:"text-[11px] font-bold text-emerald-600/70 uppercase tracking-wider mb-0.5",children:"Est. Cost Saved"}),K.jsx("span",{className:"text-2xl font-black text-emerald-600 tracking-tight",children:Nr(q.costSaved)})]}),K.jsx("div",{className:"w-px h-8 bg-emerald-200/50"}),K.jsxs("div",{className:"flex flex-col",children:[K.jsx("span",{className:"text-[11px] font-bold text-emerald-600/70 uppercase tracking-wider mb-0.5",children:"Tokens Saved"}),K.jsx("span",{className:"text-lg font-extrabold text-emerald-700/80 tracking-tight font-mono",children:qt(q.tokensSaved)})]}),K.jsx("div",{className:"w-px h-8 bg-emerald-200/50"}),K.jsxs("div",{className:"flex flex-col",children:[K.jsx("span",{className:"text-[11px] font-bold text-emerald-600/70 uppercase tracking-wider mb-0.5",children:"Avg Hit Rate"}),K.jsx("span",{className:"text-lg font-extrabold text-emerald-700/80 tracking-tight font-mono",children:lb(q.hitRate)})]})]}),K.jsx(il,{width:"100%",height:210,children:K.jsxs(dX,{data:$,children:[K.jsx(gl,{strokeDasharray:"3 3",stroke:"#e7e5e4",vertical:!1}),K.jsx(qr,{dataKey:"date",tick:{fill:"#78716c",fontSize:10},axisLine:!1,tickLine:!1}),K.jsx(ir,{yAxisId:"left",tick:{fill:"#78716c",fontSize:10},axisLine:!1,tickLine:!1,tickFormatter:I=>qt(I)}),K.jsx(ir,{yAxisId:"right",orientation:"right",tick:{fill:"#78716c",fontSize:10},axisLine:!1,tickLine:!1,tickFormatter:I=>`${I.toFixed(0)}%`}),K.jsx(rn,{content:K.jsx(pl,{})}),K.jsx(Lr,{wrapperStyle:{fontSize:11,paddingTop:12}}),K.jsx(za,{yAxisId:"left",type:"monotone",dataKey:"cacheRead",stroke:Rn[5],fill:Rn[5],fillOpacity:.08,name:"Cache Read",strokeWidth:1.5}),K.jsx(Si,{yAxisId:"right",type:"monotone",dataKey:"hitRate",stroke:Rn[3],strokeWidth:2,dot:!1,name:"Hit Rate (%)"})]})})]}),d?d?K.jsx(ii,{title:"Per-model breakdown",children:K.jsx(il,{width:"100%",height:280,children:K.jsxs(YM,{data:X,layout:"vertical",children:[K.jsx(gl,{strokeDasharray:"3 3",stroke:"#e7e5e4",horizontal:!1}),K.jsx(qr,{type:"number",tick:{fill:"#78716c",fontSize:10},axisLine:!1,tickLine:!1,tickFormatter:I=>qt(I)}),K.jsx(ir,{type:"category",dataKey:"name",tick:{fill:"#57534e",fontSize:11},axisLine:!1,tickLine:!1,width:80}),K.jsx(rn,{content:K.jsx(pl,{})}),K.jsx(Zn,{dataKey:"cacheRead",stackId:"a",fill:Rn[0],fillOpacity:.7,name:"Cache Read",maxBarSize:20}),K.jsx(Zn,{dataKey:"input",stackId:"a",fill:Rn[1],fillOpacity:.7,name:"Input",maxBarSize:20}),K.jsx(Zn,{dataKey:"output",stackId:"a",fill:Rn[2],fillOpacity:.7,name:"Output",maxBarSize:20})]})})}):null:K.jsx(ii,{title:"Project distribution",subtitle:`Top 8 projects by ${j?"tokens":"cost"}`,children:K.jsx(il,{width:"100%",height:280,children:K.jsxs(YM,{data:Z.slice(0,8),layout:"vertical",margin:{left:8,right:8,top:0,bottom:0},children:[K.jsx(gl,{strokeDasharray:"3 3",stroke:"#e7e5e4",horizontal:!1}),K.jsx(qr,{type:"number",tick:{fill:"#78716c",fontSize:11},axisLine:!1,tickLine:!1,tickFormatter:I=>j?qt(I):Nr(I)}),K.jsx(ir,{type:"category",dataKey:"name",tick:{fill:"#57534e",fontSize:11},axisLine:!1,tickLine:!1,width:110}),K.jsx(rn,{content:K.jsx(pl,{fmt:j?qt:Nr})}),K.jsx(Zn,{dataKey:P,radius:[0,6,6,0],maxBarSize:24,children:Z.slice(0,8).map((I,ee)=>K.jsx(Mo,{fill:Rn[ee%Rn.length],fillOpacity:.85},ee))})]})})})]}),K.jsx(ii,{title:"24-Hour Activity Heatmap",subtitle:"Activity distribution by hour and day of week",className:"mb-4",children:H?K.jsxs("div",{className:"flex flex-col w-full pt-1 pb-2",children:[K.jsxs("div",{className:"flex w-full gap-2",children:[K.jsx("div",{className:"w-8 shrink-0 flex flex-col justify-around text-[10px] font-medium text-stone-400 pt-0.5 pb-0.5",children:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"].map((I,ee)=>K.jsx("div",{className:`h-[22px] flex items-center justify-center rounded ${ee===new Date().getDay()?"bg-stone-800 text-white font-bold":""}`,children:I},I))}),K.jsx("div",{className:"flex-1 flex flex-col gap-1",children:H.grid.map((I,ee)=>K.jsx("div",{className:"flex gap-1 h-[22px]",children:I.map((D,B)=>{const ne=H.maxVal>0?.15+D/H.maxVal*.85:0;return K.jsx("div",{className:"flex-1 rounded-[3px] relative group transition-all hover:ring-2 hover:ring-emerald-400 hover:ring-offset-1 hover:z-10",style:{backgroundColor:D>0?`rgba(16, 185, 129, ${ne})`:"#ebedf0"},children:D>0&&K.jsxs("div",{className:"absolute opacity-0 group-hover:opacity-100 z-20 bg-stone-900 text-white text-[10px] px-2 py-1 rounded bottom-full mb-1.5 left-1/2 -translate-x-1/2 pointer-events-none whitespace-nowrap shadow-lg font-mono",children:[B,":00 - ",j?qt(D)+" tokens":Nr(D)]})},B)})},ee))})]}),K.jsx("div",{className:"flex ml-10 mt-1.5 text-[10px] font-medium text-stone-400",children:[...Array(24)].map((I,ee)=>K.jsx("div",{className:"flex-1 text-center truncate",children:ee%2===0?ee:""},ee))})]}):K.jsx("div",{className:"h-48 flex items-center justify-center text-stone-400 text-sm",children:"No session data available"})}),K.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-4 mb-4",children:[K.jsx(ii,{title:"Model trend",subtitle:"Showing top 6 models to maintain readability",className:"lg:col-span-3",children:K.jsx(il,{width:"100%",height:260,children:K.jsxs(sX,{data:Q,children:[K.jsx(gl,{strokeDasharray:"3 3",stroke:"#e7e5e4",vertical:!1}),K.jsx(qr,{dataKey:"date",tick:{fill:"#78716c",fontSize:10},axisLine:!1,tickLine:!1}),K.jsx(ir,{tick:{fill:"#78716c",fontSize:10},axisLine:!1,tickLine:!1,tickFormatter:I=>j?qt(I):Nr(I)}),K.jsx(rn,{content:K.jsx(pl,{fmt:j?qt:Nr})}),K.jsx(Lr,{wrapperStyle:{fontSize:11,paddingTop:12}}),X.slice(0,6).map((I,ee)=>K.jsx(Si,{type:"monotone",dataKey:I.name,stroke:Rn[ee%Rn.length],strokeWidth:1.5,dot:!1},I.name))]})})}),K.jsx(ii,{title:"Model distribution",subtitle:"Ranked by total volume",className:"lg:col-span-2",children:K.jsx(il,{width:"100%",height:260,children:K.jsxs(fX,{margin:{left:0,right:0,top:0,bottom:0},children:[K.jsx(Fr,{data:X.slice(0,6),dataKey:P,nameKey:"name",cx:"50%",cy:"50%",innerRadius:60,outerRadius:90,paddingAngle:2,children:X.slice(0,6).map((I,ee)=>K.jsx(Mo,{fill:Rn[ee%Rn.length],fillOpacity:.85,stroke:"transparent"},ee))}),K.jsx(rn,{content:K.jsx(pl,{fmt:j?qt:Nr})}),K.jsx(Lr,{layout:"vertical",verticalAlign:"middle",align:"right",wrapperStyle:{fontSize:11}})]})})})]}),K.jsx(ii,{title:"Daily detail",subtitle:"Recent 30 days of usage breakdown",children:K.jsx("div",{className:"overflow-x-auto",children:K.jsxs("table",{className:"w-full text-[11px] whitespace-nowrap",children:[K.jsx("thead",{children:K.jsxs("tr",{className:"border-b border-stone-200",children:[K.jsx("th",{className:"text-left py-3 px-4 text-stone-400 font-semibold text-[10px]",children:"Date"}),K.jsx("th",{className:"text-right py-3 px-4 text-stone-400 font-semibold text-[10px]",children:"Input"}),K.jsx("th",{className:"text-right py-3 px-4 text-stone-400 font-semibold text-[10px]",children:"Output"}),K.jsx("th",{className:"text-right py-3 px-4 text-stone-400 font-semibold text-[10px]",children:"Cache read"}),K.jsx("th",{className:"text-right py-3 px-4 text-stone-600 font-semibold text-[10px]",children:"Total tokens"}),K.jsx("th",{className:"text-right py-3 px-4 text-stone-400 font-semibold text-[10px]",children:"Cost"}),K.jsx("th",{className:"text-left py-3 px-4 text-stone-400 font-semibold text-[10px]",children:"Models"})]})}),K.jsx("tbody",{children:[...T].reverse().slice(0,30).map(I=>K.jsxs("tr",{className:"border-b border-stone-100 hover:bg-stone-50/60 transition-colors",children:[K.jsx("td",{className:"py-2.5 px-4 text-stone-800 font-semibold",children:Fs(I.date)}),K.jsx("td",{className:"py-2.5 px-4 text-right font-mono text-stone-500",children:qt(I.inputTokens)}),K.jsx("td",{className:"py-2.5 px-4 text-right font-mono text-stone-500",children:qt(I.outputTokens)}),K.jsx("td",{className:"py-2.5 px-4 text-right font-mono text-indigo-500/70",children:qt(I.cacheReadTokens)}),K.jsx("td",{className:"py-2.5 px-4 text-right font-mono font-semibold text-indigo-600",children:qt(I.totalTokens)}),K.jsx("td",{className:"py-2.5 px-4 text-right font-mono font-medium text-stone-600 bg-stone-50/40",children:Nr(I.totalCost)}),K.jsx("td",{className:"py-2.5 px-4 text-stone-500 font-medium truncate max-w-[200px]",children:I.modelsUsed.map(cb).join(", ")})]},I.date))})]})})})]})}function SX(){return K.jsx("div",{className:"min-h-dvh bg-[radial-gradient(ellipse_at_top,#eef2ff_0%,#faf9f7_35%,#faf9f7_100%)] text-stone-900",children:K.jsx(xX,{})})}J3.createRoot(document.getElementById("root")).render(K.jsx(ie.StrictMode,{children:K.jsx(SX,{})}));
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:"Geist", "Geist Fallback", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"Geist Mono", "Geist Mono Fallback", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-red-600:oklch(57.7% .245 27.325);--color-orange-600:oklch(64.6% .222 41.116);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-stone-50:oklch(98.5% .001 106.423);--color-stone-100:oklch(97% .001 106.424);--color-stone-200:oklch(92.3% .003 48.717);--color-stone-400:oklch(70.9% .01 56.259);--color-stone-500:oklch(55.3% .013 58.071);--color-stone-600:oklch(44.4% .011 73.639);--color-stone-700:oklch(37.4% .01 67.558);--color-stone-800:oklch(26.8% .007 34.298);--color-stone-900:oklch(21.6% .006 56.043);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.absolute{position:absolute}.relative{position:relative}.static{position:static}.start{inset-inline-start:var(--spacing)}.bottom-full{bottom:100%}.left-1\/2{left:50%}.z-20{z-index:20}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-10{margin-left:calc(var(--spacing) * 10)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-20{height:calc(var(--spacing) * 20)}.h-48{height:calc(var(--spacing) * 48)}.h-72{height:calc(var(--spacing) * 72)}.h-\[22px\]{height:22px}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-dvh{min-height:100dvh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-4{width:calc(var(--spacing) * 4)}.w-8{width:calc(var(--spacing) * 8)}.w-48{width:calc(var(--spacing) * 48)}.w-72{width:calc(var(--spacing) * 72)}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\[200px\]{max-width:200px}.max-w-\[220px\]{max-width:220px}.max-w-\[1440px\]{max-width:1440px}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[3px\]{border-radius:3px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-emerald-100\/50{border-color:#d0fae580}@supports (color:color-mix(in lab,red,red)){.border-emerald-100\/50{border-color:color-mix(in oklab,var(--color-emerald-100) 50%,transparent)}}.border-red-200\/60{border-color:#ffcaca99}@supports (color:color-mix(in lab,red,red)){.border-red-200\/60{border-color:color-mix(in oklab,var(--color-red-200) 60%,transparent)}}.border-stone-100{border-color:var(--color-stone-100)}.border-stone-200{border-color:var(--color-stone-200)}.border-stone-200\/40{border-color:#e7e5e466}@supports (color:color-mix(in lab,red,red)){.border-stone-200\/40{border-color:color-mix(in oklab,var(--color-stone-200) 40%,transparent)}}.border-stone-200\/50{border-color:#e7e5e480}@supports (color:color-mix(in lab,red,red)){.border-stone-200\/50{border-color:color-mix(in oklab,var(--color-stone-200) 50%,transparent)}}.bg-emerald-50\/50{background-color:#ecfdf580}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/50{background-color:color-mix(in oklab,var(--color-emerald-50) 50%,transparent)}}.bg-emerald-200\/50{background-color:#a4f4cf80}@supports (color:color-mix(in lab,red,red)){.bg-emerald-200\/50{background-color:color-mix(in oklab,var(--color-emerald-200) 50%,transparent)}}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-red-50{background-color:var(--color-red-50)}.bg-stone-50\/40{background-color:#fafaf966}@supports (color:color-mix(in lab,red,red)){.bg-stone-50\/40{background-color:color-mix(in oklab,var(--color-stone-50) 40%,transparent)}}.bg-stone-100{background-color:var(--color-stone-100)}.bg-stone-200\/50{background-color:#e7e5e480}@supports (color:color-mix(in lab,red,red)){.bg-stone-200\/50{background-color:color-mix(in oklab,var(--color-stone-200) 50%,transparent)}}.bg-stone-200\/60{background-color:#e7e5e499}@supports (color:color-mix(in lab,red,red)){.bg-stone-200\/60{background-color:color-mix(in oklab,var(--color-stone-200) 60%,transparent)}}.bg-stone-800{background-color:var(--color-stone-800)}.bg-stone-900{background-color:var(--color-stone-900)}.bg-white{background-color:var(--color-white)}.bg-\[radial-gradient\(ellipse_at_top\,\#eef2ff_0\%\,\#faf9f7_35\%\,\#faf9f7_100\%\)\]{background-image:radial-gradient(at top,#eef2ff,#faf9f7 35%,#faf9f7)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-600\/70{color:#009767b3}@supports (color:color-mix(in lab,red,red)){.text-emerald-600\/70{color:color-mix(in oklab,var(--color-emerald-600) 70%,transparent)}}.text-emerald-700\/80{color:#007956cc}@supports (color:color-mix(in lab,red,red)){.text-emerald-700\/80{color:color-mix(in oklab,var(--color-emerald-700) 80%,transparent)}}.text-indigo-500\/70{color:#625fffb3}@supports (color:color-mix(in lab,red,red)){.text-indigo-500\/70{color:color-mix(in oklab,var(--color-indigo-500) 70%,transparent)}}.text-indigo-600{color:var(--color-indigo-600)}.text-orange-600{color:var(--color-orange-600)}.text-red-600{color:var(--color-red-600)}.text-stone-400{color:var(--color-stone-400)}.text-stone-500{color:var(--color-stone-500)}.text-stone-600{color:var(--color-stone-600)}.text-stone-700{color:var(--color-stone-700)}.text-stone-800{color:var(--color-stone-800)}.text-stone-900{color:var(--color-stone-900)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.shadow-\[0_1px_3px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:0 1px 3px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_3px_rgba\(120\,113\,108\,0\.06\)\]{--tw-shadow:0 1px 3px var(--tw-shadow-color,#78716c0f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(120\,113\,108\,0\.12\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#78716c1f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-stone-900\/5{--tw-ring-color:#1c19170d}@supports (color:color-mix(in lab,red,red)){.ring-stone-900\/5{--tw-ring-color:color-mix(in oklab, var(--color-stone-900) 5%, transparent)}}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:z-10:hover{z-index:10}.hover\:bg-stone-50:hover{background-color:var(--color-stone-50)}.hover\:bg-stone-50\/60:hover{background-color:#fafaf999}@supports (color:color-mix(in lab,red,red)){.hover\:bg-stone-50\/60:hover{background-color:color-mix(in oklab,var(--color-stone-50) 60%,transparent)}}.hover\:bg-stone-200\/50:hover{background-color:#e7e5e480}@supports (color:color-mix(in lab,red,red)){.hover\:bg-stone-200\/50:hover{background-color:color-mix(in oklab,var(--color-stone-200) 50%,transparent)}}.hover\:text-stone-800:hover{color:var(--color-stone-800)}.hover\:shadow-\[0_4px_12px_rgba\(120\,113\,108\,0\.09\)\]:hover{--tw-shadow:0 4px 12px var(--tw-shadow-color,#78716c17);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-emerald-400:hover{--tw-ring-color:var(--color-emerald-400)}.hover\:ring-offset-1:hover{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}}.focus\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-indigo-500\/20:focus{--tw-ring-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.focus\:ring-indigo-500\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}@media(min-width:40rem){.sm\:block{display:block}}@media(min-width:48rem){.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}}@media(min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}}html,body{background-color:#faf9f7!important}@font-face{font-family:Geist;src:url(https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-sans/Geist-Variable.woff2)format("woff2");font-weight:100 900;font-display:swap;font-style:normal}@font-face{font-family:Geist Mono;src:url(https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-mono/GeistMono-Variable.woff2)format("woff2");font-weight:100 900;font-display:swap;font-style:normal}body:before{content:"";z-index:9999;pointer-events:none;opacity:.015;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;position:fixed;top:0;right:0;bottom:0;left:0}.recharts-cartesian-grid-horizontal line,.recharts-cartesian-grid-vertical line{stroke:#e7e5e4}.recharts-text{fill:#78716c;font-family:var(--font-sans);font-size:11px}.recharts-legend-item-text{color:#57534e;font-size:12px}.recharts-tooltip-wrapper{outline:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#c8c4be;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#a8a29e}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,#e7e5e4 25%,#d6d3d1,#e7e5e4 75%) 0 0/200% 100%;animation:1.5s ease-in-out infinite shimmer}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}
@@ -5,8 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>TokenDash</title>
7
7
  <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text y='28' font-size='28'>⚡</text></svg>" />
8
- <script type="module" crossorigin src="/assets/index-C3o5PaD5.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-CaxfZubD.css">
8
+ <script type="module" crossorigin src="/assets/index-BJbeEwyn.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-DI_qK8jk.css">
10
10
  </head>
11
11
  <body class="antialiased" style="background:#faf9f7">
12
12
  <div id="root"></div>
@@ -40,6 +40,7 @@ export function scanOpenClawSessions() {
40
40
  }
41
41
  for (const agentEntry of agentEntries) {
42
42
  const sessionsDir = join(agentsDir, agentEntry, 'sessions');
43
+ const indexedPaths = new Set();
43
44
  // Try sessions.json index first
44
45
  const indexPath = join(sessionsDir, 'sessions.json');
45
46
  try {
@@ -50,44 +51,66 @@ export function scanOpenClawSessions() {
50
51
  continue;
51
52
  let sessionPath;
52
53
  if (entry.sessionFile) {
53
- sessionPath = entry.sessionFile.startsWith('/')
54
- ? entry.sessionFile
55
- : join(sessionsDir, entry.sessionFile);
54
+ const filePath = entry.sessionFile;
55
+ if (filePath.startsWith('/')) {
56
+ // Validate absolute path stays within an OpenClaw directory
57
+ if (!getOpenClawDirs().some(dir => filePath.startsWith(dir)))
58
+ continue;
59
+ sessionPath = filePath;
60
+ }
61
+ else {
62
+ sessionPath = join(sessionsDir, filePath);
63
+ }
56
64
  }
57
65
  else {
58
66
  sessionPath = join(sessionsDir, `${entry.sessionId}.jsonl`);
59
67
  }
68
+ indexedPaths.add(sessionPath);
60
69
  refs.push({ sessionId: entry.sessionId, sessionFile: sessionPath, agentId: agentEntry });
61
70
  }
62
71
  }
63
72
  catch {
64
- // No sessions.json — fall back to scanning .jsonl files directly
65
- let files;
66
- try {
67
- files = readdirSync(sessionsDir);
68
- }
69
- catch {
73
+ // No sessions.json — will scan .jsonl files below
74
+ }
75
+ // Scan for .jsonl files not already covered by the index
76
+ let files;
77
+ try {
78
+ files = readdirSync(sessionsDir);
79
+ }
80
+ catch {
81
+ continue;
82
+ }
83
+ for (const f of files) {
84
+ if (!f.endsWith('.jsonl'))
70
85
  continue;
71
- }
72
- for (const f of files) {
73
- if (!f.endsWith('.jsonl'))
74
- continue;
75
- const sessionId = f.replace(/\.jsonl.*$/, ''); // strip .jsonl and any suffixes
76
- refs.push({
77
- sessionId,
78
- sessionFile: join(sessionsDir, f),
79
- agentId: agentEntry,
80
- });
81
- }
86
+ const fullPath = join(sessionsDir, f);
87
+ if (indexedPaths.has(fullPath))
88
+ continue;
89
+ const sessionId = f.replace(/\.jsonl.*$/, '');
90
+ refs.push({ sessionId, sessionFile: fullPath, agentId: agentEntry });
82
91
  }
83
92
  }
84
93
  }
85
94
  return refs;
86
95
  }
87
96
  // ---------------------------------------------------------------------------
97
+ // Session-level cache (mtime-based invalidation)
98
+ // ---------------------------------------------------------------------------
99
+ const sessionCache = new Map();
100
+ // ---------------------------------------------------------------------------
88
101
  // JSONL parser
89
102
  // ---------------------------------------------------------------------------
90
103
  export function parseOpenClawSession(ref) {
104
+ let fileMtimeMs = 0;
105
+ try {
106
+ fileMtimeMs = statSync(ref.sessionFile).mtimeMs;
107
+ }
108
+ catch { /* ok */ }
109
+ // Return cached result if file hasn't changed
110
+ const cached = sessionCache.get(ref.sessionFile);
111
+ if (cached && cached.mtime === fileMtimeMs) {
112
+ return cached.result;
113
+ }
91
114
  let content;
92
115
  try {
93
116
  content = readFileSync(ref.sessionFile, 'utf-8');
@@ -95,12 +118,6 @@ export function parseOpenClawSession(ref) {
95
118
  catch {
96
119
  return null;
97
120
  }
98
- // Fallback timestamp: file mtime
99
- let fileMtimeMs = 0;
100
- try {
101
- fileMtimeMs = statSync(ref.sessionFile).mtimeMs;
102
- }
103
- catch { /* ok */ }
104
121
  const tokenEvents = [];
105
122
  let currentModel = '';
106
123
  let currentProvider = '';
@@ -161,15 +178,19 @@ export function parseOpenClawSession(ref) {
161
178
  outputTokens: Math.max(0, output),
162
179
  cacheReadTokens: Math.max(0, cacheRead),
163
180
  cacheWriteTokens: Math.max(0, cacheWrite),
164
- totalTokens: Math.max(0, input + output),
181
+ totalTokens: Math.max(0, input + output + cacheRead),
165
182
  cost: Math.max(0, cost),
166
183
  model: `${provider}/${model}`,
167
184
  });
168
185
  }
169
186
  }
170
- if (tokenEvents.length === 0)
187
+ if (tokenEvents.length === 0) {
188
+ sessionCache.set(ref.sessionFile, { mtime: fileMtimeMs, result: null });
171
189
  return null;
172
- return { id: ref.sessionId, agentId: ref.agentId, tokenEvents };
190
+ }
191
+ const result = { id: ref.sessionId, agentId: ref.agentId, tokenEvents };
192
+ sessionCache.set(ref.sessionFile, { mtime: fileMtimeMs, result });
193
+ return result;
173
194
  }
174
195
  export function parseAllOpenClawSessions() {
175
196
  return scanOpenClawSessions()
@@ -251,7 +272,6 @@ export function getDailyResponse(options) {
251
272
  const sessions = parseAllOpenClawSessions();
252
273
  const tz = options?.timezone || 'Asia/Shanghai';
253
274
  const grouped = new Map();
254
- const allModels = new Set();
255
275
  const totalsAcc = emptyAcc();
256
276
  for (const session of sessions) {
257
277
  if (options?.project && session.agentId !== options.project)
@@ -267,7 +287,6 @@ export function getDailyResponse(options) {
267
287
  const entry = grouped.get(key);
268
288
  addEvent(entry.acc, ev);
269
289
  entry.models.add(ev.model);
270
- allModels.add(ev.model);
271
290
  }
272
291
  }
273
292
  const daily = [];
@@ -4,6 +4,7 @@ import { getSession } from './session.js';
4
4
  import { getProjects } from './projects.js';
5
5
  import { getBlocks } from './blocks.js';
6
6
  import { detectAvailableAgents } from '../ccusage.js';
7
+ import { isOpenClawAccessible } from '../openclawParser.js';
7
8
  async function getAgents(_req, res) {
8
9
  try {
9
10
  const agents = await detectAvailableAgents();
@@ -12,6 +13,8 @@ async function getAgents(_req, res) {
12
13
  available.push('claude');
13
14
  if (agents.codex)
14
15
  available.push('codex');
16
+ if (isOpenClawAccessible())
17
+ available.push('openclaw');
15
18
  res.json({ available, default: available[0] || null });
16
19
  }
17
20
  catch (error) {
@@ -2,11 +2,25 @@ import { runCcusage } from '../ccusage.js';
2
2
  import { cache } from '../cache.js';
3
3
  import { validateBlocks } from '../../shared/schemas.js';
4
4
  import { getBlocksResponse } from '../codexParser.js';
5
+ import { getBlocksResponse as getOpenClawBlocksResponse } from '../openclawParser.js';
5
6
  import { getClaudeBlocksByProject } from '../claudeBlocksParser.js';
6
7
  export async function getBlocks(req, res) {
7
8
  const agent = req.query.agent || 'claude';
8
9
  const project = req.query.project || undefined;
9
10
  try {
11
+ if (agent === 'openclaw') {
12
+ const projectCacheKey = `blocks:${agent}:${project || 'all'}`;
13
+ const cached = cache.get(projectCacheKey);
14
+ if (cached) {
15
+ res.json(cached);
16
+ return;
17
+ }
18
+ const data = getOpenClawBlocksResponse({ project: project || null });
19
+ const validated = validateBlocks(data);
20
+ cache.set(projectCacheKey, validated);
21
+ res.json(validated);
22
+ return;
23
+ }
10
24
  if (agent === 'codex') {
11
25
  const projectCacheKey = `blocks:${agent}:${project || 'all'}`;
12
26
  const cached = cache.get(projectCacheKey);
@@ -15,8 +29,9 @@ export async function getBlocks(req, res) {
15
29
  return;
16
30
  }
17
31
  const data = getBlocksResponse({ project: project || null });
18
- cache.set(projectCacheKey, data);
19
- res.json(data);
32
+ const validated = validateBlocks(data);
33
+ cache.set(projectCacheKey, validated);
34
+ res.json(validated);
20
35
  return;
21
36
  }
22
37
  // Claude Code with project filter: use custom JSONL parser
@@ -2,6 +2,7 @@ import { runCcusage } from '../ccusage.js';
2
2
  import { cache } from '../cache.js';
3
3
  import { validateDaily } from '../../shared/schemas.js';
4
4
  import { getDailyResponse } from '../codexParser.js';
5
+ import { getDailyResponse as getOpenClawDailyResponse } from '../openclawParser.js';
5
6
  export async function getDaily(req, res) {
6
7
  const agent = req.query.agent || 'claude';
7
8
  const cacheKey = `daily:${agent}`;
@@ -16,6 +17,12 @@ export async function getDaily(req, res) {
16
17
  cache.set(cacheKey, data);
17
18
  res.json(data);
18
19
  }
20
+ else if (agent === 'openclaw') {
21
+ const data = getOpenClawDailyResponse();
22
+ const validated = validateDaily(data);
23
+ cache.set(cacheKey, validated);
24
+ res.json(validated);
25
+ }
19
26
  else {
20
27
  const stdout = await runCcusage(['daily', '--breakdown']);
21
28
  const data = JSON.parse(stdout);
@@ -2,6 +2,7 @@ import { runCcusage } from '../ccusage.js';
2
2
  import { cache } from '../cache.js';
3
3
  import { validateProjects } from '../../shared/schemas.js';
4
4
  import { getProjectsResponse } from '../codexParser.js';
5
+ import { getProjectsResponse as getOpenClawProjectsResponse } from '../openclawParser.js';
5
6
  export async function getProjects(req, res) {
6
7
  const agent = req.query.agent || 'claude';
7
8
  const cacheKey = `projects:${agent}`;
@@ -16,6 +17,12 @@ export async function getProjects(req, res) {
16
17
  cache.set(cacheKey, data);
17
18
  res.json(data);
18
19
  }
20
+ else if (agent === 'openclaw') {
21
+ const data = getOpenClawProjectsResponse();
22
+ const validated = validateProjects(data);
23
+ cache.set(cacheKey, validated);
24
+ res.json(validated);
25
+ }
19
26
  else {
20
27
  const stdout = await runCcusage(['daily', '--instances', '--breakdown']);
21
28
  const data = JSON.parse(stdout);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhangferry-dev/tokendash",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "type": "module",
5
5
  "description": "Token Usage Analytics Dashboard",
6
6
  "publishConfig": {
@@ -1 +0,0 @@
1
- /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:"Geist", "Geist Fallback", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"Geist Mono", "Geist Mono Fallback", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-red-600:oklch(57.7% .245 27.325);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-stone-50:oklch(98.5% .001 106.423);--color-stone-100:oklch(97% .001 106.424);--color-stone-200:oklch(92.3% .003 48.717);--color-stone-400:oklch(70.9% .01 56.259);--color-stone-500:oklch(55.3% .013 58.071);--color-stone-600:oklch(44.4% .011 73.639);--color-stone-700:oklch(37.4% .01 67.558);--color-stone-800:oklch(26.8% .007 34.298);--color-stone-900:oklch(21.6% .006 56.043);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.absolute{position:absolute}.relative{position:relative}.static{position:static}.start{inset-inline-start:var(--spacing)}.bottom-full{bottom:100%}.left-1\/2{left:50%}.z-20{z-index:20}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-10{margin-left:calc(var(--spacing) * 10)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-20{height:calc(var(--spacing) * 20)}.h-48{height:calc(var(--spacing) * 48)}.h-72{height:calc(var(--spacing) * 72)}.h-\[22px\]{height:22px}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-dvh{min-height:100dvh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-4{width:calc(var(--spacing) * 4)}.w-8{width:calc(var(--spacing) * 8)}.w-48{width:calc(var(--spacing) * 48)}.w-72{width:calc(var(--spacing) * 72)}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\[200px\]{max-width:200px}.max-w-\[220px\]{max-width:220px}.max-w-\[1440px\]{max-width:1440px}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[3px\]{border-radius:3px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-emerald-100\/50{border-color:#d0fae580}@supports (color:color-mix(in lab,red,red)){.border-emerald-100\/50{border-color:color-mix(in oklab,var(--color-emerald-100) 50%,transparent)}}.border-red-200\/60{border-color:#ffcaca99}@supports (color:color-mix(in lab,red,red)){.border-red-200\/60{border-color:color-mix(in oklab,var(--color-red-200) 60%,transparent)}}.border-stone-100{border-color:var(--color-stone-100)}.border-stone-200{border-color:var(--color-stone-200)}.border-stone-200\/40{border-color:#e7e5e466}@supports (color:color-mix(in lab,red,red)){.border-stone-200\/40{border-color:color-mix(in oklab,var(--color-stone-200) 40%,transparent)}}.border-stone-200\/50{border-color:#e7e5e480}@supports (color:color-mix(in lab,red,red)){.border-stone-200\/50{border-color:color-mix(in oklab,var(--color-stone-200) 50%,transparent)}}.bg-emerald-50\/50{background-color:#ecfdf580}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/50{background-color:color-mix(in oklab,var(--color-emerald-50) 50%,transparent)}}.bg-emerald-200\/50{background-color:#a4f4cf80}@supports (color:color-mix(in lab,red,red)){.bg-emerald-200\/50{background-color:color-mix(in oklab,var(--color-emerald-200) 50%,transparent)}}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-red-50{background-color:var(--color-red-50)}.bg-stone-50\/40{background-color:#fafaf966}@supports (color:color-mix(in lab,red,red)){.bg-stone-50\/40{background-color:color-mix(in oklab,var(--color-stone-50) 40%,transparent)}}.bg-stone-100{background-color:var(--color-stone-100)}.bg-stone-200\/50{background-color:#e7e5e480}@supports (color:color-mix(in lab,red,red)){.bg-stone-200\/50{background-color:color-mix(in oklab,var(--color-stone-200) 50%,transparent)}}.bg-stone-200\/60{background-color:#e7e5e499}@supports (color:color-mix(in lab,red,red)){.bg-stone-200\/60{background-color:color-mix(in oklab,var(--color-stone-200) 60%,transparent)}}.bg-stone-800{background-color:var(--color-stone-800)}.bg-stone-900{background-color:var(--color-stone-900)}.bg-white{background-color:var(--color-white)}.bg-\[radial-gradient\(ellipse_at_top\,\#eef2ff_0\%\,\#faf9f7_35\%\,\#faf9f7_100\%\)\]{background-image:radial-gradient(at top,#eef2ff,#faf9f7 35%,#faf9f7)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-600\/70{color:#009767b3}@supports (color:color-mix(in lab,red,red)){.text-emerald-600\/70{color:color-mix(in oklab,var(--color-emerald-600) 70%,transparent)}}.text-emerald-700\/80{color:#007956cc}@supports (color:color-mix(in lab,red,red)){.text-emerald-700\/80{color:color-mix(in oklab,var(--color-emerald-700) 80%,transparent)}}.text-indigo-500\/70{color:#625fffb3}@supports (color:color-mix(in lab,red,red)){.text-indigo-500\/70{color:color-mix(in oklab,var(--color-indigo-500) 70%,transparent)}}.text-indigo-600{color:var(--color-indigo-600)}.text-red-600{color:var(--color-red-600)}.text-stone-400{color:var(--color-stone-400)}.text-stone-500{color:var(--color-stone-500)}.text-stone-600{color:var(--color-stone-600)}.text-stone-700{color:var(--color-stone-700)}.text-stone-800{color:var(--color-stone-800)}.text-stone-900{color:var(--color-stone-900)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.shadow-\[0_1px_3px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:0 1px 3px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_3px_rgba\(120\,113\,108\,0\.06\)\]{--tw-shadow:0 1px 3px var(--tw-shadow-color,#78716c0f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(120\,113\,108\,0\.12\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#78716c1f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-stone-900\/5{--tw-ring-color:#1c19170d}@supports (color:color-mix(in lab,red,red)){.ring-stone-900\/5{--tw-ring-color:color-mix(in oklab, var(--color-stone-900) 5%, transparent)}}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:z-10:hover{z-index:10}.hover\:bg-stone-50:hover{background-color:var(--color-stone-50)}.hover\:bg-stone-50\/60:hover{background-color:#fafaf999}@supports (color:color-mix(in lab,red,red)){.hover\:bg-stone-50\/60:hover{background-color:color-mix(in oklab,var(--color-stone-50) 60%,transparent)}}.hover\:bg-stone-200\/50:hover{background-color:#e7e5e480}@supports (color:color-mix(in lab,red,red)){.hover\:bg-stone-200\/50:hover{background-color:color-mix(in oklab,var(--color-stone-200) 50%,transparent)}}.hover\:text-stone-800:hover{color:var(--color-stone-800)}.hover\:shadow-\[0_4px_12px_rgba\(120\,113\,108\,0\.09\)\]:hover{--tw-shadow:0 4px 12px var(--tw-shadow-color,#78716c17);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-emerald-400:hover{--tw-ring-color:var(--color-emerald-400)}.hover\:ring-offset-1:hover{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}}.focus\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-indigo-500\/20:focus{--tw-ring-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.focus\:ring-indigo-500\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}@media(min-width:40rem){.sm\:block{display:block}}@media(min-width:48rem){.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}}@media(min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}}html,body{background-color:#faf9f7!important}@font-face{font-family:Geist;src:url(https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-sans/Geist-Variable.woff2)format("woff2");font-weight:100 900;font-display:swap;font-style:normal}@font-face{font-family:Geist Mono;src:url(https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-mono/GeistMono-Variable.woff2)format("woff2");font-weight:100 900;font-display:swap;font-style:normal}body:before{content:"";z-index:9999;pointer-events:none;opacity:.015;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;position:fixed;top:0;right:0;bottom:0;left:0}.recharts-cartesian-grid-horizontal line,.recharts-cartesian-grid-vertical line{stroke:#e7e5e4}.recharts-text{fill:#78716c;font-family:var(--font-sans);font-size:11px}.recharts-legend-item-text{color:#57534e;font-size:12px}.recharts-tooltip-wrapper{outline:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#c8c4be;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#a8a29e}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,#e7e5e4 25%,#d6d3d1,#e7e5e4 75%) 0 0/200% 100%;animation:1.5s ease-in-out infinite shimmer}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}