@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 +3 -3
- package/dist/client/assets/{index-C3o5PaD5.js → index-BJbeEwyn.js} +1 -1
- package/dist/client/assets/index-DI_qK8jk.css +1 -0
- package/dist/client/index.html +2 -2
- package/dist/server/openclawParser.js +50 -31
- package/dist/server/routes/api.js +3 -0
- package/dist/server/routes/blocks.js +17 -2
- package/dist/server/routes/daily.js +7 -0
- package/dist/server/routes/projects.js +7 -0
- package/package.json +1 -1
- package/dist/client/assets/index-CaxfZubD.css +0 -1
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
|
|
3
|
+
A beautiful, local web dashboard for visualizing your Claude Code, Codex, and OpenClaw token usage statistics.
|
|
4
4
|
|
|
5
|
-
It runs locally
|
|
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
|

|
|
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:**
|
|
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}
|
package/dist/client/index.html
CHANGED
|
@@ -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-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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 —
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
|
|
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
|
-
|
|
19
|
-
|
|
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 +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}
|