@tribepad/themis 1.0.11 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/dist/elements/Accordion/Accordion.types.d.ts +44 -4
  2. package/dist/elements/Accordion/Accordion.types.d.ts.map +1 -1
  3. package/dist/elements/Accordion/index.js +1 -1
  4. package/dist/elements/Accordion/index.js.map +1 -1
  5. package/dist/elements/Accordion/index.mjs +1 -1
  6. package/dist/elements/Accordion/index.mjs.map +1 -1
  7. package/dist/elements/AlertDialog/AlertDialog.types.d.ts +19 -2
  8. package/dist/elements/AlertDialog/AlertDialog.types.d.ts.map +1 -1
  9. package/dist/elements/AlertDialog/index.js +1 -1
  10. package/dist/elements/AlertDialog/index.js.map +1 -1
  11. package/dist/elements/AlertDialog/index.mjs +1 -1
  12. package/dist/elements/AlertDialog/index.mjs.map +1 -1
  13. package/dist/elements/Avatar/Avatar.d.ts +1 -21
  14. package/dist/elements/Avatar/Avatar.d.ts.map +1 -1
  15. package/dist/elements/Avatar/Avatar.types.d.ts +30 -11
  16. package/dist/elements/Avatar/Avatar.types.d.ts.map +1 -1
  17. package/dist/elements/Avatar/AvatarGroup.d.ts +1 -17
  18. package/dist/elements/Avatar/AvatarGroup.d.ts.map +1 -1
  19. package/dist/elements/Avatar/index.js +1 -1
  20. package/dist/elements/Avatar/index.js.map +1 -1
  21. package/dist/elements/Avatar/index.mjs +1 -1
  22. package/dist/elements/Avatar/index.mjs.map +1 -1
  23. package/dist/elements/Badge/Badge.types.d.ts +16 -9
  24. package/dist/elements/Badge/Badge.types.d.ts.map +1 -1
  25. package/dist/elements/Badge/index.js +1 -1
  26. package/dist/elements/Badge/index.js.map +1 -1
  27. package/dist/elements/Badge/index.mjs +1 -1
  28. package/dist/elements/Badge/index.mjs.map +1 -1
  29. package/dist/elements/Breadcrumbs/Breadcrumbs.d.ts +2 -34
  30. package/dist/elements/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  31. package/dist/elements/Breadcrumbs/Breadcrumbs.types.d.ts +25 -2
  32. package/dist/elements/Breadcrumbs/Breadcrumbs.types.d.ts.map +1 -1
  33. package/dist/elements/Breadcrumbs/index.js +1 -1
  34. package/dist/elements/Breadcrumbs/index.js.map +1 -1
  35. package/dist/elements/Breadcrumbs/index.mjs +1 -1
  36. package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
  37. package/dist/elements/Button/Button.d.ts +1 -24
  38. package/dist/elements/Button/Button.d.ts.map +1 -1
  39. package/dist/elements/Button/Button.types.d.ts +28 -7
  40. package/dist/elements/Button/Button.types.d.ts.map +1 -1
  41. package/dist/elements/ButtonGroup/ButtonGroup.d.ts +3 -14
  42. package/dist/elements/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  43. package/dist/elements/ButtonGroup/ButtonGroup.types.d.ts +14 -5
  44. package/dist/elements/ButtonGroup/ButtonGroup.types.d.ts.map +1 -1
  45. package/dist/elements/ButtonGroup/index.js +1 -1
  46. package/dist/elements/ButtonGroup/index.js.map +1 -1
  47. package/dist/elements/ButtonGroup/index.mjs +1 -1
  48. package/dist/elements/ButtonGroup/index.mjs.map +1 -1
  49. package/dist/elements/Carousel/Carousel.types.d.ts +26 -7
  50. package/dist/elements/Carousel/Carousel.types.d.ts.map +1 -1
  51. package/dist/elements/Chart/Chart.d.ts +2 -40
  52. package/dist/elements/Chart/Chart.d.ts.map +1 -1
  53. package/dist/elements/Chart/Chart.types.d.ts +25 -10
  54. package/dist/elements/Chart/Chart.types.d.ts.map +1 -1
  55. package/dist/elements/Chart/index.js +1 -1
  56. package/dist/elements/Chart/index.js.map +1 -1
  57. package/dist/elements/Chart/index.mjs +1 -1
  58. package/dist/elements/Chart/index.mjs.map +1 -1
  59. package/dist/elements/Checkbox/Checkbox.d.ts +1 -31
  60. package/dist/elements/Checkbox/Checkbox.d.ts.map +1 -1
  61. package/dist/elements/Checkbox/Checkbox.types.d.ts +33 -1
  62. package/dist/elements/Checkbox/Checkbox.types.d.ts.map +1 -1
  63. package/dist/elements/Checkbox/index.js +1 -1
  64. package/dist/elements/Checkbox/index.js.map +1 -1
  65. package/dist/elements/Checkbox/index.mjs +1 -1
  66. package/dist/elements/Checkbox/index.mjs.map +1 -1
  67. package/dist/elements/CheckboxGroup/CheckboxGroup.d.ts +1 -26
  68. package/dist/elements/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
  69. package/dist/elements/CheckboxGroup/CheckboxGroup.types.d.ts +48 -4
  70. package/dist/elements/CheckboxGroup/CheckboxGroup.types.d.ts.map +1 -1
  71. package/dist/elements/CheckboxGroup/index.js +1 -1
  72. package/dist/elements/CheckboxGroup/index.js.map +1 -1
  73. package/dist/elements/CheckboxGroup/index.mjs +1 -1
  74. package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
  75. package/dist/elements/Combobox/Combobox.d.ts +1 -30
  76. package/dist/elements/Combobox/Combobox.d.ts.map +1 -1
  77. package/dist/elements/Combobox/Combobox.types.d.ts +38 -4
  78. package/dist/elements/Combobox/Combobox.types.d.ts.map +1 -1
  79. package/dist/elements/Combobox/index.js +1 -1
  80. package/dist/elements/Combobox/index.js.map +1 -1
  81. package/dist/elements/Combobox/index.mjs +1 -1
  82. package/dist/elements/Combobox/index.mjs.map +1 -1
  83. package/dist/elements/Dropdown/Dropdown.d.ts +10 -124
  84. package/dist/elements/Dropdown/Dropdown.d.ts.map +1 -1
  85. package/dist/elements/Dropdown/Dropdown.types.d.ts +53 -8
  86. package/dist/elements/Dropdown/Dropdown.types.d.ts.map +1 -1
  87. package/dist/elements/FileField/FileField.d.ts +2 -39
  88. package/dist/elements/FileField/FileField.d.ts.map +1 -1
  89. package/dist/elements/FileField/FileField.types.d.ts +31 -13
  90. package/dist/elements/FileField/FileField.types.d.ts.map +1 -1
  91. package/dist/elements/FileField/index.js +1 -1
  92. package/dist/elements/FileField/index.js.map +1 -1
  93. package/dist/elements/FileField/index.mjs +1 -1
  94. package/dist/elements/FileField/index.mjs.map +1 -1
  95. package/dist/elements/FormLayout/FormLayout.d.ts +2 -37
  96. package/dist/elements/FormLayout/FormLayout.d.ts.map +1 -1
  97. package/dist/elements/FormLayout/FormLayout.types.d.ts +19 -3
  98. package/dist/elements/FormLayout/FormLayout.types.d.ts.map +1 -1
  99. package/dist/elements/MatrixGrid/MatrixGrid.d.ts +2 -29
  100. package/dist/elements/MatrixGrid/MatrixGrid.d.ts.map +1 -1
  101. package/dist/elements/MatrixGrid/MatrixGrid.types.d.ts +22 -1
  102. package/dist/elements/MatrixGrid/MatrixGrid.types.d.ts.map +1 -1
  103. package/dist/elements/MatrixGrid/index.js +1 -1
  104. package/dist/elements/MatrixGrid/index.js.map +1 -1
  105. package/dist/elements/MatrixGrid/index.mjs +1 -1
  106. package/dist/elements/MatrixGrid/index.mjs.map +1 -1
  107. package/dist/elements/Modal/Modal.types.d.ts +69 -9
  108. package/dist/elements/Modal/Modal.types.d.ts.map +1 -1
  109. package/dist/elements/Pagination/Pagination.d.ts +2 -28
  110. package/dist/elements/Pagination/Pagination.d.ts.map +1 -1
  111. package/dist/elements/Pagination/Pagination.types.d.ts +26 -1
  112. package/dist/elements/Pagination/Pagination.types.d.ts.map +1 -1
  113. package/dist/elements/Pagination/index.js +1 -1
  114. package/dist/elements/Pagination/index.js.map +1 -1
  115. package/dist/elements/Pagination/index.mjs +1 -1
  116. package/dist/elements/Pagination/index.mjs.map +1 -1
  117. package/dist/elements/Panel/Panel.types.d.ts +67 -9
  118. package/dist/elements/Panel/Panel.types.d.ts.map +1 -1
  119. package/dist/elements/PasswordField/PasswordField.d.ts +2 -26
  120. package/dist/elements/PasswordField/PasswordField.d.ts.map +1 -1
  121. package/dist/elements/PasswordField/PasswordField.types.d.ts +27 -2
  122. package/dist/elements/PasswordField/PasswordField.types.d.ts.map +1 -1
  123. package/dist/elements/PasswordField/index.js +1 -1
  124. package/dist/elements/PasswordField/index.js.map +1 -1
  125. package/dist/elements/PasswordField/index.mjs +1 -1
  126. package/dist/elements/PasswordField/index.mjs.map +1 -1
  127. package/dist/elements/RadioGroup/RadioGroup.d.ts +1 -26
  128. package/dist/elements/RadioGroup/RadioGroup.d.ts.map +1 -1
  129. package/dist/elements/RadioGroup/RadioGroup.types.d.ts +43 -4
  130. package/dist/elements/RadioGroup/RadioGroup.types.d.ts.map +1 -1
  131. package/dist/elements/RadioGroup/index.js +1 -1
  132. package/dist/elements/RadioGroup/index.js.map +1 -1
  133. package/dist/elements/RadioGroup/index.mjs +1 -1
  134. package/dist/elements/RadioGroup/index.mjs.map +1 -1
  135. package/dist/elements/RatingScale/RatingScale.d.ts +2 -30
  136. package/dist/elements/RatingScale/RatingScale.d.ts.map +1 -1
  137. package/dist/elements/RatingScale/RatingScale.types.d.ts +29 -1
  138. package/dist/elements/RatingScale/RatingScale.types.d.ts.map +1 -1
  139. package/dist/elements/RatingScale/index.js +1 -1
  140. package/dist/elements/RatingScale/index.js.map +1 -1
  141. package/dist/elements/RatingScale/index.mjs +1 -1
  142. package/dist/elements/RatingScale/index.mjs.map +1 -1
  143. package/dist/elements/SearchField/SearchField.d.ts +2 -26
  144. package/dist/elements/SearchField/SearchField.d.ts.map +1 -1
  145. package/dist/elements/SearchField/SearchField.types.d.ts +26 -2
  146. package/dist/elements/SearchField/SearchField.types.d.ts.map +1 -1
  147. package/dist/elements/SearchField/index.js +1 -1
  148. package/dist/elements/SearchField/index.js.map +1 -1
  149. package/dist/elements/SearchField/index.mjs +1 -1
  150. package/dist/elements/SearchField/index.mjs.map +1 -1
  151. package/dist/elements/Select/Select.d.ts +3 -61
  152. package/dist/elements/Select/Select.d.ts.map +1 -1
  153. package/dist/elements/Select/Select.types.d.ts +52 -4
  154. package/dist/elements/Select/Select.types.d.ts.map +1 -1
  155. package/dist/elements/Select/index.js +1 -1
  156. package/dist/elements/Select/index.js.map +1 -1
  157. package/dist/elements/Select/index.mjs +1 -1
  158. package/dist/elements/Select/index.mjs.map +1 -1
  159. package/dist/elements/SituationalJudgement/SituationalJudgement.d.ts +2 -28
  160. package/dist/elements/SituationalJudgement/SituationalJudgement.d.ts.map +1 -1
  161. package/dist/elements/SituationalJudgement/SituationalJudgement.types.d.ts +23 -1
  162. package/dist/elements/SituationalJudgement/SituationalJudgement.types.d.ts.map +1 -1
  163. package/dist/elements/SituationalJudgement/index.js +1 -1
  164. package/dist/elements/SituationalJudgement/index.js.map +1 -1
  165. package/dist/elements/SituationalJudgement/index.mjs +1 -1
  166. package/dist/elements/SituationalJudgement/index.mjs.map +1 -1
  167. package/dist/elements/Skeleton/Skeleton.types.d.ts +11 -6
  168. package/dist/elements/Skeleton/Skeleton.types.d.ts.map +1 -1
  169. package/dist/elements/Skeleton/index.js +1 -1
  170. package/dist/elements/Skeleton/index.js.map +1 -1
  171. package/dist/elements/Skeleton/index.mjs +1 -1
  172. package/dist/elements/Skeleton/index.mjs.map +1 -1
  173. package/dist/elements/Switch/Switch.types.d.ts +31 -7
  174. package/dist/elements/Switch/Switch.types.d.ts.map +1 -1
  175. package/dist/elements/Switch/index.js +1 -1
  176. package/dist/elements/Switch/index.js.map +1 -1
  177. package/dist/elements/Switch/index.mjs +1 -1
  178. package/dist/elements/Switch/index.mjs.map +1 -1
  179. package/dist/elements/Table/Table.d.ts +7 -79
  180. package/dist/elements/Table/Table.d.ts.map +1 -1
  181. package/dist/elements/Table/Table.types.d.ts +82 -17
  182. package/dist/elements/Table/Table.types.d.ts.map +1 -1
  183. package/dist/elements/Table/index.js +1 -1
  184. package/dist/elements/Table/index.js.map +1 -1
  185. package/dist/elements/Table/index.mjs +1 -1
  186. package/dist/elements/Table/index.mjs.map +1 -1
  187. package/dist/elements/Tabs/Tabs.d.ts.map +1 -1
  188. package/dist/elements/Tabs/Tabs.types.d.ts +61 -5
  189. package/dist/elements/Tabs/Tabs.types.d.ts.map +1 -1
  190. package/dist/elements/Tabs/index.js +1 -1
  191. package/dist/elements/Tabs/index.js.map +1 -1
  192. package/dist/elements/Tabs/index.mjs +1 -1
  193. package/dist/elements/Tabs/index.mjs.map +1 -1
  194. package/dist/elements/TextField/TextField.d.ts +6 -71
  195. package/dist/elements/TextField/TextField.d.ts.map +1 -1
  196. package/dist/elements/TextField/TextField.types.d.ts +76 -12
  197. package/dist/elements/TextField/TextField.types.d.ts.map +1 -1
  198. package/dist/elements/TextField/index.js +1 -1
  199. package/dist/elements/TextField/index.js.map +1 -1
  200. package/dist/elements/TextField/index.mjs +1 -1
  201. package/dist/elements/TextField/index.mjs.map +1 -1
  202. package/dist/elements/Toast/Toast.types.d.ts +12 -20
  203. package/dist/elements/Toast/Toast.types.d.ts.map +1 -1
  204. package/dist/elements/Toast/Toaster.d.ts +2 -5
  205. package/dist/elements/Toast/Toaster.d.ts.map +1 -1
  206. package/dist/elements/Toast/index.js +1 -1
  207. package/dist/elements/Toast/index.js.map +1 -1
  208. package/dist/elements/Toast/index.mjs +1 -1
  209. package/dist/elements/Toast/index.mjs.map +1 -1
  210. package/dist/elements/Tooltip/Tooltip.types.d.ts +39 -4
  211. package/dist/elements/Tooltip/Tooltip.types.d.ts.map +1 -1
  212. package/dist/elements/Tooltip/index.js +1 -1
  213. package/dist/elements/Tooltip/index.js.map +1 -1
  214. package/dist/elements/Tooltip/index.mjs +1 -1
  215. package/dist/elements/Tooltip/index.mjs.map +1 -1
  216. package/dist/elements/index.js +1 -1
  217. package/dist/elements/index.js.map +1 -1
  218. package/dist/elements/index.mjs +1 -1
  219. package/dist/elements/index.mjs.map +1 -1
  220. package/dist/index.js +2 -2
  221. package/dist/index.js.map +1 -1
  222. package/dist/index.mjs +2 -2
  223. package/dist/index.mjs.map +1 -1
  224. package/package.json +1 -1
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- 'use strict';var react=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),reactAria=require('react-aria');require('react-aria-components');var zod=require('zod');function se(...o){return tailwindMerge.twMerge(clsx.clsx(o))}var Ee=classVarianceAuthority.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"}}),Ae=classVarianceAuthority.cva("cursor-pointer focus-visible:outline-none",{variants:{type:{bar:"",line:"stroke-2"},state:{default:"",focused:"",selected:"opacity-80"}},defaultVariants:{type:"bar",state:"default"}});classVarianceAuthority.cva("pointer-events-none",{variants:{visible:{true:"opacity-100",false:"opacity-0"}},defaultVariants:{visible:false}});var Je=classVarianceAuthority.cva("flex flex-wrap items-center justify-center gap-4 px-4 py-2",{variants:{visible:{true:"",false:"hidden"}},defaultVariants:{visible:true}});var _={top:20,right:20,bottom:60,left:60},xe=300,ye=169,Vt=.2,Le=.1,Ot=20,le=4,et=2,ce=6;var te={solid:"none",dashed:"8 4",dotted:"2 4"};var tt="var(--border)",ot=1,nt=.7,ue="var(--border)",de=1,me=6,oe=12,rt=44,X=4,Ne=2,Me=["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 je(o,t){let e=Math.floor(Math.log10(o)),a=o/Math.pow(10,e),n;return t?a<1.5?n=1:a<3?n=2:a<7?n=5:n=10:a<=1?n=1:a<=2?n=2:a<=5?n=5:n=10,n*Math.pow(10,e)}function at(o,t,e=5){if(o===t){if(o===0)return [0,25,50,75,100];o=o*.9,t=t*1.1;}let a=je(t-o,false),n=je(a/(e-1),true),s=Math.floor(o/n)*n,r=Math.ceil(t/n)*n,i=[];for(let c=s;c<=r;c+=n)i.push(c);return i}function it(o,t,e,a=0){let n=o/t,s=n*(1-Vt),r=Math.max(Ot,s/e*(1-Le));return {barWidth:r,groupWidth:n,getBarX:(c,p)=>{let b=a+n*c+n/2,u=e*r+(e-1)*(Le*r);return b-u/2+p*(r+Le*r)}}}function st(o){let[t,e]=react.useState({width:xe,height:ye,padding:_,plotArea:{x:_.left,y:_.top,width:xe-_.left-_.right,height:ye-_.top-_.bottom}});return react.useEffect(()=>{let a=o.current;if(!a)return;let n=r=>{let i=Math.max(r,xe),c=Math.max(i*.5625,ye),p={x:_.left,y:_.top,width:i-_.left-_.right,height:c-_.top-_.bottom};e({width:i,height:c,padding:_,plotArea:p});},s=new ResizeObserver(r=>{let i=r[0];i&&n(i.contentRect.width);});return n(a.getBoundingClientRect().width),s.observe(a),()=>{s.disconnect();}},[o]),t}function Ce(o){let{rows:t,cols:e,initialRow:a=0,initialCol:n=0,wrap:s=false,onFocusChange:r}=o,[i,c]=react.useState(a),[p,b]=react.useState(n),u=react.useCallback(h=>typeof e=="function"?e(h):e,[e]),f=react.useCallback((h,d)=>{r?.(h,d);},[r]),S=react.useCallback(()=>{b(h=>{let d=u(i)-1,l=h+1;return l>d&&(l=s?0:d),l!==h&&f(i,l),l});},[i,u,s,f]),m=react.useCallback(()=>{b(h=>{let d=h-1,l=u(i)-1;return d<0&&(d=s?l:0),d!==h&&f(i,d),d});},[i,u,s,f]),x=react.useCallback(()=>{c(h=>{let d=h+1;if(d>=t&&(d=s?0:t-1),d!==h){let l=u(d)-1;b(v=>{let g=Math.min(v,l);return f(d,g),g});}return d});},[t,u,s,f]),E=react.useCallback(()=>{c(h=>{let d=h-1;if(d<0&&(d=s?t-1:0),d!==h){let l=u(d)-1;b(v=>{let g=Math.min(v,l);return f(d,g),g});}return d});},[t,u,s,f]),I=react.useCallback(()=>{b(0),f(i,0);},[i,f]),A=react.useCallback(()=>{let h=u(i)-1;b(h),f(i,h);},[i,u,f]),C=react.useCallback((h,d)=>{let l=Math.max(0,Math.min(h,t-1)),v=u(l)-1,g=Math.max(0,Math.min(d,v));c(l),b(g),f(l,g);},[t,u,f]),T=react.useCallback((h,d)=>h===i&&d===p?0:-1,[i,p]);return react.useMemo(()=>({focusedRow:i,focusedCol:p,moveRight:S,moveLeft:m,moveDown:x,moveUp:E,moveToStart:I,moveToEnd:A,setFocus:C,getTabIndex:T}),[i,p,S,m,x,E,I,A,C,T])}var ct=react.createContext(null);function Te(){let o=react.useContext(ct);if(!o)throw new Error("useChartContext must be used within a ChartProvider");return o}function Wt(o){let t=new Set;return o.forEach(e=>{e.data.forEach(a=>{t.add(a.label);});}),Array.from(t)}function Ut(o,t,e){let a=Wt(o),{plotArea:n}=t,s=1/0,r=-1/0;o.forEach(m=>{m.data.forEach(x=>{s=Math.min(s,x.value),r=Math.max(r,x.value);});}),(!isFinite(s)||!isFinite(r))&&(s=0,r=100);let i=e?Math.min(0,s):s,c=at(i,r),p=c[c.length-1]||r,b=c[0]||i,u=m=>{if(a.length<=1)return n.x+n.width/2;let x=n.width/a.length;return n.x+x*m+x/2},f=p-b||1;return {allLabels:a,xScale:u,yScale:m=>{let x=(m-b)/f;return n.y+n.height*(1-x)},yMin:b,yMax:p,yTicks:c}}function ut({children:o,containerRef:t,data:e,type:a,title:n,description:s,xAxisLabel:r,yAxisLabel:i,showTooltip:c,showGrid:p,showLegend:b,announceTrends:u,trendUpFormat:f,trendDownFormat:S,startAtZero:m,reducedMotion:x=false,onPointFocus:E,onPointSelect:I}){let[A,C]=react.useState(null),[T,h]=react.useState(""),[d,l]=react.useState(false),[v,g]=react.useState(null),[L,D]=react.useState(null),[k,V]=react.useState(null),G=st(t),O=react.useMemo(()=>Ut(e,G,m),[e,G,m]);react.useMemo(()=>Math.max(...e.map(y=>y.data.length)),[e]);let re=react.useCallback((y,P)=>(P?f:S).replace("{percent}",String(y)),[f,S]),we=(y,P)=>{if(!u||P<=0)return null;let w=e[y];if(!w)return null;let N=w.data[P],M=w.data[P-1];if(!N||!M||M.value===0)return null;let Z=(N.value-M.value)/Math.abs(M.value)*100,Q=Z>=0,ie=Math.abs(Math.round(Z));return {text:re(ie,Q),direction:Q?"up":"down"}},B=Ce({rows:e.length,cols:y=>e[y]?.data.length||0,onFocusChange:(y,P)=>{let w=e[y],N=w?.data[P];if(!w||!N)return;let M=we(y,P);D(M?.text??null),V(M?.direction??null);let Z=`${P+1} of ${w.data.length}`,Q=e.length>1?`${w.name}: `:"",ie=z(N.value),Mt=M?`, ${M.text}`:"";h(`${Q}${N.label}, ${ie}${Mt}. ${Z}.`),c&&(l(true),g({series:y,point:P})),E?.(N,y,P);}}),ae=react.useMemo(()=>{let y=typeof navigator<"u"?navigator.language:"en-US";return new Intl.NumberFormat(y)},[]),z=react.useCallback(y=>ae.format(y),[ae]),ee=react.useCallback((y,P)=>{if(!u||P<=0)return null;let w=e[y];if(!w)return null;let N=w.data[P],M=w.data[P-1];if(!N||!M||M.value===0)return null;let Z=(N.value-M.value)/Math.abs(M.value)*100,Q=Z>=0,ie=Math.abs(Math.round(Z));return {text:re(ie,Q),direction:Q?"up":"down"}},[e,u,re]),ge=react.useCallback(y=>Me[y%Me.length]??"var(--chart-1)",[]),F=react.useCallback((y,P)=>{let w=e[y],N=w?.data[P];if(!w||!N)return null;let M=O.allLabels.indexOf(N.label);return M===-1?null:{x:O.xScale(M),y:O.yScale(N.value)}},[e,O]),U=react.useCallback((y,P)=>{B.setFocus(y,P);},[B]),Xe=react.useCallback((y,P)=>{C({series:y,point:P});let w=e[y],N=w?.data[P];w&&N&&I?.(N,y,P);},[e,I]),Ye=react.useCallback(()=>{C(null);},[]),qe=react.useCallback(y=>{h(y);},[]),Ze=react.useCallback((y,P)=>{if(c){l(true),g({series:y,point:P});let w=ee(y,P);D(w?.text??null),V(w?.direction??null);}},[c,ee]),Qe=react.useCallback(()=>{l(false),g(null);},[]),Nt=react.useMemo(()=>({focusedSeries:B.focusedRow,focusedPoint:B.focusedCol,selectedPoint:A,announcement:T,isTooltipVisible:d,tooltipPoint:v,currentTrend:L,currentTrendDirection:k,dimensions:G,scales:O,data:e,type:a,title:n,description:s,xAxisLabel:r,yAxisLabel:i,showTooltip:c,showGrid:p,showLegend:b,announceTrends:u,trendUpFormat:f,trendDownFormat:S,startAtZero:m,reducedMotion:x,setFocus:U,selectPoint:Xe,clearSelection:Ye,announce:qe,showTooltipAt:Ze,hideTooltip:Qe,getTabIndex:B.getTabIndex,formatValue:z,getSeriesColor:ge,getPointCoordinates:F}),[B.focusedRow,B.focusedCol,B.getTabIndex,A,T,d,v,L,k,G,O,e,a,n,s,r,i,c,p,b,u,f,S,m,x,U,Xe,Ye,qe,Ze,Qe,z,ge,F]);return jsxRuntime.jsx(ct.Provider,{value:Nt,children:o})}function _e({yTicks:o,yScale:t,plotX:e,plotWidth:a,visible:n}){return n?jsxRuntime.jsx("g",{className:"chart-grid","aria-hidden":"true","data-testid":"chart-grid",children:o.map(s=>{let r=t(s);return jsxRuntime.jsx("line",{x1:e,y1:r,x2:e+a,y2:r,stroke:tt,strokeWidth:ot,strokeOpacity:nt},s)})}):null}_e.displayName="ChartGrid";function Ve({allLabels:o,yTicks:t,xScale:e,yScale:a,plotArea:n,xAxisLabel:s,yAxisLabel:r,formatValue:i}){let{x:c,y:p,width:b,height:u}=n;return jsxRuntime.jsxs("g",{className:"chart-axis","aria-hidden":"true","data-testid":"chart-axis",children:[jsxRuntime.jsx("line",{x1:c,y1:p+u,x2:c+b,y2:p+u,stroke:ue,strokeWidth:de}),jsxRuntime.jsx("line",{x1:c,y1:p,x2:c,y2:p+u,stroke:ue,strokeWidth:de}),o.map((f,S)=>{let m=e(S),x=p+u;return jsxRuntime.jsxs("g",{children:[jsxRuntime.jsx("line",{x1:m,y1:x,x2:m,y2:x+me,stroke:ue,strokeWidth:de}),jsxRuntime.jsx("text",{x:m,y:x+me+oe,textAnchor:"middle",fontSize:oe,fill:"currentColor",className:"text-[var(--content-foreground)]",children:f})]},f)}),t.map(f=>{let S=c,m=a(f);return jsxRuntime.jsxs("g",{children:[jsxRuntime.jsx("line",{x1:S-me,y1:m,x2:S,y2:m,stroke:ue,strokeWidth:de}),jsxRuntime.jsx("text",{x:S-me-4,y:m,textAnchor:"end",dominantBaseline:"middle",fontSize:oe,fill:"currentColor",className:"text-[var(--content-foreground)]",children:i(f)})]},f)}),jsxRuntime.jsx("text",{x:c+b/2,y:p+u+45,textAnchor:"middle",fontSize:oe,fill:"currentColor",className:"text-[var(--content-foreground)] font-medium",children:s}),jsxRuntime.jsx("text",{x:15,y:p+u/2,textAnchor:"middle",fontSize:oe,fill:"currentColor",className:"text-[var(--content-foreground)] font-medium",transform:`rotate(-90, 15, ${p+u/2})`,children:r})]})}Ve.displayName="ChartAxis";function fe({type:o,x:t,y:e,width:a=ce*2,height:n=ce*2,color:s,seriesIndex:r,pointIndex:i,tabIndex:c,label:p,isSelected:b=false,onFocus:u,onBlur:f,onHover:S,onHoverEnd:m,onKeyDown:x}){let E=react.useRef(null),{isFocusVisible:I,focusProps:A}=reactAria.useFocusRing();react.useEffect(()=>{c===0&&E.current&&document.activeElement?.closest('[role="graphics-document"]')!==null&&E.current.focus();},[c]);let C=Math.max(rt,a,n),T=o==="bar"?t-(C-a)/2:t-C/2,h=o==="bar"?e-(C-n)/2:e-C/2,d=D=>{A.onFocus?.(D),u?.(r,i);},l=D=>{A.onBlur?.(D),f?.();},v=D=>{S?.(r,i);},g=D=>{m?.();};return jsxRuntime.jsxs("g",{ref:E,role:"listitem",tabIndex:c,"aria-label":p,className:Ae({type:o,state:b?"selected":I?"focused":"default"}),onFocus:d,onBlur:l,onMouseEnter:v,onMouseLeave:g,onKeyDown:x,"data-testid":`chart-point-${r}-${i}`,children:[jsxRuntime.jsx("rect",{x:T,y:h,width:C,height:C,fill:"transparent",className:"cursor-pointer"}),o==="bar"?jsxRuntime.jsx("rect",{x:t,y:e,width:a,height:n,rx:le,ry:le,fill:s,className:"chart-bar"}):jsxRuntime.jsx("circle",{cx:t,cy:e,r:ce,fill:s,className:"chart-point"}),I&&(o==="bar"?jsxRuntime.jsx("rect",{x:t-X,y:e-X,width:a+X*2,height:n+X*2,rx:le+X,ry:le+X,fill:"none",stroke:"var(--ring)",strokeWidth:Ne,className:"chart-focus-ring"}):jsxRuntime.jsx("circle",{cx:t,cy:e,r:ce+X,fill:"none",stroke:"var(--ring)",strokeWidth:Ne,className:"chart-focus-ring"}))]})}fe.displayName="ChartDataPoint";function Oe({series:o,seriesIndex:t,totalSeries:e,dimensions:a,scales:n,color:s,getTabIndex:r,selectedPoint:i,onPointFocus:c,onPointBlur:p,onPointHover:b,onPointHoverEnd:u,onKeyDown:f,formatValue:S}){let{plotArea:m}=a,{allLabels:x,xScale:E,yScale:I,yMin:A}=n,{barWidth:C,getBarX:T}=it(m.width,x.length,e,m.x),h=I(Math.max(0,A));return jsxRuntime.jsx("g",{className:"chart-bar-series",role:"list","aria-label":`${o.name} series`,"data-testid":`chart-series-${t}`,children:o.data.map((d,l)=>{let v=x.indexOf(d.label);if(v===-1)return null;let g=T(v,t),L=I(d.value),D=Math.abs(h-L),k=d.value>=0?L:h,V=i?.series===t&&i?.point===l,G=`${o.name}: ${d.label}, ${S(d.value)}`;return jsxRuntime.jsx(fe,{type:"bar",x:g,y:k,width:C,height:D,color:s,seriesIndex:t,pointIndex:l,tabIndex:r(t,l),label:G,isSelected:V,onFocus:c,onBlur:p,onHover:b,onHoverEnd:u,onKeyDown:f},`${d.label}-${l}`)})})}Oe.displayName="ChartBarSeries";var pt="(prefers-reduced-motion: reduce)";function jt(){return typeof window>"u"?false:window.matchMedia(pt).matches}function ft(){let[o,t]=react.useState(jt);return react.useEffect(()=>{let e=window.matchMedia(pt);t(e.matches);let a=n=>{t(n.matches);};return e.addEventListener("change",a),()=>e.removeEventListener("change",a)},[]),o}var oo=1e3,no=200,ro="cubic-bezier(0.16, 1, 0.3, 1)";function Fe({series:o,seriesIndex:t,scales:e,color:a,pattern:n,getTabIndex:s,selectedPoint:r,onPointFocus:i,onPointBlur:c,onPointHover:p,onPointHoverEnd:b,onKeyDown:u,formatValue:f}){let{allLabels:S,xScale:m,yScale:x}=e,{reducedMotion:E}=Te(),I=ft(),A=!E&&!I,C=react.useRef(null),T=react.useMemo(()=>o.data.map((l,v)=>{let g=S.indexOf(l.label);return g===-1?null:{x:m(g),y:x(l.value),point:l,pointIndex:v,labelIndex:g}}).filter(l=>l!==null).sort((l,v)=>l.labelIndex-v.labelIndex),[o.data,S,m,x]),h=react.useMemo(()=>T.length===0?"":T.map((l,v)=>`${v===0?"M":"L"} ${l.x} ${l.y}`).join(" "),[T]);react.useEffect(()=>{let l=C.current;if(!A||!l||!h||typeof l.animate!="function")return;let v=l.getTotalLength();l.style.strokeDasharray=String(v),l.style.strokeDashoffset=String(v);let g=l.animate([{strokeDashoffset:String(v)},{strokeDashoffset:"0"}],{duration:oo,delay:t*no,easing:ro,fill:"forwards"});return g.onfinish=()=>{l.style.strokeDasharray="",l.style.strokeDashoffset="";},()=>{g.cancel(),l.style.strokeDasharray="",l.style.strokeDashoffset="";}},[A,h,t]);let d=te[n]==="none"?void 0:te[n];return jsxRuntime.jsxs("g",{className:"chart-line-series",role:"list","aria-label":`${o.name} series`,"data-testid":`chart-series-${t}`,children:[jsxRuntime.jsx("path",{ref:C,d:h,fill:"none",stroke:a,strokeWidth:et,strokeDasharray:d,strokeLinecap:"round",strokeLinejoin:"round",className:"chart-line","aria-hidden":"true"}),T.map(({x:l,y:v,point:g,pointIndex:L})=>{let D=r?.series===t&&r?.point===L,k=`${o.name}: ${g.label}, ${f(g.value)}`;return jsxRuntime.jsx(fe,{type:"line",x:l,y:v,color:a,seriesIndex:t,pointIndex:L,tabIndex:s(t,L),label:k,isSelected:D,onFocus:i,onBlur:c,onHover:p,onHoverEnd:b,onKeyDown:u},`${g.label}-${L}`)})]})}Fe.displayName="ChartLineSeries";function He({type:o,data:t,dimensions:e,scales:a,titleId:n,descId:s,showGrid:r,xAxisLabel:i,yAxisLabel:c,getSeriesColor:p,getTabIndex:b,selectedPoint:u,formatValue:f,onKeyDown:S,onPointFocus:m,onPointBlur:x,onPointHover:E,onPointHoverEnd:I}){let{width:A,height:C,plotArea:T}=e,{allLabels:h,xScale:d,yScale:l,yTicks:v}=a;return jsxRuntime.jsxs("svg",{role:"graphics-document","aria-roledescription":`${o} chart`,"aria-labelledby":n,"aria-describedby":s,viewBox:`0 0 ${A} ${C}`,className:"h-full w-full",style:{maxHeight:C},"data-testid":"chart-svg",children:[jsxRuntime.jsx(_e,{yTicks:v,yScale:l,plotX:T.x,plotWidth:T.width,visible:r}),jsxRuntime.jsx(Ve,{allLabels:h,yTicks:v,xScale:d,yScale:l,plotArea:T,xAxisLabel:i,yAxisLabel:c,formatValue:f}),t.map((g,L)=>{let D=g.color||p(L),k=g.pattern||"solid";return o==="bar"?jsxRuntime.jsx(Oe,{series:g,seriesIndex:L,totalSeries:t.length,dimensions:e,scales:a,color:D,getTabIndex:b,selectedPoint:u,onPointFocus:m,onPointBlur:x,onPointHover:E,onPointHoverEnd:I,onKeyDown:S,formatValue:f},g.name):jsxRuntime.jsx(Fe,{series:g,seriesIndex:L,scales:a,color:D,pattern:k,getTabIndex:b,selectedPoint:u,onPointFocus:m,onPointBlur:x,onPointHover:E,onPointHoverEnd:I,onKeyDown:S,formatValue:f},g.name)})]})}He.displayName="ChartSVG";var Be=classVarianceAuthority.cva(["z-50 overflow-hidden rounded-md px-3 py-1.5 text-sm shadow-md","bg-[var(--content-foreground)] text-[var(--content-background)]","animate-in fade-in-0","data-[exiting]:animate-out data-[exiting]: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"}});classVarianceAuthority.cva("fill-[var(--content-foreground)]",{variants:{side:{top:"rotate-180",bottom:"rotate-0",left:"rotate-90",right:"-rotate-90"}},defaultVariants:{side:"top"}});var Ct=8;function $e({visible:o,x:t,y:e,seriesName:a,label:n,value:s,chartWidth:r,chartHeight:i,trend:c,trendDirection:p}){let b=react.useRef(null),[u,f]=react.useState({left:0,top:0}),[S,m]=react.useState("top");return react.useEffect(()=>{if(!o||!b.current)return;let E=b.current.getBoundingClientRect(),I=E.width||120,A=E.height||50,C=t-I/2,T=e-A-Ct,h="top";T<0&&(T=e+Ct+16,h="bottom"),C<0&&(C=0),C+I>r&&(C=r-I),f({left:C,top:T}),m(h);},[o,t,e,r]),o?jsxRuntime.jsxs("div",{ref:b,"aria-hidden":"true",className:Be({side:S}),style:{position:"absolute",left:u.left,top:u.top,pointerEvents:"none"},"data-testid":"chart-tooltip",children:[jsxRuntime.jsx("div",{className:"font-medium",children:a}),jsxRuntime.jsxs("div",{className:"opacity-80",children:[n,": ",jsxRuntime.jsx("span",{className:"font-semibold",children:s})]}),c&&jsxRuntime.jsxs("div",{className:"text-xs opacity-70 mt-1 flex items-center gap-1",children:[p==="up"?jsxRuntime.jsx("svg",{"aria-hidden":"true",className:"h-3 w-3 text-green-500",viewBox:"0 0 20 20",fill:"currentColor",children:jsxRuntime.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"})}):p==="down"?jsxRuntime.jsx("svg",{"aria-hidden":"true",className:"h-3 w-3 text-red-500",viewBox:"0 0 20 20",fill:"currentColor",children:jsxRuntime.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,jsxRuntime.jsx("span",{children:c})]})]}):null}$e.displayName="ChartTooltip";function We({data:o,visible:t,type:e,getSeriesColor:a}){return t?jsxRuntime.jsx("div",{className:Je({visible:t}),role:"list","aria-label":"Chart legend","data-testid":"chart-legend",children:o.map((n,s)=>{let r=n.color||a(s),i=n.pattern||"solid";return jsxRuntime.jsxs("div",{role:"listitem",className:"flex items-center gap-2",children:[e==="bar"?jsxRuntime.jsx("div",{className:"h-3 w-3 rounded-sm",style:{backgroundColor:r},"data-testid":`legend-color-${s}`,"aria-hidden":"true"}):jsxRuntime.jsx("svg",{width:"24",height:"12","aria-hidden":"true","data-testid":`legend-color-${s}`,children:jsxRuntime.jsx("line",{x1:"0",y1:"6",x2:"24",y2:"6",stroke:r,strokeWidth:"2",strokeDasharray:te[i]==="none"?void 0:te[i]})}),jsxRuntime.jsx("span",{className:"text-sm text-[var(--content-foreground)]",children:n.name})]},n.name)})}):null}We.displayName="ChartLegend";function Ue({announcement:o}){return jsxRuntime.jsx(reactAria.VisuallyHidden,{children:jsxRuntime.jsx("div",{role:"status","aria-live":"polite","aria-atomic":"true","data-testid":"chart-announcer",children:o})})}Ue.displayName="ChartAnnouncer";function ze({data:o,title:t,xAxisLabel:e,yAxisLabel:a,formatValue:n,allLabels:s}){let r=o.length===1;return jsxRuntime.jsx(reactAria.VisuallyHidden,{children:jsxRuntime.jsxs("table",{"data-testid":"chart-data-table",children:[jsxRuntime.jsxs("caption",{children:[t," data table"]}),jsxRuntime.jsx("thead",{children:jsxRuntime.jsxs("tr",{children:[jsxRuntime.jsx("th",{scope:"col",children:e}),r?jsxRuntime.jsx("th",{scope:"col",children:a}):o.map(i=>jsxRuntime.jsxs("th",{scope:"col",children:[i.name," (",a,")"]},i.name))]})}),jsxRuntime.jsx("tbody",{children:s.map(i=>jsxRuntime.jsxs("tr",{children:[jsxRuntime.jsx("th",{scope:"row",children:i}),o.map(c=>{let p=c.data.find(b=>b.label===i);return jsxRuntime.jsx("td",{children:p?n(p.value):"\u2014"},c.name)})]},i))})]})})}ze.displayName="ChartDataTable";function Tt(o){let{roving:t,onSelect:e,onClear:a,disabled:n=false}=o;return {onKeyDown:react.useCallback(r=>{if(!n)switch(r.key){case "ArrowRight":r.preventDefault(),t.moveRight();break;case "ArrowLeft":r.preventDefault(),t.moveLeft();break;case "ArrowDown":r.preventDefault(),t.moveDown();break;case "ArrowUp":r.preventDefault(),t.moveUp();break;case "Home":r.preventDefault(),t.moveToStart();break;case "End":r.preventDefault(),t.moveToEnd();break;case "Enter":case " ":r.preventDefault(),e?.();break;case "Escape":r.preventDefault(),a?.();break;}},[t,e,a,n])}}function Do({chartId:o}){let t=Te(),{data:e,type:a,title:n,xAxisLabel:s,yAxisLabel:r,showTooltip:i,showGrid:c,showLegend:p,dimensions:b,scales:u,announcement:f,isTooltipVisible:S,tooltipPoint:m,currentTrend:x,currentTrendDirection:E,selectedPoint:I,getTabIndex:A,formatValue:C,getSeriesColor:T,getPointCoordinates:h,setFocus:d,selectPoint:l,clearSelection:v,showTooltipAt:g,hideTooltip:L}=t,D=`${o}-title`,k=`${o}-desc`,V=Ce({rows:e.length,cols:F=>e[F]?.data.length||0,onFocusChange:(F,U)=>{d(F,U);}}),{onKeyDown:G}=Tt({roving:V,onSelect:()=>{l(V.focusedRow,V.focusedCol);},onClear:()=>{v();}}),O=react.useCallback((F,U)=>{V.setFocus(F,U),g(F,U);},[V,g]),re=react.useCallback(()=>{},[]),we=react.useCallback((F,U)=>{g(F,U);},[g]),B=react.useCallback(()=>{L();},[L]),ae=react.useMemo(()=>m?h(m.series,m.point)||{x:0,y:0}:{x:0,y:0},[m,h]),z=react.useMemo(()=>m?e[m.series]:null,[m,e]),ee=react.useMemo(()=>m?z?.data[m.point]:null,[m,z]),ge=react.useMemo(()=>p??e.length>1,[p,e.length]);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Ue,{announcement:f}),jsxRuntime.jsxs("div",{className:"relative",children:[jsxRuntime.jsx("div",{className:"relative z-0",children:jsxRuntime.jsx(He,{type:a,data:e,dimensions:b,scales:u,titleId:D,descId:k,showGrid:c,xAxisLabel:s,yAxisLabel:r,getSeriesColor:T,getTabIndex:A,selectedPoint:I,formatValue:C,onKeyDown:G,onPointFocus:O,onPointBlur:re,onPointHover:we,onPointHoverEnd:B})}),i&&ee&&z&&jsxRuntime.jsx($e,{visible:S,x:ae.x,y:ae.y,seriesName:z.name,label:ee.label,value:C(ee.value),chartWidth:b.width,chartHeight:b.height,trend:x,trendDirection:E})]}),jsxRuntime.jsx(We,{data:e,visible:ge,type:a,getSeriesColor:T}),jsxRuntime.jsx(ze,{data:e,title:n,xAxisLabel:s,yAxisLabel:r,formatValue:C,allLabels:u.allLabels})]})}var Pt=react.forwardRef(({data:o,type:t,title:e,description:a,xAxisLabel:n,yAxisLabel:s,variant:r="default",className:i,showTooltip:c=true,showGrid:p=true,showLegend:b,announceTrends:u=false,trendUpFormat:f="up {percent}% from previous",trendDownFormat:S="down {percent}% from previous",startAtZero:m=true,reducedMotion:x,onPointFocus:E,onPointSelect:I,id:A,"aria-label":C,"aria-labelledby":T,"aria-describedby":h,"data-testid":d,...l},v)=>{let g=react.useRef(null),L=react.useId(),D=A||`chart-${L}`,k=`${D}-title`,V=`${D}-desc`,G=b??o.length>1;return jsxRuntime.jsxs("figure",{ref:O=>{typeof v=="function"?v(O):v&&(v.current=O),g.current=O;},id:D,role:"figure","aria-label":C,"aria-labelledby":T||k,"aria-describedby":h||V,"data-testid":d,className:se(Ee({variant:r}),"p-4",i),...l,children:[jsxRuntime.jsxs("figcaption",{className:"sr-only",children:[jsxRuntime.jsx("span",{id:k,children:e}),jsxRuntime.jsx("span",{id:V,children:a})]}),jsxRuntime.jsx(ut,{containerRef:g,data:o,type:t,title:e,description:a,xAxisLabel:n,yAxisLabel:s,showTooltip:c,showGrid:p,showLegend:G,announceTrends:u,trendUpFormat:f,trendDownFormat:S,startAtZero:m,reducedMotion:x,onPointFocus:E,onPointSelect:I,children:jsxRuntime.jsx(Do,{chartId:D})})]})});Pt.displayName="Chart";var Rt=react.memo(Pt);Rt.displayName="Chart";var It=zod.z.object({className:zod.z.string().optional(),children:zod.z.any().optional(),id:zod.z.string().optional(),"aria-label":zod.z.string().optional(),"aria-labelledby":zod.z.string().optional(),"aria-describedby":zod.z.string().optional(),"aria-live":zod.z.enum(["off","polite","assertive"]).optional(),"aria-hidden":zod.z.boolean().optional(),"data-testid":zod.z.string().optional()});var Dt=zod.z.object({label:zod.z.string().min(1,"Label is required"),value:zod.z.number(),description:zod.z.string().optional()}),wt=zod.z.enum(["solid","dashed","dotted"]),Et=zod.z.object({name:zod.z.string().min(1,"Series name is required"),color:zod.z.string().optional(),pattern:wt.optional().default("solid"),data:zod.z.array(Dt).min(1,"At least one data point required")}),At=zod.z.enum(["bar","line"]),Lt=zod.z.enum(["default","muted"]),Eo=It.extend({data:zod.z.array(Et).min(1,"At least one data series required").max(5,"Maximum 5 series allowed"),type:At,title:zod.z.string().min(1,"Title is required"),description:zod.z.string().min(1,"Description is required"),xAxisLabel:zod.z.string().min(1,"X-axis label is required"),yAxisLabel:zod.z.string().min(1,"Y-axis label is required"),variant:Lt.optional().default("default"),showTooltip:zod.z.boolean().optional().default(true),showGrid:zod.z.boolean().optional().default(true),showLegend:zod.z.boolean().optional(),announceTrends:zod.z.boolean().optional().default(false),trendUpFormat:zod.z.string().optional().default("up {percent}% from previous"),trendDownFormat:zod.z.string().optional().default("down {percent}% from previous"),startAtZero:zod.z.boolean().optional().default(true),reducedMotion:zod.z.boolean().optional(),onPointFocus:zod.z.unknown().optional(),onPointSelect:zod.z.unknown().optional()});exports.Chart=Rt;exports.ChartPropsSchema=Eo;exports.ChartTypeSchema=At;exports.ChartVariantSchema=Lt;exports.DataPointSchema=Dt;exports.DataSeriesSchema=Et;exports.LinePatternSchema=wt;exports.chartVariants=Ee;exports.dataPointVariants=Ae;//# sourceMappingURL=index.js.map
2
+ 'use strict';var react=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),reactAria=require('react-aria');require('react-aria-components');var zod=require('zod');function se(...o){return tailwindMerge.twMerge(clsx.clsx(o))}var Ee=classVarianceAuthority.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"}}),Ae=classVarianceAuthority.cva("cursor-pointer focus-visible:outline-none",{variants:{type:{bar:"",line:"stroke-2"},state:{default:"",focused:"",selected:"opacity-80"}},defaultVariants:{type:"bar",state:"default"}});classVarianceAuthority.cva("pointer-events-none",{variants:{visible:{true:"opacity-100",false:"opacity-0"}},defaultVariants:{visible:false}});var Je=classVarianceAuthority.cva("flex flex-wrap items-center justify-center gap-4 px-4 py-2",{variants:{visible:{true:"",false:"hidden"}},defaultVariants:{visible:true}});var _={top:20,right:20,bottom:60,left:60},xe=300,ye=169,Vt=.2,Le=.1,Ft=20,le=4,et=2,ce=6;var te={solid:"none",dashed:"8 4",dotted:"2 4"};var tt="var(--border)",ot=1,nt=.7,ue="var(--border)",de=1,me=6,oe=12,rt=44,X=4,Ne=2,Me=["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 je(o,t){let e=Math.floor(Math.log10(o)),a=o/Math.pow(10,e),n;return t?a<1.5?n=1:a<3?n=2:a<7?n=5:n=10:a<=1?n=1:a<=2?n=2:a<=5?n=5:n=10,n*Math.pow(10,e)}function at(o,t,e=5){if(o===t){if(o===0)return [0,25,50,75,100];o=o*.9,t=t*1.1;}let a=je(t-o,false),n=je(a/(e-1),true),s=Math.floor(o/n)*n,r=Math.ceil(t/n)*n,i=[];for(let c=s;c<=r;c+=n)i.push(c);return i}function it(o,t,e,a=0){let n=o/t,s=n*(1-Vt),r=Math.max(Ft,s/e*(1-Le));return {barWidth:r,groupWidth:n,getBarX:(c,p)=>{let f=a+n*c+n/2,u=e*r+(e-1)*(Le*r);return f-u/2+p*(r+Le*r)}}}function st(o){let[t,e]=react.useState({width:xe,height:ye,padding:_,plotArea:{x:_.left,y:_.top,width:xe-_.left-_.right,height:ye-_.top-_.bottom}});return react.useEffect(()=>{let a=o.current;if(!a)return;let n=r=>{let i=Math.max(r,xe),c=Math.max(i*.5625,ye),p={x:_.left,y:_.top,width:i-_.left-_.right,height:c-_.top-_.bottom};e({width:i,height:c,padding:_,plotArea:p});},s=new ResizeObserver(r=>{let i=r[0];i&&n(i.contentRect.width);});return n(a.getBoundingClientRect().width),s.observe(a),()=>{s.disconnect();}},[o]),t}function Ce(o){let{rows:t,cols:e,initialRow:a=0,initialCol:n=0,wrap:s=false,onFocusChange:r}=o,[i,c]=react.useState(a),[p,f]=react.useState(n),u=react.useCallback(h=>typeof e=="function"?e(h):e,[e]),b=react.useCallback((h,d)=>{r?.(h,d);},[r]),S=react.useCallback(()=>{f(h=>{let d=u(i)-1,l=h+1;return l>d&&(l=s?0:d),l!==h&&b(i,l),l});},[i,u,s,b]),m=react.useCallback(()=>{f(h=>{let d=h-1,l=u(i)-1;return d<0&&(d=s?l:0),d!==h&&b(i,d),d});},[i,u,s,b]),x=react.useCallback(()=>{c(h=>{let d=h+1;if(d>=t&&(d=s?0:t-1),d!==h){let l=u(d)-1;f(v=>{let g=Math.min(v,l);return b(d,g),g});}return d});},[t,u,s,b]),E=react.useCallback(()=>{c(h=>{let d=h-1;if(d<0&&(d=s?t-1:0),d!==h){let l=u(d)-1;f(v=>{let g=Math.min(v,l);return b(d,g),g});}return d});},[t,u,s,b]),D=react.useCallback(()=>{f(0),b(i,0);},[i,b]),A=react.useCallback(()=>{let h=u(i)-1;f(h),b(i,h);},[i,u,b]),C=react.useCallback((h,d)=>{let l=Math.max(0,Math.min(h,t-1)),v=u(l)-1,g=Math.max(0,Math.min(d,v));c(l),f(g),b(l,g);},[t,u,b]),T=react.useCallback((h,d)=>h===i&&d===p?0:-1,[i,p]);return react.useMemo(()=>({focusedRow:i,focusedCol:p,moveRight:S,moveLeft:m,moveDown:x,moveUp:E,moveToStart:D,moveToEnd:A,setFocus:C,getTabIndex:T}),[i,p,S,m,x,E,D,A,C,T])}var ct=react.createContext(null);function Te(){let o=react.useContext(ct);if(!o)throw new Error("useChartContext must be used within a ChartProvider");return o}function Wt(o){let t=new Set;return o.forEach(e=>{e.data.forEach(a=>{t.add(a.label);});}),Array.from(t)}function Ut(o,t,e){let a=Wt(o),{plotArea:n}=t,s=1/0,r=-1/0;o.forEach(m=>{m.data.forEach(x=>{s=Math.min(s,x.value),r=Math.max(r,x.value);});}),(!isFinite(s)||!isFinite(r))&&(s=0,r=100);let i=e?Math.min(0,s):s,c=at(i,r),p=c[c.length-1]||r,f=c[0]||i,u=m=>{if(a.length<=1)return n.x+n.width/2;let x=n.width/a.length;return n.x+x*m+x/2},b=p-f||1;return {allLabels:a,xScale:u,yScale:m=>{let x=(m-f)/b;return n.y+n.height*(1-x)},yMin:f,yMax:p,yTicks:c}}function ut({children:o,containerRef:t,data:e,type:a,title:n,description:s,xAxisLabel:r,yAxisLabel:i,showTooltip:c,showGrid:p,showLegend:f,announceTrends:u,trendUpFormat:b,trendDownFormat:S,startAtZero:m,reducedMotion:x=false,onPointFocus:E,onPointSelect:D}){let[A,C]=react.useState(null),[T,h]=react.useState(""),[d,l]=react.useState(false),[v,g]=react.useState(null),[L,I]=react.useState(null),[k,V]=react.useState(null),G=st(t),F=react.useMemo(()=>Ut(e,G,m),[e,G,m]);react.useMemo(()=>Math.max(...e.map(y=>y.data.length)),[e]);let re=react.useCallback((y,P)=>(P?b:S).replace("{percent}",String(y)),[b,S]),we=(y,P)=>{if(!u||P<=0)return null;let w=e[y];if(!w)return null;let N=w.data[P],M=w.data[P-1];if(!N||!M||M.value===0)return null;let Z=(N.value-M.value)/Math.abs(M.value)*100,Q=Z>=0,ie=Math.abs(Math.round(Z));return {text:re(ie,Q),direction:Q?"up":"down"}},B=Ce({rows:e.length,cols:y=>e[y]?.data.length||0,onFocusChange:(y,P)=>{let w=e[y],N=w?.data[P];if(!w||!N)return;let M=we(y,P);I(M?.text??null),V(M?.direction??null);let Z=`${P+1} of ${w.data.length}`,Q=e.length>1?`${w.name}: `:"",ie=z(N.value),Mt=M?`, ${M.text}`:"";h(`${Q}${N.label}, ${ie}${Mt}. ${Z}.`),c&&(l(true),g({series:y,point:P})),E?.(N,y,P);}}),ae=react.useMemo(()=>{let y=typeof navigator<"u"?navigator.language:"en-US";return new Intl.NumberFormat(y)},[]),z=react.useCallback(y=>ae.format(y),[ae]),ee=react.useCallback((y,P)=>{if(!u||P<=0)return null;let w=e[y];if(!w)return null;let N=w.data[P],M=w.data[P-1];if(!N||!M||M.value===0)return null;let Z=(N.value-M.value)/Math.abs(M.value)*100,Q=Z>=0,ie=Math.abs(Math.round(Z));return {text:re(ie,Q),direction:Q?"up":"down"}},[e,u,re]),ge=react.useCallback(y=>Me[y%Me.length]??"var(--chart-1)",[]),O=react.useCallback((y,P)=>{let w=e[y],N=w?.data[P];if(!w||!N)return null;let M=F.allLabels.indexOf(N.label);return M===-1?null:{x:F.xScale(M),y:F.yScale(N.value)}},[e,F]),U=react.useCallback((y,P)=>{B.setFocus(y,P);},[B]),Xe=react.useCallback((y,P)=>{C({series:y,point:P});let w=e[y],N=w?.data[P];w&&N&&D?.(N,y,P);},[e,D]),Ye=react.useCallback(()=>{C(null);},[]),qe=react.useCallback(y=>{h(y);},[]),Ze=react.useCallback((y,P)=>{if(c){l(true),g({series:y,point:P});let w=ee(y,P);I(w?.text??null),V(w?.direction??null);}},[c,ee]),Qe=react.useCallback(()=>{l(false),g(null);},[]),Nt=react.useMemo(()=>({focusedSeries:B.focusedRow,focusedPoint:B.focusedCol,selectedPoint:A,announcement:T,isTooltipVisible:d,tooltipPoint:v,currentTrend:L,currentTrendDirection:k,dimensions:G,scales:F,data:e,type:a,title:n,description:s,xAxisLabel:r,yAxisLabel:i,showTooltip:c,showGrid:p,showLegend:f,announceTrends:u,trendUpFormat:b,trendDownFormat:S,startAtZero:m,reducedMotion:x,setFocus:U,selectPoint:Xe,clearSelection:Ye,announce:qe,showTooltipAt:Ze,hideTooltip:Qe,getTabIndex:B.getTabIndex,formatValue:z,getSeriesColor:ge,getPointCoordinates:O}),[B.focusedRow,B.focusedCol,B.getTabIndex,A,T,d,v,L,k,G,F,e,a,n,s,r,i,c,p,f,u,b,S,m,x,U,Xe,Ye,qe,Ze,Qe,z,ge,O]);return jsxRuntime.jsx(ct.Provider,{value:Nt,children:o})}function _e({yTicks:o,yScale:t,plotX:e,plotWidth:a,visible:n}){return n?jsxRuntime.jsx("g",{className:"chart-grid","aria-hidden":"true","data-testid":"chart-grid",children:o.map(s=>{let r=t(s);return jsxRuntime.jsx("line",{x1:e,y1:r,x2:e+a,y2:r,stroke:tt,strokeWidth:ot,strokeOpacity:nt},s)})}):null}_e.displayName="ChartGrid";function Ve({allLabels:o,yTicks:t,xScale:e,yScale:a,plotArea:n,xAxisLabel:s,yAxisLabel:r,formatValue:i}){let{x:c,y:p,width:f,height:u}=n;return jsxRuntime.jsxs("g",{className:"chart-axis","aria-hidden":"true","data-testid":"chart-axis",children:[jsxRuntime.jsx("line",{x1:c,y1:p+u,x2:c+f,y2:p+u,stroke:ue,strokeWidth:de}),jsxRuntime.jsx("line",{x1:c,y1:p,x2:c,y2:p+u,stroke:ue,strokeWidth:de}),o.map((b,S)=>{let m=e(S),x=p+u;return jsxRuntime.jsxs("g",{children:[jsxRuntime.jsx("line",{x1:m,y1:x,x2:m,y2:x+me,stroke:ue,strokeWidth:de}),jsxRuntime.jsx("text",{x:m,y:x+me+oe,textAnchor:"middle",fontSize:oe,fill:"currentColor",className:"text-[var(--content-foreground)]",children:b})]},b)}),t.map(b=>{let S=c,m=a(b);return jsxRuntime.jsxs("g",{children:[jsxRuntime.jsx("line",{x1:S-me,y1:m,x2:S,y2:m,stroke:ue,strokeWidth:de}),jsxRuntime.jsx("text",{x:S-me-4,y:m,textAnchor:"end",dominantBaseline:"middle",fontSize:oe,fill:"currentColor",className:"text-[var(--content-foreground)]",children:i(b)})]},b)}),jsxRuntime.jsx("text",{x:c+f/2,y:p+u+45,textAnchor:"middle",fontSize:oe,fill:"currentColor",className:"text-[var(--content-foreground)] font-medium",children:s}),jsxRuntime.jsx("text",{x:15,y:p+u/2,textAnchor:"middle",fontSize:oe,fill:"currentColor",className:"text-[var(--content-foreground)] font-medium",transform:`rotate(-90, 15, ${p+u/2})`,children:r})]})}Ve.displayName="ChartAxis";function be({type:o,x:t,y:e,width:a=ce*2,height:n=ce*2,color:s,seriesIndex:r,pointIndex:i,tabIndex:c,label:p,isSelected:f=false,onFocus:u,onBlur:b,onHover:S,onHoverEnd:m,onKeyDown:x}){let E=react.useRef(null),{isFocusVisible:D,focusProps:A}=reactAria.useFocusRing();react.useEffect(()=>{c===0&&E.current&&document.activeElement?.closest('[role="graphics-document"]')!==null&&E.current.focus();},[c]);let C=Math.max(rt,a,n),T=o==="bar"?t-(C-a)/2:t-C/2,h=o==="bar"?e-(C-n)/2:e-C/2,d=I=>{A.onFocus?.(I),u?.(r,i);},l=I=>{A.onBlur?.(I),b?.();},v=I=>{S?.(r,i);},g=I=>{m?.();};return jsxRuntime.jsxs("g",{ref:E,role:"listitem",tabIndex:c,"aria-label":p,className:Ae({type:o,state:f?"selected":D?"focused":"default"}),onFocus:d,onBlur:l,onMouseEnter:v,onMouseLeave:g,onKeyDown:x,"data-testid":`chart-point-${r}-${i}`,children:[jsxRuntime.jsx("rect",{x:T,y:h,width:C,height:C,fill:"transparent",className:"cursor-pointer"}),o==="bar"?jsxRuntime.jsx("rect",{x:t,y:e,width:a,height:n,rx:le,ry:le,fill:s,className:"chart-bar"}):jsxRuntime.jsx("circle",{cx:t,cy:e,r:ce,fill:s,className:"chart-point"}),D&&(o==="bar"?jsxRuntime.jsx("rect",{x:t-X,y:e-X,width:a+X*2,height:n+X*2,rx:le+X,ry:le+X,fill:"none",stroke:"var(--ring)",strokeWidth:Ne,className:"chart-focus-ring"}):jsxRuntime.jsx("circle",{cx:t,cy:e,r:ce+X,fill:"none",stroke:"var(--ring)",strokeWidth:Ne,className:"chart-focus-ring"}))]})}be.displayName="ChartDataPoint";function Fe({series:o,seriesIndex:t,totalSeries:e,dimensions:a,scales:n,color:s,getTabIndex:r,selectedPoint:i,onPointFocus:c,onPointBlur:p,onPointHover:f,onPointHoverEnd:u,onKeyDown:b,formatValue:S}){let{plotArea:m}=a,{allLabels:x,xScale:E,yScale:D,yMin:A}=n,{barWidth:C,getBarX:T}=it(m.width,x.length,e,m.x),h=D(Math.max(0,A));return jsxRuntime.jsx("g",{className:"chart-bar-series",role:"list","aria-label":`${o.name} series`,"data-testid":`chart-series-${t}`,children:o.data.map((d,l)=>{let v=x.indexOf(d.label);if(v===-1)return null;let g=T(v,t),L=D(d.value),I=Math.abs(h-L),k=d.value>=0?L:h,V=i?.series===t&&i?.point===l,G=`${o.name}: ${d.label}, ${S(d.value)}`;return jsxRuntime.jsx(be,{type:"bar",x:g,y:k,width:C,height:I,color:s,seriesIndex:t,pointIndex:l,tabIndex:r(t,l),label:G,isSelected:V,onFocus:c,onBlur:p,onHover:f,onHoverEnd:u,onKeyDown:b},`${d.label}-${l}`)})})}Fe.displayName="ChartBarSeries";var pt="(prefers-reduced-motion: reduce)";function jt(){return typeof window>"u"?false:window.matchMedia(pt).matches}function bt(){let[o,t]=react.useState(jt);return react.useEffect(()=>{let e=window.matchMedia(pt);t(e.matches);let a=n=>{t(n.matches);};return e.addEventListener("change",a),()=>e.removeEventListener("change",a)},[]),o}var oo=1e3,no=200,ro="cubic-bezier(0.16, 1, 0.3, 1)";function Oe({series:o,seriesIndex:t,scales:e,color:a,pattern:n,getTabIndex:s,selectedPoint:r,onPointFocus:i,onPointBlur:c,onPointHover:p,onPointHoverEnd:f,onKeyDown:u,formatValue:b}){let{allLabels:S,xScale:m,yScale:x}=e,{reducedMotion:E}=Te(),D=bt(),A=!E&&!D,C=react.useRef(null),T=react.useMemo(()=>o.data.map((l,v)=>{let g=S.indexOf(l.label);return g===-1?null:{x:m(g),y:x(l.value),point:l,pointIndex:v,labelIndex:g}}).filter(l=>l!==null).sort((l,v)=>l.labelIndex-v.labelIndex),[o.data,S,m,x]),h=react.useMemo(()=>T.length===0?"":T.map((l,v)=>`${v===0?"M":"L"} ${l.x} ${l.y}`).join(" "),[T]);react.useEffect(()=>{let l=C.current;if(!A||!l||!h||typeof l.animate!="function")return;let v=l.getTotalLength();l.style.strokeDasharray=String(v),l.style.strokeDashoffset=String(v);let g=l.animate([{strokeDashoffset:String(v)},{strokeDashoffset:"0"}],{duration:oo,delay:t*no,easing:ro,fill:"forwards"});return g.onfinish=()=>{l.style.strokeDasharray="",l.style.strokeDashoffset="";},()=>{g.cancel(),l.style.strokeDasharray="",l.style.strokeDashoffset="";}},[A,h,t]);let d=te[n]==="none"?void 0:te[n];return jsxRuntime.jsxs("g",{className:"chart-line-series",role:"list","aria-label":`${o.name} series`,"data-testid":`chart-series-${t}`,children:[jsxRuntime.jsx("path",{ref:C,d:h,fill:"none",stroke:a,strokeWidth:et,strokeDasharray:d,strokeLinecap:"round",strokeLinejoin:"round",className:"chart-line","aria-hidden":"true"}),T.map(({x:l,y:v,point:g,pointIndex:L})=>{let I=r?.series===t&&r?.point===L,k=`${o.name}: ${g.label}, ${b(g.value)}`;return jsxRuntime.jsx(be,{type:"line",x:l,y:v,color:a,seriesIndex:t,pointIndex:L,tabIndex:s(t,L),label:k,isSelected:I,onFocus:i,onBlur:c,onHover:p,onHoverEnd:f,onKeyDown:u},`${g.label}-${L}`)})]})}Oe.displayName="ChartLineSeries";function He({type:o,data:t,dimensions:e,scales:a,titleId:n,descId:s,showGrid:r,xAxisLabel:i,yAxisLabel:c,getSeriesColor:p,getTabIndex:f,selectedPoint:u,formatValue:b,onKeyDown:S,onPointFocus:m,onPointBlur:x,onPointHover:E,onPointHoverEnd:D}){let{width:A,height:C,plotArea:T}=e,{allLabels:h,xScale:d,yScale:l,yTicks:v}=a;return jsxRuntime.jsxs("svg",{role:"graphics-document","aria-roledescription":`${o} chart`,"aria-labelledby":n,"aria-describedby":s,viewBox:`0 0 ${A} ${C}`,className:"h-full w-full",style:{maxHeight:C},"data-testid":"chart-svg",children:[jsxRuntime.jsx(_e,{yTicks:v,yScale:l,plotX:T.x,plotWidth:T.width,visible:r}),jsxRuntime.jsx(Ve,{allLabels:h,yTicks:v,xScale:d,yScale:l,plotArea:T,xAxisLabel:i,yAxisLabel:c,formatValue:b}),t.map((g,L)=>{let I=g.color||p(L),k=g.pattern||"solid";return o==="bar"?jsxRuntime.jsx(Fe,{series:g,seriesIndex:L,totalSeries:t.length,dimensions:e,scales:a,color:I,getTabIndex:f,selectedPoint:u,onPointFocus:m,onPointBlur:x,onPointHover:E,onPointHoverEnd:D,onKeyDown:S,formatValue:b},g.name):jsxRuntime.jsx(Oe,{series:g,seriesIndex:L,scales:a,color:I,pattern:k,getTabIndex:f,selectedPoint:u,onPointFocus:m,onPointBlur:x,onPointHover:E,onPointHoverEnd:D,onKeyDown:S,formatValue:b},g.name)})]})}He.displayName="ChartSVG";var Be=classVarianceAuthority.cva(["z-50 overflow-hidden rounded-md px-3 py-1.5 text-sm shadow-md","bg-[var(--content-foreground)] text-[var(--content-background)]","animate-in fade-in-0","data-[exiting]:animate-out data-[exiting]: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"}});classVarianceAuthority.cva("fill-[var(--content-foreground)]",{variants:{side:{top:"rotate-180",bottom:"rotate-0",left:"rotate-90",right:"-rotate-90"}},defaultVariants:{side:"top"}});var Ct=8;function $e({visible:o,x:t,y:e,seriesName:a,label:n,value:s,chartWidth:r,chartHeight:i,trend:c,trendDirection:p}){let f=react.useRef(null),[u,b]=react.useState({left:0,top:0}),[S,m]=react.useState("top");return react.useEffect(()=>{if(!o||!f.current)return;let E=f.current.getBoundingClientRect(),D=E.width||120,A=E.height||50,C=t-D/2,T=e-A-Ct,h="top";T<0&&(T=e+Ct+16,h="bottom"),C<0&&(C=0),C+D>r&&(C=r-D),b({left:C,top:T}),m(h);},[o,t,e,r]),o?jsxRuntime.jsxs("div",{ref:f,"aria-hidden":"true",className:Be({side:S}),style:{position:"absolute",left:u.left,top:u.top,pointerEvents:"none"},"data-testid":"chart-tooltip",children:[jsxRuntime.jsx("div",{className:"font-medium",children:a}),jsxRuntime.jsxs("div",{className:"opacity-80",children:[n,": ",jsxRuntime.jsx("span",{className:"font-semibold",children:s})]}),c&&jsxRuntime.jsxs("div",{className:"text-xs opacity-70 mt-1 flex items-center gap-1",children:[p==="up"?jsxRuntime.jsx("svg",{"aria-hidden":"true",className:"h-3 w-3 text-green-500",viewBox:"0 0 20 20",fill:"currentColor",children:jsxRuntime.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"})}):p==="down"?jsxRuntime.jsx("svg",{"aria-hidden":"true",className:"h-3 w-3 text-red-500",viewBox:"0 0 20 20",fill:"currentColor",children:jsxRuntime.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,jsxRuntime.jsx("span",{children:c})]})]}):null}$e.displayName="ChartTooltip";function We({data:o,visible:t,type:e,getSeriesColor:a}){return t?jsxRuntime.jsx("div",{className:Je({visible:t}),role:"list","aria-label":"Chart legend","data-testid":"chart-legend",children:o.map((n,s)=>{let r=n.color||a(s),i=n.pattern||"solid";return jsxRuntime.jsxs("div",{role:"listitem",className:"flex items-center gap-2",children:[e==="bar"?jsxRuntime.jsx("div",{className:"h-3 w-3 rounded-sm",style:{backgroundColor:r},"data-testid":`legend-color-${s}`,"aria-hidden":"true"}):jsxRuntime.jsx("svg",{width:"24",height:"12","aria-hidden":"true","data-testid":`legend-color-${s}`,children:jsxRuntime.jsx("line",{x1:"0",y1:"6",x2:"24",y2:"6",stroke:r,strokeWidth:"2",strokeDasharray:te[i]==="none"?void 0:te[i]})}),jsxRuntime.jsx("span",{className:"text-sm text-[var(--content-foreground)]",children:n.name})]},n.name)})}):null}We.displayName="ChartLegend";function Ue({announcement:o}){return jsxRuntime.jsx(reactAria.VisuallyHidden,{children:jsxRuntime.jsx("div",{role:"status","aria-live":"polite","aria-atomic":"true","data-testid":"chart-announcer",children:o})})}Ue.displayName="ChartAnnouncer";function ze({data:o,title:t,xAxisLabel:e,yAxisLabel:a,formatValue:n,allLabels:s}){let r=o.length===1;return jsxRuntime.jsx(reactAria.VisuallyHidden,{children:jsxRuntime.jsxs("table",{"data-testid":"chart-data-table",children:[jsxRuntime.jsxs("caption",{children:[t," data table"]}),jsxRuntime.jsx("thead",{children:jsxRuntime.jsxs("tr",{children:[jsxRuntime.jsx("th",{scope:"col",children:e}),r?jsxRuntime.jsx("th",{scope:"col",children:a}):o.map(i=>jsxRuntime.jsxs("th",{scope:"col",children:[i.name," (",a,")"]},i.name))]})}),jsxRuntime.jsx("tbody",{children:s.map(i=>jsxRuntime.jsxs("tr",{children:[jsxRuntime.jsx("th",{scope:"row",children:i}),o.map(c=>{let p=c.data.find(f=>f.label===i);return jsxRuntime.jsx("td",{children:p?n(p.value):"\u2014"},c.name)})]},i))})]})})}ze.displayName="ChartDataTable";function Tt(o){let{roving:t,onSelect:e,onClear:a,disabled:n=false}=o;return {onKeyDown:react.useCallback(r=>{if(!n)switch(r.key){case "ArrowRight":r.preventDefault(),t.moveRight();break;case "ArrowLeft":r.preventDefault(),t.moveLeft();break;case "ArrowDown":r.preventDefault(),t.moveDown();break;case "ArrowUp":r.preventDefault(),t.moveUp();break;case "Home":r.preventDefault(),t.moveToStart();break;case "End":r.preventDefault(),t.moveToEnd();break;case "Enter":case " ":r.preventDefault(),e?.();break;case "Escape":r.preventDefault(),a?.();break;}},[t,e,a,n])}}function Io({chartId:o}){let t=Te(),{data:e,type:a,title:n,xAxisLabel:s,yAxisLabel:r,showTooltip:i,showGrid:c,showLegend:p,dimensions:f,scales:u,announcement:b,isTooltipVisible:S,tooltipPoint:m,currentTrend:x,currentTrendDirection:E,selectedPoint:D,getTabIndex:A,formatValue:C,getSeriesColor:T,getPointCoordinates:h,setFocus:d,selectPoint:l,clearSelection:v,showTooltipAt:g,hideTooltip:L}=t,I=`${o}-title`,k=`${o}-desc`,V=Ce({rows:e.length,cols:O=>e[O]?.data.length||0,onFocusChange:(O,U)=>{d(O,U);}}),{onKeyDown:G}=Tt({roving:V,onSelect:()=>{l(V.focusedRow,V.focusedCol);},onClear:()=>{v();}}),F=react.useCallback((O,U)=>{V.setFocus(O,U),g(O,U);},[V,g]),re=react.useCallback(()=>{},[]),we=react.useCallback((O,U)=>{g(O,U);},[g]),B=react.useCallback(()=>{L();},[L]),ae=react.useMemo(()=>m?h(m.series,m.point)||{x:0,y:0}:{x:0,y:0},[m,h]),z=react.useMemo(()=>m?e[m.series]:null,[m,e]),ee=react.useMemo(()=>m?z?.data[m.point]:null,[m,z]),ge=react.useMemo(()=>p??e.length>1,[p,e.length]);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Ue,{announcement:b}),jsxRuntime.jsxs("div",{className:"relative",children:[jsxRuntime.jsx("div",{className:"relative z-0",children:jsxRuntime.jsx(He,{type:a,data:e,dimensions:f,scales:u,titleId:I,descId:k,showGrid:c,xAxisLabel:s,yAxisLabel:r,getSeriesColor:T,getTabIndex:A,selectedPoint:D,formatValue:C,onKeyDown:G,onPointFocus:F,onPointBlur:re,onPointHover:we,onPointHoverEnd:B})}),i&&ee&&z&&jsxRuntime.jsx($e,{visible:S,x:ae.x,y:ae.y,seriesName:z.name,label:ee.label,value:C(ee.value),chartWidth:f.width,chartHeight:f.height,trend:x,trendDirection:E})]}),jsxRuntime.jsx(We,{data:e,visible:ge,type:a,getSeriesColor:T}),jsxRuntime.jsx(ze,{data:e,title:n,xAxisLabel:s,yAxisLabel:r,formatValue:C,allLabels:u.allLabels})]})}var Pt=react.forwardRef(({data:o,type:t,title:e,description:a,xAxisLabel:n,yAxisLabel:s,variant:r="default",className:i,showTooltip:c=true,showGrid:p=true,showLegend:f,announceTrends:u=false,trendUpFormat:b="up {percent}% from previous",trendDownFormat:S="down {percent}% from previous",startAtZero:m=true,reducedMotion:x,onPointFocus:E,onPointSelect:D,id:A,"aria-label":C,"aria-labelledby":T,"aria-describedby":h,"data-testid":d,...l},v)=>{let g=react.useRef(null),L=react.useId(),I=A||`chart-${L}`,k=`${I}-title`,V=`${I}-desc`,G=f??o.length>1;return jsxRuntime.jsxs("figure",{ref:F=>{typeof v=="function"?v(F):v&&(v.current=F),g.current=F;},id:I,role:"figure","aria-label":C,"aria-labelledby":T||k,"aria-describedby":h||V,"data-testid":d,className:se(Ee({variant:r}),"p-4",i),...l,children:[jsxRuntime.jsxs("figcaption",{className:"sr-only",children:[jsxRuntime.jsx("span",{id:k,children:e}),jsxRuntime.jsx("span",{id:V,children:a})]}),jsxRuntime.jsx(ut,{containerRef:g,data:o,type:t,title:e,description:a,xAxisLabel:n,yAxisLabel:s,showTooltip:c,showGrid:p,showLegend:G,announceTrends:u,trendUpFormat:b,trendDownFormat:S,startAtZero:m,reducedMotion:x,onPointFocus:E,onPointSelect:D,children:jsxRuntime.jsx(Io,{chartId:I})})]})});Pt.displayName="Chart";var Rt=react.memo(Pt);Rt.displayName="Chart";var Dt=zod.z.object({className:zod.z.string().optional(),children:zod.z.any().optional(),id:zod.z.string().optional(),"aria-label":zod.z.string().optional(),"aria-labelledby":zod.z.string().optional(),"aria-describedby":zod.z.string().optional(),"aria-live":zod.z.enum(["off","polite","assertive"]).optional(),"aria-hidden":zod.z.boolean().optional(),"data-testid":zod.z.string().optional()});var It=zod.z.object({label:zod.z.string().min(1,"Label is required"),value:zod.z.number(),description:zod.z.string().optional()}),wt=zod.z.enum(["solid","dashed","dotted"]),Et=zod.z.object({name:zod.z.string().min(1,"Series name is required"),color:zod.z.string().optional(),pattern:wt.optional().default("solid"),data:zod.z.array(It).min(1,"At least one data point required")}),At=zod.z.enum(["bar","line"]),Lt=zod.z.enum(["default","muted"]),Eo=Dt.extend({data:zod.z.array(Et).min(1,"At least one data series required").max(5,"Maximum 5 series allowed"),type:At,title:zod.z.string().min(1,"Title is required"),description:zod.z.string().min(1,"Description is required"),xAxisLabel:zod.z.string().min(1,"X-axis label is required"),yAxisLabel:zod.z.string().min(1,"Y-axis label is required"),variant:Lt.optional().default("default"),showTooltip:zod.z.boolean().optional().default(true),showGrid:zod.z.boolean().optional().default(true),showLegend:zod.z.boolean().optional(),announceTrends:zod.z.boolean().optional().default(false),trendUpFormat:zod.z.string().optional().default("up {percent}% from previous"),trendDownFormat:zod.z.string().optional().default("down {percent}% from previous"),startAtZero:zod.z.boolean().optional().default(true),reducedMotion:zod.z.boolean().optional(),onPointFocus:zod.z.unknown().optional(),onPointSelect:zod.z.unknown().optional()});exports.Chart=Rt;exports.ChartPropsSchema=Eo;exports.ChartTypeSchema=At;exports.ChartVariantSchema=Lt;exports.DataPointSchema=It;exports.DataSeriesSchema=Et;exports.LinePatternSchema=wt;exports.chartVariants=Ee;exports.dataPointVariants=Ae;//# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map