@tribepad/themis 1.5.8 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/dist/elements/AlertDialog/index.js +1 -1
- package/dist/elements/AlertDialog/index.js.map +1 -1
- package/dist/elements/AlertDialog/index.mjs +1 -1
- package/dist/elements/AlertDialog/index.mjs.map +1 -1
- package/dist/elements/Badge/index.js +1 -1
- package/dist/elements/Badge/index.js.map +1 -1
- package/dist/elements/Badge/index.mjs +1 -1
- package/dist/elements/Badge/index.mjs.map +1 -1
- package/dist/elements/Breadcrumbs/index.js +1 -1
- package/dist/elements/Breadcrumbs/index.js.map +1 -1
- package/dist/elements/Breadcrumbs/index.mjs +1 -1
- package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
- package/dist/elements/Button/index.js +1 -1
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/index.mjs +1 -1
- package/dist/elements/Button/index.mjs.map +1 -1
- package/dist/elements/Card/index.js +1 -1
- package/dist/elements/Card/index.js.map +1 -1
- package/dist/elements/Card/index.mjs +1 -1
- package/dist/elements/Card/index.mjs.map +1 -1
- package/dist/elements/Carousel/index.js +1 -1
- package/dist/elements/Carousel/index.js.map +1 -1
- package/dist/elements/Carousel/index.mjs +1 -1
- package/dist/elements/Carousel/index.mjs.map +1 -1
- package/dist/elements/Chart/index.js +1 -1
- package/dist/elements/Chart/index.js.map +1 -1
- package/dist/elements/Chart/index.mjs +1 -1
- package/dist/elements/Chart/index.mjs.map +1 -1
- package/dist/elements/ChatInterface/index.js +1 -1
- package/dist/elements/ChatInterface/index.js.map +1 -1
- package/dist/elements/ChatInterface/index.mjs +1 -1
- package/dist/elements/ChatInterface/index.mjs.map +1 -1
- package/dist/elements/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/elements/Checkbox/index.js +1 -1
- package/dist/elements/Checkbox/index.js.map +1 -1
- package/dist/elements/Checkbox/index.mjs +1 -1
- package/dist/elements/Checkbox/index.mjs.map +1 -1
- package/dist/elements/CheckboxGroup/index.js +1 -1
- package/dist/elements/CheckboxGroup/index.js.map +1 -1
- package/dist/elements/CheckboxGroup/index.mjs +1 -1
- package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
- package/dist/elements/ColorPicker/index.js +1 -1
- package/dist/elements/ColorPicker/index.js.map +1 -1
- package/dist/elements/ColorPicker/index.mjs +1 -1
- package/dist/elements/ColorPicker/index.mjs.map +1 -1
- package/dist/elements/Combobox/Combobox.styles.d.ts.map +1 -1
- package/dist/elements/Combobox/index.js +1 -1
- package/dist/elements/Combobox/index.js.map +1 -1
- package/dist/elements/Combobox/index.mjs +1 -1
- package/dist/elements/Combobox/index.mjs.map +1 -1
- package/dist/elements/DatePicker/index.js +1 -1
- package/dist/elements/DatePicker/index.js.map +1 -1
- package/dist/elements/DatePicker/index.mjs +1 -1
- package/dist/elements/DatePicker/index.mjs.map +1 -1
- package/dist/elements/Dropdown/index.js +1 -1
- package/dist/elements/Dropdown/index.js.map +1 -1
- package/dist/elements/Dropdown/index.mjs +1 -1
- package/dist/elements/Dropdown/index.mjs.map +1 -1
- package/dist/elements/FileField/index.js +1 -1
- package/dist/elements/FileField/index.js.map +1 -1
- package/dist/elements/FileField/index.mjs +1 -1
- package/dist/elements/FileField/index.mjs.map +1 -1
- package/dist/elements/Filters/AppliedFilters.d.ts +4 -0
- package/dist/elements/Filters/AppliedFilters.d.ts.map +1 -0
- package/dist/elements/Filters/FilterPopover.d.ts +33 -0
- package/dist/elements/Filters/FilterPopover.d.ts.map +1 -0
- package/dist/elements/Filters/Filters.d.ts +25 -0
- package/dist/elements/Filters/Filters.d.ts.map +1 -0
- package/dist/elements/Filters/Filters.styles.d.ts +24 -0
- package/dist/elements/Filters/Filters.styles.d.ts.map +1 -0
- package/dist/elements/Filters/Filters.types.d.ts +123 -0
- package/dist/elements/Filters/Filters.types.d.ts.map +1 -0
- package/dist/elements/Filters/FiltersContext.d.ts +36 -0
- package/dist/elements/Filters/FiltersContext.d.ts.map +1 -0
- package/dist/elements/Filters/index.css +2 -0
- package/dist/elements/Filters/index.css.map +1 -0
- package/dist/elements/Filters/index.d.ts +26 -0
- package/dist/elements/Filters/index.d.ts.map +1 -0
- package/dist/elements/Filters/index.js +3 -0
- package/dist/elements/Filters/index.js.map +1 -0
- package/dist/elements/Filters/index.mjs +3 -0
- package/dist/elements/Filters/index.mjs.map +1 -0
- package/dist/elements/Modal/Modal.styles.d.ts.map +1 -1
- package/dist/elements/Modal/index.js +1 -1
- package/dist/elements/Modal/index.js.map +1 -1
- package/dist/elements/Modal/index.mjs +1 -1
- package/dist/elements/Modal/index.mjs.map +1 -1
- package/dist/elements/NumberField/index.js +1 -1
- package/dist/elements/NumberField/index.js.map +1 -1
- package/dist/elements/NumberField/index.mjs +1 -1
- package/dist/elements/NumberField/index.mjs.map +1 -1
- package/dist/elements/PageTitle/PageTitle.d.ts.map +1 -1
- package/dist/elements/PageTitle/PageTitle.styles.d.ts.map +1 -1
- package/dist/elements/PageTitle/index.js +1 -1
- package/dist/elements/PageTitle/index.js.map +1 -1
- package/dist/elements/PageTitle/index.mjs +1 -1
- package/dist/elements/PageTitle/index.mjs.map +1 -1
- package/dist/elements/Pagination/index.js +1 -1
- package/dist/elements/Pagination/index.js.map +1 -1
- package/dist/elements/Pagination/index.mjs +1 -1
- package/dist/elements/Pagination/index.mjs.map +1 -1
- package/dist/elements/Panel/Panel.d.ts.map +1 -1
- package/dist/elements/Panel/index.js +1 -1
- package/dist/elements/Panel/index.js.map +1 -1
- package/dist/elements/Panel/index.mjs +1 -1
- package/dist/elements/Panel/index.mjs.map +1 -1
- package/dist/elements/PasswordField/PasswordField.types.d.ts +34 -34
- package/dist/elements/PasswordField/index.js +1 -1
- package/dist/elements/PasswordField/index.js.map +1 -1
- package/dist/elements/PasswordField/index.mjs +1 -1
- package/dist/elements/PasswordField/index.mjs.map +1 -1
- package/dist/elements/RadioGroup/index.js +1 -1
- package/dist/elements/RadioGroup/index.js.map +1 -1
- package/dist/elements/RadioGroup/index.mjs +1 -1
- package/dist/elements/RadioGroup/index.mjs.map +1 -1
- package/dist/elements/RatingScale/RatingScale.styles.d.ts.map +1 -1
- package/dist/elements/RatingScale/index.js +1 -1
- package/dist/elements/RatingScale/index.js.map +1 -1
- package/dist/elements/RatingScale/index.mjs +1 -1
- package/dist/elements/RatingScale/index.mjs.map +1 -1
- package/dist/elements/Resizable/components/ResizablePopover.d.ts.map +1 -1
- package/dist/elements/Resizable/index.js +1 -1
- package/dist/elements/Resizable/index.js.map +1 -1
- package/dist/elements/Resizable/index.mjs +1 -1
- package/dist/elements/Resizable/index.mjs.map +1 -1
- package/dist/elements/SearchField/index.js +1 -1
- package/dist/elements/SearchField/index.js.map +1 -1
- package/dist/elements/SearchField/index.mjs +1 -1
- package/dist/elements/SearchField/index.mjs.map +1 -1
- package/dist/elements/Select/Select.styles.d.ts.map +1 -1
- package/dist/elements/Select/index.js +1 -1
- package/dist/elements/Select/index.js.map +1 -1
- package/dist/elements/Select/index.mjs +1 -1
- package/dist/elements/Select/index.mjs.map +1 -1
- package/dist/elements/Sidebar/Sidebar.styles.d.ts +34 -3
- package/dist/elements/Sidebar/Sidebar.styles.d.ts.map +1 -1
- package/dist/elements/Sidebar/Sidebar.types.d.ts +6 -0
- package/dist/elements/Sidebar/Sidebar.types.d.ts.map +1 -1
- package/dist/elements/Sidebar/SidebarPanel.d.ts.map +1 -1
- package/dist/elements/Sidebar/SidebarRail.d.ts.map +1 -1
- package/dist/elements/Sidebar/index.js +1 -1
- package/dist/elements/Sidebar/index.js.map +1 -1
- package/dist/elements/Sidebar/index.mjs +1 -1
- package/dist/elements/Sidebar/index.mjs.map +1 -1
- package/dist/elements/SituationalJudgement/index.js +1 -1
- package/dist/elements/SituationalJudgement/index.js.map +1 -1
- package/dist/elements/SituationalJudgement/index.mjs +1 -1
- package/dist/elements/SituationalJudgement/index.mjs.map +1 -1
- package/dist/elements/Switch/index.js +1 -1
- package/dist/elements/Switch/index.js.map +1 -1
- package/dist/elements/Switch/index.mjs +1 -1
- package/dist/elements/Switch/index.mjs.map +1 -1
- package/dist/elements/Table/BulkActionBar.d.ts +5 -0
- package/dist/elements/Table/BulkActionBar.d.ts.map +1 -0
- package/dist/elements/Table/BulkActionBar.styles.d.ts +17 -0
- package/dist/elements/Table/BulkActionBar.styles.d.ts.map +1 -0
- package/dist/elements/Table/BulkActionBar.types.d.ts +136 -0
- package/dist/elements/Table/BulkActionBar.types.d.ts.map +1 -0
- package/dist/elements/Table/Table.d.ts.map +1 -1
- package/dist/elements/Table/Table.styles.d.ts +2 -2
- package/dist/elements/Table/Table.styles.d.ts.map +1 -1
- package/dist/elements/Table/Table.types.d.ts +14 -4
- package/dist/elements/Table/Table.types.d.ts.map +1 -1
- package/dist/elements/Table/TableCardList.d.ts +25 -0
- package/dist/elements/Table/TableCardList.d.ts.map +1 -0
- package/dist/elements/Table/TableCardList.styles.d.ts +15 -0
- package/dist/elements/Table/TableCardList.styles.d.ts.map +1 -0
- package/dist/elements/Table/TableCardList.types.d.ts +48 -0
- package/dist/elements/Table/TableCardList.types.d.ts.map +1 -0
- package/dist/elements/Table/index.d.ts +9 -0
- package/dist/elements/Table/index.d.ts.map +1 -1
- package/dist/elements/Table/index.js +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/Table/index.mjs +1 -1
- package/dist/elements/Table/index.mjs.map +1 -1
- package/dist/elements/Table/resolveSelectedCount.d.ts +20 -0
- package/dist/elements/Table/resolveSelectedCount.d.ts.map +1 -0
- package/dist/elements/Table/useBulkActionShortcut.d.ts +29 -0
- package/dist/elements/Table/useBulkActionShortcut.d.ts.map +1 -0
- package/dist/elements/Tabs/Tabs.d.ts.map +1 -1
- package/dist/elements/Tabs/index.js +1 -1
- package/dist/elements/Tabs/index.js.map +1 -1
- package/dist/elements/Tabs/index.mjs +1 -1
- package/dist/elements/Tabs/index.mjs.map +1 -1
- package/dist/elements/TextField/TextField.types.d.ts +68 -68
- package/dist/elements/TextField/index.js +1 -1
- package/dist/elements/TextField/index.js.map +1 -1
- package/dist/elements/TextField/index.mjs +1 -1
- package/dist/elements/TextField/index.mjs.map +1 -1
- package/dist/elements/Toast/Toast.d.ts.map +1 -1
- package/dist/elements/Toast/index.js +1 -1
- package/dist/elements/Toast/index.js.map +1 -1
- package/dist/elements/Toast/index.mjs +1 -1
- package/dist/elements/Toast/index.mjs.map +1 -1
- package/dist/elements/Tooltip/index.js +1 -1
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Tooltip/index.mjs +1 -1
- package/dist/elements/Tooltip/index.mjs.map +1 -1
- package/dist/elements/Wizard/index.js +1 -1
- package/dist/elements/Wizard/index.js.map +1 -1
- package/dist/elements/Wizard/index.mjs +1 -1
- package/dist/elements/Wizard/index.mjs.map +1 -1
- package/dist/elements/index.d.ts +4 -1
- package/dist/elements/index.d.ts.map +1 -1
- package/dist/elements/index.js +1 -1
- package/dist/elements/index.js.map +1 -1
- package/dist/elements/index.mjs +1 -1
- package/dist/elements/index.mjs.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +1 -1
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/hooks/useContainerNarrow.d.ts +15 -0
- package/dist/hooks/useContainerNarrow.d.ts.map +1 -0
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/styles/defaults.css +15 -0
- package/dist/styles/index.js +1 -1
- package/dist/styles/index.js.map +1 -1
- package/dist/styles/index.mjs +1 -1
- package/dist/styles/index.mjs.map +1 -1
- package/dist/styles/interaction-states.d.ts +2 -2
- package/dist/styles/interaction-states.d.ts.map +1 -1
- package/package.json +6 -1
- package/src/elements/Filters/Filters.stories.tsx +148 -0
- package/src/elements/PageTitle/PageTitle.stories.tsx +15 -19
- package/src/elements/Sidebar/Sidebar.stories.tsx +13 -2
- package/src/elements/Table/Table.stories.tsx +467 -10
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {createContext,forwardRef,useRef,useId,memo,useState,useMemo,useCallback,useEffect,useContext}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {VisuallyHidden,useFocusRing}from'react-aria';import'react-aria-components';import {z as z$1}from'zod';function de(...t){return twMerge(clsx(t))}var Me=cva("relative w-full overflow-hidden rounded-lg border",{variants:{variant:{default:"border-[var(--border)] bg-[var(--content-background)]",muted:"border-[var(--accent-background)] bg-[var(--accent-background)]/50"}},defaultVariants:{variant:"default"}}),Ne=cva("cursor-pointer focus-visible:outline-none",{variants:{type:{bar:"",line:"stroke-2"},state:{default:"",focused:"",selected:"opacity-80"}},defaultVariants:{type:"bar",state:"default"}});cva("pointer-events-none",{variants:{visible:{true:"opacity-100",false:"opacity-0"}},defaultVariants:{visible:false}});var pt=cva("flex flex-wrap items-center justify-center gap-4 px-4 py-2",{variants:{visible:{true:"",false:"hidden"}},defaultVariants:{visible:true}});var K={top:20,right:20,bottom:60,left:60},Te=300,Ie=169,on=.2,$e=.1,rn=20,me=4,Re=2,pe=6;var se={solid:"none",dashed:"8 4",dotted:"2 4"};var ft="var(--border)",ht=1,xt=.7,be="var(--border)",fe=1,he=6,le=12,gt=44,Q=4,_e=2,Ve=["var(--chart-1, hsl(221 83% 53%))","var(--chart-2, hsl(142 71% 45%))","var(--chart-3, hsl(38 92% 50%))","var(--chart-4, hsl(262 83% 58%))","var(--chart-5, hsl(0 84% 60%))"];function bt(t,e){let n=Math.floor(Math.log10(t)),r=t/Math.pow(10,n),o;return e?r<1.5?o=1:r<3?o=2:r<7?o=5:o=10:r<=1?o=1:r<=2?o=2:r<=5?o=5:o=10,o*Math.pow(10,n)}function vt(t,e,n=5){if(t===e){if(t===0)return [0,25,50,75,100];t=t*.9,e=e*1.1;}let r=bt(e-t,false),o=bt(r/(n-1),true),l=Math.floor(t/o)*o,a=Math.ceil(e/o)*o,i=[];for(let m=l;m<=a;m+=o)i.push(m);return i}function yt(t,e,n,r=0){let o=t/e,l=o*(1-on),a=Math.max(rn,l/n*(1-$e));return {barWidth:a,groupWidth:o,getBarX:(m,g)=>{let v=r+o*m+o/2,c=n*a+(n-1)*($e*a);return v-c/2+g*(a+$e*a)}}}function Ct(t){let[e,n]=useState({width:Te,height:Ie,padding:K,plotArea:{x:K.left,y:K.top,width:Te-K.left-K.right,height:Ie-K.top-K.bottom}});return useEffect(()=>{let r=t.current;if(!r)return;let o=a=>{let i=Math.max(a,Te),m=Math.max(i*.5625,Ie),g={x:K.left,y:K.top,width:i-K.left-K.right,height:m-K.top-K.bottom};n({width:i,height:m,padding:K,plotArea:g});},l=new ResizeObserver(a=>{let i=a[0];i&&o(i.contentRect.width);});return o(r.getBoundingClientRect().width),l.observe(r),()=>{l.disconnect();}},[t]),e}function De(t){let{rows:e,cols:n,initialRow:r=0,initialCol:o=0,wrap:l=false,onFocusChange:a}=t,[i,m]=useState(r),[g,v]=useState(o),c=useCallback(f=>typeof n=="function"?n(f):n,[n]),p=useCallback((f,d)=>{a?.(f,d);},[a]),P=useCallback(()=>{v(f=>{let d=c(i)-1,h=f+1;return h>d&&(h=l?0:d),h!==f&&p(i,h),h});},[i,c,l,p]),u=useCallback(()=>{v(f=>{let d=f-1,h=c(i)-1;return d<0&&(d=l?h:0),d!==f&&p(i,d),d});},[i,c,l,p]),s=useCallback(()=>{m(f=>{let d=f+1;if(d>=e&&(d=l?0:e-1),d!==f){let h=c(d)-1;v(C=>{let S=Math.min(C,h);return p(d,S),S});}return d});},[e,c,l,p]),y=useCallback(()=>{m(f=>{let d=f-1;if(d<0&&(d=l?e-1:0),d!==f){let h=c(d)-1;v(C=>{let S=Math.min(C,h);return p(d,S),S});}return d});},[e,c,l,p]),x=useCallback(()=>{v(0),p(i,0);},[i,p]),I=useCallback(()=>{let f=c(i)-1;v(f),p(i,f);},[i,c,p]),b=useCallback((f,d)=>{let h=Math.max(0,Math.min(f,e-1)),C=c(h)-1,S=Math.max(0,Math.min(d,C));m(h),v(S),p(h,S);},[e,c,p]),T=useCallback((f,d)=>f===i&&d===g?0:-1,[i,g]);return useMemo(()=>({focusedRow:i,focusedCol:g,moveRight:P,moveLeft:u,moveDown:s,moveUp:y,moveToStart:x,moveToEnd:I,setFocus:b,getTabIndex:T}),[i,g,P,u,s,y,x,I,b,T])}var Pt=createContext(null);function J(){let t=useContext(Pt);if(!t)throw new Error("useChartContext must be used within a ChartProvider");return t}function mn(t){let e=new Set;return t.forEach(n=>{n.data.forEach(r=>{e.add(r.label);});}),Array.from(e)}function pn(t,e,n){let r=mn(t),{plotArea:o}=e,l=1/0,a=-1/0;t.forEach(u=>{u.data.forEach(s=>{l=Math.min(l,s.value),a=Math.max(a,s.value);});}),(!isFinite(l)||!isFinite(a))&&(l=0,a=100);let i=n?Math.min(0,l):l,m=vt(i,a),g=m[m.length-1]||a,v=m[0]||i,c=u=>{if(r.length<=1)return o.x+o.width/2;let s=o.width/r.length;return o.x+s*u+s/2},p=g-v||1;return {allLabels:r,xScale:c,yScale:u=>{let s=(u-v)/p;return o.y+o.height*(1-s)},yMin:v,yMax:g,yTicks:m}}function Tt({children:t,containerRef:e,data:n,type:r,title:o,description:l,xAxisLabel:a,yAxisLabel:i,showTooltip:m,showGrid:g,showLegend:v,announceTrends:c,trendUpFormat:p,trendDownFormat:P,startAtZero:u,stacked:s=false,innerRadius:y=0,pointSize:x=8,reducedMotion:I=false,onPointFocus:b,onPointSelect:T}){let[f,d]=useState(null),[h,C]=useState(""),[S,R]=useState(false),[A,E]=useState(null),[D,N]=useState(null),[$,F]=useState(null),H=Ct(e),B=useMemo(()=>pn(n,H,u),[n,H,u]);useMemo(()=>Math.max(...n.map(w=>w.data.length)),[n]);let U=useCallback((w,k)=>(k?p:P).replace("{percent}",String(w)),[p,P]),q=(w,k)=>{if(!c||k<=0)return null;let M=n[w];if(!M)return null;let _=M.data[k],V=M.data[k-1];if(!_||!V||V.value===0)return null;let oe=(_.value-V.value)/Math.abs(V.value)*100,re=oe>=0,ue=Math.abs(Math.round(oe));return {text:U(ue,re),direction:re?"up":"down"}},O=De({rows:n.length,cols:w=>n[w]?.data.length||0,onFocusChange:(w,k)=>{let M=n[w],_=M?.data[k];if(!M||!_)return;let V=q(w,k);N(V?.text??null),F(V?.direction??null);let oe=`${k+1} of ${M.data.length}`,re=n.length>1?`${M.name}: `:"",ue=G(_.value),en=V?`, ${V.text}`:"";C(`${re}${_.label}, ${ue}${en}. ${oe}.`),m&&(R(true),E({series:w,point:k})),b?.(_,w,k);}}),Se=useMemo(()=>{let w=typeof navigator<"u"?navigator.language:"en-US";return new Intl.NumberFormat(w)},[]),G=useCallback(w=>Se.format(w),[Se]),j=useCallback((w,k)=>{if(!c||k<=0)return null;let M=n[w];if(!M)return null;let _=M.data[k],V=M.data[k-1];if(!_||!V||V.value===0)return null;let oe=(_.value-V.value)/Math.abs(V.value)*100,re=oe>=0,ue=Math.abs(Math.round(oe));return {text:U(ue,re),direction:re?"up":"down"}},[n,c,U]),at=useCallback(w=>Ve[w%Ve.length]??"var(--chart-1)",[]),it=useCallback((w,k)=>{let M=n[w],_=M?.data[k];if(!M||!_)return null;let V=B.allLabels.indexOf(_.label);return V===-1?null:{x:B.xScale(V),y:B.yScale(_.value)}},[n,B]),st=useCallback((w,k)=>{O.setFocus(w,k);},[O]),lt=useCallback((w,k)=>{d({series:w,point:k});let M=n[w],_=M?.data[k];M&&_&&T?.(_,w,k);},[n,T]),ct=useCallback(()=>{d(null);},[]),ut=useCallback(w=>{C(w);},[]),dt=useCallback((w,k)=>{if(m){R(true),E({series:w,point:k});let M=j(w,k);N(M?.text??null),F(M?.direction??null);}},[m,j]),mt=useCallback(()=>{R(false),E(null);},[]),Jt=useMemo(()=>({focusedSeries:O.focusedRow,focusedPoint:O.focusedCol,selectedPoint:f,announcement:h,isTooltipVisible:S,tooltipPoint:A,currentTrend:D,currentTrendDirection:$,dimensions:H,scales:B,data:n,type:r,title:o,description:l,xAxisLabel:a,yAxisLabel:i,showTooltip:m,showGrid:g,showLegend:v,announceTrends:c,trendUpFormat:p,trendDownFormat:P,startAtZero:u,stacked:s,innerRadius:y,pointSize:x,reducedMotion:I,setFocus:st,selectPoint:lt,clearSelection:ct,announce:ut,showTooltipAt:dt,hideTooltip:mt,getTabIndex:O.getTabIndex,formatValue:G,getSeriesColor:at,getPointCoordinates:it}),[O.focusedRow,O.focusedCol,O.getTabIndex,f,h,S,A,D,$,H,B,n,r,o,l,a,i,m,g,v,c,p,P,u,s,y,x,I,st,lt,ct,ut,dt,mt,G,at,it]);return jsx(Pt.Provider,{value:Jt,children:t})}function He({yTicks:t,yScale:e,plotX:n,plotWidth:r,visible:o}){return o?jsx("g",{className:"chart-grid","aria-hidden":"true","data-testid":"chart-grid",children:t.map(l=>{let a=e(l);return jsx("line",{x1:n,y1:a,x2:n+r,y2:a,stroke:ft,strokeWidth:ht,strokeOpacity:xt},l)})}):null}He.displayName="ChartGrid";function Fe({allLabels:t,yTicks:e,xScale:n,yScale:r,plotArea:o,xAxisLabel:l,yAxisLabel:a,formatValue:i}){let{x:m,y:g,width:v,height:c}=o;return jsxs("g",{className:"chart-axis","aria-hidden":"true","data-testid":"chart-axis",children:[jsx("line",{x1:m,y1:g+c,x2:m+v,y2:g+c,stroke:be,strokeWidth:fe}),jsx("line",{x1:m,y1:g,x2:m,y2:g+c,stroke:be,strokeWidth:fe}),t.map((p,P)=>{let u=n(P),s=g+c;return jsxs("g",{children:[jsx("line",{x1:u,y1:s,x2:u,y2:s+he,stroke:be,strokeWidth:fe}),jsx("text",{x:u,y:s+he+le,textAnchor:"middle",fontSize:le,fill:"currentColor",className:"text-[var(--content-foreground)]",children:p})]},p)}),e.map(p=>{let P=m,u=r(p);return jsxs("g",{children:[jsx("line",{x1:P-he,y1:u,x2:P,y2:u,stroke:be,strokeWidth:fe}),jsx("text",{x:P-he-4,y:u,textAnchor:"end",dominantBaseline:"middle",fontSize:le,fill:"currentColor",className:"text-[var(--content-foreground)]",children:i(p)})]},p)}),jsx("text",{x:m+v/2,y:g+c+45,textAnchor:"middle",fontSize:le,fill:"currentColor",className:"text-[var(--content-foreground)] font-medium",children:l}),jsx("text",{x:15,y:g+c/2,textAnchor:"middle",fontSize:le,fill:"currentColor",className:"text-[var(--content-foreground)] font-medium",transform:`rotate(-90, 15, ${g+c/2})`,children:a})]})}Fe.displayName="ChartAxis";function z({type:t,x:e,y:n,width:r=pe*2,height:o=pe*2,color:l,seriesIndex:a,pointIndex:i,tabIndex:m,label:g,isSelected:v=false,onFocus:c,onBlur:p,onHover:P,onHoverEnd:u,onKeyDown:s}){let y=useRef(null),{isFocusVisible:x,focusProps:I}=useFocusRing();useEffect(()=>{m===0&&y.current&&document.activeElement?.closest('[role="graphics-document"]')!==null&&y.current.focus();},[m]);let b=Math.max(gt,r,o),T=t==="bar"?e-(b-r)/2:e-b/2,f=t==="bar"?n-(b-o)/2:n-b/2,d=A=>{I.onFocus?.(A),c?.(a,i);},h=A=>{I.onBlur?.(A),p?.();},C=A=>{P?.(a,i);},S=A=>{u?.();};return jsxs("g",{ref:y,role:"listitem",tabIndex:m,"aria-label":g,className:Ne({type:t,state:v?"selected":x?"focused":"default"}),onFocus:d,onBlur:h,onMouseEnter:C,onMouseLeave:S,onKeyDown:s,"data-testid":`chart-point-${a}-${i}`,children:[jsx("rect",{x:T,y:f,width:b,height:b,fill:"transparent",className:"cursor-pointer"}),t==="bar"?jsx("rect",{x:e,y:n,width:r,height:o,rx:me,ry:me,fill:l,className:"chart-bar"}):jsx("circle",{cx:e,cy:n,r:pe,fill:l,className:"chart-point"}),x&&(t==="bar"?jsx("rect",{x:e-Q,y:n-Q,width:r+Q*2,height:o+Q*2,rx:me+Q,ry:me+Q,fill:"none",stroke:"var(--ring)",strokeWidth:_e,className:"chart-focus-ring"}):jsx("circle",{cx:e,cy:n,r:pe+Q,fill:"none",stroke:"var(--ring)",strokeWidth:_e,className:"chart-focus-ring"}))]})}z.displayName="ChartDataPoint";function Ke({series:t,seriesIndex:e,totalSeries:n,dimensions:r,scales:o,color:l,getTabIndex:a,selectedPoint:i,onPointFocus:m,onPointBlur:g,onPointHover:v,onPointHoverEnd:c,onKeyDown:p,formatValue:P}){let{plotArea:u}=r,{allLabels:s,xScale:y,yScale:x,yMin:I}=o,{barWidth:b,getBarX:T}=yt(u.width,s.length,n,u.x),f=x(Math.max(0,I));return jsx("g",{className:"chart-bar-series",role:"list","aria-label":`${t.name} series`,"data-testid":`chart-series-${e}`,children:t.data.map((d,h)=>{let C=s.indexOf(d.label);if(C===-1)return null;let S=T(C,e),R=x(d.value),A=Math.abs(f-R),E=d.value>=0?R:f,D=i?.series===e&&i?.point===h,N=`${t.name}: ${d.label}, ${P(d.value)}`;return jsx(z,{type:"bar",x:S,y:E,width:b,height:A,color:l,seriesIndex:e,pointIndex:h,tabIndex:a(e,h),label:N,isSelected:D,onFocus:m,onBlur:g,onHover:v,onHoverEnd:c,onKeyDown:p},`${d.label}-${h}`)})})}Ke.displayName="ChartBarSeries";var Dt="(prefers-reduced-motion: reduce)";function Cn(){return typeof window>"u"?false:window.matchMedia(Dt).matches}function wt(){let[t,e]=useState(Cn);return useEffect(()=>{let n=window.matchMedia(Dt);e(n.matches);let r=o=>{e(o.matches);};return n.addEventListener("change",r),()=>n.removeEventListener("change",r)},[]),t}var Tn=1e3,In=200,Rn="cubic-bezier(0.16, 1, 0.3, 1)";function Be({series:t,seriesIndex:e,scales:n,color:r,pattern:o,getTabIndex:l,selectedPoint:a,onPointFocus:i,onPointBlur:m,onPointHover:g,onPointHoverEnd:v,onKeyDown:c,formatValue:p}){let{allLabels:P,xScale:u,yScale:s}=n,{reducedMotion:y}=J(),x=wt(),I=!y&&!x,b=useRef(null),T=useMemo(()=>t.data.map((h,C)=>{let S=P.indexOf(h.label);return S===-1?null:{x:u(S),y:s(h.value),point:h,pointIndex:C,labelIndex:S}}).filter(h=>h!==null).sort((h,C)=>h.labelIndex-C.labelIndex),[t.data,P,u,s]),f=useMemo(()=>T.length===0?"":T.map((h,C)=>`${C===0?"M":"L"} ${h.x} ${h.y}`).join(" "),[T]);useEffect(()=>{let h=b.current;if(!I||!h||!f||typeof h.animate!="function")return;let C=h.getTotalLength();h.style.strokeDasharray=String(C),h.style.strokeDashoffset=String(C);let S=h.animate([{strokeDashoffset:String(C)},{strokeDashoffset:"0"}],{duration:Tn,delay:e*In,easing:Rn,fill:"forwards"});return S.onfinish=()=>{h.style.strokeDasharray="",h.style.strokeDashoffset="";},()=>{S.cancel(),h.style.strokeDasharray="",h.style.strokeDashoffset="";}},[I,f,e]);let d=se[o]==="none"?void 0:se[o];return jsxs("g",{className:"chart-line-series",role:"list","aria-label":`${t.name} series`,"data-testid":`chart-series-${e}`,children:[jsx("path",{ref:b,d:f,fill:"none",stroke:r,strokeWidth:Re,strokeDasharray:d,strokeLinecap:"round",strokeLinejoin:"round",className:"chart-line","aria-hidden":"true"}),T.map(({x:h,y:C,point:S,pointIndex:R})=>{let A=a?.series===e&&a?.point===R,E=`${t.name}: ${S.label}, ${p(S.value)}`;return jsx(z,{type:"line",x:h,y:C,color:r,seriesIndex:e,pointIndex:R,tabIndex:l(e,R),label:E,isSelected:A,onFocus:i,onBlur:m,onHover:g,onHoverEnd:v,onKeyDown:c},`${S.label}-${R}`)})]})}Be.displayName="ChartLineSeries";function ze({series:t,seriesIndex:e,scales:n,color:r,baseline:o,getTabIndex:l,selectedPoint:a,onPointFocus:i,onPointBlur:m,onPointHover:g,onPointHoverEnd:v,onKeyDown:c,formatValue:p}){let{allLabels:P,xScale:u,yScale:s}=n,y=useMemo(()=>t.data.map((b,T)=>{let f=P.indexOf(b.label);if(f===-1)return null;let d=o?o[f]??0:0;return {x:u(f),y:s(b.value+d),baseY:s(d),point:b,pointIndex:T,labelIndex:f}}).filter(b=>b!==null).sort((b,T)=>b.labelIndex-T.labelIndex),[t.data,P,u,s,o]),x=useMemo(()=>{if(y.length===0)return "";let b=y.map((f,d)=>`${d===0?"M":"L"} ${f.x} ${f.y}`).join(" "),T=[...y].reverse().map((f,d)=>`L ${f.x} ${f.baseY}`).join(" ");return `${b} ${T} Z`},[y]),I=useMemo(()=>y.length===0?"":y.map((b,T)=>`${T===0?"M":"L"} ${b.x} ${b.y}`).join(" "),[y]);return jsxs("g",{className:"chart-area-series",role:"list","aria-label":`${t.name} series`,"data-testid":`chart-series-${e}`,children:[jsx("path",{d:x,fill:r,fillOpacity:.2,stroke:"none","aria-hidden":"true"}),jsx("path",{d:I,fill:"none",stroke:r,strokeWidth:Re,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"}),y.map(({x:b,y:T,point:f,pointIndex:d})=>jsx(z,{type:"line",x:b,y:T,color:r,seriesIndex:e,pointIndex:d,tabIndex:l(e,d),label:`${t.name}: ${f.label}, ${p(f.value)}`,isSelected:a?.series===e&&a?.point===d,onFocus:i,onBlur:m,onHover:g,onHoverEnd:v,onKeyDown:c},`${f.label}-${d}`))]})}ze.displayName="ChartAreaSeries";function Ue({series:t,seriesIndex:e,scales:n,color:r,pointSize:o,getTabIndex:l,selectedPoint:a,onPointFocus:i,onPointBlur:m,onPointHover:g,onPointHoverEnd:v,onKeyDown:c,formatValue:p}){let{allLabels:P,xScale:u,yScale:s}=n,y=useMemo(()=>t.data.map((x,I)=>{let b=P.indexOf(x.label);return b===-1?null:{x:u(b),y:s(x.value),point:x,pointIndex:I,labelIndex:b}}).filter(x=>x!==null),[t.data,P,u,s]);return jsx("g",{className:"chart-scatter-series",role:"list","aria-label":`${t.name} series`,"data-testid":`chart-series-${e}`,children:y.map(({x,y:I,point:b,pointIndex:T})=>jsx(z,{type:"line",x,y:I,color:r,seriesIndex:e,pointIndex:T,tabIndex:l(e,T),label:`${t.name}: ${b.label}, ${p(b.value)}`,isSelected:a?.series===e&&a?.point===T,onFocus:i,onBlur:m,onHover:g,onHoverEnd:v,onKeyDown:c},`${b.label}-${T}`))})}Ue.displayName="ChartScatterSeries";function ge(t,e,n,r){let o=(r-90)*Math.PI/180;return {x:t+n*Math.cos(o),y:e+n*Math.sin(o)}}function An(t,e,n,r,o,l){let i=l-o>180?1:0,m=ge(t,e,n,o),g=ge(t,e,n,l),v=ge(t,e,r,o),c=ge(t,e,r,l);return r===0?[`M ${m.x} ${m.y}`,`A ${n} ${n} 0 ${i} 1 ${g.x} ${g.y}`,`L ${t} ${e}`,"Z"].join(" "):[`M ${m.x} ${m.y}`,`A ${n} ${n} 0 ${i} 1 ${g.x} ${g.y}`,`L ${c.x} ${c.y}`,`A ${r} ${r} 0 ${i} 0 ${v.x} ${v.y}`,"Z"].join(" ")}var kt=["var(--data, #1e40af)","var(--data-alt, #c2410c)","#0891b2","#7c3aed","#059669"];function Ye({series:t,innerRadius:e,getTabIndex:n,selectedPoint:r,onPointFocus:o,onPointBlur:l,onPointHover:a,onPointHoverEnd:i,onKeyDown:m,formatValue:g}){let{dimensions:v}=J(),c=v.plotArea,p=useMemo(()=>{let s=[];for(let y=0;y<t.length;y++){let x=t[y];for(let I=0;I<x.data.length;I++){let b=x.data[I];s.push({...b,color:x.color??kt[s.length%kt.length],seriesIndex:y,pointIndex:I});}}return s},[t]),P=useMemo(()=>p.reduce((s,y)=>s+y.value,0),[p]),u=useMemo(()=>{if(P===0)return [];let s=c.x+c.width/2,y=c.y+c.height/2,x=Math.min(c.width,c.height)/2-4,I=e>0?Math.min(e,x*.8):0,b=0;return p.map(T=>{let f=T.value/P*360,d=b,h=b+f;b=h;let C=d+f/2,S=I>0?(x+I)/2:x*.65,{x:R,y:A}=ge(s,y,S,C);return {point:T,pointIndex:T.pointIndex,startAngle:d,endAngle:h,color:T.color,path:An(s,y,x,I,d,h),labelX:R,labelY:A}})},[p,P,c,e]);return jsx("g",{className:"chart-pie-series",role:"list","aria-label":"Pie chart","data-testid":"chart-series-pie",children:u.map((s,y)=>{let x=P>0?Math.round(s.point.value/P*100):0,I=r?.series===0&&r?.point===s.pointIndex;return jsxs("g",{role:"listitem",tabIndex:n(0,s.pointIndex),"aria-label":`${s.point.label}: ${g(s.point.value)} (${x}%)`,onFocus:()=>o?.(0,s.pointIndex),onBlur:()=>l?.(),onMouseEnter:()=>a?.(0,s.pointIndex),onMouseLeave:()=>i?.(),onKeyDown:b=>m?.(b),className:"outline-none",children:[jsx("path",{d:s.path,fill:s.color,stroke:"var(--content-background, #fff)",strokeWidth:2,className:`transition-opacity ${I?"opacity-100":"opacity-85 hover:opacity-100"}`}),x>=5&&jsxs("text",{x:s.labelX,y:s.labelY,textAnchor:"middle",dominantBaseline:"central",className:"fill-[var(--content-foreground)] text-[11px] font-semibold pointer-events-none",children:[x,"%"]})]},`${s.point.label}-${y}`)})})}Ye.displayName="ChartPieSeries";function Ee(t,e,n,r){let o=(r-90)*Math.PI/180;return {x:t+n*Math.cos(o),y:e+n*Math.sin(o)}}var $t=4;function qe({allSeries:t,scales:e,getSeriesColor:n,getTabIndex:r,selectedPoint:o,onPointFocus:l,onPointBlur:a,onPointHover:i,onPointHoverEnd:m,onKeyDown:g,formatValue:v}){let{dimensions:c}=J(),p=c.plotArea,{allLabels:P}=e,u=p.x+p.width/2,s=p.y+p.height/2,y=Math.min(p.width,p.height)/2-24,x=P.length,I=e.yMin??0,b=e.yMax??100,T=C=>{let S=b!==I?(C-I)/(b-I):0;return Math.max(0,Math.min(1,S))*y},f=useMemo(()=>Array.from({length:$t},(C,S)=>{let R=y/$t*(S+1);return Array.from({length:x},(E,D)=>{let N=360/x*D;return Ee(u,s,R,N)}).map(E=>`${E.x},${E.y}`).join(" ")}),[u,s,y,x]),d=useMemo(()=>Array.from({length:x},(C,S)=>{let R=360/x*S;return Ee(u,s,y,R)}),[u,s,y,x]),h=useMemo(()=>P.map((C,S)=>{let R=360/x*S,{x:A,y:E}=Ee(u,s,y+16,R);return {label:C,x:A,y:E}}),[P,u,s,y,x]);return jsxs("g",{className:"chart-radar-series","data-testid":"chart-series-radar",children:[f.map((C,S)=>jsx("polygon",{points:C,fill:"none",stroke:"var(--border, #e5e7eb)",strokeWidth:1,opacity:.5},`ring-${S}`)),d.map((C,S)=>jsx("line",{x1:u,y1:s,x2:C.x,y2:C.y,stroke:"var(--border, #e5e7eb)",strokeWidth:1,opacity:.3},`spoke-${S}`)),h.map(C=>jsx("text",{x:C.x,y:C.y,textAnchor:"middle",dominantBaseline:"central",className:"fill-[var(--muted-foreground)] text-[11px]",children:C.label},C.label)),t.map((C,S)=>{let R=C.color??n(S),A=C.data.map((D,N)=>{let $=P.indexOf(D.label);if($===-1)return null;let F=360/x*$,H=T(D.value),{x:B,y:U}=Ee(u,s,H,F);return {x:B,y:U,point:D,pointIndex:N,labelIndex:$}}).filter(D=>D!==null),E=A.map(D=>`${D.x},${D.y}`).join(" ");return jsxs("g",{role:"list","aria-label":`${C.name} series`,children:[jsx("polygon",{points:E,fill:R,fillOpacity:.2,stroke:R,strokeWidth:2,"aria-hidden":"true"}),A.map(({x:D,y:N,point:$,pointIndex:F})=>jsx(z,{type:"line",x:D,y:N,color:R,seriesIndex:S,pointIndex:F,tabIndex:r(S,F),label:`${C.name}: ${$.label}, ${v($.value)}`,isSelected:o?.series===S&&o?.point===F,onFocus:l,onBlur:a,onHover:i,onHoverEnd:m,onKeyDown:g},`${$.label}-${F}`))]},C.name)})]})}qe.displayName="ChartRadarSeries";function je({type:t,data:e,dimensions:n,scales:r,titleId:o,descId:l,showGrid:a,xAxisLabel:i,yAxisLabel:m,getSeriesColor:g,getTabIndex:v,selectedPoint:c,formatValue:p,onKeyDown:P,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,stacked:I=false,innerRadius:b=0,pointSize:T=8}){let{width:f,height:d,plotArea:h}=n,{allLabels:C,xScale:S,yScale:R,yTicks:A}=r;return jsxs("svg",{role:"graphics-document","aria-roledescription":`${t} chart`,"aria-labelledby":o,"aria-describedby":l,viewBox:`0 0 ${f} ${d}`,className:"h-full w-full",style:{maxHeight:d},"data-testid":"chart-svg",children:[t!=="pie"&&t!=="radar"&&jsxs(Fragment,{children:[jsx(He,{yTicks:A,yScale:R,plotX:h.x,plotWidth:h.width,visible:a}),jsx(Fe,{allLabels:C,yTicks:A,xScale:S,yScale:R,plotArea:h,xAxisLabel:i,yAxisLabel:m,formatValue:p})]}),t==="pie"&&jsx(Ye,{series:e,innerRadius:b,getTabIndex:v,selectedPoint:c,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,onKeyDown:P,formatValue:p}),t==="radar"&&jsx(qe,{allSeries:e,scales:r,getSeriesColor:g,getTabIndex:v,selectedPoint:c,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,onKeyDown:P,formatValue:p}),t!=="pie"&&t!=="radar"&&e.map((E,D)=>{let N=E.color||g(D),$=E.pattern||"solid";if(t==="bar")return jsx(Ke,{series:E,seriesIndex:D,totalSeries:e.length,dimensions:n,scales:r,color:N,getTabIndex:v,selectedPoint:c,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,onKeyDown:P,formatValue:p},E.name);if(t==="area"){let F=I?(()=>{let H=new Array(C.length).fill(0);for(let B=0;B<D;B++){let U=e[B];for(let q of U.data){let O=C.indexOf(q.label);O!==-1&&(H[O]=(H[O]??0)+q.value);}}return H})():null;return jsx(ze,{series:E,seriesIndex:D,scales:r,color:N,baseline:F,getTabIndex:v,selectedPoint:c,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,onKeyDown:P,formatValue:p},E.name)}return t==="scatter"?jsx(Ue,{series:E,seriesIndex:D,scales:r,color:N,pointSize:T,getTabIndex:v,selectedPoint:c,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,onKeyDown:P,formatValue:p},E.name):jsx(Be,{series:E,seriesIndex:D,scales:r,color:N,pattern:$,getTabIndex:v,selectedPoint:c,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,onKeyDown:P,formatValue:p},E.name)})]})}je.displayName="ChartSVG";var Je=cva(["z-50 overflow-hidden rounded-md px-3 py-1.5 text-sm shadow-md","bg-[var(--content-foreground)] text-[var(--content-background)]","motion-safe:animate-in motion-safe:fade-in-0","data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0"],{variants:{side:{top:["motion-safe:slide-in-from-bottom-2","data-[exiting]:motion-safe:slide-out-to-bottom-2"],bottom:["motion-safe:slide-in-from-top-2","data-[exiting]:motion-safe:slide-out-to-top-2"],left:["motion-safe:slide-in-from-right-2","data-[exiting]:motion-safe:slide-out-to-right-2"],right:["motion-safe:slide-in-from-left-2","data-[exiting]:motion-safe:slide-out-to-left-2"]}},defaultVariants:{side:"top"}});cva("fill-[var(--content-foreground)]",{variants:{side:{top:"rotate-180",bottom:"rotate-0",left:"rotate-90",right:"-rotate-90"}},defaultVariants:{side:"top"}});var Bt=8;function tt({visible:t,x:e,y:n,seriesName:r,label:o,value:l,chartWidth:a,chartHeight:i,trend:m,trendDirection:g}){let v=useRef(null),[c,p]=useState({left:0,top:0}),[P,u]=useState("top");return useEffect(()=>{if(!t||!v.current)return;let y=v.current.getBoundingClientRect(),x=y.width||120,I=y.height||50,b=e-x/2,T=n-I-Bt,f="top";T<0&&(T=n+Bt+16,f="bottom"),b<0&&(b=0),b+x>a&&(b=a-x),p({left:b,top:T}),u(f);},[t,e,n,a]),t?jsxs("div",{ref:v,"aria-hidden":"true",className:Je({side:P}),style:{position:"absolute",left:c.left,top:c.top,pointerEvents:"none"},"data-testid":"chart-tooltip",children:[jsx("div",{className:"font-medium",children:r}),jsxs("div",{className:"opacity-80",children:[o,": ",jsx("span",{className:"font-semibold",children:l})]}),m&&jsxs("div",{className:"text-xs opacity-70 mt-1 flex items-center gap-1",children:[g==="up"?jsx("svg",{"aria-hidden":"true",className:"h-3 w-3 text-green-500",viewBox:"0 0 20 20",fill:"currentColor",children:jsx("path",{fillRule:"evenodd",d:"M10 17a.75.75 0 01-.75-.75V5.612L5.29 9.77a.75.75 0 01-1.08-1.04l5.25-5.5a.75.75 0 011.08 0l5.25 5.5a.75.75 0 11-1.08 1.04l-3.96-4.158V16.25A.75.75 0 0110 17z",clipRule:"evenodd"})}):g==="down"?jsx("svg",{"aria-hidden":"true",className:"h-3 w-3 text-red-500",viewBox:"0 0 20 20",fill:"currentColor",children:jsx("path",{fillRule:"evenodd",d:"M10 3a.75.75 0 01.75.75v10.638l3.96-4.158a.75.75 0 111.08 1.04l-5.25 5.5a.75.75 0 01-1.08 0l-5.25-5.5a.75.75 0 111.08-1.04l3.96 4.158V3.75A.75.75 0 0110 3z",clipRule:"evenodd"})}):null,jsx("span",{children:m})]})]}):null}tt.displayName="ChartTooltip";function nt({data:t,visible:e,type:n,getSeriesColor:r}){return e?jsx("div",{className:pt({visible:e}),role:"list","aria-label":"Chart legend","data-testid":"chart-legend",children:t.map((o,l)=>{let a=o.color||r(l),i=o.pattern||"solid";return jsxs("div",{role:"listitem",className:"flex items-center gap-2",children:[n==="bar"?jsx("div",{className:"h-3 w-3 rounded-sm",style:{backgroundColor:a},"data-testid":`legend-color-${l}`,"aria-hidden":"true"}):jsx("svg",{width:"24",height:"12","aria-hidden":"true","data-testid":`legend-color-${l}`,children:jsx("line",{x1:"0",y1:"6",x2:"24",y2:"6",stroke:a,strokeWidth:"2",strokeDasharray:se[i]==="none"?void 0:se[i]})}),jsx("span",{className:"text-sm text-[var(--content-foreground)]",children:o.name})]},o.name)})}):null}nt.displayName="ChartLegend";function ot({announcement:t}){return jsx(VisuallyHidden,{children:jsx("div",{role:"status","aria-live":"polite","aria-atomic":"true","data-testid":"chart-announcer",children:t})})}ot.displayName="ChartAnnouncer";function rt({data:t,title:e,xAxisLabel:n,yAxisLabel:r,formatValue:o,allLabels:l}){let a=t.length===1;return jsx(VisuallyHidden,{children:jsxs("table",{"data-testid":"chart-data-table",children:[jsxs("caption",{children:[e," data table"]}),jsx("thead",{children:jsxs("tr",{children:[jsx("th",{scope:"col",children:n}),a?jsx("th",{scope:"col",children:r}):t.map(i=>jsxs("th",{scope:"col",children:[i.name," (",r,")"]},i.name))]})}),jsx("tbody",{children:l.map(i=>jsxs("tr",{children:[jsx("th",{scope:"row",children:i}),t.map(m=>{let g=m.data.find(v=>v.label===i);return jsx("td",{children:g?o(g.value):"\u2014"},m.name)})]},i))})]})})}rt.displayName="ChartDataTable";function Wt(t){let{roving:e,onSelect:n,onClear:r,disabled:o=false}=t;return {onKeyDown:useCallback(a=>{if(!o)switch(a.key){case "ArrowRight":a.preventDefault(),e.moveRight();break;case "ArrowLeft":a.preventDefault(),e.moveLeft();break;case "ArrowDown":a.preventDefault(),e.moveDown();break;case "ArrowUp":a.preventDefault(),e.moveUp();break;case "Home":a.preventDefault(),e.moveToStart();break;case "End":a.preventDefault(),e.moveToEnd();break;case "Enter":case " ":a.preventDefault(),n?.();break;case "Escape":a.preventDefault(),r?.();break;}},[e,n,r,o])}}function jn({chartId:t}){let e=J(),{data:n,type:r,title:o,xAxisLabel:l,yAxisLabel:a,showTooltip:i,showGrid:m,showLegend:g,dimensions:v,scales:c,announcement:p,isTooltipVisible:P,tooltipPoint:u,currentTrend:s,currentTrendDirection:y,selectedPoint:x,getTabIndex:I,formatValue:b,getSeriesColor:T,getPointCoordinates:f,setFocus:d,selectPoint:h,clearSelection:C,showTooltipAt:S,hideTooltip:R}=e,A=`${t}-title`,E=`${t}-desc`,D=De({rows:n.length,cols:G=>n[G]?.data.length||0,onFocusChange:(G,j)=>{d(G,j);}}),{onKeyDown:N}=Wt({roving:D,onSelect:()=>{h(D.focusedRow,D.focusedCol);},onClear:()=>{C();}}),$=useCallback((G,j)=>{D.setFocus(G,j),S(G,j);},[D,S]),F=useCallback(()=>{},[]),H=useCallback((G,j)=>{S(G,j);},[S]),B=useCallback(()=>{R();},[R]),U=useMemo(()=>u?f(u.series,u.point)||{x:0,y:0}:{x:0,y:0},[u,f]),q=useMemo(()=>u?n[u.series]:null,[u,n]),O=useMemo(()=>u?q?.data[u.point]:null,[u,q]),Se=useMemo(()=>g??n.length>1,[g,n.length]);return jsxs(Fragment,{children:[jsx(ot,{announcement:p}),jsxs("div",{className:"relative",children:[jsx("div",{className:"relative z-0",children:jsx(je,{type:r,data:n,dimensions:v,scales:c,titleId:A,descId:E,showGrid:m,xAxisLabel:l??"",yAxisLabel:a??"",getSeriesColor:T,getTabIndex:I,selectedPoint:x,formatValue:b,onKeyDown:N,onPointFocus:$,onPointBlur:F,onPointHover:H,onPointHoverEnd:B,stacked:e.stacked,innerRadius:e.innerRadius,pointSize:e.pointSize})}),i&&O&&q&&jsx(tt,{visible:P,x:U.x,y:U.y,seriesName:q.name,label:O.label,value:b(O.value),chartWidth:v.width,chartHeight:v.height,trend:s,trendDirection:y})]}),jsx(nt,{data:n,visible:Se,type:r,getSeriesColor:T}),jsx(rt,{data:n,title:o,xAxisLabel:l,yAxisLabel:a,formatValue:b,allLabels:c.allLabels})]})}var zt=forwardRef(({data:t,type:e,title:n,description:r,xAxisLabel:o,yAxisLabel:l,variant:a="default",className:i,showTooltip:m=true,showGrid:g=true,showLegend:v,announceTrends:c=false,trendUpFormat:p="up {percent}% from previous",trendDownFormat:P="down {percent}% from previous",startAtZero:u=true,stacked:s=false,innerRadius:y=0,pointSize:x=8,reducedMotion:I,onPointFocus:b,onPointSelect:T,id:f,"aria-label":d,"aria-labelledby":h,"aria-describedby":C,"data-testid":S},R)=>{let A=useRef(null),E=useId(),D=f||`chart-${E}`,N=`${D}-title`,$=`${D}-desc`,F=v??t.length>1;return jsxs("figure",{ref:H=>{typeof R=="function"?R(H):R&&(R.current=H),A.current=H;},id:D,role:"figure","aria-label":d,"aria-labelledby":h||N,"aria-describedby":C||$,"data-testid":S,className:de(Me({variant:a}),"p-4",i),children:[jsxs("figcaption",{className:"sr-only",children:[jsx("span",{id:N,children:n}),jsx("span",{id:$,children:r})]}),jsx(Tt,{containerRef:A,data:t,type:e,title:n,description:r,xAxisLabel:o??"",yAxisLabel:l??"",showTooltip:m,showGrid:g,showLegend:F,announceTrends:c,trendUpFormat:p,trendDownFormat:P,startAtZero:u,stacked:s,innerRadius:y,pointSize:x,reducedMotion:I,onPointFocus:b,onPointSelect:T,children:jsx(jn,{chartId:D})})]})});zt.displayName="Chart";var Ut=memo(zt);Ut.displayName="Chart";var Xt=z$1.object({className:z$1.string().optional(),children:z$1.any().optional(),id:z$1.string().optional(),"aria-label":z$1.string().optional(),"aria-labelledby":z$1.string().optional(),"aria-describedby":z$1.string().optional(),"aria-live":z$1.enum(["off","polite","assertive"]).optional(),"aria-hidden":z$1.boolean().optional(),"data-testid":z$1.string().optional()});var Yt=z$1.object({label:z$1.string().min(1,"Label is required"),value:z$1.number(),description:z$1.string().optional()}),Zt=z$1.enum(["solid","dashed","dotted"]),qt=z$1.object({name:z$1.string().min(1,"Series name is required"),color:z$1.string().optional(),pattern:Zt.optional().default("solid"),data:z$1.array(Yt).min(1,"At least one data point required")}),jt=z$1.enum(["bar","line","area","scatter","pie","radar"]),Qt=z$1.enum(["default","muted"]),Jn=Xt.extend({data:z$1.array(qt).min(1,"At least one data series required").max(5,"Maximum 5 series allowed"),type:jt,title:z$1.string().min(1,"Title is required"),description:z$1.string().min(1,"Description is required"),xAxisLabel:z$1.string().optional().default(""),yAxisLabel:z$1.string().optional().default(""),variant:Qt.optional().default("default"),showTooltip:z$1.boolean().optional().default(true),showGrid:z$1.boolean().optional().default(true),showLegend:z$1.boolean().optional(),announceTrends:z$1.boolean().optional().default(false),trendUpFormat:z$1.string().optional().default("up {percent}% from previous"),trendDownFormat:z$1.string().optional().default("down {percent}% from previous"),startAtZero:z$1.boolean().optional().default(true),stacked:z$1.boolean().optional().default(false),innerRadius:z$1.number().min(0).optional().default(0),pointSize:z$1.number().min(2).optional().default(8),reducedMotion:z$1.boolean().optional(),onPointFocus:z$1.unknown().optional(),onPointSelect:z$1.unknown().optional()});export{Ut as Chart,Jn as ChartPropsSchema,jt as ChartTypeSchema,Qt as ChartVariantSchema,Yt as DataPointSchema,qt as DataSeriesSchema,Zt as LinePatternSchema,Me as chartVariants,Ne as dataPointVariants};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
import {createContext,forwardRef,useRef,useId,memo,useState,useMemo,useCallback,useEffect,useContext}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {VisuallyHidden,useFocusRing}from'react-aria';import'react-aria-components';import {z as z$1}from'zod';function de(...t){return twMerge(clsx(t))}var Me=cva("relative w-full overflow-hidden rounded-lg border",{variants:{variant:{default:"border-[var(--border)] bg-[var(--content-background)]",muted:"border-[var(--accent-background)] bg-[var(--accent-background)]/50"}},defaultVariants:{variant:"default"}}),Ne=cva("cursor-pointer focus-visible:outline-none",{variants:{type:{bar:"",line:"stroke-2"},state:{default:"",focused:"",selected:"opacity-80"}},defaultVariants:{type:"bar",state:"default"}});cva("pointer-events-none",{variants:{visible:{true:"opacity-100",false:"opacity-0"}},defaultVariants:{visible:false}});var pt=cva("flex flex-wrap items-center justify-center gap-4 px-4 py-2",{variants:{visible:{true:"",false:"hidden"}},defaultVariants:{visible:true}});var K={top:20,right:20,bottom:60,left:60},Te=300,Ie=169,on=.2,$e=.1,rn=20,me=4,Re=2,pe=6;var se={solid:"none",dashed:"8 4",dotted:"2 4"};var ft="var(--border)",ht=1,xt=.7,be="var(--border)",fe=1,he=6,le=12,gt=44,Q=4,_e=2,Ve=["var(--chart-1, hsl(221 83% 53%))","var(--chart-2, hsl(142 71% 45%))","var(--chart-3, hsl(38 92% 50%))","var(--chart-4, hsl(262 83% 58%))","var(--chart-5, hsl(0 84% 60%))"];function bt(t,e){let n=Math.floor(Math.log10(t)),r=t/Math.pow(10,n),o;return e?r<1.5?o=1:r<3?o=2:r<7?o=5:o=10:r<=1?o=1:r<=2?o=2:r<=5?o=5:o=10,o*Math.pow(10,n)}function vt(t,e,n=5){if(t===e){if(t===0)return [0,25,50,75,100];t=t*.9,e=e*1.1;}let r=bt(e-t,false),o=bt(r/(n-1),true),l=Math.floor(t/o)*o,a=Math.ceil(e/o)*o,i=[];for(let m=l;m<=a;m+=o)i.push(m);return i}function yt(t,e,n,r=0){let o=t/e,l=o*(1-on),a=Math.max(rn,l/n*(1-$e));return {barWidth:a,groupWidth:o,getBarX:(m,g)=>{let v=r+o*m+o/2,c=n*a+(n-1)*($e*a);return v-c/2+g*(a+$e*a)}}}function Ct(t){let[e,n]=useState({width:Te,height:Ie,padding:K,plotArea:{x:K.left,y:K.top,width:Te-K.left-K.right,height:Ie-K.top-K.bottom}});return useEffect(()=>{let r=t.current;if(!r)return;let o=a=>{let i=Math.max(a,Te),m=Math.max(i*.5625,Ie),g={x:K.left,y:K.top,width:i-K.left-K.right,height:m-K.top-K.bottom};n({width:i,height:m,padding:K,plotArea:g});},l=new ResizeObserver(a=>{let i=a[0];i&&o(i.contentRect.width);});return o(r.getBoundingClientRect().width),l.observe(r),()=>{l.disconnect();}},[t]),e}function De(t){let{rows:e,cols:n,initialRow:r=0,initialCol:o=0,wrap:l=false,onFocusChange:a}=t,[i,m]=useState(r),[g,v]=useState(o),c=useCallback(f=>typeof n=="function"?n(f):n,[n]),p=useCallback((f,d)=>{a?.(f,d);},[a]),P=useCallback(()=>{v(f=>{let d=c(i)-1,h=f+1;return h>d&&(h=l?0:d),h!==f&&p(i,h),h});},[i,c,l,p]),u=useCallback(()=>{v(f=>{let d=f-1,h=c(i)-1;return d<0&&(d=l?h:0),d!==f&&p(i,d),d});},[i,c,l,p]),s=useCallback(()=>{m(f=>{let d=f+1;if(d>=e&&(d=l?0:e-1),d!==f){let h=c(d)-1;v(C=>{let S=Math.min(C,h);return p(d,S),S});}return d});},[e,c,l,p]),y=useCallback(()=>{m(f=>{let d=f-1;if(d<0&&(d=l?e-1:0),d!==f){let h=c(d)-1;v(C=>{let S=Math.min(C,h);return p(d,S),S});}return d});},[e,c,l,p]),x=useCallback(()=>{v(0),p(i,0);},[i,p]),I=useCallback(()=>{let f=c(i)-1;v(f),p(i,f);},[i,c,p]),b=useCallback((f,d)=>{let h=Math.max(0,Math.min(f,e-1)),C=c(h)-1,S=Math.max(0,Math.min(d,C));m(h),v(S),p(h,S);},[e,c,p]),T=useCallback((f,d)=>f===i&&d===g?0:-1,[i,g]);return useMemo(()=>({focusedRow:i,focusedCol:g,moveRight:P,moveLeft:u,moveDown:s,moveUp:y,moveToStart:x,moveToEnd:I,setFocus:b,getTabIndex:T}),[i,g,P,u,s,y,x,I,b,T])}var Pt=createContext(null);function J(){let t=useContext(Pt);if(!t)throw new Error("useChartContext must be used within a ChartProvider");return t}function mn(t){let e=new Set;return t.forEach(n=>{n.data.forEach(r=>{e.add(r.label);});}),Array.from(e)}function pn(t,e,n){let r=mn(t),{plotArea:o}=e,l=1/0,a=-1/0;t.forEach(u=>{u.data.forEach(s=>{l=Math.min(l,s.value),a=Math.max(a,s.value);});}),(!isFinite(l)||!isFinite(a))&&(l=0,a=100);let i=n?Math.min(0,l):l,m=vt(i,a),g=m[m.length-1]||a,v=m[0]||i,c=u=>{if(r.length<=1)return o.x+o.width/2;let s=o.width/r.length;return o.x+s*u+s/2},p=g-v||1;return {allLabels:r,xScale:c,yScale:u=>{let s=(u-v)/p;return o.y+o.height*(1-s)},yMin:v,yMax:g,yTicks:m}}function Tt({children:t,containerRef:e,data:n,type:r,title:o,description:l,xAxisLabel:a,yAxisLabel:i,showTooltip:m,showGrid:g,showLegend:v,announceTrends:c,trendUpFormat:p,trendDownFormat:P,startAtZero:u,stacked:s=false,innerRadius:y=0,pointSize:x=8,reducedMotion:I=false,onPointFocus:b,onPointSelect:T}){let[f,d]=useState(null),[h,C]=useState(""),[S,R]=useState(false),[A,w]=useState(null),[D,N]=useState(null),[$,F]=useState(null),H=Ct(e),B=useMemo(()=>pn(n,H,u),[n,H,u]);useMemo(()=>Math.max(...n.map(E=>E.data.length)),[n]);let U=useCallback((E,k)=>(k?p:P).replace("{percent}",String(E)),[p,P]),q=(E,k)=>{if(!c||k<=0)return null;let M=n[E];if(!M)return null;let _=M.data[k],V=M.data[k-1];if(!_||!V||V.value===0)return null;let oe=(_.value-V.value)/Math.abs(V.value)*100,re=oe>=0,ue=Math.abs(Math.round(oe));return {text:U(ue,re),direction:re?"up":"down"}},O=De({rows:n.length,cols:E=>n[E]?.data.length||0,onFocusChange:(E,k)=>{let M=n[E],_=M?.data[k];if(!M||!_)return;let V=q(E,k);N(V?.text??null),F(V?.direction??null);let oe=`${k+1} of ${M.data.length}`,re=n.length>1?`${M.name}: `:"",ue=G(_.value),en=V?`, ${V.text}`:"";C(`${re}${_.label}, ${ue}${en}. ${oe}.`),m&&(R(true),w({series:E,point:k})),b?.(_,E,k);}}),Se=useMemo(()=>{let E=typeof navigator<"u"?navigator.language:"en-US";return new Intl.NumberFormat(E)},[]),G=useCallback(E=>Se.format(E),[Se]),j=useCallback((E,k)=>{if(!c||k<=0)return null;let M=n[E];if(!M)return null;let _=M.data[k],V=M.data[k-1];if(!_||!V||V.value===0)return null;let oe=(_.value-V.value)/Math.abs(V.value)*100,re=oe>=0,ue=Math.abs(Math.round(oe));return {text:U(ue,re),direction:re?"up":"down"}},[n,c,U]),at=useCallback(E=>Ve[E%Ve.length]??"var(--chart-1)",[]),it=useCallback((E,k)=>{let M=n[E],_=M?.data[k];if(!M||!_)return null;let V=B.allLabels.indexOf(_.label);return V===-1?null:{x:B.xScale(V),y:B.yScale(_.value)}},[n,B]),st=useCallback((E,k)=>{O.setFocus(E,k);},[O]),lt=useCallback((E,k)=>{d({series:E,point:k});let M=n[E],_=M?.data[k];M&&_&&T?.(_,E,k);},[n,T]),ct=useCallback(()=>{d(null);},[]),ut=useCallback(E=>{C(E);},[]),dt=useCallback((E,k)=>{if(m){R(true),w({series:E,point:k});let M=j(E,k);N(M?.text??null),F(M?.direction??null);}},[m,j]),mt=useCallback(()=>{R(false),w(null);},[]),Jt=useMemo(()=>({focusedSeries:O.focusedRow,focusedPoint:O.focusedCol,selectedPoint:f,announcement:h,isTooltipVisible:S,tooltipPoint:A,currentTrend:D,currentTrendDirection:$,dimensions:H,scales:B,data:n,type:r,title:o,description:l,xAxisLabel:a,yAxisLabel:i,showTooltip:m,showGrid:g,showLegend:v,announceTrends:c,trendUpFormat:p,trendDownFormat:P,startAtZero:u,stacked:s,innerRadius:y,pointSize:x,reducedMotion:I,setFocus:st,selectPoint:lt,clearSelection:ct,announce:ut,showTooltipAt:dt,hideTooltip:mt,getTabIndex:O.getTabIndex,formatValue:G,getSeriesColor:at,getPointCoordinates:it}),[O.focusedRow,O.focusedCol,O.getTabIndex,f,h,S,A,D,$,H,B,n,r,o,l,a,i,m,g,v,c,p,P,u,s,y,x,I,st,lt,ct,ut,dt,mt,G,at,it]);return jsx(Pt.Provider,{value:Jt,children:t})}function He({yTicks:t,yScale:e,plotX:n,plotWidth:r,visible:o}){return o?jsx("g",{className:"chart-grid","aria-hidden":"true","data-testid":"chart-grid",children:t.map(l=>{let a=e(l);return jsx("line",{x1:n,y1:a,x2:n+r,y2:a,stroke:ft,strokeWidth:ht,strokeOpacity:xt},l)})}):null}He.displayName="ChartGrid";function Fe({allLabels:t,yTicks:e,xScale:n,yScale:r,plotArea:o,xAxisLabel:l,yAxisLabel:a,formatValue:i}){let{x:m,y:g,width:v,height:c}=o;return jsxs("g",{className:"chart-axis","aria-hidden":"true","data-testid":"chart-axis",children:[jsx("line",{x1:m,y1:g+c,x2:m+v,y2:g+c,stroke:be,strokeWidth:fe}),jsx("line",{x1:m,y1:g,x2:m,y2:g+c,stroke:be,strokeWidth:fe}),t.map((p,P)=>{let u=n(P),s=g+c;return jsxs("g",{children:[jsx("line",{x1:u,y1:s,x2:u,y2:s+he,stroke:be,strokeWidth:fe}),jsx("text",{x:u,y:s+he+le,textAnchor:"middle",fontSize:le,fill:"currentColor",className:"text-[var(--content-foreground)]",children:p})]},p)}),e.map(p=>{let P=m,u=r(p);return jsxs("g",{children:[jsx("line",{x1:P-he,y1:u,x2:P,y2:u,stroke:be,strokeWidth:fe}),jsx("text",{x:P-he-4,y:u,textAnchor:"end",dominantBaseline:"middle",fontSize:le,fill:"currentColor",className:"text-[var(--content-foreground)]",children:i(p)})]},p)}),jsx("text",{x:m+v/2,y:g+c+45,textAnchor:"middle",fontSize:le,fill:"currentColor",className:"text-[var(--content-foreground)] font-medium",children:l}),jsx("text",{x:15,y:g+c/2,textAnchor:"middle",fontSize:le,fill:"currentColor",className:"text-[var(--content-foreground)] font-medium",transform:`rotate(-90, 15, ${g+c/2})`,children:a})]})}Fe.displayName="ChartAxis";function z({type:t,x:e,y:n,width:r=pe*2,height:o=pe*2,color:l,seriesIndex:a,pointIndex:i,tabIndex:m,label:g,isSelected:v=false,onFocus:c,onBlur:p,onHover:P,onHoverEnd:u,onKeyDown:s}){let y=useRef(null),{isFocusVisible:x,focusProps:I}=useFocusRing();useEffect(()=>{m===0&&y.current&&document.activeElement?.closest('[role="graphics-document"]')!==null&&y.current.focus();},[m]);let b=Math.max(gt,r,o),T=t==="bar"?e-(b-r)/2:e-b/2,f=t==="bar"?n-(b-o)/2:n-b/2,d=A=>{I.onFocus?.(A),c?.(a,i);},h=A=>{I.onBlur?.(A),p?.();},C=A=>{P?.(a,i);},S=A=>{u?.();};return jsxs("g",{ref:y,role:"listitem",tabIndex:m,"aria-label":g,className:Ne({type:t,state:v?"selected":x?"focused":"default"}),onFocus:d,onBlur:h,onMouseEnter:C,onMouseLeave:S,onKeyDown:s,"data-testid":`chart-point-${a}-${i}`,children:[jsx("rect",{x:T,y:f,width:b,height:b,fill:"transparent",className:"cursor-pointer"}),t==="bar"?jsx("rect",{x:e,y:n,width:r,height:o,rx:me,ry:me,fill:l,className:"chart-bar"}):jsx("circle",{cx:e,cy:n,r:pe,fill:l,className:"chart-point"}),x&&(t==="bar"?jsx("rect",{x:e-Q,y:n-Q,width:r+Q*2,height:o+Q*2,rx:me+Q,ry:me+Q,fill:"none",stroke:"var(--ring)",strokeWidth:_e,className:"chart-focus-ring"}):jsx("circle",{cx:e,cy:n,r:pe+Q,fill:"none",stroke:"var(--ring)",strokeWidth:_e,className:"chart-focus-ring"}))]})}z.displayName="ChartDataPoint";function Ke({series:t,seriesIndex:e,totalSeries:n,dimensions:r,scales:o,color:l,getTabIndex:a,selectedPoint:i,onPointFocus:m,onPointBlur:g,onPointHover:v,onPointHoverEnd:c,onKeyDown:p,formatValue:P}){let{plotArea:u}=r,{allLabels:s,xScale:y,yScale:x,yMin:I}=o,{barWidth:b,getBarX:T}=yt(u.width,s.length,n,u.x),f=x(Math.max(0,I));return jsx("g",{className:"chart-bar-series",role:"list","aria-label":`${t.name} series`,"data-testid":`chart-series-${e}`,children:t.data.map((d,h)=>{let C=s.indexOf(d.label);if(C===-1)return null;let S=T(C,e),R=x(d.value),A=Math.abs(f-R),w=d.value>=0?R:f,D=i?.series===e&&i?.point===h,N=`${t.name}: ${d.label}, ${P(d.value)}`;return jsx(z,{type:"bar",x:S,y:w,width:b,height:A,color:l,seriesIndex:e,pointIndex:h,tabIndex:a(e,h),label:N,isSelected:D,onFocus:m,onBlur:g,onHover:v,onHoverEnd:c,onKeyDown:p},`${d.label}-${h}`)})})}Ke.displayName="ChartBarSeries";var Dt="(prefers-reduced-motion: reduce)";function Cn(){return typeof window>"u"?false:window.matchMedia(Dt).matches}function Et(){let[t,e]=useState(Cn);return useEffect(()=>{let n=window.matchMedia(Dt);e(n.matches);let r=o=>{e(o.matches);};return n.addEventListener("change",r),()=>n.removeEventListener("change",r)},[]),t}var Tn=1e3,In=200,Rn="cubic-bezier(0.16, 1, 0.3, 1)";function Be({series:t,seriesIndex:e,scales:n,color:r,pattern:o,getTabIndex:l,selectedPoint:a,onPointFocus:i,onPointBlur:m,onPointHover:g,onPointHoverEnd:v,onKeyDown:c,formatValue:p}){let{allLabels:P,xScale:u,yScale:s}=n,{reducedMotion:y}=J(),x=Et(),I=!y&&!x,b=useRef(null),T=useMemo(()=>t.data.map((h,C)=>{let S=P.indexOf(h.label);return S===-1?null:{x:u(S),y:s(h.value),point:h,pointIndex:C,labelIndex:S}}).filter(h=>h!==null).sort((h,C)=>h.labelIndex-C.labelIndex),[t.data,P,u,s]),f=useMemo(()=>T.length===0?"":T.map((h,C)=>`${C===0?"M":"L"} ${h.x} ${h.y}`).join(" "),[T]);useEffect(()=>{let h=b.current;if(!I||!h||!f||typeof h.animate!="function")return;let C=h.getTotalLength();h.style.strokeDasharray=String(C),h.style.strokeDashoffset=String(C);let S=h.animate([{strokeDashoffset:String(C)},{strokeDashoffset:"0"}],{duration:Tn,delay:e*In,easing:Rn,fill:"forwards"});return S.onfinish=()=>{h.style.strokeDasharray="",h.style.strokeDashoffset="";},()=>{S.cancel(),h.style.strokeDasharray="",h.style.strokeDashoffset="";}},[I,f,e]);let d=se[o]==="none"?void 0:se[o];return jsxs("g",{className:"chart-line-series",role:"list","aria-label":`${t.name} series`,"data-testid":`chart-series-${e}`,children:[jsx("path",{ref:b,d:f,fill:"none",stroke:r,strokeWidth:Re,strokeDasharray:d,strokeLinecap:"round",strokeLinejoin:"round",className:"chart-line","aria-hidden":"true"}),T.map(({x:h,y:C,point:S,pointIndex:R})=>{let A=a?.series===e&&a?.point===R,w=`${t.name}: ${S.label}, ${p(S.value)}`;return jsx(z,{type:"line",x:h,y:C,color:r,seriesIndex:e,pointIndex:R,tabIndex:l(e,R),label:w,isSelected:A,onFocus:i,onBlur:m,onHover:g,onHoverEnd:v,onKeyDown:c},`${S.label}-${R}`)})]})}Be.displayName="ChartLineSeries";function ze({series:t,seriesIndex:e,scales:n,color:r,baseline:o,getTabIndex:l,selectedPoint:a,onPointFocus:i,onPointBlur:m,onPointHover:g,onPointHoverEnd:v,onKeyDown:c,formatValue:p}){let{allLabels:P,xScale:u,yScale:s}=n,y=useMemo(()=>t.data.map((b,T)=>{let f=P.indexOf(b.label);if(f===-1)return null;let d=o?o[f]??0:0;return {x:u(f),y:s(b.value+d),baseY:s(d),point:b,pointIndex:T,labelIndex:f}}).filter(b=>b!==null).sort((b,T)=>b.labelIndex-T.labelIndex),[t.data,P,u,s,o]),x=useMemo(()=>{if(y.length===0)return "";let b=y.map((f,d)=>`${d===0?"M":"L"} ${f.x} ${f.y}`).join(" "),T=[...y].reverse().map((f,d)=>`L ${f.x} ${f.baseY}`).join(" ");return `${b} ${T} Z`},[y]),I=useMemo(()=>y.length===0?"":y.map((b,T)=>`${T===0?"M":"L"} ${b.x} ${b.y}`).join(" "),[y]);return jsxs("g",{className:"chart-area-series",role:"list","aria-label":`${t.name} series`,"data-testid":`chart-series-${e}`,children:[jsx("path",{d:x,fill:r,fillOpacity:.2,stroke:"none","aria-hidden":"true"}),jsx("path",{d:I,fill:"none",stroke:r,strokeWidth:Re,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"}),y.map(({x:b,y:T,point:f,pointIndex:d})=>jsx(z,{type:"line",x:b,y:T,color:r,seriesIndex:e,pointIndex:d,tabIndex:l(e,d),label:`${t.name}: ${f.label}, ${p(f.value)}`,isSelected:a?.series===e&&a?.point===d,onFocus:i,onBlur:m,onHover:g,onHoverEnd:v,onKeyDown:c},`${f.label}-${d}`))]})}ze.displayName="ChartAreaSeries";function Ue({series:t,seriesIndex:e,scales:n,color:r,pointSize:o,getTabIndex:l,selectedPoint:a,onPointFocus:i,onPointBlur:m,onPointHover:g,onPointHoverEnd:v,onKeyDown:c,formatValue:p}){let{allLabels:P,xScale:u,yScale:s}=n,y=useMemo(()=>t.data.map((x,I)=>{let b=P.indexOf(x.label);return b===-1?null:{x:u(b),y:s(x.value),point:x,pointIndex:I,labelIndex:b}}).filter(x=>x!==null),[t.data,P,u,s]);return jsx("g",{className:"chart-scatter-series",role:"list","aria-label":`${t.name} series`,"data-testid":`chart-series-${e}`,children:y.map(({x,y:I,point:b,pointIndex:T})=>jsx(z,{type:"line",x,y:I,color:r,seriesIndex:e,pointIndex:T,tabIndex:l(e,T),label:`${t.name}: ${b.label}, ${p(b.value)}`,isSelected:a?.series===e&&a?.point===T,onFocus:i,onBlur:m,onHover:g,onHoverEnd:v,onKeyDown:c},`${b.label}-${T}`))})}Ue.displayName="ChartScatterSeries";function ge(t,e,n,r){let o=(r-90)*Math.PI/180;return {x:t+n*Math.cos(o),y:e+n*Math.sin(o)}}function An(t,e,n,r,o,l){let i=l-o>180?1:0,m=ge(t,e,n,o),g=ge(t,e,n,l),v=ge(t,e,r,o),c=ge(t,e,r,l);return r===0?[`M ${m.x} ${m.y}`,`A ${n} ${n} 0 ${i} 1 ${g.x} ${g.y}`,`L ${t} ${e}`,"Z"].join(" "):[`M ${m.x} ${m.y}`,`A ${n} ${n} 0 ${i} 1 ${g.x} ${g.y}`,`L ${c.x} ${c.y}`,`A ${r} ${r} 0 ${i} 0 ${v.x} ${v.y}`,"Z"].join(" ")}var kt=["var(--data, #1e40af)","var(--data-alt, #c2410c)","#0891b2","#7c3aed","#059669"];function Ye({series:t,innerRadius:e,getTabIndex:n,selectedPoint:r,onPointFocus:o,onPointBlur:l,onPointHover:a,onPointHoverEnd:i,onKeyDown:m,formatValue:g}){let{dimensions:v}=J(),c=v.plotArea,p=useMemo(()=>{let s=[];for(let y=0;y<t.length;y++){let x=t[y];for(let I=0;I<x.data.length;I++){let b=x.data[I];s.push({...b,color:x.color??kt[s.length%kt.length],seriesIndex:y,pointIndex:I});}}return s},[t]),P=useMemo(()=>p.reduce((s,y)=>s+y.value,0),[p]),u=useMemo(()=>{if(P===0)return [];let s=c.x+c.width/2,y=c.y+c.height/2,x=Math.min(c.width,c.height)/2-4,I=e>0?Math.min(e,x*.8):0,b=0;return p.map(T=>{let f=T.value/P*360,d=b,h=b+f;b=h;let C=d+f/2,S=I>0?(x+I)/2:x*.65,{x:R,y:A}=ge(s,y,S,C);return {point:T,pointIndex:T.pointIndex,startAngle:d,endAngle:h,color:T.color,path:An(s,y,x,I,d,h),labelX:R,labelY:A}})},[p,P,c,e]);return jsx("g",{className:"chart-pie-series",role:"list","aria-label":"Pie chart","data-testid":"chart-series-pie",children:u.map((s,y)=>{let x=P>0?Math.round(s.point.value/P*100):0,I=r?.series===0&&r?.point===s.pointIndex;return jsxs("g",{role:"listitem",tabIndex:n(0,s.pointIndex),"aria-label":`${s.point.label}: ${g(s.point.value)} (${x}%)`,onFocus:()=>o?.(0,s.pointIndex),onBlur:()=>l?.(),onMouseEnter:()=>a?.(0,s.pointIndex),onMouseLeave:()=>i?.(),onKeyDown:b=>m?.(b),className:"outline-none",children:[jsx("path",{d:s.path,fill:s.color,stroke:"var(--content-background, #fff)",strokeWidth:2,className:`transition-opacity ${I?"opacity-100":"opacity-85 hover:opacity-100"}`}),x>=5&&jsxs("text",{x:s.labelX,y:s.labelY,textAnchor:"middle",dominantBaseline:"central",className:"fill-[var(--content-foreground)] text-[11px] font-semibold pointer-events-none",children:[x,"%"]})]},`${s.point.label}-${y}`)})})}Ye.displayName="ChartPieSeries";function we(t,e,n,r){let o=(r-90)*Math.PI/180;return {x:t+n*Math.cos(o),y:e+n*Math.sin(o)}}var $t=4;function qe({allSeries:t,scales:e,getSeriesColor:n,getTabIndex:r,selectedPoint:o,onPointFocus:l,onPointBlur:a,onPointHover:i,onPointHoverEnd:m,onKeyDown:g,formatValue:v}){let{dimensions:c}=J(),p=c.plotArea,{allLabels:P}=e,u=p.x+p.width/2,s=p.y+p.height/2,y=Math.min(p.width,p.height)/2-24,x=P.length,I=e.yMin??0,b=e.yMax??100,T=C=>{let S=b!==I?(C-I)/(b-I):0;return Math.max(0,Math.min(1,S))*y},f=useMemo(()=>Array.from({length:$t},(C,S)=>{let R=y/$t*(S+1);return Array.from({length:x},(w,D)=>{let N=360/x*D;return we(u,s,R,N)}).map(w=>`${w.x},${w.y}`).join(" ")}),[u,s,y,x]),d=useMemo(()=>Array.from({length:x},(C,S)=>{let R=360/x*S;return we(u,s,y,R)}),[u,s,y,x]),h=useMemo(()=>P.map((C,S)=>{let R=360/x*S,{x:A,y:w}=we(u,s,y+16,R);return {label:C,x:A,y:w}}),[P,u,s,y,x]);return jsxs("g",{className:"chart-radar-series","data-testid":"chart-series-radar",children:[f.map((C,S)=>jsx("polygon",{points:C,fill:"none",stroke:"var(--border, #e5e7eb)",strokeWidth:1,opacity:.5},`ring-${S}`)),d.map((C,S)=>jsx("line",{x1:u,y1:s,x2:C.x,y2:C.y,stroke:"var(--border, #e5e7eb)",strokeWidth:1,opacity:.3},`spoke-${S}`)),h.map(C=>jsx("text",{x:C.x,y:C.y,textAnchor:"middle",dominantBaseline:"central",className:"fill-[var(--muted-foreground)] text-[11px]",children:C.label},C.label)),t.map((C,S)=>{let R=C.color??n(S),A=C.data.map((D,N)=>{let $=P.indexOf(D.label);if($===-1)return null;let F=360/x*$,H=T(D.value),{x:B,y:U}=we(u,s,H,F);return {x:B,y:U,point:D,pointIndex:N,labelIndex:$}}).filter(D=>D!==null),w=A.map(D=>`${D.x},${D.y}`).join(" ");return jsxs("g",{role:"list","aria-label":`${C.name} series`,children:[jsx("polygon",{points:w,fill:R,fillOpacity:.2,stroke:R,strokeWidth:2,"aria-hidden":"true"}),A.map(({x:D,y:N,point:$,pointIndex:F})=>jsx(z,{type:"line",x:D,y:N,color:R,seriesIndex:S,pointIndex:F,tabIndex:r(S,F),label:`${C.name}: ${$.label}, ${v($.value)}`,isSelected:o?.series===S&&o?.point===F,onFocus:l,onBlur:a,onHover:i,onHoverEnd:m,onKeyDown:g},`${$.label}-${F}`))]},C.name)})]})}qe.displayName="ChartRadarSeries";function je({type:t,data:e,dimensions:n,scales:r,titleId:o,descId:l,showGrid:a,xAxisLabel:i,yAxisLabel:m,getSeriesColor:g,getTabIndex:v,selectedPoint:c,formatValue:p,onKeyDown:P,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,stacked:I=false,innerRadius:b=0,pointSize:T=8}){let{width:f,height:d,plotArea:h}=n,{allLabels:C,xScale:S,yScale:R,yTicks:A}=r;return jsxs("svg",{role:"graphics-document","aria-roledescription":`${t} chart`,"aria-labelledby":o,"aria-describedby":l,viewBox:`0 0 ${f} ${d}`,className:"h-full w-full",style:{maxHeight:d},"data-testid":"chart-svg",children:[t!=="pie"&&t!=="radar"&&jsxs(Fragment,{children:[jsx(He,{yTicks:A,yScale:R,plotX:h.x,plotWidth:h.width,visible:a}),jsx(Fe,{allLabels:C,yTicks:A,xScale:S,yScale:R,plotArea:h,xAxisLabel:i,yAxisLabel:m,formatValue:p})]}),t==="pie"&&jsx(Ye,{series:e,innerRadius:b,getTabIndex:v,selectedPoint:c,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,onKeyDown:P,formatValue:p}),t==="radar"&&jsx(qe,{allSeries:e,scales:r,getSeriesColor:g,getTabIndex:v,selectedPoint:c,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,onKeyDown:P,formatValue:p}),t!=="pie"&&t!=="radar"&&e.map((w,D)=>{let N=w.color||g(D),$=w.pattern||"solid";if(t==="bar")return jsx(Ke,{series:w,seriesIndex:D,totalSeries:e.length,dimensions:n,scales:r,color:N,getTabIndex:v,selectedPoint:c,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,onKeyDown:P,formatValue:p},w.name);if(t==="area"){let F=I?(()=>{let H=new Array(C.length).fill(0);for(let B=0;B<D;B++){let U=e[B];for(let q of U.data){let O=C.indexOf(q.label);O!==-1&&(H[O]=(H[O]??0)+q.value);}}return H})():null;return jsx(ze,{series:w,seriesIndex:D,scales:r,color:N,baseline:F,getTabIndex:v,selectedPoint:c,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,onKeyDown:P,formatValue:p},w.name)}return t==="scatter"?jsx(Ue,{series:w,seriesIndex:D,scales:r,color:N,pointSize:T,getTabIndex:v,selectedPoint:c,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,onKeyDown:P,formatValue:p},w.name):jsx(Be,{series:w,seriesIndex:D,scales:r,color:N,pattern:$,getTabIndex:v,selectedPoint:c,onPointFocus:u,onPointBlur:s,onPointHover:y,onPointHoverEnd:x,onKeyDown:P,formatValue:p},w.name)})]})}je.displayName="ChartSVG";var Je=cva(["z-50 overflow-hidden rounded-md px-3 py-1.5 text-sm","bg-[var(--content-foreground)] text-[var(--content-background)]","motion-safe:animate-in motion-safe:fade-in-0","data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0"],{variants:{side:{top:["motion-safe:slide-in-from-bottom-2","data-[exiting]:motion-safe:slide-out-to-bottom-2"],bottom:["motion-safe:slide-in-from-top-2","data-[exiting]:motion-safe:slide-out-to-top-2"],left:["motion-safe:slide-in-from-right-2","data-[exiting]:motion-safe:slide-out-to-right-2"],right:["motion-safe:slide-in-from-left-2","data-[exiting]:motion-safe:slide-out-to-left-2"]}},defaultVariants:{side:"top"}});cva("fill-[var(--content-foreground)]",{variants:{side:{top:"rotate-180",bottom:"rotate-0",left:"rotate-90",right:"-rotate-90"}},defaultVariants:{side:"top"}});var Bt=8;function tt({visible:t,x:e,y:n,seriesName:r,label:o,value:l,chartWidth:a,chartHeight:i,trend:m,trendDirection:g}){let v=useRef(null),[c,p]=useState({left:0,top:0}),[P,u]=useState("top");return useEffect(()=>{if(!t||!v.current)return;let y=v.current.getBoundingClientRect(),x=y.width||120,I=y.height||50,b=e-x/2,T=n-I-Bt,f="top";T<0&&(T=n+Bt+16,f="bottom"),b<0&&(b=0),b+x>a&&(b=a-x),p({left:b,top:T}),u(f);},[t,e,n,a]),t?jsxs("div",{ref:v,"aria-hidden":"true",className:Je({side:P}),style:{position:"absolute",left:c.left,top:c.top,pointerEvents:"none"},"data-testid":"chart-tooltip",children:[jsx("div",{className:"font-medium",children:r}),jsxs("div",{className:"opacity-80",children:[o,": ",jsx("span",{className:"font-semibold",children:l})]}),m&&jsxs("div",{className:"text-xs opacity-70 mt-1 flex items-center gap-1",children:[g==="up"?jsx("svg",{"aria-hidden":"true",className:"h-3 w-3 text-green-500",viewBox:"0 0 20 20",fill:"currentColor",children:jsx("path",{fillRule:"evenodd",d:"M10 17a.75.75 0 01-.75-.75V5.612L5.29 9.77a.75.75 0 01-1.08-1.04l5.25-5.5a.75.75 0 011.08 0l5.25 5.5a.75.75 0 11-1.08 1.04l-3.96-4.158V16.25A.75.75 0 0110 17z",clipRule:"evenodd"})}):g==="down"?jsx("svg",{"aria-hidden":"true",className:"h-3 w-3 text-red-500",viewBox:"0 0 20 20",fill:"currentColor",children:jsx("path",{fillRule:"evenodd",d:"M10 3a.75.75 0 01.75.75v10.638l3.96-4.158a.75.75 0 111.08 1.04l-5.25 5.5a.75.75 0 01-1.08 0l-5.25-5.5a.75.75 0 111.08-1.04l3.96 4.158V3.75A.75.75 0 0110 3z",clipRule:"evenodd"})}):null,jsx("span",{children:m})]})]}):null}tt.displayName="ChartTooltip";function nt({data:t,visible:e,type:n,getSeriesColor:r}){return e?jsx("div",{className:pt({visible:e}),role:"list","aria-label":"Chart legend","data-testid":"chart-legend",children:t.map((o,l)=>{let a=o.color||r(l),i=o.pattern||"solid";return jsxs("div",{role:"listitem",className:"flex items-center gap-2",children:[n==="bar"?jsx("div",{className:"h-3 w-3 rounded-sm",style:{backgroundColor:a},"data-testid":`legend-color-${l}`,"aria-hidden":"true"}):jsx("svg",{width:"24",height:"12","aria-hidden":"true","data-testid":`legend-color-${l}`,children:jsx("line",{x1:"0",y1:"6",x2:"24",y2:"6",stroke:a,strokeWidth:"2",strokeDasharray:se[i]==="none"?void 0:se[i]})}),jsx("span",{className:"text-sm text-[var(--content-foreground)]",children:o.name})]},o.name)})}):null}nt.displayName="ChartLegend";function ot({announcement:t}){return jsx(VisuallyHidden,{children:jsx("div",{role:"status","aria-live":"polite","aria-atomic":"true","data-testid":"chart-announcer",children:t})})}ot.displayName="ChartAnnouncer";function rt({data:t,title:e,xAxisLabel:n,yAxisLabel:r,formatValue:o,allLabels:l}){let a=t.length===1;return jsx(VisuallyHidden,{children:jsxs("table",{"data-testid":"chart-data-table",children:[jsxs("caption",{children:[e," data table"]}),jsx("thead",{children:jsxs("tr",{children:[jsx("th",{scope:"col",children:n}),a?jsx("th",{scope:"col",children:r}):t.map(i=>jsxs("th",{scope:"col",children:[i.name," (",r,")"]},i.name))]})}),jsx("tbody",{children:l.map(i=>jsxs("tr",{children:[jsx("th",{scope:"row",children:i}),t.map(m=>{let g=m.data.find(v=>v.label===i);return jsx("td",{children:g?o(g.value):"\u2014"},m.name)})]},i))})]})})}rt.displayName="ChartDataTable";function Wt(t){let{roving:e,onSelect:n,onClear:r,disabled:o=false}=t;return {onKeyDown:useCallback(a=>{if(!o)switch(a.key){case "ArrowRight":a.preventDefault(),e.moveRight();break;case "ArrowLeft":a.preventDefault(),e.moveLeft();break;case "ArrowDown":a.preventDefault(),e.moveDown();break;case "ArrowUp":a.preventDefault(),e.moveUp();break;case "Home":a.preventDefault(),e.moveToStart();break;case "End":a.preventDefault(),e.moveToEnd();break;case "Enter":case " ":a.preventDefault(),n?.();break;case "Escape":a.preventDefault(),r?.();break;}},[e,n,r,o])}}function jn({chartId:t}){let e=J(),{data:n,type:r,title:o,xAxisLabel:l,yAxisLabel:a,showTooltip:i,showGrid:m,showLegend:g,dimensions:v,scales:c,announcement:p,isTooltipVisible:P,tooltipPoint:u,currentTrend:s,currentTrendDirection:y,selectedPoint:x,getTabIndex:I,formatValue:b,getSeriesColor:T,getPointCoordinates:f,setFocus:d,selectPoint:h,clearSelection:C,showTooltipAt:S,hideTooltip:R}=e,A=`${t}-title`,w=`${t}-desc`,D=De({rows:n.length,cols:G=>n[G]?.data.length||0,onFocusChange:(G,j)=>{d(G,j);}}),{onKeyDown:N}=Wt({roving:D,onSelect:()=>{h(D.focusedRow,D.focusedCol);},onClear:()=>{C();}}),$=useCallback((G,j)=>{D.setFocus(G,j),S(G,j);},[D,S]),F=useCallback(()=>{},[]),H=useCallback((G,j)=>{S(G,j);},[S]),B=useCallback(()=>{R();},[R]),U=useMemo(()=>u?f(u.series,u.point)||{x:0,y:0}:{x:0,y:0},[u,f]),q=useMemo(()=>u?n[u.series]:null,[u,n]),O=useMemo(()=>u?q?.data[u.point]:null,[u,q]),Se=useMemo(()=>g??n.length>1,[g,n.length]);return jsxs(Fragment,{children:[jsx(ot,{announcement:p}),jsxs("div",{className:"relative",children:[jsx("div",{className:"relative z-0",children:jsx(je,{type:r,data:n,dimensions:v,scales:c,titleId:A,descId:w,showGrid:m,xAxisLabel:l??"",yAxisLabel:a??"",getSeriesColor:T,getTabIndex:I,selectedPoint:x,formatValue:b,onKeyDown:N,onPointFocus:$,onPointBlur:F,onPointHover:H,onPointHoverEnd:B,stacked:e.stacked,innerRadius:e.innerRadius,pointSize:e.pointSize})}),i&&O&&q&&jsx(tt,{visible:P,x:U.x,y:U.y,seriesName:q.name,label:O.label,value:b(O.value),chartWidth:v.width,chartHeight:v.height,trend:s,trendDirection:y})]}),jsx(nt,{data:n,visible:Se,type:r,getSeriesColor:T}),jsx(rt,{data:n,title:o,xAxisLabel:l,yAxisLabel:a,formatValue:b,allLabels:c.allLabels})]})}var zt=forwardRef(({data:t,type:e,title:n,description:r,xAxisLabel:o,yAxisLabel:l,variant:a="default",className:i,showTooltip:m=true,showGrid:g=true,showLegend:v,announceTrends:c=false,trendUpFormat:p="up {percent}% from previous",trendDownFormat:P="down {percent}% from previous",startAtZero:u=true,stacked:s=false,innerRadius:y=0,pointSize:x=8,reducedMotion:I,onPointFocus:b,onPointSelect:T,id:f,"aria-label":d,"aria-labelledby":h,"aria-describedby":C,"data-testid":S},R)=>{let A=useRef(null),w=useId(),D=f||`chart-${w}`,N=`${D}-title`,$=`${D}-desc`,F=v??t.length>1;return jsxs("figure",{ref:H=>{typeof R=="function"?R(H):R&&(R.current=H),A.current=H;},id:D,role:"figure","aria-label":d,"aria-labelledby":h||N,"aria-describedby":C||$,"data-testid":S,className:de(Me({variant:a}),"p-4",i),children:[jsxs("figcaption",{className:"sr-only",children:[jsx("span",{id:N,children:n}),jsx("span",{id:$,children:r})]}),jsx(Tt,{containerRef:A,data:t,type:e,title:n,description:r,xAxisLabel:o??"",yAxisLabel:l??"",showTooltip:m,showGrid:g,showLegend:F,announceTrends:c,trendUpFormat:p,trendDownFormat:P,startAtZero:u,stacked:s,innerRadius:y,pointSize:x,reducedMotion:I,onPointFocus:b,onPointSelect:T,children:jsx(jn,{chartId:D})})]})});zt.displayName="Chart";var Ut=memo(zt);Ut.displayName="Chart";var Xt=z$1.object({className:z$1.string().optional(),children:z$1.any().optional(),id:z$1.string().optional(),"aria-label":z$1.string().optional(),"aria-labelledby":z$1.string().optional(),"aria-describedby":z$1.string().optional(),"aria-live":z$1.enum(["off","polite","assertive"]).optional(),"aria-hidden":z$1.boolean().optional(),"data-testid":z$1.string().optional()});var Yt=z$1.object({label:z$1.string().min(1,"Label is required"),value:z$1.number(),description:z$1.string().optional()}),Zt=z$1.enum(["solid","dashed","dotted"]),qt=z$1.object({name:z$1.string().min(1,"Series name is required"),color:z$1.string().optional(),pattern:Zt.optional().default("solid"),data:z$1.array(Yt).min(1,"At least one data point required")}),jt=z$1.enum(["bar","line","area","scatter","pie","radar"]),Qt=z$1.enum(["default","muted"]),Jn=Xt.extend({data:z$1.array(qt).min(1,"At least one data series required").max(5,"Maximum 5 series allowed"),type:jt,title:z$1.string().min(1,"Title is required"),description:z$1.string().min(1,"Description is required"),xAxisLabel:z$1.string().optional().default(""),yAxisLabel:z$1.string().optional().default(""),variant:Qt.optional().default("default"),showTooltip:z$1.boolean().optional().default(true),showGrid:z$1.boolean().optional().default(true),showLegend:z$1.boolean().optional(),announceTrends:z$1.boolean().optional().default(false),trendUpFormat:z$1.string().optional().default("up {percent}% from previous"),trendDownFormat:z$1.string().optional().default("down {percent}% from previous"),startAtZero:z$1.boolean().optional().default(true),stacked:z$1.boolean().optional().default(false),innerRadius:z$1.number().min(0).optional().default(0),pointSize:z$1.number().min(2).optional().default(8),reducedMotion:z$1.boolean().optional(),onPointFocus:z$1.unknown().optional(),onPointSelect:z$1.unknown().optional()});export{Ut as Chart,Jn as ChartPropsSchema,jt as ChartTypeSchema,Qt as ChartVariantSchema,Yt as DataPointSchema,qt as DataSeriesSchema,Zt as LinePatternSchema,Me as chartVariants,Ne as dataPointVariants};//# sourceMappingURL=index.mjs.map
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|