import{u as mt,b as be,j as a}from"./query-vendor-CZu0EHPe.js";import{R as v,r as E,N as Rt}from"./react-vendor-0bvDbF03.js";import{C as V,c as Z,d as $t}from"./card-CLY6erwh.js";import{c as Bt,ab as pe,u as Se,I as Ct,m as G,ac as It,ad as Kt,ae as Mt,af as Wt,s as Ue,e as zt,S as Le,B as Ft,W as Gt,ag as Vt}from"./index-B2Fv47c7.js";import{u as _e,x as Zt}from"./xp-service-D_CvJ07x.js";import{S as he}from"./skeleton-CKW_zBN6.js";import{B as Xt}from"./BreadcrumbNavigation-DIdPk2xo.js";import{u as X}from"./i18n-vendor-Bg2yf_Zw.js";import{Z as pt,T as ft}from"./zap-elnNuY35.js";import{i as fe,D as ht,f as Ke,L as $,a as R,C as ce,A as Me,b as _,c as je,d as M,h as yt,e as We,G as ze,g as Q,j as ne,u as Fe,E as xt,m as ye,k as re,l as qt,S as Ye,n as Ht,o as Ut,p as Yt,q as Qt,r as Jt,B as er,s as tr,R as Ge,T as Ve,t as rr}from"./generateCategoricalChart-8ZMh8AoK.js";import{X as Pe,Y as Ee,C as nr}from"./YAxis-DIDDj__w.js";import{f as le}from"./format-B9FvFmC1.js";import{P as ar}from"./progress--RbiGbqX.js";import{g as ir,S as Qe}from"./sesl-badge-utils-BvAx6z8X.js";import{C as sr}from"./calendar-check-BkvJ7yEo.js";import{C as or}from"./clock-DbjmXB9b.js";import{C as lr}from"./calendar-BINC7mRe.js";import{S as cr}from"./search-ByBguehr.js";import"./supabase-vendor-CNV44oIa.js";import"./helmet-vendor-NlTFkN97.js";/**
 * @license lucide-react v0.554.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const ur=[["path",{d:"M10 2v8l3-3 3 3V2",key:"sqw3rj"}],["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]],dr=Bt("book-marked",ur);var mr=["type","layout","connectNulls","ref"],pr=["key"];function ae(e){"@babel/helpers - typeof";return ae=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},ae(e)}function Je(e,t){if(e==null)return{};var n=fr(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function fr(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 ue(){return ue=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},ue.apply(this,arguments)}function et(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function T(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?et(Object(n),!0).forEach(function(r){K(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):et(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function te(e){return gr(e)||xr(e)||yr(e)||hr()}function hr(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function yr(e,t){if(e){if(typeof e=="string")return Re(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 Re(e,t)}}function xr(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function gr(e){if(Array.isArray(e))return Re(e)}function Re(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 vr(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function tt(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,vt(r.key),r)}}function br(e,t,n){return t&&tt(e.prototype,t),n&&tt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function jr(e,t,n){return t=we(t),wr(e,gt()?Reflect.construct(t,n||[],we(e).constructor):t.apply(e,n))}function wr(e,t){if(t&&(ae(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Ar(e)}function Ar(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function gt(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(gt=function(){return!!e})()}function we(e){return we=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},we(e)}function Or(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&&$e(e,t)}function $e(e,t){return $e=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},$e(e,t)}function K(e,t,n){return t=vt(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function vt(e){var t=Nr(e,"string");return ae(t)=="symbol"?t:t+""}function Nr(e,t){if(ae(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(ae(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var ee=function(e){function t(){var n;vr(this,t);for(var r=arguments.length,i=new Array(r),s=0;s<r;s++)i[s]=arguments[s];return n=jr(this,t,[].concat(i)),K(n,"state",{isAnimationFinished:!0,totalLength:0}),K(n,"generateSimpleStrokeDasharray",function(o,l){return"".concat(l,"px ").concat(o-l,"px")}),K(n,"getStrokeDasharray",function(o,l,p){var d=p.reduce(function(w,g){return w+g});if(!d)return n.generateSimpleStrokeDasharray(l,o);for(var c=Math.floor(o/d),m=o%d,u=l-o,f=[],y=0,x=0;y<p.length;x+=p[y],++y)if(x+p[y]>m){f=[].concat(te(p.slice(0,y)),[m-x]);break}var b=f.length%2===0?[0,u]:[u];return[].concat(te(t.repeat(p,c)),te(f),b).map(function(w){return"".concat(w,"px")}).join(", ")}),K(n,"id",Fe("recharts-line-")),K(n,"pathRef",function(o){n.mainCurve=o}),K(n,"handleAnimationEnd",function(){n.setState({isAnimationFinished:!0}),n.props.onAnimationEnd&&n.props.onAnimationEnd()}),K(n,"handleAnimationStart",function(){n.setState({isAnimationFinished:!1}),n.props.onAnimationStart&&n.props.onAnimationStart()}),n}return Or(t,e),br(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,i){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var s=this.props,o=s.points,l=s.xAxis,p=s.yAxis,d=s.layout,c=s.children,m=Ke(c,xt);if(!m)return null;var u=function(x,b){return{x:x.x,y:x.y,value:x.value,errorVal:Q(x.payload,b)}},f={clipPath:r?"url(#clipPath-".concat(i,")"):null};return v.createElement($,f,m.map(function(y){return v.cloneElement(y,{key:"bar-".concat(y.props.dataKey),data:o,xAxis:l,yAxis:p,layout:d,dataPointFormatter:u})}))}},{key:"renderDots",value:function(r,i,s){var o=this.props.isAnimationActive;if(o&&!this.state.isAnimationFinished)return null;var l=this.props,p=l.dot,d=l.points,c=l.dataKey,m=R(this.props,!1),u=R(p,!0),f=d.map(function(x,b){var w=T(T(T({key:"dot-".concat(b),r:3},m),u),{},{value:x.value,dataKey:c,cx:x.x,cy:x.y,index:b,payload:x.payload});return t.renderDotItem(p,w)}),y={clipPath:r?"url(#clipPath-".concat(i?"":"dots-").concat(s,")"):null};return v.createElement($,ue({className:"recharts-line-dots",key:"dots"},y),f)}},{key:"renderCurveStatically",value:function(r,i,s,o){var l=this.props,p=l.type,d=l.layout,c=l.connectNulls;l.ref;var m=Je(l,mr),u=T(T(T({},R(m,!0)),{},{fill:"none",className:"recharts-line-curve",clipPath:i?"url(#clipPath-".concat(s,")"):null,points:r},o),{},{type:p,layout:d,connectNulls:c});return v.createElement(ce,ue({},u,{pathRef:this.pathRef}))}},{key:"renderCurveWithAnimation",value:function(r,i){var s=this,o=this.props,l=o.points,p=o.strokeDasharray,d=o.isAnimationActive,c=o.animationBegin,m=o.animationDuration,u=o.animationEasing,f=o.animationId,y=o.animateNewValues,x=o.width,b=o.height,w=this.state,g=w.prevPoints,h=w.totalLength;return v.createElement(Me,{begin:c,duration:m,isActive:d,easing:u,from:{t:0},to:{t:1},key:"line-".concat(f),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(j){var A=j.t;if(g){var O=g.length/l.length,S=l.map(function(N,F){var q=Math.floor(F*O);if(g[q]){var H=g[q],I=_(H.x,N.x),Lt=_(H.y,N.y);return T(T({},N),{},{x:I(A),y:Lt(A)})}if(y){var _t=_(x*2,N.x),Tt=_(b/2,N.y);return T(T({},N),{},{x:_t(A),y:Tt(A)})}return T(T({},N),{},{x:N.x,y:N.y})});return s.renderCurveStatically(S,r,i)}var P=_(0,h),D=P(A),k;if(p){var L="".concat(p).split(/[,\s]+/gim).map(function(N){return parseFloat(N)});k=s.getStrokeDasharray(D,h,L)}else k=s.generateSimpleStrokeDasharray(h,D);return s.renderCurveStatically(l,r,i,{strokeDasharray:k})})}},{key:"renderCurve",value:function(r,i){var s=this.props,o=s.points,l=s.isAnimationActive,p=this.state,d=p.prevPoints,c=p.totalLength;return l&&o&&o.length&&(!d&&c>0||!je(d,o))?this.renderCurveWithAnimation(r,i):this.renderCurveStatically(o,r,i)}},{key:"render",value:function(){var r,i=this.props,s=i.hide,o=i.dot,l=i.points,p=i.className,d=i.xAxis,c=i.yAxis,m=i.top,u=i.left,f=i.width,y=i.height,x=i.isAnimationActive,b=i.id;if(s||!l||!l.length)return null;var w=this.state.isAnimationFinished,g=l.length===1,h=pe("recharts-line",p),j=d&&d.allowDataOverflow,A=c&&c.allowDataOverflow,O=j||A,S=M(b)?this.id:b,P=(r=R(o,!1))!==null&&r!==void 0?r:{r:3,strokeWidth:2},D=P.r,k=D===void 0?3:D,L=P.strokeWidth,N=L===void 0?2:L,F=yt(o)?o:{},q=F.clipDot,H=q===void 0?!0:q,I=k*2+N;return v.createElement($,{className:h},j||A?v.createElement("defs",null,v.createElement("clipPath",{id:"clipPath-".concat(S)},v.createElement("rect",{x:j?u:u-f/2,y:A?m:m-y/2,width:j?f:f*2,height:A?y:y*2})),!H&&v.createElement("clipPath",{id:"clipPath-dots-".concat(S)},v.createElement("rect",{x:u-I/2,y:m-I/2,width:f+I,height:y+I}))):null,!g&&this.renderCurve(O,S),this.renderErrorBar(O,S),(g||o)&&this.renderDots(O,H,S),(!x||w)&&We.renderCallByParent(this.props,l))}}],[{key:"getDerivedStateFromProps",value:function(r,i){return r.animationId!==i.prevAnimationId?{prevAnimationId:r.animationId,curPoints:r.points,prevPoints:i.curPoints}:r.points!==i.curPoints?{curPoints:r.points}:null}},{key:"repeat",value:function(r,i){for(var s=r.length%2!==0?[].concat(te(r),[0]):r,o=[],l=0;l<i;++l)o=[].concat(te(o),te(s));return o}},{key:"renderDotItem",value:function(r,i){var s;if(v.isValidElement(r))s=v.cloneElement(r,i);else if(fe(r))s=r(i);else{var o=i.key,l=Je(i,pr),p=pe("recharts-line-dot",typeof r!="boolean"?r.className:"");s=v.createElement(ht,ue({key:o},l,{className:p}))}return s}}])}(E.PureComponent);K(ee,"displayName","Line");K(ee,"defaultProps",{xAxisId:0,yAxisId:0,connectNulls:!1,activeDot:!0,dot:!0,legendType:"line",stroke:"#3182bd",strokeWidth:1,fill:"#fff",points:[],isAnimationActive:!ze.isSsr,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",hide:!1,label:!1});K(ee,"getComposedData",function(e){var t=e.props,n=e.xAxis,r=e.yAxis,i=e.xAxisTicks,s=e.yAxisTicks,o=e.dataKey,l=e.bandSize,p=e.displayedData,d=e.offset,c=t.layout,m=p.map(function(u,f){var y=Q(u,o);return c==="horizontal"?{x:ne({axis:n,ticks:i,bandSize:l,entry:u,index:f}),y:M(y)?null:r.scale(y),value:y,payload:u}:{x:M(y)?null:n.scale(y),y:ne({axis:r,ticks:s,bandSize:l,entry:u,index:f}),value:y,payload:u}});return T({points:m,layout:c},d)});var Sr=["layout","type","stroke","connectNulls","isRange","ref"],Pr=["key"],bt;function ie(e){"@babel/helpers - typeof";return ie=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},ie(e)}function jt(e,t){if(e==null)return{};var n=Er(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Er(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 J(){return J=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},J.apply(this,arguments)}function rt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function U(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?rt(Object(n),!0).forEach(function(r){W(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):rt(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function kr(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function nt(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,At(r.key),r)}}function Dr(e,t,n){return t&&nt(e.prototype,t),n&&nt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Lr(e,t,n){return t=Ae(t),_r(e,wt()?Reflect.construct(t,n||[],Ae(e).constructor):t.apply(e,n))}function _r(e,t){if(t&&(ie(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Tr(e)}function Tr(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function wt(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(wt=function(){return!!e})()}function Ae(e){return Ae=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Ae(e)}function Rr(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&&Be(e,t)}function Be(e,t){return Be=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},Be(e,t)}function W(e,t,n){return t=At(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function At(e){var t=$r(e,"string");return ie(t)=="symbol"?t:t+""}function $r(e,t){if(ie(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(ie(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var z=function(e){function t(){var n;kr(this,t);for(var r=arguments.length,i=new Array(r),s=0;s<r;s++)i[s]=arguments[s];return n=Lr(this,t,[].concat(i)),W(n,"state",{isAnimationFinished:!0}),W(n,"id",Fe("recharts-area-")),W(n,"handleAnimationEnd",function(){var o=n.props.onAnimationEnd;n.setState({isAnimationFinished:!0}),fe(o)&&o()}),W(n,"handleAnimationStart",function(){var o=n.props.onAnimationStart;n.setState({isAnimationFinished:!1}),fe(o)&&o()}),n}return Rr(t,e),Dr(t,[{key:"renderDots",value:function(r,i,s){var o=this.props.isAnimationActive,l=this.state.isAnimationFinished;if(o&&!l)return null;var p=this.props,d=p.dot,c=p.points,m=p.dataKey,u=R(this.props,!1),f=R(d,!0),y=c.map(function(b,w){var g=U(U(U({key:"dot-".concat(w),r:3},u),f),{},{index:w,cx:b.x,cy:b.y,dataKey:m,value:b.value,payload:b.payload,points:c});return t.renderDotItem(d,g)}),x={clipPath:r?"url(#clipPath-".concat(i?"":"dots-").concat(s,")"):null};return v.createElement($,J({className:"recharts-area-dots"},x),y)}},{key:"renderHorizontalRect",value:function(r){var i=this.props,s=i.baseLine,o=i.points,l=i.strokeWidth,p=o[0].x,d=o[o.length-1].x,c=r*Math.abs(p-d),m=ye(o.map(function(u){return u.y||0}));return re(s)&&typeof s=="number"?m=Math.max(s,m):s&&Array.isArray(s)&&s.length&&(m=Math.max(ye(s.map(function(u){return u.y||0})),m)),re(m)?v.createElement("rect",{x:p<d?p:p-c,y:0,width:c,height:Math.floor(m+(l?parseInt("".concat(l),10):1))}):null}},{key:"renderVerticalRect",value:function(r){var i=this.props,s=i.baseLine,o=i.points,l=i.strokeWidth,p=o[0].y,d=o[o.length-1].y,c=r*Math.abs(p-d),m=ye(o.map(function(u){return u.x||0}));return re(s)&&typeof s=="number"?m=Math.max(s,m):s&&Array.isArray(s)&&s.length&&(m=Math.max(ye(s.map(function(u){return u.x||0})),m)),re(m)?v.createElement("rect",{x:0,y:p<d?p:p-c,width:m+(l?parseInt("".concat(l),10):1),height:Math.floor(c)}):null}},{key:"renderClipRect",value:function(r){var i=this.props.layout;return i==="vertical"?this.renderVerticalRect(r):this.renderHorizontalRect(r)}},{key:"renderAreaStatically",value:function(r,i,s,o){var l=this.props,p=l.layout,d=l.type,c=l.stroke,m=l.connectNulls,u=l.isRange;l.ref;var f=jt(l,Sr);return v.createElement($,{clipPath:s?"url(#clipPath-".concat(o,")"):null},v.createElement(ce,J({},R(f,!0),{points:r,connectNulls:m,type:d,baseLine:i,layout:p,stroke:"none",className:"recharts-area-area"})),c!=="none"&&v.createElement(ce,J({},R(this.props,!1),{className:"recharts-area-curve",layout:p,type:d,connectNulls:m,fill:"none",points:r})),c!=="none"&&u&&v.createElement(ce,J({},R(this.props,!1),{className:"recharts-area-curve",layout:p,type:d,connectNulls:m,fill:"none",points:i})))}},{key:"renderAreaWithAnimation",value:function(r,i){var s=this,o=this.props,l=o.points,p=o.baseLine,d=o.isAnimationActive,c=o.animationBegin,m=o.animationDuration,u=o.animationEasing,f=o.animationId,y=this.state,x=y.prevPoints,b=y.prevBaseLine;return v.createElement(Me,{begin:c,duration:m,isActive:d,easing:u,from:{t:0},to:{t:1},key:"area-".concat(f),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(w){var g=w.t;if(x){var h=x.length/l.length,j=l.map(function(P,D){var k=Math.floor(D*h);if(x[k]){var L=x[k],N=_(L.x,P.x),F=_(L.y,P.y);return U(U({},P),{},{x:N(g),y:F(g)})}return P}),A;if(re(p)&&typeof p=="number"){var O=_(b,p);A=O(g)}else if(M(p)||qt(p)){var S=_(b,0);A=S(g)}else A=p.map(function(P,D){var k=Math.floor(D*h);if(b[k]){var L=b[k],N=_(L.x,P.x),F=_(L.y,P.y);return U(U({},P),{},{x:N(g),y:F(g)})}return P});return s.renderAreaStatically(j,A,r,i)}return v.createElement($,null,v.createElement("defs",null,v.createElement("clipPath",{id:"animationClipPath-".concat(i)},s.renderClipRect(g))),v.createElement($,{clipPath:"url(#animationClipPath-".concat(i,")")},s.renderAreaStatically(l,p,r,i)))})}},{key:"renderArea",value:function(r,i){var s=this.props,o=s.points,l=s.baseLine,p=s.isAnimationActive,d=this.state,c=d.prevPoints,m=d.prevBaseLine,u=d.totalLength;return p&&o&&o.length&&(!c&&u>0||!je(c,o)||!je(m,l))?this.renderAreaWithAnimation(r,i):this.renderAreaStatically(o,l,r,i)}},{key:"render",value:function(){var r,i=this.props,s=i.hide,o=i.dot,l=i.points,p=i.className,d=i.top,c=i.left,m=i.xAxis,u=i.yAxis,f=i.width,y=i.height,x=i.isAnimationActive,b=i.id;if(s||!l||!l.length)return null;var w=this.state.isAnimationFinished,g=l.length===1,h=pe("recharts-area",p),j=m&&m.allowDataOverflow,A=u&&u.allowDataOverflow,O=j||A,S=M(b)?this.id:b,P=(r=R(o,!1))!==null&&r!==void 0?r:{r:3,strokeWidth:2},D=P.r,k=D===void 0?3:D,L=P.strokeWidth,N=L===void 0?2:L,F=yt(o)?o:{},q=F.clipDot,H=q===void 0?!0:q,I=k*2+N;return v.createElement($,{className:h},j||A?v.createElement("defs",null,v.createElement("clipPath",{id:"clipPath-".concat(S)},v.createElement("rect",{x:j?c:c-f/2,y:A?d:d-y/2,width:j?f:f*2,height:A?y:y*2})),!H&&v.createElement("clipPath",{id:"clipPath-dots-".concat(S)},v.createElement("rect",{x:c-I/2,y:d-I/2,width:f+I,height:y+I}))):null,g?null:this.renderArea(O,S),(o||g)&&this.renderDots(O,H,S),(!x||w)&&We.renderCallByParent(this.props,l))}}],[{key:"getDerivedStateFromProps",value:function(r,i){return r.animationId!==i.prevAnimationId?{prevAnimationId:r.animationId,curPoints:r.points,curBaseLine:r.baseLine,prevPoints:i.curPoints,prevBaseLine:i.curBaseLine}:r.points!==i.curPoints||r.baseLine!==i.curBaseLine?{curPoints:r.points,curBaseLine:r.baseLine}:null}}])}(E.PureComponent);bt=z;W(z,"displayName","Area");W(z,"defaultProps",{stroke:"#3182bd",fill:"#3182bd",fillOpacity:.6,xAxisId:0,yAxisId:0,legendType:"line",connectNulls:!1,points:[],dot:!1,activeDot:!0,hide:!1,isAnimationActive:!ze.isSsr,animationBegin:0,animationDuration:1500,animationEasing:"ease"});W(z,"getBaseValue",function(e,t,n,r){var i=e.layout,s=e.baseValue,o=t.props.baseValue,l=o??s;if(re(l)&&typeof l=="number")return l;var p=i==="horizontal"?r:n,d=p.scale.domain();if(p.type==="number"){var c=Math.max(d[0],d[1]),m=Math.min(d[0],d[1]);return l==="dataMin"?m:l==="dataMax"||c<0?c:Math.max(Math.min(d[0],d[1]),0)}return l==="dataMin"?d[0]:l==="dataMax"?d[1]:d[0]});W(z,"getComposedData",function(e){var t=e.props,n=e.item,r=e.xAxis,i=e.yAxis,s=e.xAxisTicks,o=e.yAxisTicks,l=e.bandSize,p=e.dataKey,d=e.stackedData,c=e.dataStartIndex,m=e.displayedData,u=e.offset,f=t.layout,y=d&&d.length,x=bt.getBaseValue(t,n,r,i),b=f==="horizontal",w=!1,g=m.map(function(j,A){var O;y?O=d[c+A]:(O=Q(j,p),Array.isArray(O)?w=!0:O=[x,O]);var S=O[1]==null||y&&Q(j,p)==null;return b?{x:ne({axis:r,ticks:s,bandSize:l,entry:j,index:A}),y:S?null:i.scale(O[1]),value:O,payload:j}:{x:S?null:r.scale(O[1]),y:ne({axis:i,ticks:o,bandSize:l,entry:j,index:A}),value:O,payload:j}}),h;return y||w?h=g.map(function(j){var A=Array.isArray(j.value)?j.value[0]:null;return b?{x:j.x,y:A!=null&&j.y!=null?i.scale(A):null}:{x:A!=null?r.scale(A):null,y:j.y}}):h=b?i.scale(x):r.scale(x),U({points:g,baseLine:h,layout:f,isRange:w},u)});W(z,"renderDotItem",function(e,t){var n;if(v.isValidElement(e))n=v.cloneElement(e,t);else if(fe(e))n=e(t);else{var r=pe("recharts-area-dot",typeof e!="boolean"?e.className:""),i=t.key,s=jt(t,Pr);n=v.createElement(ht,J({},s,{key:i,className:r}))}return n});function se(e){"@babel/helpers - typeof";return se=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},se(e)}function Br(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Cr(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,St(r.key),r)}}function Ir(e,t,n){return t&&Cr(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function Kr(e,t,n){return t=Oe(t),Mr(e,Ot()?Reflect.construct(t,n||[],Oe(e).constructor):t.apply(e,n))}function Mr(e,t){if(t&&(se(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Wr(e)}function Wr(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Ot(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(Ot=function(){return!!e})()}function Oe(e){return Oe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Oe(e)}function zr(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&&Ce(e,t)}function Ce(e,t){return Ce=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},Ce(e,t)}function Nt(e,t,n){return t=St(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function St(e){var t=Fr(e,"string");return se(t)=="symbol"?t:t+""}function Fr(e,t){if(se(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(se(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var ke=function(e){function t(){return Br(this,t),Kr(this,t,arguments)}return zr(t,e),Ir(t,[{key:"render",value:function(){return null}}])}(v.Component);Nt(ke,"displayName","ZAxis");Nt(ke,"defaultProps",{zAxisId:0,range:[64,64],scale:"auto",type:"number"});var Gr=["option","isActive"];function de(){return de=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},de.apply(this,arguments)}function Vr(e,t){if(e==null)return{};var n=Zr(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Zr(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 Xr(e){var t=e.option,n=e.isActive,r=Vr(e,Gr);return typeof t=="string"?v.createElement(Ye,de({option:v.createElement(Ht,de({type:t},r)),isActive:n,shapeType:"symbols"},r)):v.createElement(Ye,de({option:t,isActive:n,shapeType:"symbols"},r))}function oe(e){"@babel/helpers - typeof";return oe=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},oe(e)}function me(){return me=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},me.apply(this,arguments)}function at(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function B(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?at(Object(n),!0).forEach(function(r){Y(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):at(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function qr(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function it(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,Et(r.key),r)}}function Hr(e,t,n){return t&&it(e.prototype,t),n&&it(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Ur(e,t,n){return t=Ne(t),Yr(e,Pt()?Reflect.construct(t,n||[],Ne(e).constructor):t.apply(e,n))}function Yr(e,t){if(t&&(oe(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Qr(e)}function Qr(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Pt(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(Pt=function(){return!!e})()}function Ne(e){return Ne=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Ne(e)}function Jr(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&&Ie(e,t)}function Ie(e,t){return Ie=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},Ie(e,t)}function Y(e,t,n){return t=Et(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Et(e){var t=en(e,"string");return oe(t)=="symbol"?t:t+""}function en(e,t){if(oe(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(oe(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var De=function(e){function t(){var n;qr(this,t);for(var r=arguments.length,i=new Array(r),s=0;s<r;s++)i[s]=arguments[s];return n=Ur(this,t,[].concat(i)),Y(n,"state",{isAnimationFinished:!1}),Y(n,"handleAnimationEnd",function(){n.setState({isAnimationFinished:!0})}),Y(n,"handleAnimationStart",function(){n.setState({isAnimationFinished:!1})}),Y(n,"id",Fe("recharts-scatter-")),n}return Jr(t,e),Hr(t,[{key:"renderSymbolsStatically",value:function(r){var i=this,s=this.props,o=s.shape,l=s.activeShape,p=s.activeIndex,d=R(this.props,!1);return r.map(function(c,m){var u=p===m,f=u?l:o,y=B(B({},d),c);return v.createElement($,me({className:"recharts-scatter-symbol",key:"symbol-".concat(c?.cx,"-").concat(c?.cy,"-").concat(c?.size,"-").concat(m)},Yt(i.props,c,m),{role:"img"}),v.createElement(Xr,me({option:f,isActive:u,key:"symbol-".concat(m)},y)))})}},{key:"renderSymbolsWithAnimation",value:function(){var r=this,i=this.props,s=i.points,o=i.isAnimationActive,l=i.animationBegin,p=i.animationDuration,d=i.animationEasing,c=i.animationId,m=this.state.prevPoints;return v.createElement(Me,{begin:l,duration:p,isActive:o,easing:d,from:{t:0},to:{t:1},key:"pie-".concat(c),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(u){var f=u.t,y=s.map(function(x,b){var w=m&&m[b];if(w){var g=_(w.cx,x.cx),h=_(w.cy,x.cy),j=_(w.size,x.size);return B(B({},x),{},{cx:g(f),cy:h(f),size:j(f)})}var A=_(0,x.size);return B(B({},x),{},{size:A(f)})});return v.createElement($,null,r.renderSymbolsStatically(y))})}},{key:"renderSymbols",value:function(){var r=this.props,i=r.points,s=r.isAnimationActive,o=this.state.prevPoints;return s&&i&&i.length&&(!o||!je(o,i))?this.renderSymbolsWithAnimation():this.renderSymbolsStatically(i)}},{key:"renderErrorBar",value:function(){var r=this.props.isAnimationActive;if(r&&!this.state.isAnimationFinished)return null;var i=this.props,s=i.points,o=i.xAxis,l=i.yAxis,p=i.children,d=Ke(p,xt);return d?d.map(function(c,m){var u=c.props,f=u.direction,y=u.dataKey;return v.cloneElement(c,{key:"".concat(f,"-").concat(y,"-").concat(s[m]),data:s,xAxis:o,yAxis:l,layout:f==="x"?"vertical":"horizontal",dataPointFormatter:function(b,w){return{x:b.cx,y:b.cy,value:f==="x"?+b.node.x:+b.node.y,errorVal:Q(b,w)}}})}):null}},{key:"renderLine",value:function(){var r=this.props,i=r.points,s=r.line,o=r.lineType,l=r.lineJointType,p=R(this.props,!1),d=R(s,!1),c,m;if(o==="joint")c=i.map(function(h){return{x:h.cx,y:h.cy}});else if(o==="fitting"){var u=Qt(i),f=u.xmin,y=u.xmax,x=u.a,b=u.b,w=function(j){return x*j+b};c=[{x:f,y:w(f)},{x:y,y:w(y)}]}var g=B(B(B({},p),{},{fill:"none",stroke:p&&p.fill},d),{},{points:c});return v.isValidElement(s)?m=v.cloneElement(s,g):fe(s)?m=s(g):m=v.createElement(ce,me({},g,{type:l})),v.createElement($,{className:"recharts-scatter-line",key:"recharts-scatter-line"},m)}},{key:"render",value:function(){var r=this.props,i=r.hide,s=r.points,o=r.line,l=r.className,p=r.xAxis,d=r.yAxis,c=r.left,m=r.top,u=r.width,f=r.height,y=r.id,x=r.isAnimationActive;if(i||!s||!s.length)return null;var b=this.state.isAnimationFinished,w=pe("recharts-scatter",l),g=p&&p.allowDataOverflow,h=d&&d.allowDataOverflow,j=g||h,A=M(y)?this.id:y;return v.createElement($,{className:w,clipPath:j?"url(#clipPath-".concat(A,")"):null},g||h?v.createElement("defs",null,v.createElement("clipPath",{id:"clipPath-".concat(A)},v.createElement("rect",{x:g?c:c-u/2,y:h?m:m-f/2,width:g?u:u*2,height:h?f:f*2}))):null,o&&this.renderLine(),this.renderErrorBar(),v.createElement($,{key:"recharts-scatter-symbols"},this.renderSymbols()),(!x||b)&&We.renderCallByParent(this.props,s))}}],[{key:"getDerivedStateFromProps",value:function(r,i){return r.animationId!==i.prevAnimationId?{prevAnimationId:r.animationId,curPoints:r.points,prevPoints:i.curPoints}:r.points!==i.curPoints?{curPoints:r.points}:null}}])}(E.PureComponent);Y(De,"displayName","Scatter");Y(De,"defaultProps",{xAxisId:0,yAxisId:0,zAxisId:0,legendType:"circle",lineType:"joint",lineJointType:"linear",data:[],shape:"circle",hide:!1,isAnimationActive:!ze.isSsr,animationBegin:0,animationDuration:400,animationEasing:"linear"});Y(De,"getComposedData",function(e){var t=e.xAxis,n=e.yAxis,r=e.zAxis,i=e.item,s=e.displayedData,o=e.xAxisTicks,l=e.yAxisTicks,p=e.offset,d=i.props.tooltipType,c=Ke(i.props.children,Ut),m=M(t.dataKey)?i.props.dataKey:t.dataKey,u=M(n.dataKey)?i.props.dataKey:n.dataKey,f=r&&r.dataKey,y=r?r.range:ke.defaultProps.range,x=y&&y[0],b=t.scale.bandwidth?t.scale.bandwidth():0,w=n.scale.bandwidth?n.scale.bandwidth():0,g=s.map(function(h,j){var A=Q(h,m),O=Q(h,u),S=!M(f)&&Q(h,f)||"-",P=[{name:M(t.dataKey)?i.props.name:t.name||t.dataKey,unit:t.unit||"",value:A,payload:h,dataKey:m,type:d},{name:M(n.dataKey)?i.props.name:n.name||n.dataKey,unit:n.unit||"",value:O,payload:h,dataKey:u,type:d}];S!=="-"&&P.push({name:r.name||r.dataKey,unit:r.unit||"",value:S,payload:h,dataKey:f,type:d});var D=ne({axis:t,ticks:o,bandSize:b,entry:h,index:j,dataKey:m}),k=ne({axis:n,ticks:l,bandSize:w,entry:h,index:j,dataKey:u}),L=S!=="-"?r.scale(S):x,N=Math.sqrt(Math.max(L,0)/Math.PI);return B(B({},h),{},{cx:D,cy:k,x:D-N,y:k-N,xAxis:t,yAxis:n,zAxis:r,width:2*N,height:2*N,size:L,node:{x:A,y:O,z:S},tooltipPayload:P,tooltipPosition:{x:D,y:k},payload:h},c&&c[j]&&c[j].props)});return B({points:g},p)});var Ze=Jt({chartName:"ComposedChart",GraphicalChild:[ee,z,er,De],axisComponents:[{axisType:"xAxis",AxisComp:Pe},{axisType:"yAxis",AxisComp:Ee},{axisType:"zAxis",AxisComp:ke}],formatAxisMap:tr});const tn=()=>{const{user:e}=Se(),t=mt(),{data:n=null,isLoading:r,error:i}=be({queryKey:["user-progress",e?.id],queryFn:()=>_e.getUserProgress(),enabled:!!e,staleTime:0,refetchOnMount:"always",refetchOnWindowFocus:!0}),{data:s=0,isLoading:o}=be({queryKey:["words-learned",e?.id],queryFn:()=>_e.calculateWordsLearned(),enabled:!!e,staleTime:0,refetchOnMount:"always",refetchOnWindowFocus:!0}),l=async()=>{await Promise.all([t.invalidateQueries({queryKey:["user-progress",e?.id]}),t.invalidateQueries({queryKey:["words-learned",e?.id]})])},p=async()=>{if(e)try{await _e.fixUserProgress()||console.error("Failed to fix user progress"),await l()}catch(d){console.error("Error fixing user progress:",d)}};return{progress:n,wordsLearned:s,isLoading:r||o,error:i?String(i):null,refreshProgress:l,fixUserProgress:p}},rn=()=>{const{user:e}=Se(),t=mt(),{data:n=[],isLoading:r,error:i}=be({queryKey:["xp-progress",e?.id],queryFn:()=>Zt.getUserXPHistory(),enabled:!!e,staleTime:0,refetchOnMount:"always",refetchOnWindowFocus:!0}),s=n.length>0?n[n.length-1].cumulativeXP:0,o=async()=>{await t.invalidateQueries({queryKey:["xp-progress",e?.id]})};return{xpHistory:n,totalXP:s,isLoading:r,error:i?String(i):null,refreshXPProgress:o}},kt=864e5;function Xe(e,t,n){if(t==="all")return e;const r=Date.now()-(t==="30"?30:90)*kt;return e.filter(i=>n(i)>=r)}function qe(e){return e.length<8?!1:Math.max(...e)-Math.min(...e)>35*kt}const He=({value:e,onChange:t})=>{const{t:n}=X("progress"),r=["30","90","all"];return a.jsx("div",{className:"flex gap-1.5",role:"group","aria-label":n("growth.range.label"),children:r.map(i=>a.jsx("button",{type:"button","aria-pressed":e===i,onClick:()=>t(i),className:`text-xs font-medium rounded-full px-3 py-1 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-nature-forest ${e===i?"bg-nature-forest text-cream":"bg-nature-forest/10 text-nature-forest hover:bg-nature-forest/20"}`,children:n(`growth.range.${i}`)},i))})},nn=({active:e,payload:t,t:n})=>{if(!e||!t?.length)return null;const r=t[0].payload;return a.jsxs("div",{className:"bg-card border border-border rounded-lg p-3 shadow-lg max-w-xs",children:[r.storyThumbnail&&a.jsx("img",{src:r.storyThumbnail,alt:r.storyTitle,className:"w-full h-20 object-cover rounded-md mb-2"}),a.jsx("p",{className:"font-semibold text-ink",children:r.storyTitle}),a.jsx("p",{className:"text-sm text-muted-foreground",children:le(new Date(r.fullDate),"PPp")}),a.jsxs("div",{className:"mt-2 space-y-1",children:[a.jsxs("p",{className:"text-sm flex items-center gap-1",children:[a.jsx(pt,{className:"h-3 w-3 text-nature-forest"}),a.jsxs("span",{className:"text-nature-forest font-medium",children:["+",r.xpGained," XP"]}),a.jsx("span",{className:"text-muted-foreground",children:n("xpChart.tooltip.readNumber",{number:r.readNumber})})]}),a.jsx("p",{className:"text-sm text-muted-foreground",children:n("xpChart.tooltip.seslScore",{score:r.seslScore})}),a.jsx("p",{className:"text-sm font-medium text-ink",children:n("xpChart.tooltip.totalXP",{xp:r.totalXP})})]})]})},an=({heading:e,subtitle:t})=>{const{t:n}=X("progress"),{xpHistory:r,totalXP:i,isLoading:s,error:o}=rn(),[l,p]=E.useState("all"),d=E.useMemo(()=>r.map(f=>({timestamp:new Date(f.timestamp).getTime(),fullDate:f.timestamp,totalXP:f.cumulativeXP,storyTitle:f.storyTitle,storyThumbnail:f.storyThumbnail,xpGained:f.xpEarned,seslScore:f.seslScore,readNumber:f.readNumber})),[r]),c=E.useMemo(()=>Xe(d,l,f=>f.timestamp),[d,l]),m=E.useMemo(()=>qe(d.map(f=>f.timestamp)),[d]),u=a.jsxs("div",{className:"flex items-start justify-between gap-3 flex-wrap mb-4",children:[a.jsxs("div",{children:[a.jsx("h2",{className:"text-2xl font-bold text-ink mb-1",children:e}),a.jsx("p",{className:"text-sm text-muted-foreground mb-2 max-w-3xl",children:t}),a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(pt,{className:"h-5 w-5 text-nature-forest"}),a.jsx("span",{className:"text-2xl font-bold text-nature-forest tabular-nums",children:i}),a.jsx("span",{className:"text-muted-foreground",children:n("xpChart.totalLabel")})]})]}),m&&a.jsx(He,{value:l,onChange:p})]});return s?a.jsx("div",{className:"flex items-center justify-center h-64",children:a.jsx(Ct,{className:"h-8 w-8 animate-spin text-nature-forest"})}):o?a.jsx("div",{className:"flex items-center justify-center h-64 text-nature-red",children:o}):d.length===0?a.jsxs("div",{children:[a.jsx("h2",{className:"text-2xl font-bold text-ink mb-1",children:e}),a.jsxs("div",{className:"flex flex-col items-center justify-center h-48 text-muted-foreground",children:[a.jsx(ft,{className:"h-12 w-12 mb-4 opacity-50"}),a.jsx("p",{className:"text-lg font-medium",children:n("xpChart.empty.title")}),a.jsx("p",{className:"text-sm",children:n("xpChart.empty.subtitle")})]})]}):a.jsxs("div",{className:"w-full",children:[u,a.jsx("div",{className:"w-full",style:{height:340},children:a.jsx(Ge,{width:"100%",height:"100%",children:a.jsxs(Ze,{data:c,margin:{top:10,right:24,left:6,bottom:24},children:[a.jsx("defs",{children:a.jsxs("linearGradient",{id:"xpGradient",x1:"0",y1:"0",x2:"0",y2:"1",children:[a.jsx("stop",{offset:"5%",stopColor:"var(--nature-forest)",stopOpacity:.3}),a.jsx("stop",{offset:"95%",stopColor:"var(--nature-forest)",stopOpacity:0})]})}),a.jsx(nr,{strokeDasharray:"3 3",stroke:"hsl(var(--border))",opacity:.5}),a.jsx(Pe,{dataKey:"timestamp",type:"number",scale:"time",domain:["dataMin","dataMax"],tickFormatter:f=>le(new Date(f),"MMM dd"),stroke:"hsl(var(--muted-foreground))",fontSize:12,tickLine:!1,axisLine:{stroke:"hsl(var(--border))"}}),a.jsx(Ee,{domain:[0,"auto"],stroke:"hsl(var(--muted-foreground))",fontSize:12,tickLine:!1,axisLine:{stroke:"hsl(var(--border))"},tickFormatter:f=>`${Math.round(f)}`,allowDecimals:!1,width:40}),a.jsx(Ve,{content:a.jsx(nn,{t:n})}),a.jsx(z,{type:"monotone",dataKey:"totalXP",stroke:"none",fill:"url(#xpGradient)"}),a.jsx(ee,{type:"monotone",dataKey:"totalXP",stroke:"var(--nature-forest)",strokeWidth:2.5,dot:{fill:"var(--nature-forest)",strokeWidth:2,stroke:"var(--card)",r:4},activeDot:{r:6,fill:"var(--nature-forest)",stroke:"var(--card)",strokeWidth:2}})]})})})]})},C="https://cdn.storysparkle.org/badges",sn=`${C}/Scroll.webp`,on=`${C}/StackOfBooks.webp`,ln=`${C}/e-Reader.webp`,cn=`${C}/Hourglass.webp`,un=`${C}/Sundial.webp`,dn=`${C}/Clock.webp`,mn=`${C}/Torch.webp`,pn=`${C}/Candle.webp`,fn=`${C}/Lantern.webp`,hn=`${C}/Kite.webp`,yn=`${C}/HotAirBalloon.webp`,xn=`${C}/Airplane.webp`,gn={STORIES:{BRONZE:{image:sn,nameKey:"scroll"},SILVER:{image:on,nameKey:"books"},GOLD:{image:ln,nameKey:"eReader"}},TIME:{BRONZE:{image:cn,nameKey:"hourglass"},SILVER:{image:un,nameKey:"sundial"},GOLD:{image:dn,nameKey:"clock"}},STREAK:{BRONZE:{image:mn,nameKey:"torch"},SILVER:{image:pn,nameKey:"candle"},GOLD:{image:fn,nameKey:"lantern"}},WORDS:{BRONZE:{image:hn,nameKey:"kite"},SILVER:{image:yn,nameKey:"hotAirBalloon"},GOLD:{image:xn,nameKey:"airplane"}}},vn={STORIES:{BRONZE:3,SILVER:5,GOLD:10},TIME:{BRONZE:10,SILVER:30,GOLD:60},STREAK:{BRONZE:3,SILVER:5,GOLD:7},WORDS:{BRONZE:20,SILVER:40,GOLD:60}},Te=({src:e,alt:t,isEarned:n,level:r,nameKey:i,threshold:s,unit:o})=>{const{t:l}=X("progress"),p=l(`badge.names.${i}`),d=l(`badge.levels.${r}`),c=l("badge.requirement",{threshold:s,unit:o});return a.jsx(It,{children:a.jsxs(Kt,{children:[a.jsx(Mt,{asChild:!0,children:a.jsxs(G.div,{className:"flex flex-col items-center justify-start cursor-pointer",whileHover:{scale:n?1.05:1.02},transition:{type:"spring",stiffness:300},children:[a.jsx("span",{className:`text-xs md:text-sm font-medium mb-2 ${n?"text-nature-forest":"text-nature-forest/50"}`,children:d}),a.jsxs("div",{className:"relative",children:[n&&a.jsx(G.div,{className:"absolute inset-0 rounded-full",animate:{boxShadow:["0 0 10px 2px rgba(155, 135, 245, 0.3)","0 0 25px 8px rgba(155, 135, 245, 0.6)","0 0 10px 2px rgba(155, 135, 245, 0.3)"]},transition:{duration:2,repeat:1/0,ease:"easeInOut"}}),a.jsx("div",{className:`w-full max-w-[6rem] md:max-w-[7rem] lg:max-w-[8rem] aspect-square mx-auto ${n?"":"grayscale opacity-50"}`,children:a.jsx("img",{src:e,alt:t,className:"w-full h-full object-contain relative z-10"})})]})]})}),a.jsx(Wt,{children:a.jsxs("div",{className:"text-center",children:[a.jsx("p",{className:"font-semibold",children:p}),a.jsx("p",{className:"text-xs text-muted-foreground",children:c}),n&&a.jsx("p",{className:"text-xs text-nature-forest font-medium mt-1",children:l("badge.earned")})]})})]})})},xe=({icon:e,title:t,value:n,badge:r,nextThreshold:i,unit:s="",statType:o})=>{const{t:l}=X("progress"),p=r?n/i*100:n/(i||1)*100,d=vn[o],c=gn[o],m=n>=d.BRONZE,u=n>=d.SILVER,f=n>=d.GOLD;return a.jsx(G.div,{whileHover:{y:-5},transition:{type:"spring",stiffness:300},initial:{opacity:0,y:20},animate:{opacity:1,y:0},className:"w-full",children:a.jsxs(V,{className:"h-full",children:[a.jsxs(Z,{className:"pt-6",children:[a.jsxs("div",{className:"flex flex-col gap-4 sm:grid sm:grid-cols-4 sm:gap-4 sm:items-start mb-6",children:[a.jsxs("div",{className:"flex flex-col items-center text-center",children:[a.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-sm font-medium mb-2 text-muted-foreground",children:[e,a.jsx("span",{className:"line-clamp-2",children:t})]}),a.jsx("div",{className:"text-4xl md:text-5xl lg:text-6xl font-bold text-nature-forest leading-none",children:n}),a.jsx("div",{className:"text-sm md:text-base text-muted-foreground mt-1",children:s})]}),a.jsxs("div",{className:"grid grid-cols-3 gap-2 sm:contents",children:[a.jsx(Te,{src:c.BRONZE.image,alt:l(`badge.names.${c.BRONZE.nameKey}`),isEarned:m,level:"bronze",nameKey:c.BRONZE.nameKey,threshold:d.BRONZE,unit:s}),a.jsx(Te,{src:c.SILVER.image,alt:l(`badge.names.${c.SILVER.nameKey}`),isEarned:u,level:"silver",nameKey:c.SILVER.nameKey,threshold:d.SILVER,unit:s}),a.jsx(Te,{src:c.GOLD.image,alt:l(`badge.names.${c.GOLD.nameKey}`),isEarned:f,level:"gold",nameKey:c.GOLD.nameKey,threshold:d.GOLD,unit:s})]})]}),a.jsx(ar,{value:Math.min(100,p),className:"h-3 w-full bg-nature-coral/10 border border-nature-coral/40",indicatorColor:"bg-nature-coral"})]}),a.jsx($t,{className:"pt-2",children:a.jsxs("div",{className:"flex justify-between items-center w-full text-xs text-muted-foreground",children:[a.jsx("span",{children:r!=="GOLD"?l("stats.progress.nextBadgeAt",{threshold:i,unit:s}):l("stats.progress.maxAchieved")}),a.jsxs("span",{className:"font-medium",children:[Math.min(100,Math.round(p)),"%"]})]})})]})})},st=["A1","A2","B1","B2","C1","C2"],bn={very_easy:"rgb(var(--nature-forest-rgb) / 0.10)",easy:"rgb(var(--nature-forest-rgb) / 0.20)",medium:"rgb(var(--nature-honey-ink-rgb) / 0.14)",hard:"rgb(var(--nature-coral-rgb) / 0.16)",very_hard:"rgb(var(--nature-coral-rgb) / 0.28)"},ot={very_easy:"var(--nature-forest)",easy:"var(--nature-forest)",medium:"var(--nature-honey-ink)",hard:"var(--nature-coral)",very_hard:"var(--nature-coral)"},jn=({active:e,payload:t,t:n})=>{if(!e||!t?.length)return null;const r=t[0].payload;return a.jsxs("div",{className:"bg-card border border-border rounded-lg p-3 shadow-lg max-w-xs",children:[r.thumb&&a.jsx("img",{src:r.thumb,alt:r.title,className:"w-full h-20 object-cover rounded-md mb-2"}),a.jsx("p",{className:"font-semibold text-ink",children:r.title}),a.jsx("p",{className:"text-sm text-muted-foreground",children:le(new Date(r.ts),"PPp")}),a.jsxs("div",{className:"mt-2 space-y-1",children:[a.jsxs("p",{className:"text-sm font-medium text-nature-forest",children:[n(`growth.difficulty.${r.levelKey}`),r.cefr?` · ${r.cefr}`:""]}),a.jsx("p",{className:"text-sm text-muted-foreground",children:n("xpChart.tooltip.seslScore",{score:r.score})})]})]})},wn=({data:e,heading:t,subtitle:n})=>{const{t:r}=X("progress"),i=h=>r(`growth.difficulty.${h}`),[s,o]=E.useState("all"),l=E.useMemo(()=>e.filter(h=>h.seslScore!=null).map(h=>({ts:new Date(h.timestamp).getTime(),score:h.seslScore,cefr:h.cefrLevel,title:h.storyTitle,thumb:h.storyThumbnail,levelKey:ir(h.seslScore)})),[e]),p=E.useMemo(()=>Xe(l,s,h=>h.ts),[l,s]),d=E.useMemo(()=>qe(l.map(h=>h.ts)),[l]);if(l.length===0)return a.jsx(V,{children:a.jsxs(Z,{className:"p-4 md:p-6",children:[a.jsx("h2",{className:"text-2xl font-bold text-ink mb-1",children:t}),a.jsxs("div",{className:"flex flex-col items-center justify-center h-40 text-muted-foreground",children:[a.jsx(ft,{className:"h-9 w-9 mb-3 opacity-50"}),a.jsx("p",{className:"text-base font-medium",children:r("growth.level.empty.title")}),a.jsx("p",{className:"text-sm",children:r("growth.level.empty.subtitle")})]})]})});const c=[...new Set(l.map(h=>h.cefr).filter(Boolean))].sort((h,j)=>st.indexOf(h)-st.indexOf(j)),m=c.length?c.length>1?`${c[0]}–${c[c.length-1]}`:c[0]:null,u=800,f=Math.max(...l.map(h=>h.score)),y=0,x=f>u?1e3:u,b=Qe.filter(h=>h.minScore<x),w=Date.now()-30*24*3600*1e3,g=Qe.map(h=>({key:h.labelKey,count:l.filter(j=>j.ts>=w&&j.levelKey===h.labelKey).length})).filter(h=>h.count>0);return a.jsx(V,{children:a.jsxs(Z,{className:"p-4 md:p-6",children:[a.jsxs("div",{className:"flex items-start justify-between gap-3 flex-wrap mb-1",children:[a.jsx("h2",{className:"text-2xl font-bold text-ink",children:t}),d&&a.jsx(He,{value:s,onChange:o})]}),a.jsx("p",{className:"text-muted-foreground mb-3 max-w-3xl",children:n}),m&&a.jsxs("div",{className:"flex items-baseline gap-2 mb-3",children:[a.jsx("span",{className:"text-2xl font-bold text-nature-forest",children:m}),a.jsx("span",{className:"text-sm text-muted-foreground",children:r("growth.level.rangeCaption")})]}),a.jsx("div",{className:"w-full",style:{height:280},children:a.jsx(Ge,{width:"100%",height:"100%",children:a.jsxs(Ze,{data:p,margin:{top:8,right:16,left:6,bottom:24},children:[a.jsx("defs",{children:a.jsxs("linearGradient",{id:"lvlGrad",x1:"0",y1:"0",x2:"0",y2:"1",children:[a.jsx("stop",{offset:"5%",stopColor:"var(--nature-forest)",stopOpacity:.28}),a.jsx("stop",{offset:"95%",stopColor:"var(--nature-forest)",stopOpacity:0})]})}),b.map(h=>a.jsx(rr,{y1:Math.max(h.minScore,y),y2:Math.min(h.maxScore,x),fill:bn[h.labelKey],fillOpacity:1,stroke:"none",ifOverflow:"hidden",label:{value:i(h.labelKey),position:"insideBottomLeft",fill:ot[h.labelKey],fontSize:11}},h.labelKey)),a.jsx(Pe,{dataKey:"ts",type:"number",scale:"time",domain:["dataMin","dataMax"],tickFormatter:h=>le(new Date(h),"MMM dd"),stroke:"hsl(var(--muted-foreground))",fontSize:12,tickLine:!1,axisLine:{stroke:"hsl(var(--border))"}}),a.jsx(Ee,{domain:[y,x],stroke:"hsl(var(--muted-foreground))",fontSize:12,tickLine:!1,axisLine:{stroke:"hsl(var(--border))"},width:44,label:{value:r("growth.level.yAxis"),angle:-90,position:"insideLeft",style:{fill:"hsl(var(--muted-foreground))",fontSize:11,textAnchor:"middle"}}}),a.jsx(Ve,{content:a.jsx(jn,{t:r})}),a.jsx(z,{type:"monotone",dataKey:"score",stroke:"none",fill:"url(#lvlGrad)"}),a.jsx(ee,{type:"monotone",dataKey:"score",stroke:"var(--nature-forest)",strokeWidth:2.5,dot:{fill:"var(--nature-forest)",strokeWidth:2,stroke:"var(--card)",r:4},activeDot:{r:6,fill:"var(--nature-forest)",stroke:"var(--card)",strokeWidth:2}})]})})}),g.length>0&&a.jsxs("div",{className:"flex flex-wrap gap-x-4 gap-y-1 mt-3 text-sm text-muted-foreground",children:[a.jsx("span",{className:"font-medium text-ink",children:r("growth.level.thisMonth")}),g.map(h=>a.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[a.jsx("span",{className:"w-3 h-3 rounded-sm",style:{background:ot[h.key]}}),h.count," ",i(h.key).toLowerCase()]},h.key))]})]})})},lt=30,ct=["rgb(var(--nature-forest-rgb) / 0.08)","rgb(var(--nature-forest-rgb) / 0.32)","rgb(var(--nature-forest-rgb) / 0.60)","var(--nature-forest)"],ut=e=>String(e).padStart(2,"0"),dt=e=>`${e.getFullYear()}-${ut(e.getMonth()+1)}-${ut(e.getDate())}`,An=({data:e,heading:t})=>{const{t:n}=X("progress"),r=n("growth.habit.weekdays",{returnObjects:!0}),i=E.useRef(null),[s,o]=E.useState(null),{cells:l,daysRead:p}=E.useMemo(()=>{const u=new Map;for(const j of e){const A=dt(new Date(j.timestamp));u.has(A)||u.set(A,[]),u.get(A).push({title:j.storyTitle,thumb:j.storyThumbnail})}const f=new Date;f.setHours(0,0,0,0);const y=new Date(f);y.setDate(y.getDate()-(lt-1));const x=new Date(f);x.setDate(x.getDate()-34);const b=(x.getDay()+6)%7;x.setDate(x.getDate()-b);const w=[];let g=0;const h=new Date(x);for(;h<=f;){const j=u.get(dt(h))||[],A=h>=y;A&&j.length>0&&g++;const O=j.length;w.push({level:O===0?0:O===1?1:O===2?2:3,muted:!A,dateLabel:h.toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric"}),stories:j}),h.setDate(h.getDate()+1)}return{cells:w,daysRead:g}},[e]),d=(u,f)=>{const y=i.current;if(!y)return;const b=document.elementFromPoint(u,f)?.closest("[data-day-index]");if(!b||!y.contains(b))return o(null);const w=Number(b.dataset.dayIndex);if(!l[w]||l[w].stories.length===0)return o(null);const g=y.getBoundingClientRect(),h=b.getBoundingClientRect(),j=100,A=Math.max(j,Math.min(g.width-j,h.left-g.left+h.width/2));o({i:w,x:A,y:h.top-g.top,h:h.height,below:Math.floor(w/7)<=1})},c=()=>o(null);if(e.length===0)return a.jsx(V,{children:a.jsxs(Z,{className:"p-4 md:p-6",children:[a.jsx("h2",{className:"text-2xl font-bold text-ink mb-1",children:t}),a.jsxs("div",{className:"flex flex-col items-center justify-center h-40 text-muted-foreground",children:[a.jsx(sr,{className:"h-9 w-9 mb-3 opacity-50"}),a.jsx("p",{className:"text-base font-medium",children:n("growth.habit.empty.title")}),a.jsx("p",{className:"text-sm",children:n("growth.habit.empty.subtitle")})]})]})});const m=s?l[s.i]:null;return a.jsx(V,{className:"h-full",children:a.jsxs(Z,{className:"p-4 md:p-6",children:[a.jsx("h2",{className:"text-2xl font-bold text-ink mb-1",children:t}),a.jsxs("p",{className:"text-sm text-muted-foreground mb-4 max-w-3xl",children:[n("growth.habit.heading",{days:p,total:lt})," · ",n("growth.habit.subtitle")]}),a.jsxs("div",{className:"flex flex-col lg:flex-row lg:items-start gap-6",children:[a.jsxs("div",{className:"w-full lg:max-w-md",children:[a.jsx("div",{className:"grid grid-cols-7 gap-1.5 mb-1.5","aria-hidden":"true",children:r.map((u,f)=>a.jsx("span",{className:"text-[9px] text-muted-foreground text-center",children:u},f))}),a.jsxs("div",{ref:i,className:"relative grid grid-cols-7 gap-1.5",style:{touchAction:"none"},onPointerDown:u=>d(u.clientX,u.clientY),onPointerMove:u=>d(u.clientX,u.clientY),onPointerUp:c,onPointerCancel:c,onPointerLeave:c,children:[l.map((u,f)=>a.jsx("div",{"data-day-index":f,"aria-label":u.stories.length?`${u.dateLabel}: ${u.stories.map(y=>y.title).join(", ")}`:void 0,className:"aspect-square rounded",style:{background:ct[u.level],opacity:u.muted?.4:1}},f)),s&&m&&a.jsxs("div",{className:"absolute z-20 pointer-events-none bg-card border border-border rounded-lg p-2.5 shadow-lg w-[200px]",style:{left:s.x,top:s.below?s.y+s.h:s.y,transform:s.below?"translate(-50%, 8px)":"translate(-50%, calc(-100% - 8px))"},children:[a.jsx("p",{className:"font-semibold text-xs mb-1.5 text-ink",children:m.dateLabel}),a.jsx("div",{className:"space-y-1.5",children:m.stories.map((u,f)=>a.jsxs("div",{className:"flex items-center gap-2 text-xs text-ink",children:[u.thumb&&a.jsx("img",{src:u.thumb,alt:"",className:"w-6 h-6 rounded object-cover flex-shrink-0"}),a.jsx("span",{className:"line-clamp-1",children:u.title})]},f))})]})]})]}),a.jsxs("div",{className:"lg:flex-1 lg:pt-1",children:[a.jsxs("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground mb-3",children:[a.jsx("span",{children:n("growth.habit.legend.fewer")}),ct.map((u,f)=>a.jsx("span",{className:"w-3.5 h-3.5 rounded",style:{background:u}},f)),a.jsx("span",{children:n("growth.habit.legend.more")})]}),a.jsx("p",{className:"text-sm text-muted-foreground max-w-sm",children:n("growth.habit.legend.note")})]})]})]})})},On=({active:e,payload:t,t:n})=>{if(!e||!t?.length)return null;const r=t[0].payload;return a.jsxs("div",{className:"bg-card border border-border rounded-lg p-3 shadow-lg max-w-xs",children:[r.thumb&&a.jsx("img",{src:r.thumb,alt:r.title,className:"w-full h-20 object-cover rounded-md mb-2"}),a.jsx("p",{className:"font-semibold text-ink",children:r.title}),a.jsx("p",{className:"text-sm text-muted-foreground",children:le(new Date(r.ts),"PPp")}),a.jsxs("div",{className:"mt-2 space-y-1",children:[a.jsx("p",{className:"text-sm font-medium text-nature-forest",children:n("growth.mileage.tooltip.gained",{words:r.words.toLocaleString()})}),a.jsx("p",{className:"text-sm text-muted-foreground",children:n("growth.mileage.tooltip.total",{words:r.cumWords.toLocaleString()})})]})]})},Nn=({data:e,heading:t})=>{const{t:n}=X("progress"),[r,i]=E.useState("all"),{totalWords:s,stories:o,reads:l,allPoints:p}=E.useMemo(()=>{let m=0;const u=new Set,f=e.map(y=>(m+=y.wordCount||0,u.add(y.storyId),{ts:new Date(y.timestamp).getTime(),cumWords:m,words:y.wordCount||0,title:y.storyTitle,thumb:y.storyThumbnail}));return{totalWords:m,stories:u.size,reads:e.length,allPoints:f}},[e]),d=E.useMemo(()=>Xe(p,r,m=>m.ts),[p,r]),c=E.useMemo(()=>qe(p.map(m=>m.ts)),[p]);return e.length===0||s===0?a.jsx(V,{children:a.jsxs(Z,{className:"p-4 md:p-6",children:[a.jsx("h2",{className:"text-2xl font-bold text-ink mb-1",children:t}),a.jsxs("div",{className:"flex flex-col items-center justify-center h-40 text-muted-foreground",children:[a.jsx(dr,{className:"h-9 w-9 mb-3 opacity-50"}),a.jsx("p",{className:"text-base font-medium",children:n("growth.mileage.empty.title")}),a.jsx("p",{className:"text-sm",children:n("growth.mileage.empty.subtitle")})]})]})}):a.jsx(V,{children:a.jsxs(Z,{className:"p-4 md:p-6",children:[a.jsxs("div",{className:"flex items-start justify-between gap-3 flex-wrap mb-1",children:[a.jsx("h2",{className:"text-2xl font-bold text-ink",children:t}),c&&a.jsx(He,{value:r,onChange:i})]}),a.jsx("p",{className:"text-muted-foreground mb-3 max-w-3xl",children:n("growth.mileage.subtitle")}),a.jsxs("div",{className:"flex items-baseline gap-2 flex-wrap",children:[a.jsx("span",{className:"text-4xl font-bold text-nature-forest leading-none tabular-nums",children:s.toLocaleString()}),a.jsx("span",{className:"text-lg font-medium text-muted-foreground",children:n("growth.mileage.wordsRead")})]}),a.jsx("div",{className:"text-sm text-muted-foreground mt-1",children:n("growth.mileage.detail",{stories:o,reads:l})}),a.jsx("div",{className:"w-full mt-4",style:{height:200},children:a.jsx(Ge,{width:"100%",height:"100%",children:a.jsxs(Ze,{data:d,margin:{top:8,right:24,left:6,bottom:24},children:[a.jsx("defs",{children:a.jsxs("linearGradient",{id:"mileGrad",x1:"0",y1:"0",x2:"0",y2:"1",children:[a.jsx("stop",{offset:"5%",stopColor:"var(--nature-forest)",stopOpacity:.25}),a.jsx("stop",{offset:"95%",stopColor:"var(--nature-forest)",stopOpacity:0})]})}),a.jsx(Pe,{dataKey:"ts",type:"number",scale:"time",domain:["dataMin","dataMax"],tickFormatter:m=>le(new Date(m),"MMM dd"),stroke:"hsl(var(--muted-foreground))",fontSize:12,tickLine:!1,axisLine:{stroke:"hsl(var(--border))"}}),a.jsx(Ee,{domain:[0,"dataMax"],stroke:"hsl(var(--muted-foreground))",fontSize:12,tickLine:!1,axisLine:{stroke:"hsl(var(--border))"},width:48,tickFormatter:m=>m>=1e3?`${Math.round(m/1e3)}k`:`${m}`}),a.jsx(Ve,{content:a.jsx(On,{t:n})}),a.jsx(z,{type:"monotone",dataKey:"cumWords",stroke:"none",fill:"url(#mileGrad)"}),a.jsx(ee,{type:"monotone",dataKey:"cumWords",stroke:"var(--nature-forest)",strokeWidth:2.5,dot:{fill:"var(--nature-forest)",strokeWidth:2,stroke:"var(--card)",r:4},activeDot:{r:6,fill:"var(--nature-forest)",stroke:"var(--card)",strokeWidth:2}})]})})})]})})};async function Sn(){const{data:{user:e}}=await Ue.auth.getUser();if(!e)return[];const{data:t,error:n}=await Ue.from("user_xp_events").select("events, created_at, story_id, stories(title, thumbnail, sesl_score, cefr_level, word_count)").eq("user_id",e.id).order("created_at",{ascending:!0});if(n||!t)return[];const r=[];for(const i of t){const s=i.stories;if(!s)continue;const o=[];i.events&&typeof i.events=="string"&&i.events.trim().length>0&&o.push(...i.events.split(",").map(l=>l.trim()).filter(Boolean)),o.length===0&&i.created_at&&o.push(i.created_at);for(const l of o)r.push({timestamp:l,storyId:i.story_id,seslScore:s.sesl_score??null,cefrLevel:s.cefr_level??null,wordCount:s.word_count??null,storyTitle:s.title||"Unknown",storyThumbnail:s.thumbnail||null})}return r.sort((i,s)=>new Date(i.timestamp).getTime()-new Date(s.timestamp).getTime()),r}function Pn(){const{user:e}=Se(),{data:t=[],isLoading:n,error:r}=be({queryKey:["reading-growth",e?.id],queryFn:Sn,enabled:!!e,staleTime:0,refetchOnMount:"always"});return{reads:t,isLoading:n,error:r?String(r):null}}const Dt={STORIES:{BRONZE:3,SILVER:5,GOLD:10},TIME:{BRONZE:10,SILVER:30,GOLD:60},STREAK:{BRONZE:3,SILVER:5,GOLD:7},WORDS:{BRONZE:20,SILVER:40,GOLD:60}},ge=(e,t)=>{const n=Dt[t];return e>=n.GOLD?"GOLD":e>=n.SILVER?"SILVER":e>=n.BRONZE?"BRONZE":null},ve=(e,t)=>{const n=Dt[t];return e<n.BRONZE?n.BRONZE:e<n.SILVER?n.SILVER:(e<n.GOLD,n.GOLD)},qn=()=>{const{t:e}=X("progress"),{t}=X("navbar"),{user:n,isLoading:r}=Se(),{getLocalizedPath:i}=zt(),{progress:s,wordsLearned:o,isLoading:l,error:p}=tn(),{reads:d}=Pn(),c=v.useMemo(()=>{const g=n?.user_metadata,h=g?.display_name||g?.name||g?.full_name||"";return String(h).trim().split(/\s+/)[0]||null},[n]),m=(g,h)=>c?e(g,{name:c}):e(h);if(r||n&&l)return a.jsxs("div",{className:"container pt-4 pb-6 md:pt-6 md:pb-8",children:[a.jsx(Le,{title:e("meta.title"),description:e("meta.description"),canonical:"/progress"}),a.jsx("h1",{className:"text-[22px] lg:text-[32px] font-bold mb-2 text-ink",children:e("pageTitle")}),a.jsx("p",{className:"text-muted-foreground mb-8",children:e("loading")}),a.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 mb-8",children:[1,2,3,4].map(g=>a.jsx(V,{children:a.jsxs(Z,{className:"p-6",children:[a.jsx(he,{className:"h-6 w-24 mb-4"}),a.jsx(he,{className:"h-12 w-12 rounded-full mb-4"}),a.jsx(he,{className:"h-4 w-full mb-2"}),a.jsx(he,{className:"h-4 w-3/4"})]})},g))})]});if(!n)return a.jsx(Rt,{to:i("/login"),replace:!0});if(p)return a.jsxs("div",{className:"container pt-4 pb-6 md:pt-6 md:pb-8",children:[a.jsx(Le,{title:e("meta.title"),description:e("meta.description"),canonical:"/progress"}),a.jsx("h1",{className:"text-[22px] lg:text-[32px] font-bold mb-2 text-ink",children:e("pageTitle")}),a.jsxs("p",{className:"text-nature-red mb-8",children:[e("error.title")," ",p]}),a.jsx(Ft,{onClick:()=>window.location.reload(),children:e("error.tryAgain")})]});const u=new Set(d.map(g=>g.storyId)).size,f=ge(u,"STORIES"),y=ge(s?.readingTimeMinutes||0,"TIME"),x=ge(s?.currentStreak||0,"STREAK"),b=ge(o||0,"WORDS"),w=[{name:t("home"),path:"/"},{name:t("stories"),path:"/stories"},{name:t("progress"),path:"/progress"}];return a.jsx("div",{className:"min-h-screen bg-page-surface",children:a.jsxs("div",{className:"container pt-4 pb-6 md:pt-6 md:pb-8",children:[a.jsx(Le,{title:e("meta.title"),description:e("meta.description"),canonical:"/progress"}),a.jsx(Xt,{items:w}),a.jsx(G.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},className:"mb-8",children:a.jsxs("div",{className:"flex flex-col lg:flex-row items-center justify-center gap-3 md:gap-6 lg:gap-8",children:[a.jsx("div",{className:"w-24 h-24 lg:w-32 lg:h-32 flex-shrink-0",children:a.jsx(G.div,{animate:{y:[0,-8,0]},transition:{duration:3,repeat:1/0,ease:"easeInOut"},children:a.jsx("img",{src:"https://cdn.storysparkle.org/ui_elements/Hero%20Icons/Progress.webp",alt:"Reading Progress",className:"w-full h-full object-contain drop-shadow-2xl"})})}),a.jsxs("div",{className:"flex flex-col items-center lg:items-start text-center lg:text-left mt-2 lg:mt-0",children:[a.jsx("h1",{className:"text-[22px] lg:text-[32px] font-bold mb-4 text-ink",children:c?e("pageTitleNamed",{name:c}):e("pageTitle")}),a.jsx("p",{className:"text-sm lg:text-xl text-muted-foreground",children:e("pageSubtitle")}),a.jsx(Gt,{slug:"track-reading-progress",className:"mt-3"})]})]})}),a.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4 mb-4",children:[a.jsx(xe,{icon:a.jsx(Vt,{className:"h-6 w-6 text-nature-purple"}),title:e("stats.storiesRead"),value:u,badge:f,nextThreshold:ve(u,"STORIES"),unit:e("stats.units.stories"),statType:"STORIES"}),a.jsx(xe,{icon:a.jsx(or,{className:"h-6 w-6 text-nature-purple"}),title:e("stats.readingTime"),value:Math.round(s?.readingTimeMinutes||0),badge:y,nextThreshold:ve(s?.readingTimeMinutes||0,"TIME"),unit:e("stats.units.minutes"),statType:"TIME"})]}),a.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4 mb-8",children:[a.jsx(xe,{icon:a.jsx(lr,{className:"h-6 w-6 text-nature-purple"}),title:e("stats.currentStreak"),value:s?.currentStreak||0,badge:x,nextThreshold:ve(s?.currentStreak||0,"STREAK"),unit:e("stats.units.days"),statType:"STREAK"}),a.jsx(xe,{icon:a.jsx(cr,{className:"h-6 w-6 text-nature-purple"}),title:e("stats.wordsLearned"),value:o||0,badge:b,nextThreshold:ve(o||0,"WORDS"),unit:e("stats.units.words"),statType:"WORDS"})]}),a.jsx(G.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.25,duration:.5},className:"mb-8",children:a.jsx(V,{children:a.jsx(Z,{className:"p-4 md:p-6",children:a.jsx(an,{heading:m("growth.journey.headingNamed","growth.journey.heading"),subtitle:m("growth.journey.subtitleNamed","growth.journey.subtitle")})})})}),a.jsx(G.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.35,duration:.5},className:"mb-4",children:a.jsx(wn,{data:d,heading:m("growth.level.headingNamed","growth.level.heading"),subtitle:m("growth.level.subtitleNamed","growth.level.subtitle")})}),a.jsx(G.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.4,duration:.5},className:"mb-4",children:a.jsx(An,{data:d,heading:m("growth.habit.titleNamed","growth.habit.title")})}),a.jsx(G.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.45,duration:.5},className:"mb-8",children:a.jsx(Nn,{data:d,heading:m("growth.mileage.headingNamed","growth.mileage.heading")})})]})})};export{qn as default};