@plenustech/design-system 0.2.1 → 0.2.2

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 (594) hide show
  1. package/dist/components/actions/Button/Button.cjs +2 -0
  2. package/dist/components/actions/Button/Button.cjs.map +1 -0
  3. package/dist/components/actions/Button/Button.js +47 -0
  4. package/dist/components/actions/Button/Button.js.map +1 -0
  5. package/dist/components/actions/Button/Button.module.css.cjs +2 -0
  6. package/dist/components/actions/Button/Button.module.css.cjs.map +1 -0
  7. package/dist/components/actions/Button/Button.module.css.js +24 -0
  8. package/dist/components/actions/Button/Button.module.css.js.map +1 -0
  9. package/dist/components/actions/ButtonIcon/ButtonIcon.cjs +2 -0
  10. package/dist/components/actions/ButtonIcon/ButtonIcon.cjs.map +1 -0
  11. package/dist/components/actions/ButtonIcon/ButtonIcon.js +21 -0
  12. package/dist/components/actions/ButtonIcon/ButtonIcon.js.map +1 -0
  13. package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.cjs +2 -0
  14. package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.cjs.map +1 -0
  15. package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.js +14 -0
  16. package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.js.map +1 -0
  17. package/dist/components/charts/ChartArea/ChartArea.cjs +2 -0
  18. package/dist/components/charts/ChartArea/ChartArea.cjs.map +1 -0
  19. package/dist/components/charts/ChartArea/ChartArea.js +205 -0
  20. package/dist/components/charts/ChartArea/ChartArea.js.map +1 -0
  21. package/dist/components/charts/ChartArea/ChartArea.module.css.cjs +2 -0
  22. package/dist/components/charts/ChartArea/ChartArea.module.css.cjs.map +1 -0
  23. package/dist/components/charts/ChartArea/ChartArea.module.css.js +18 -0
  24. package/dist/components/charts/ChartArea/ChartArea.module.css.js.map +1 -0
  25. package/dist/components/charts/ChartBar/ChartBar.cjs +2 -0
  26. package/dist/components/charts/ChartBar/ChartBar.cjs.map +1 -0
  27. package/dist/components/charts/ChartBar/ChartBar.js +216 -0
  28. package/dist/components/charts/ChartBar/ChartBar.js.map +1 -0
  29. package/dist/components/charts/ChartBar/ChartBar.module.css.cjs +2 -0
  30. package/dist/components/charts/ChartBar/ChartBar.module.css.cjs.map +1 -0
  31. package/dist/components/charts/ChartBar/ChartBar.module.css.js +14 -0
  32. package/dist/components/charts/ChartBar/ChartBar.module.css.js.map +1 -0
  33. package/dist/components/charts/ChartCombo/ChartCombo.cjs +2 -0
  34. package/dist/components/charts/ChartCombo/ChartCombo.cjs.map +1 -0
  35. package/dist/components/charts/ChartCombo/ChartCombo.js +248 -0
  36. package/dist/components/charts/ChartCombo/ChartCombo.js.map +1 -0
  37. package/dist/components/charts/ChartCombo/ChartCombo.module.css.cjs +2 -0
  38. package/dist/components/charts/ChartCombo/ChartCombo.module.css.cjs.map +1 -0
  39. package/dist/components/charts/ChartCombo/ChartCombo.module.css.js +20 -0
  40. package/dist/components/charts/ChartCombo/ChartCombo.module.css.js.map +1 -0
  41. package/dist/components/charts/ChartDonut/ChartDonut.cjs +2 -0
  42. package/dist/components/charts/ChartDonut/ChartDonut.cjs.map +1 -0
  43. package/dist/components/charts/ChartDonut/ChartDonut.js +107 -0
  44. package/dist/components/charts/ChartDonut/ChartDonut.js.map +1 -0
  45. package/dist/components/charts/ChartDonut/ChartDonut.module.css.cjs +2 -0
  46. package/dist/components/charts/ChartDonut/ChartDonut.module.css.cjs.map +1 -0
  47. package/dist/components/charts/ChartDonut/ChartDonut.module.css.js +14 -0
  48. package/dist/components/charts/ChartDonut/ChartDonut.module.css.js.map +1 -0
  49. package/dist/components/charts/ChartLine/ChartLine.cjs +2 -0
  50. package/dist/components/charts/ChartLine/ChartLine.cjs.map +1 -0
  51. package/dist/components/charts/ChartLine/ChartLine.js +166 -0
  52. package/dist/components/charts/ChartLine/ChartLine.js.map +1 -0
  53. package/dist/components/charts/ChartLine/ChartLine.module.css.cjs +2 -0
  54. package/dist/components/charts/ChartLine/ChartLine.module.css.cjs.map +1 -0
  55. package/dist/components/charts/ChartLine/ChartLine.module.css.js +18 -0
  56. package/dist/components/charts/ChartLine/ChartLine.module.css.js.map +1 -0
  57. package/dist/components/charts/ChartPie/ChartPie.cjs +2 -0
  58. package/dist/components/charts/ChartPie/ChartPie.cjs.map +1 -0
  59. package/dist/components/charts/ChartPie/ChartPie.js +99 -0
  60. package/dist/components/charts/ChartPie/ChartPie.js.map +1 -0
  61. package/dist/components/charts/ChartPie/ChartPie.module.css.cjs +2 -0
  62. package/dist/components/charts/ChartPie/ChartPie.module.css.cjs.map +1 -0
  63. package/dist/components/charts/ChartPie/ChartPie.module.css.js +10 -0
  64. package/dist/components/charts/ChartPie/ChartPie.module.css.js.map +1 -0
  65. package/dist/components/charts/ChartRadial/ChartRadial.cjs +2 -0
  66. package/dist/components/charts/ChartRadial/ChartRadial.cjs.map +1 -0
  67. package/dist/components/charts/ChartRadial/ChartRadial.js +121 -0
  68. package/dist/components/charts/ChartRadial/ChartRadial.js.map +1 -0
  69. package/dist/components/charts/ChartRadial/ChartRadial.module.css.cjs +2 -0
  70. package/dist/components/charts/ChartRadial/ChartRadial.module.css.cjs.map +1 -0
  71. package/dist/components/charts/ChartRadial/ChartRadial.module.css.js +16 -0
  72. package/dist/components/charts/ChartRadial/ChartRadial.module.css.js.map +1 -0
  73. package/dist/components/charts/ChartSankey/ChartSankey.cjs +2 -0
  74. package/dist/components/charts/ChartSankey/ChartSankey.cjs.map +1 -0
  75. package/dist/components/charts/ChartSankey/ChartSankey.js +209 -0
  76. package/dist/components/charts/ChartSankey/ChartSankey.js.map +1 -0
  77. package/dist/components/charts/ChartSankey/ChartSankey.module.css.cjs +2 -0
  78. package/dist/components/charts/ChartSankey/ChartSankey.module.css.cjs.map +1 -0
  79. package/dist/components/charts/ChartSankey/ChartSankey.module.css.js +22 -0
  80. package/dist/components/charts/ChartSankey/ChartSankey.module.css.js.map +1 -0
  81. package/dist/components/charts/ChartScatter/ChartScatter.cjs +2 -0
  82. package/dist/components/charts/ChartScatter/ChartScatter.cjs.map +1 -0
  83. package/dist/components/charts/ChartScatter/ChartScatter.js +137 -0
  84. package/dist/components/charts/ChartScatter/ChartScatter.js.map +1 -0
  85. package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs +2 -0
  86. package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs.map +1 -0
  87. package/dist/components/charts/ChartScatter/ChartScatter.module.css.js +14 -0
  88. package/dist/components/charts/ChartScatter/ChartScatter.module.css.js.map +1 -0
  89. package/dist/components/charts/ChartSunburst/ChartSunburst.cjs +2 -0
  90. package/dist/components/charts/ChartSunburst/ChartSunburst.cjs.map +1 -0
  91. package/dist/components/charts/ChartSunburst/ChartSunburst.js +144 -0
  92. package/dist/components/charts/ChartSunburst/ChartSunburst.js.map +1 -0
  93. package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.cjs +2 -0
  94. package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.cjs.map +1 -0
  95. package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.js +16 -0
  96. package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.js.map +1 -0
  97. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +2 -0
  98. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -0
  99. package/dist/components/charts/ChartTooltip/ChartTooltip.js +113 -0
  100. package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -0
  101. package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.cjs +2 -0
  102. package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.cjs.map +1 -0
  103. package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.js +32 -0
  104. package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.js.map +1 -0
  105. package/dist/components/charts/ChartTreemap/ChartTreemap.cjs +2 -0
  106. package/dist/components/charts/ChartTreemap/ChartTreemap.cjs.map +1 -0
  107. package/dist/components/charts/ChartTreemap/ChartTreemap.js +122 -0
  108. package/dist/components/charts/ChartTreemap/ChartTreemap.js.map +1 -0
  109. package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.cjs +2 -0
  110. package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.cjs.map +1 -0
  111. package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.js +14 -0
  112. package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.js.map +1 -0
  113. package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs +2 -0
  114. package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs.map +1 -0
  115. package/dist/components/charts/ChartWaterfall/ChartWaterfall.js +168 -0
  116. package/dist/components/charts/ChartWaterfall/ChartWaterfall.js.map +1 -0
  117. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs +2 -0
  118. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs.map +1 -0
  119. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js +12 -0
  120. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js.map +1 -0
  121. package/dist/components/charts/core/Axis.cjs +2 -0
  122. package/dist/components/charts/core/Axis.cjs.map +1 -0
  123. package/dist/components/charts/core/Axis.js +40 -0
  124. package/dist/components/charts/core/Axis.js.map +1 -0
  125. package/dist/components/charts/core/BandCursor.cjs +2 -0
  126. package/dist/components/charts/core/BandCursor.cjs.map +1 -0
  127. package/dist/components/charts/core/BandCursor.js +19 -0
  128. package/dist/components/charts/core/BandCursor.js.map +1 -0
  129. package/dist/components/charts/core/CartesianFrame.cjs +2 -0
  130. package/dist/components/charts/core/CartesianFrame.cjs.map +1 -0
  131. package/dist/components/charts/core/CartesianFrame.js +120 -0
  132. package/dist/components/charts/core/CartesianFrame.js.map +1 -0
  133. package/dist/components/charts/core/Chart.module.css.cjs +2 -0
  134. package/dist/components/charts/core/Chart.module.css.cjs.map +1 -0
  135. package/dist/components/charts/core/Chart.module.css.js +68 -0
  136. package/dist/components/charts/core/Chart.module.css.js.map +1 -0
  137. package/dist/components/charts/core/ChartFrame.cjs +2 -0
  138. package/dist/components/charts/core/ChartFrame.cjs.map +1 -0
  139. package/dist/components/charts/core/ChartFrame.js +65 -0
  140. package/dist/components/charts/core/ChartFrame.js.map +1 -0
  141. package/dist/components/charts/core/ChartLegend.cjs +2 -0
  142. package/dist/components/charts/core/ChartLegend.cjs.map +1 -0
  143. package/dist/components/charts/core/ChartLegend.js +44 -0
  144. package/dist/components/charts/core/ChartLegend.js.map +1 -0
  145. package/dist/components/charts/core/Grid.cjs +2 -0
  146. package/dist/components/charts/core/Grid.cjs.map +1 -0
  147. package/dist/components/charts/core/Grid.js +20 -0
  148. package/dist/components/charts/core/Grid.js.map +1 -0
  149. package/dist/components/charts/core/arcs.cjs +2 -0
  150. package/dist/components/charts/core/arcs.cjs.map +1 -0
  151. package/dist/components/charts/core/arcs.js +26 -0
  152. package/dist/components/charts/core/arcs.js.map +1 -0
  153. package/dist/components/charts/core/cartesianLayout.cjs +2 -0
  154. package/dist/components/charts/core/cartesianLayout.cjs.map +1 -0
  155. package/dist/components/charts/core/cartesianLayout.js +59 -0
  156. package/dist/components/charts/core/cartesianLayout.js.map +1 -0
  157. package/dist/components/charts/core/centerText.cjs +2 -0
  158. package/dist/components/charts/core/centerText.cjs.map +1 -0
  159. package/dist/components/charts/core/centerText.js +31 -0
  160. package/dist/components/charts/core/centerText.js.map +1 -0
  161. package/dist/components/charts/core/measureText.cjs +2 -0
  162. package/dist/components/charts/core/measureText.cjs.map +1 -0
  163. package/dist/components/charts/core/measureText.js +55 -0
  164. package/dist/components/charts/core/measureText.js.map +1 -0
  165. package/dist/components/charts/core/shapes.cjs +2 -0
  166. package/dist/components/charts/core/shapes.cjs.map +1 -0
  167. package/dist/components/charts/core/shapes.js +31 -0
  168. package/dist/components/charts/core/shapes.js.map +1 -0
  169. package/dist/components/charts/core/slices.cjs +2 -0
  170. package/dist/components/charts/core/slices.cjs.map +1 -0
  171. package/dist/components/charts/core/slices.js +22 -0
  172. package/dist/components/charts/core/slices.js.map +1 -0
  173. package/dist/components/charts/core/spacing.cjs +2 -0
  174. package/dist/components/charts/core/spacing.cjs.map +1 -0
  175. package/dist/components/charts/core/spacing.js +26 -0
  176. package/dist/components/charts/core/spacing.js.map +1 -0
  177. package/dist/components/charts/core/useChartMetrics.cjs +2 -0
  178. package/dist/components/charts/core/useChartMetrics.cjs.map +1 -0
  179. package/dist/components/charts/core/useChartMetrics.js +39 -0
  180. package/dist/components/charts/core/useChartMetrics.js.map +1 -0
  181. package/dist/components/charts/core/useHoveredBand.cjs +2 -0
  182. package/dist/components/charts/core/useHoveredBand.cjs.map +1 -0
  183. package/dist/components/charts/core/useHoveredBand.js +14 -0
  184. package/dist/components/charts/core/useHoveredBand.js.map +1 -0
  185. package/dist/components/charts/core/useSeriesToggle.cjs +2 -0
  186. package/dist/components/charts/core/useSeriesToggle.cjs.map +1 -0
  187. package/dist/components/charts/core/useSeriesToggle.js +22 -0
  188. package/dist/components/charts/core/useSeriesToggle.js.map +1 -0
  189. package/dist/components/charts/core/useSliceRing.cjs +2 -0
  190. package/dist/components/charts/core/useSliceRing.cjs.map +1 -0
  191. package/dist/components/charts/core/useSliceRing.js +55 -0
  192. package/dist/components/charts/core/useSliceRing.js.map +1 -0
  193. package/dist/components/charts/core/useTweenedNumbers.cjs +2 -0
  194. package/dist/components/charts/core/useTweenedNumbers.cjs.map +1 -0
  195. package/dist/components/charts/core/useTweenedNumbers.js +31 -0
  196. package/dist/components/charts/core/useTweenedNumbers.js.map +1 -0
  197. package/dist/components/charts/palette/palette.cjs +2 -0
  198. package/dist/components/charts/palette/palette.cjs.map +1 -0
  199. package/dist/components/charts/palette/palette.js +26 -0
  200. package/dist/components/charts/palette/palette.js.map +1 -0
  201. package/dist/components/charts/palette/seriesColor.cjs +2 -0
  202. package/dist/components/charts/palette/seriesColor.cjs.map +1 -0
  203. package/dist/components/charts/palette/seriesColor.js +43 -0
  204. package/dist/components/charts/palette/seriesColor.js.map +1 -0
  205. package/dist/components/charts/scales/scales.cjs +2 -0
  206. package/dist/components/charts/scales/scales.cjs.map +1 -0
  207. package/dist/components/charts/scales/scales.js +74 -0
  208. package/dist/components/charts/scales/scales.js.map +1 -0
  209. package/dist/components/data-display/Accordion/Accordion.cjs +2 -0
  210. package/dist/components/data-display/Accordion/Accordion.cjs.map +1 -0
  211. package/dist/components/data-display/Accordion/Accordion.js +91 -0
  212. package/dist/components/data-display/Accordion/Accordion.js.map +1 -0
  213. package/dist/components/data-display/Accordion/Accordion.module.css.cjs +2 -0
  214. package/dist/components/data-display/Accordion/Accordion.module.css.cjs.map +1 -0
  215. package/dist/components/data-display/Accordion/Accordion.module.css.js +26 -0
  216. package/dist/components/data-display/Accordion/Accordion.module.css.js.map +1 -0
  217. package/dist/components/data-display/Avatar/Avatar.cjs +2 -0
  218. package/dist/components/data-display/Avatar/Avatar.cjs.map +1 -0
  219. package/dist/components/data-display/Avatar/Avatar.js +20 -0
  220. package/dist/components/data-display/Avatar/Avatar.js.map +1 -0
  221. package/dist/components/data-display/Avatar/Avatar.module.css.cjs +2 -0
  222. package/dist/components/data-display/Avatar/Avatar.module.css.cjs.map +1 -0
  223. package/dist/components/data-display/Avatar/Avatar.module.css.js +14 -0
  224. package/dist/components/data-display/Avatar/Avatar.module.css.js.map +1 -0
  225. package/dist/components/data-display/Badge/Badge.cjs +2 -0
  226. package/dist/components/data-display/Badge/Badge.cjs.map +1 -0
  227. package/dist/components/data-display/Badge/Badge.js +13 -0
  228. package/dist/components/data-display/Badge/Badge.js.map +1 -0
  229. package/dist/components/data-display/Badge/Badge.module.css.cjs +2 -0
  230. package/dist/components/data-display/Badge/Badge.module.css.cjs.map +1 -0
  231. package/dist/components/data-display/Badge/Badge.module.css.js +22 -0
  232. package/dist/components/data-display/Badge/Badge.module.css.js.map +1 -0
  233. package/dist/components/data-display/Card/Card.cjs +2 -0
  234. package/dist/components/data-display/Card/Card.cjs.map +1 -0
  235. package/dist/components/data-display/Card/Card.js +51 -0
  236. package/dist/components/data-display/Card/Card.js.map +1 -0
  237. package/dist/components/data-display/Card/Card.module.css.cjs +2 -0
  238. package/dist/components/data-display/Card/Card.module.css.cjs.map +1 -0
  239. package/dist/components/data-display/Card/Card.module.css.js +26 -0
  240. package/dist/components/data-display/Card/Card.module.css.js.map +1 -0
  241. package/dist/components/data-display/CodeBlock/CodeBlock.cjs +2 -0
  242. package/dist/components/data-display/CodeBlock/CodeBlock.cjs.map +1 -0
  243. package/dist/components/data-display/CodeBlock/CodeBlock.js +65 -0
  244. package/dist/components/data-display/CodeBlock/CodeBlock.js.map +1 -0
  245. package/dist/components/data-display/CodeBlock/CodeBlock.module.css.cjs +2 -0
  246. package/dist/components/data-display/CodeBlock/CodeBlock.module.css.cjs.map +1 -0
  247. package/dist/components/data-display/CodeBlock/CodeBlock.module.css.js +47 -0
  248. package/dist/components/data-display/CodeBlock/CodeBlock.module.css.js.map +1 -0
  249. package/dist/components/data-display/CodeBlock/syntax.cjs +24 -0
  250. package/dist/components/data-display/CodeBlock/syntax.cjs.map +1 -0
  251. package/dist/components/data-display/CodeBlock/syntax.js +124 -0
  252. package/dist/components/data-display/CodeBlock/syntax.js.map +1 -0
  253. package/dist/components/data-display/List/List.cjs +2 -0
  254. package/dist/components/data-display/List/List.cjs.map +1 -0
  255. package/dist/components/data-display/List/List.js +99 -0
  256. package/dist/components/data-display/List/List.js.map +1 -0
  257. package/dist/components/data-display/List/List.module.css.cjs +2 -0
  258. package/dist/components/data-display/List/List.module.css.cjs.map +1 -0
  259. package/dist/components/data-display/List/List.module.css.js +32 -0
  260. package/dist/components/data-display/List/List.module.css.js.map +1 -0
  261. package/dist/components/data-display/List/ListingOptions.cjs +2 -0
  262. package/dist/components/data-display/List/ListingOptions.cjs.map +1 -0
  263. package/dist/components/data-display/List/ListingOptions.js +115 -0
  264. package/dist/components/data-display/List/ListingOptions.js.map +1 -0
  265. package/dist/components/data-display/List/useListing.cjs +2 -0
  266. package/dist/components/data-display/List/useListing.cjs.map +1 -0
  267. package/dist/components/data-display/List/useListing.js +85 -0
  268. package/dist/components/data-display/List/useListing.js.map +1 -0
  269. package/dist/components/data-display/List/useVirtualWindow.cjs +2 -0
  270. package/dist/components/data-display/List/useVirtualWindow.cjs.map +1 -0
  271. package/dist/components/data-display/List/useVirtualWindow.js +58 -0
  272. package/dist/components/data-display/List/useVirtualWindow.js.map +1 -0
  273. package/dist/components/data-display/Table/Table.cjs +2 -0
  274. package/dist/components/data-display/Table/Table.cjs.map +1 -0
  275. package/dist/components/data-display/Table/Table.js +238 -0
  276. package/dist/components/data-display/Table/Table.js.map +1 -0
  277. package/dist/components/data-display/Table/Table.module.css.cjs +2 -0
  278. package/dist/components/data-display/Table/Table.module.css.cjs.map +1 -0
  279. package/dist/components/data-display/Table/Table.module.css.js +69 -0
  280. package/dist/components/data-display/Table/Table.module.css.js.map +1 -0
  281. package/dist/components/feedback/Alert/Alert.cjs +2 -0
  282. package/dist/components/feedback/Alert/Alert.cjs.map +1 -0
  283. package/dist/components/feedback/Alert/Alert.js +13 -0
  284. package/dist/components/feedback/Alert/Alert.js.map +1 -0
  285. package/dist/components/feedback/Alert/Alert.module.css.cjs +2 -0
  286. package/dist/components/feedback/Alert/Alert.module.css.cjs.map +1 -0
  287. package/dist/components/feedback/Alert/Alert.module.css.js +20 -0
  288. package/dist/components/feedback/Alert/Alert.module.css.js.map +1 -0
  289. package/dist/components/feedback/EmptyState/EmptyState.cjs +2 -0
  290. package/dist/components/feedback/EmptyState/EmptyState.cjs.map +1 -0
  291. package/dist/components/feedback/EmptyState/EmptyState.js +49 -0
  292. package/dist/components/feedback/EmptyState/EmptyState.js.map +1 -0
  293. package/dist/components/feedback/EmptyState/EmptyState.module.css.cjs +2 -0
  294. package/dist/components/feedback/EmptyState/EmptyState.module.css.cjs.map +1 -0
  295. package/dist/components/feedback/EmptyState/EmptyState.module.css.js +36 -0
  296. package/dist/components/feedback/EmptyState/EmptyState.module.css.js.map +1 -0
  297. package/dist/components/feedback/Progress/Progress.cjs +2 -0
  298. package/dist/components/feedback/Progress/Progress.cjs.map +1 -0
  299. package/dist/components/feedback/Progress/Progress.js +34 -0
  300. package/dist/components/feedback/Progress/Progress.js.map +1 -0
  301. package/dist/components/feedback/Progress/Progress.module.css.cjs +2 -0
  302. package/dist/components/feedback/Progress/Progress.module.css.cjs.map +1 -0
  303. package/dist/components/feedback/Progress/Progress.module.css.js +21 -0
  304. package/dist/components/feedback/Progress/Progress.module.css.js.map +1 -0
  305. package/dist/components/feedback/Spinner/Spinner.cjs +2 -0
  306. package/dist/components/feedback/Spinner/Spinner.cjs.map +1 -0
  307. package/dist/components/feedback/Spinner/Spinner.js +10 -0
  308. package/dist/components/feedback/Spinner/Spinner.js.map +1 -0
  309. package/dist/components/feedback/Spinner/Spinner.module.css.cjs +2 -0
  310. package/dist/components/feedback/Spinner/Spinner.module.css.cjs.map +1 -0
  311. package/dist/components/feedback/Spinner/Spinner.module.css.js +15 -0
  312. package/dist/components/feedback/Spinner/Spinner.module.css.js.map +1 -0
  313. package/dist/components/forms/Checkbox/Checkbox.cjs +2 -0
  314. package/dist/components/forms/Checkbox/Checkbox.cjs.map +1 -0
  315. package/dist/components/forms/Checkbox/Checkbox.js +45 -0
  316. package/dist/components/forms/Checkbox/Checkbox.js.map +1 -0
  317. package/dist/components/forms/Checkbox/Checkbox.module.css.cjs +2 -0
  318. package/dist/components/forms/Checkbox/Checkbox.module.css.cjs.map +1 -0
  319. package/dist/components/forms/Checkbox/Checkbox.module.css.js +20 -0
  320. package/dist/components/forms/Checkbox/Checkbox.module.css.js.map +1 -0
  321. package/dist/components/forms/ComboBox/ComboBox.cjs +3 -0
  322. package/dist/components/forms/ComboBox/ComboBox.cjs.map +1 -0
  323. package/dist/components/forms/ComboBox/ComboBox.js +223 -0
  324. package/dist/components/forms/ComboBox/ComboBox.js.map +1 -0
  325. package/dist/components/forms/ComboBox/ComboBox.module.css.cjs +2 -0
  326. package/dist/components/forms/ComboBox/ComboBox.module.css.cjs.map +1 -0
  327. package/dist/components/forms/ComboBox/ComboBox.module.css.js +28 -0
  328. package/dist/components/forms/ComboBox/ComboBox.module.css.js.map +1 -0
  329. package/dist/components/forms/DatePicker/Calendar.cjs +2 -0
  330. package/dist/components/forms/DatePicker/Calendar.cjs.map +1 -0
  331. package/dist/components/forms/DatePicker/Calendar.js +86 -0
  332. package/dist/components/forms/DatePicker/Calendar.js.map +1 -0
  333. package/dist/components/forms/DatePicker/DatePicker.cjs +2 -0
  334. package/dist/components/forms/DatePicker/DatePicker.cjs.map +1 -0
  335. package/dist/components/forms/DatePicker/DatePicker.js +217 -0
  336. package/dist/components/forms/DatePicker/DatePicker.js.map +1 -0
  337. package/dist/components/forms/DatePicker/DatePicker.module.css.cjs +2 -0
  338. package/dist/components/forms/DatePicker/DatePicker.module.css.cjs.map +1 -0
  339. package/dist/components/forms/DatePicker/DatePicker.module.css.js +44 -0
  340. package/dist/components/forms/DatePicker/DatePicker.module.css.js.map +1 -0
  341. package/dist/components/forms/DatePicker/iso.cjs +2 -0
  342. package/dist/components/forms/DatePicker/iso.cjs.map +1 -0
  343. package/dist/components/forms/DatePicker/iso.js +18 -0
  344. package/dist/components/forms/DatePicker/iso.js.map +1 -0
  345. package/dist/components/forms/DateTimePicker/DateTimePicker.cjs +2 -0
  346. package/dist/components/forms/DateTimePicker/DateTimePicker.cjs.map +1 -0
  347. package/dist/components/forms/DateTimePicker/DateTimePicker.js +241 -0
  348. package/dist/components/forms/DateTimePicker/DateTimePicker.js.map +1 -0
  349. package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.cjs +2 -0
  350. package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.cjs.map +1 -0
  351. package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.js +26 -0
  352. package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.js.map +1 -0
  353. package/dist/components/forms/Field/Field.cjs +2 -0
  354. package/dist/components/forms/Field/Field.cjs.map +1 -0
  355. package/dist/components/forms/Field/Field.js +34 -0
  356. package/dist/components/forms/Field/Field.js.map +1 -0
  357. package/dist/components/forms/Field/Field.module.css.cjs +2 -0
  358. package/dist/components/forms/Field/Field.module.css.cjs.map +1 -0
  359. package/dist/components/forms/Field/Field.module.css.js +16 -0
  360. package/dist/components/forms/Field/Field.module.css.js.map +1 -0
  361. package/dist/components/forms/Field/FormValue.cjs +2 -0
  362. package/dist/components/forms/Field/FormValue.cjs.map +1 -0
  363. package/dist/components/forms/Field/FormValue.js +24 -0
  364. package/dist/components/forms/Field/FormValue.js.map +1 -0
  365. package/dist/components/forms/InputCurrency/InputCurrency.cjs +2 -0
  366. package/dist/components/forms/InputCurrency/InputCurrency.cjs.map +1 -0
  367. package/dist/components/forms/InputCurrency/InputCurrency.js +41 -0
  368. package/dist/components/forms/InputCurrency/InputCurrency.js.map +1 -0
  369. package/dist/components/forms/InputNumber/InputNumber.cjs +2 -0
  370. package/dist/components/forms/InputNumber/InputNumber.cjs.map +1 -0
  371. package/dist/components/forms/InputNumber/InputNumber.js +39 -0
  372. package/dist/components/forms/InputNumber/InputNumber.js.map +1 -0
  373. package/dist/components/forms/InputPassword/InputPassword.cjs +2 -0
  374. package/dist/components/forms/InputPassword/InputPassword.cjs.map +1 -0
  375. package/dist/components/forms/InputPassword/InputPassword.js +110 -0
  376. package/dist/components/forms/InputPassword/InputPassword.js.map +1 -0
  377. package/dist/components/forms/InputPassword/InputPassword.module.css.cjs +2 -0
  378. package/dist/components/forms/InputPassword/InputPassword.module.css.cjs.map +1 -0
  379. package/dist/components/forms/InputPassword/InputPassword.module.css.js +18 -0
  380. package/dist/components/forms/InputPassword/InputPassword.module.css.js.map +1 -0
  381. package/dist/components/forms/InputText/InputText.cjs +2 -0
  382. package/dist/components/forms/InputText/InputText.cjs.map +1 -0
  383. package/dist/components/forms/InputText/InputText.js +62 -0
  384. package/dist/components/forms/InputText/InputText.js.map +1 -0
  385. package/dist/components/forms/InputText/InputText.module.css.cjs +2 -0
  386. package/dist/components/forms/InputText/InputText.module.css.cjs.map +1 -0
  387. package/dist/components/forms/InputText/InputText.module.css.js +14 -0
  388. package/dist/components/forms/InputText/InputText.module.css.js.map +1 -0
  389. package/dist/components/forms/Label/Label.cjs +2 -0
  390. package/dist/components/forms/Label/Label.cjs.map +1 -0
  391. package/dist/components/forms/Label/Label.js +13 -0
  392. package/dist/components/forms/Label/Label.js.map +1 -0
  393. package/dist/components/forms/Label/Label.module.css.cjs +2 -0
  394. package/dist/components/forms/Label/Label.module.css.cjs.map +1 -0
  395. package/dist/components/forms/Label/Label.module.css.js +10 -0
  396. package/dist/components/forms/Label/Label.module.css.js.map +1 -0
  397. package/dist/components/forms/RadioGroup/Radio.cjs +2 -0
  398. package/dist/components/forms/RadioGroup/Radio.cjs.map +1 -0
  399. package/dist/components/forms/RadioGroup/Radio.js +43 -0
  400. package/dist/components/forms/RadioGroup/Radio.js.map +1 -0
  401. package/dist/components/forms/RadioGroup/RadioGroup.cjs +2 -0
  402. package/dist/components/forms/RadioGroup/RadioGroup.cjs.map +1 -0
  403. package/dist/components/forms/RadioGroup/RadioGroup.js +58 -0
  404. package/dist/components/forms/RadioGroup/RadioGroup.js.map +1 -0
  405. package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs +2 -0
  406. package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs.map +1 -0
  407. package/dist/components/forms/RadioGroup/RadioGroup.module.css.js +26 -0
  408. package/dist/components/forms/RadioGroup/RadioGroup.module.css.js.map +1 -0
  409. package/dist/components/forms/Select/Select.cjs +2 -0
  410. package/dist/components/forms/Select/Select.cjs.map +1 -0
  411. package/dist/components/forms/Select/Select.js +191 -0
  412. package/dist/components/forms/Select/Select.js.map +1 -0
  413. package/dist/components/forms/Select/Select.module.css.cjs +2 -0
  414. package/dist/components/forms/Select/Select.module.css.cjs.map +1 -0
  415. package/dist/components/forms/Select/Select.module.css.js +22 -0
  416. package/dist/components/forms/Select/Select.module.css.js.map +1 -0
  417. package/dist/components/forms/Switch/Switch.cjs +2 -0
  418. package/dist/components/forms/Switch/Switch.cjs.map +1 -0
  419. package/dist/components/forms/Switch/Switch.js +39 -0
  420. package/dist/components/forms/Switch/Switch.js.map +1 -0
  421. package/dist/components/forms/Switch/Switch.module.css.cjs +2 -0
  422. package/dist/components/forms/Switch/Switch.module.css.cjs.map +1 -0
  423. package/dist/components/forms/Switch/Switch.module.css.js +20 -0
  424. package/dist/components/forms/Switch/Switch.module.css.js.map +1 -0
  425. package/dist/components/forms/Textarea/Textarea.cjs +2 -0
  426. package/dist/components/forms/Textarea/Textarea.cjs.map +1 -0
  427. package/dist/components/forms/Textarea/Textarea.js +64 -0
  428. package/dist/components/forms/Textarea/Textarea.js.map +1 -0
  429. package/dist/components/forms/Textarea/Textarea.module.css.cjs +2 -0
  430. package/dist/components/forms/Textarea/Textarea.module.css.cjs.map +1 -0
  431. package/dist/components/forms/Textarea/Textarea.module.css.js +14 -0
  432. package/dist/components/forms/Textarea/Textarea.module.css.js.map +1 -0
  433. package/dist/components/forms/TimePicker/TimePicker.cjs +2 -0
  434. package/dist/components/forms/TimePicker/TimePicker.cjs.map +1 -0
  435. package/dist/components/forms/TimePicker/TimePicker.js +176 -0
  436. package/dist/components/forms/TimePicker/TimePicker.js.map +1 -0
  437. package/dist/components/forms/TimePicker/TimePicker.module.css.cjs +2 -0
  438. package/dist/components/forms/TimePicker/TimePicker.module.css.cjs.map +1 -0
  439. package/dist/components/forms/TimePicker/TimePicker.module.css.js +26 -0
  440. package/dist/components/forms/TimePicker/TimePicker.module.css.js.map +1 -0
  441. package/dist/components/forms/TimePicker/TimeSlots.cjs +2 -0
  442. package/dist/components/forms/TimePicker/TimeSlots.cjs.map +1 -0
  443. package/dist/components/forms/TimePicker/TimeSlots.js +81 -0
  444. package/dist/components/forms/TimePicker/TimeSlots.js.map +1 -0
  445. package/dist/components/icons/Icon.cjs +2 -0
  446. package/dist/components/icons/Icon.cjs.map +1 -0
  447. package/dist/components/icons/Icon.js +24 -0
  448. package/dist/components/icons/Icon.js.map +1 -0
  449. package/dist/components/icons/icons.cjs +2 -0
  450. package/dist/components/icons/icons.cjs.map +1 -0
  451. package/dist/components/icons/icons.js +116 -0
  452. package/dist/components/icons/icons.js.map +1 -0
  453. package/dist/components/navigation/Breadcrumb/Breadcrumb.cjs +2 -0
  454. package/dist/components/navigation/Breadcrumb/Breadcrumb.cjs.map +1 -0
  455. package/dist/components/navigation/Breadcrumb/Breadcrumb.js +22 -0
  456. package/dist/components/navigation/Breadcrumb/Breadcrumb.js.map +1 -0
  457. package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.cjs +2 -0
  458. package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.cjs.map +1 -0
  459. package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.js +16 -0
  460. package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.js.map +1 -0
  461. package/dist/components/navigation/Pagination/Pagination.cjs +2 -0
  462. package/dist/components/navigation/Pagination/Pagination.cjs.map +1 -0
  463. package/dist/components/navigation/Pagination/Pagination.js +70 -0
  464. package/dist/components/navigation/Pagination/Pagination.js.map +1 -0
  465. package/dist/components/navigation/Pagination/Pagination.module.css.cjs +2 -0
  466. package/dist/components/navigation/Pagination/Pagination.module.css.cjs.map +1 -0
  467. package/dist/components/navigation/Pagination/Pagination.module.css.js +18 -0
  468. package/dist/components/navigation/Pagination/Pagination.module.css.js.map +1 -0
  469. package/dist/components/navigation/Tabs/Tabs.cjs +2 -0
  470. package/dist/components/navigation/Tabs/Tabs.cjs.map +1 -0
  471. package/dist/components/navigation/Tabs/Tabs.js +96 -0
  472. package/dist/components/navigation/Tabs/Tabs.js.map +1 -0
  473. package/dist/components/navigation/Tabs/Tabs.module.css.cjs +2 -0
  474. package/dist/components/navigation/Tabs/Tabs.module.css.cjs.map +1 -0
  475. package/dist/components/navigation/Tabs/Tabs.module.css.js +20 -0
  476. package/dist/components/navigation/Tabs/Tabs.module.css.js.map +1 -0
  477. package/dist/components/overlays/Dialog/Dialog.cjs +2 -0
  478. package/dist/components/overlays/Dialog/Dialog.cjs.map +1 -0
  479. package/dist/components/overlays/Dialog/Dialog.js +64 -0
  480. package/dist/components/overlays/Dialog/Dialog.js.map +1 -0
  481. package/dist/components/overlays/Dialog/Dialog.module.css.cjs +2 -0
  482. package/dist/components/overlays/Dialog/Dialog.module.css.cjs.map +1 -0
  483. package/dist/components/overlays/Dialog/Dialog.module.css.js +36 -0
  484. package/dist/components/overlays/Dialog/Dialog.module.css.js.map +1 -0
  485. package/dist/components/overlays/Menu/Menu.cjs +2 -0
  486. package/dist/components/overlays/Menu/Menu.cjs.map +1 -0
  487. package/dist/components/overlays/Menu/Menu.js +137 -0
  488. package/dist/components/overlays/Menu/Menu.js.map +1 -0
  489. package/dist/components/overlays/Menu/Menu.module.css.cjs +2 -0
  490. package/dist/components/overlays/Menu/Menu.module.css.cjs.map +1 -0
  491. package/dist/components/overlays/Menu/Menu.module.css.js +10 -0
  492. package/dist/components/overlays/Menu/Menu.module.css.js.map +1 -0
  493. package/dist/components/overlays/Popover/Popover.cjs +2 -0
  494. package/dist/components/overlays/Popover/Popover.cjs.map +1 -0
  495. package/dist/components/overlays/Popover/Popover.js +59 -0
  496. package/dist/components/overlays/Popover/Popover.js.map +1 -0
  497. package/dist/components/overlays/Popover/Popover.module.css.cjs +2 -0
  498. package/dist/components/overlays/Popover/Popover.module.css.cjs.map +1 -0
  499. package/dist/components/overlays/Popover/Popover.module.css.js +8 -0
  500. package/dist/components/overlays/Popover/Popover.module.css.js.map +1 -0
  501. package/dist/components/overlays/Tooltip/Tooltip.cjs +2 -0
  502. package/dist/components/overlays/Tooltip/Tooltip.cjs.map +1 -0
  503. package/dist/components/overlays/Tooltip/Tooltip.js +84 -0
  504. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -0
  505. package/dist/components/overlays/Tooltip/Tooltip.module.css.cjs +2 -0
  506. package/dist/components/overlays/Tooltip/Tooltip.module.css.cjs.map +1 -0
  507. package/dist/components/overlays/Tooltip/Tooltip.module.css.js +8 -0
  508. package/dist/components/overlays/Tooltip/Tooltip.module.css.js.map +1 -0
  509. package/dist/design-system.css +1 -1
  510. package/dist/hooks/useCalendar/calendar.cjs +2 -0
  511. package/dist/hooks/useCalendar/calendar.cjs.map +1 -0
  512. package/dist/hooks/useCalendar/calendar.js +56 -0
  513. package/dist/hooks/useCalendar/calendar.js.map +1 -0
  514. package/dist/hooks/useCalendar/useCalendar.cjs +2 -0
  515. package/dist/hooks/useCalendar/useCalendar.cjs.map +1 -0
  516. package/dist/hooks/useCalendar/useCalendar.js +48 -0
  517. package/dist/hooks/useCalendar/useCalendar.js.map +1 -0
  518. package/dist/hooks/useCharacterCount/useCharacterCount.cjs +2 -0
  519. package/dist/hooks/useCharacterCount/useCharacterCount.cjs.map +1 -0
  520. package/dist/hooks/useCharacterCount/useCharacterCount.js +27 -0
  521. package/dist/hooks/useCharacterCount/useCharacterCount.js.map +1 -0
  522. package/dist/hooks/useDecimalInput.cjs +2 -0
  523. package/dist/hooks/useDecimalInput.cjs.map +1 -0
  524. package/dist/hooks/useDecimalInput.js +17 -0
  525. package/dist/hooks/useDecimalInput.js.map +1 -0
  526. package/dist/hooks/useFormReset.cjs +2 -0
  527. package/dist/hooks/useFormReset.cjs.map +1 -0
  528. package/dist/hooks/useFormReset.js +16 -0
  529. package/dist/hooks/useFormReset.js.map +1 -0
  530. package/dist/hooks/useMergedRefs.cjs +2 -0
  531. package/dist/hooks/useMergedRefs.cjs.map +1 -0
  532. package/dist/hooks/useMergedRefs.js +24 -0
  533. package/dist/hooks/useMergedRefs.js.map +1 -0
  534. package/dist/hooks/useSelection/selection.cjs +2 -0
  535. package/dist/hooks/useSelection/selection.cjs.map +1 -0
  536. package/dist/hooks/useSelection/selection.js +78 -0
  537. package/dist/hooks/useSelection/selection.js.map +1 -0
  538. package/dist/hooks/useSelection/useSelection.cjs +2 -0
  539. package/dist/hooks/useSelection/useSelection.cjs.map +1 -0
  540. package/dist/hooks/useSelection/useSelection.js +68 -0
  541. package/dist/hooks/useSelection/useSelection.js.map +1 -0
  542. package/dist/index.cjs +2 -0
  543. package/dist/index.cjs.map +1 -0
  544. package/dist/index.js +131 -0
  545. package/dist/index.js.map +1 -0
  546. package/dist/types/components/actions/ButtonIcon/ButtonIcon.d.ts +12 -0
  547. package/dist/types/components/actions/ButtonIcon/index.d.ts +2 -0
  548. package/dist/types/components/data-display/CodeBlock/CodeBlock.d.ts +16 -0
  549. package/dist/types/components/data-display/CodeBlock/index.d.ts +3 -0
  550. package/dist/types/components/data-display/CodeBlock/syntax.d.ts +15 -0
  551. package/dist/types/components/data-display/Table/Table.d.ts +4 -2
  552. package/dist/types/components/feedback/EmptyState/EmptyState.d.ts +14 -0
  553. package/dist/types/components/feedback/EmptyState/index.d.ts +2 -0
  554. package/dist/types/components/icons/icons.d.ts +2 -0
  555. package/dist/types/components/icons/index.d.ts +1 -1
  556. package/dist/types/components/overlays/Dialog/Dialog.d.ts +2 -0
  557. package/dist/types/index.d.ts +7 -1
  558. package/dist/utils/formatters/formatarData.cjs +2 -0
  559. package/dist/utils/formatters/formatarData.cjs.map +1 -0
  560. package/dist/utils/formatters/formatarData.js +32 -0
  561. package/dist/utils/formatters/formatarData.js.map +1 -0
  562. package/dist/utils/formatters/formatarEntradaData.cjs +2 -0
  563. package/dist/utils/formatters/formatarEntradaData.cjs.map +1 -0
  564. package/dist/utils/formatters/formatarEntradaData.js +22 -0
  565. package/dist/utils/formatters/formatarEntradaData.js.map +1 -0
  566. package/dist/utils/formatters/formatarEntradaDecimal.cjs +2 -0
  567. package/dist/utils/formatters/formatarEntradaDecimal.cjs.map +1 -0
  568. package/dist/utils/formatters/formatarEntradaDecimal.js +35 -0
  569. package/dist/utils/formatters/formatarEntradaDecimal.js.map +1 -0
  570. package/dist/utils/formatters/formatarEntradaHora.cjs +2 -0
  571. package/dist/utils/formatters/formatarEntradaHora.cjs.map +1 -0
  572. package/dist/utils/formatters/formatarEntradaHora.js +32 -0
  573. package/dist/utils/formatters/formatarEntradaHora.js.map +1 -0
  574. package/dist/utils/formatters/formatarEntradaMonetaria.cjs +2 -0
  575. package/dist/utils/formatters/formatarEntradaMonetaria.cjs.map +1 -0
  576. package/dist/utils/formatters/formatarEntradaMonetaria.js +17 -0
  577. package/dist/utils/formatters/formatarEntradaMonetaria.js.map +1 -0
  578. package/dist/utils/formatters/formatarNumero.cjs +2 -0
  579. package/dist/utils/formatters/formatarNumero.cjs.map +1 -0
  580. package/dist/utils/formatters/formatarNumero.js +28 -0
  581. package/dist/utils/formatters/formatarNumero.js.map +1 -0
  582. package/dist/utils/formatters/mascararPartes.cjs +2 -0
  583. package/dist/utils/formatters/mascararPartes.cjs.map +1 -0
  584. package/dist/utils/formatters/mascararPartes.js +17 -0
  585. package/dist/utils/formatters/mascararPartes.js.map +1 -0
  586. package/dist/utils/textSearch/textSearch.cjs +2 -0
  587. package/dist/utils/textSearch/textSearch.cjs.map +1 -0
  588. package/dist/utils/textSearch/textSearch.js +22 -0
  589. package/dist/utils/textSearch/textSearch.js.map +1 -0
  590. package/package.json +5 -5
  591. package/dist/plenus-design-system.cjs +0 -3
  592. package/dist/plenus-design-system.cjs.map +0 -1
  593. package/dist/plenus-design-system.es.js +0 -6387
  594. package/dist/plenus-design-system.es.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartCombo.js","sources":["../../../../src/components/charts/ChartCombo/ChartCombo.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport {\n BandCursor,\n CartesianFrame,\n NO_BAR_SLOT,\n barSlots,\n cartesianLayout,\n chartHeight,\n linePath,\n roundedBarPath,\n useChartMetrics,\n useHoveredBand,\n useSeriesToggle,\n useTweenedNumbers,\n valueLabelRoom,\n valueLabelsFor,\n type AxisLabelAngle,\n type AxisTick,\n type AxisVisibility,\n type ChartCurve,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type ChartPoint,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { alignZeros, bandScale, domainOf, linearScale, mergeDomains, ticksFor, type NumericRange } from '../scales';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartCombo.module.css';\n/**\n * Ponto sem vizinho desenhado. A curva entre ele e o nada nao tem tracado, e o\n * marcador so no hover deixaria o dado invisivel — entao ele aparece sempre.\n */\nfunction isolado(pontos: readonly (ChartPoint | null)[], indice: number) {\n return pontos[indice] !== null && !pontos[indice - 1] && !pontos[indice + 1];\n}\n\n\nexport type ChartComboKind = 'bar' | 'line';\n\n/**\n * Eixo de valor a que a serie pertence. A escolha e sempre do produto: o\n * grafico nunca parte a escala por conta propria.\n */\nexport type ChartComboAxis = 'left' | 'right';\n\nexport interface ChartComboSeries extends SeriesAppearance {\n axis?: ChartComboAxis;\n kind: ChartComboKind;\n label: string;\n values: readonly (number | null)[];\n}\n\nexport interface ChartComboProps {\n accent?: string;\n categories: readonly string[];\n curve?: ChartCurve;\n defaultHiddenSeries?: readonly string[];\n emptyMessage?: string;\n formatRightValue?: (value: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenSeries?: readonly string[];\n labelAngle?: AxisLabelAngle;\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n /** Indice da categoria sob o ponteiro, ou `null` ao sair dela. */\n onHoverCategory?: (index: number | null) => void;\n series: readonly ChartComboSeries[];\n showDataLabels?: boolean;\n showDots?: boolean;\n title: string;\n xAxis?: AxisVisibility;\n yAxis?: AxisVisibility;\n yAxisRight?: AxisVisibility;\n}\n\nfunction eixoDa(serie: ChartComboSeries): ChartComboAxis {\n return serie.axis ?? 'left';\n}\n\n/** Dominio de um eixo: so as series visiveis que pertencem a ele. */\nfunction dominioDoEixo(\n series: readonly ChartComboSeries[],\n axis: ChartComboAxis,\n oculta: (label: string) => boolean,\n) {\n return mergeDomains(\n series\n .filter((serie) => eixoDa(serie) === axis && !oculta(serie.label))\n .map((serie) => domainOf(serie.values.filter((valor) => valor !== null))),\n );\n}\n\n/** Dominio com os limites arredondados que o eixo mostraria sozinho. */\nfunction arredondado(dominio: NumericRange): NumericRange {\n const [min = 0, max = 0] = linearScale({ domain: dominio, range: [0, 1] }).domain();\n\n return { max, min };\n}\n\n/**\n * Barras e linhas sobre o mesmo eixo de categorias. Uma serie declara a que\n * eixo de valor pertence; sem nenhuma a direita, o dominio e unico e o eixo\n * direito espelha o esquerdo.\n */\nexport function ChartCombo({\n accent,\n categories,\n curve = 'smooth',\n defaultHiddenSeries,\n emptyMessage = 'Sem dados no período',\n formatRightValue,\n formatValue = formatarNumero,\n height = 260,\n hiddenSeries,\n labelAngle = 'auto',\n legend = 'bottom',\n legendAlign,\n onHiddenSeriesChange,\n onHoverCategory,\n series,\n showDataLabels = false,\n showDots = false,\n title,\n xAxis = 'visible',\n yAxis = 'visible',\n yAxisRight,\n}: ChartComboProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({ defaultHiddenSeries, hiddenSeries, onHiddenSeriesChange });\n const { hover: focarFaixa, hovered: faixaEmFoco } = useHoveredBand(onHoverCategory);\n\n const formatarDireita = formatRightValue ?? formatValue;\n const temEixoDireito = series.some((serie) => eixoDa(serie) === 'right');\n\n // A cor sai da lista inteira, e nao das visiveis: desligar uma serie nao pode\n // repintar as demais.\n const cores = useMemo(() => resolveSeriesColors(series, { accent }), [accent, series]);\n\n // Presenca de cada serie, entre zero e um. E ela que reparte a faixa, entao a\n // barra desligada encolhe enquanto as demais ocupam o lugar dela.\n const presencas = useTweenedNumbers(series.map((serie) => (isHidden(serie.label) ? 0 : 1)));\n\n // Com serie a direita, o zero fica na mesma altura nos dois eixos: as barras crescem da mesma base.\n const [dominioEsquerda, dominioDireita] = useMemo(() => {\n const esquerda = arredondado(dominioDoEixo(series, 'left', isHidden));\n\n return temEixoDireito\n ? alignZeros(esquerda, arredondado(dominioDoEixo(series, 'right', isHidden)))\n : [esquerda, esquerda];\n }, [isHidden, series, temEixoDireito]);\n\n // Uma segunda escala sem eixo para le-la e o duplo eixo que engana. Havendo\n // serie a direita, o eixo aparece sem ninguem pedir.\n const visibilidadeDireita = yAxisRight ?? (temEixoDireito ? 'visible' : 'hidden');\n\n const { margins, plot, rotation } = cartesianLayout({\n bottomLabels: categories,\n font,\n height: alturaDoDesenho,\n labelAngle,\n leftLabels: valueLabelsFor(dominioEsquerda, alturaDoDesenho, formatValue),\n rightLabels: valueLabelsFor(dominioDireita, alturaDoDesenho, formatarDireita),\n topRoom: showDataLabels ? valueLabelRoom(font) : 0,\n width,\n xAxis,\n yAxis,\n yAxisRight: visibilidadeDireita,\n });\n\n // Barras e linhas compartilham a escala de faixas: a linha passa pelo centro\n // da faixa, que e onde a marca do eixo de categoria tambem fica.\n const escalaCategorias = useMemo(\n () => bandScale({ domain: categories, range: [0, plot.width] }),\n [categories, plot.width],\n );\n\n // A escala alvo fixa as marcas; a animada posiciona o desenho. Sem separar as\n // duas, as marcas exibiriam valores quebrados durante a transicao.\n const alvoEsquerda = useMemo(\n () => linearScale({ domain: dominioEsquerda, nice: false, range: [plot.height, 0] }),\n [dominioEsquerda, plot.height],\n );\n\n const alvoDireita = useMemo(\n () => linearScale({ domain: dominioDireita, nice: false, range: [plot.height, 0] }),\n [dominioDireita, plot.height],\n );\n\n // Os dois dominios caminham numa animacao so, e por isso chegam juntos.\n const [minEsquerda, maxEsquerda, minDireita, maxDireita] = useTweenedNumbers([\n ...alvoEsquerda.domain(),\n ...alvoDireita.domain(),\n ]);\n\n const escalaEsquerda = useMemo(\n () =>\n linearScale({ domain: { min: minEsquerda, max: maxEsquerda }, nice: false, range: [plot.height, 0] }),\n [maxEsquerda, minEsquerda, plot.height],\n );\n\n const escalaDireita = useMemo(\n () => linearScale({ domain: { min: minDireita, max: maxDireita }, nice: false, range: [plot.height, 0] }),\n [maxDireita, minDireita, plot.height],\n );\n\n const escalaDa = (serie: ChartComboSeries) =>\n eixoDa(serie) === 'right' ? escalaDireita : escalaEsquerda;\n const formatoDa = (serie: ChartComboSeries) =>\n eixoDa(serie) === 'right' ? formatarDireita : formatValue;\n\n const marcasEsquerda = ticksFor(alvoEsquerda, plot.height);\n const marcasDireita = ticksFor(alvoDireita, plot.height);\n\n const vao = escalaCategorias.bandwidth();\n\n // So as barras repartem a faixa: a linha passa pelo centro dela, e por isso\n // entra na conta com presenca zero.\n const faixas = barSlots(\n vao,\n series.map((serie, indice) => (serie.kind === 'bar' ? presencas[indice] ?? 0 : 0)),\n );\n const faixaDa = (indice: number) => faixas[indice] ?? NO_BAR_SLOT;\n\n const marcasCategoria: AxisTick[] = categories.map((categoria) => ({\n label: categoria,\n position: (escalaCategorias(categoria) ?? 0) + vao / 2,\n }));\n\n const marcasDeValor = (\n valores: readonly number[],\n escala: (valor: number) => number,\n formatar: (valor: number) => string,\n ): AxisTick[] => valores.map((valor) => ({ label: formatar(valor), position: escala(valor) }));\n\n return (\n <CartesianFrame\n containerRef={ref}\n empty={series.length === 0 || categories.length === 0}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n grid={[\n {\n baseline: escalaEsquerda(0),\n lines: marcasEsquerda.map((valor) => escalaEsquerda(valor)),\n orientation: 'horizontal',\n },\n ]}\n height={alturaDoDesenho}\n legend={series.map((serie, indice) => ({\n color: cores[indice],\n hidden: isHidden(serie.label),\n label: serie.label,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n margins={margins}\n onToggleSeries={toggle}\n plot={plot}\n title={title}\n width={width}\n xAxis={{ labelRotation: rotation, ticks: marcasCategoria, visibility: xAxis }}\n yAxis={{\n hideLine: true,\n ticks: marcasDeValor(marcasEsquerda, escalaEsquerda, formatValue),\n visibility: yAxis,\n }}\n yAxisRight={{\n hideLine: true,\n ticks: marcasDeValor(marcasDireita, escalaDireita, formatarDireita),\n visibility: visibilidadeDireita,\n }}\n >\n {faixaEmFoco !== null && (\n <BandCursor offset={escalaCategorias(categories[faixaEmFoco]) ?? 0} plot={plot} size={vao} />\n )}\n\n {series.map((serie, indiceSerie) => {\n if (serie.kind !== 'bar') {\n return null;\n }\n\n const oculta = isHidden(serie.label);\n const escala = escalaDa(serie);\n const formatar = formatoDa(serie);\n const base = escala(0);\n\n return (\n <g\n aria-hidden={oculta || undefined}\n className={`${styles.series} ${oculta ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n {categories.map((categoria, indiceCategoria) => {\n const valor = serie.values[indiceCategoria];\n\n if (valor === null || valor === undefined || !Number.isFinite(valor)) {\n return null;\n }\n\n const ponta = escala(valor);\n\n return (\n <path\n aria-label={`${serie.label}, ${categoria}: ${formatar(valor)}`}\n className={styles.bar}\n d={roundedBarPath(\n (escalaCategorias(categoria) ?? 0) + faixaDa(indiceSerie).offset,\n Math.min(base, ponta),\n faixaDa(indiceSerie).thickness,\n Math.abs(ponta - base),\n [raioDoCanto, raioDoCanto, raioDoCanto, raioDoCanto],\n )}\n fill={cores[indiceSerie]}\n key={indiceCategoria}\n onMouseEnter={() => focarFaixa(indiceCategoria)}\n onMouseLeave={() => focarFaixa(null)}\n />\n );\n })}\n\n {showDataLabels &&\n categories.map((categoria, indiceCategoria) => {\n const valor = serie.values[indiceCategoria];\n\n if (valor === null || valor === undefined || !Number.isFinite(valor)) {\n return null;\n }\n\n return (\n <text\n className={styles.valueLabel}\n key={indiceCategoria}\n textAnchor=\"middle\"\n x={\n (escalaCategorias(categoria) ?? 0) +\n faixaDa(indiceSerie).offset +\n faixaDa(indiceSerie).thickness / 2\n }\n y={escala(valor) - 6}\n >\n {formatar(valor)}\n </text>\n );\n })}\n </g>\n );\n })}\n\n {series.map((serie, indiceSerie) => {\n if (serie.kind !== 'line') {\n return null;\n }\n\n const oculta = isHidden(serie.label);\n const escala = escalaDa(serie);\n const formatar = formatoDa(serie);\n const pontos = categories.map<ChartPoint | null>((categoria, indice) => {\n const valor = serie.values[indice];\n\n if (valor === null || valor === undefined || !Number.isFinite(valor)) {\n return null;\n }\n\n return { x: (escalaCategorias(categoria) ?? 0) + vao / 2, y: escala(valor) };\n });\n\n return (\n <g\n aria-hidden={oculta || undefined}\n className={`${styles.series} ${oculta ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n <path\n className={styles.line}\n d={linePath(pontos, curve)}\n fill=\"none\"\n stroke={cores[indiceSerie]}\n />\n\n {pontos.map((ponto, indice) =>\n ponto === null ? null : (\n <circle\n aria-label={`${serie.label}, ${categories[indice]}: ${formatar(serie.values[indice] ?? 0)}`}\n className={showDots || isolado(pontos, indice) ? styles.dotVisible : styles.dot}\n cx={ponto.x}\n cy={ponto.y}\n fill={cores[indiceSerie]}\n key={indice}\n r={4}\n />\n ),\n )}\n\n {showDataLabels &&\n pontos.map((ponto, indice) =>\n ponto === null ? null : (\n <text\n className={styles.valueLabel}\n key={indice}\n textAnchor=\"middle\"\n x={ponto.x}\n y={ponto.y - 10}\n >\n {formatar(serie.values[indice] ?? 0)}\n </text>\n ),\n )}\n </g>\n );\n })}\n </CartesianFrame>\n );\n}\n"],"names":["isolado","pontos","indice","eixoDa","serie","dominioDoEixo","series","axis","oculta","mergeDomains","domainOf","valor","arredondado","dominio","min","max","linearScale","ChartCombo","accent","categories","curve","defaultHiddenSeries","emptyMessage","formatRightValue","formatValue","formatarNumero","height","hiddenSeries","labelAngle","legend","legendAlign","onHiddenSeriesChange","onHoverCategory","showDataLabels","showDots","title","xAxis","yAxis","yAxisRight","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","focarFaixa","faixaEmFoco","useHoveredBand","formatarDireita","temEixoDireito","cores","useMemo","resolveSeriesColors","presencas","useTweenedNumbers","dominioEsquerda","dominioDireita","esquerda","alignZeros","visibilidadeDireita","margins","plot","rotation","cartesianLayout","valueLabelsFor","valueLabelRoom","escalaCategorias","bandScale","alvoEsquerda","alvoDireita","minEsquerda","maxEsquerda","minDireita","maxDireita","escalaEsquerda","escalaDireita","escalaDa","formatoDa","marcasEsquerda","ticksFor","marcasDireita","vao","faixas","barSlots","faixaDa","NO_BAR_SLOT","marcasCategoria","categoria","marcasDeValor","valores","escala","formatar","jsxs","CartesianFrame","jsx","BandCursor","indiceSerie","base","styles","indiceCategoria","ponta","roundedBarPath","linePath","ponto"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_bar_ycvom_1",_="_line_ycvom_5 _line_141iy_132",s="_dot_ycvom_9 _dot_141iy_140",i="_dotVisible_ycvom_13 _dotVisible_141iy_145",o="_valueLabel_ycvom_17 _valueLabel_141iy_124",l="_series_ycvom_21 _series_141iy_209",t="_seriesOff_ycvom_25 _seriesOff_141iy_213",r={bar:e,line:_,dot:s,dotVisible:i,valueLabel:o,series:l,seriesOff:t};exports.bar=e;exports.default=r;exports.dot=s;exports.dotVisible=i;exports.line=_;exports.series=l;exports.seriesOff=t;exports.valueLabel=o;
2
+ //# sourceMappingURL=ChartCombo.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartCombo.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ const _ = "_bar_ycvom_1", e = "_line_ycvom_5 _line_141iy_132", s = "_dot_ycvom_9 _dot_141iy_140", i = "_dotVisible_ycvom_13 _dotVisible_141iy_145", o = "_valueLabel_ycvom_17 _valueLabel_141iy_124", t = "_series_ycvom_21 _series_141iy_209", l = "_seriesOff_ycvom_25 _seriesOff_141iy_213", c = {
2
+ bar: _,
3
+ line: e,
4
+ dot: s,
5
+ dotVisible: i,
6
+ valueLabel: o,
7
+ series: t,
8
+ seriesOff: l
9
+ };
10
+ export {
11
+ _ as bar,
12
+ c as default,
13
+ s as dot,
14
+ i as dotVisible,
15
+ e as line,
16
+ t as series,
17
+ l as seriesOff,
18
+ o as valueLabel
19
+ };
20
+ //# sourceMappingURL=ChartCombo.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartCombo.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),n=require("./ChartDonut.module.css.cjs"),A=require("../core/useChartMetrics.cjs"),P=require("../core/useSliceRing.cjs"),E=require("../core/centerText.cjs"),I=require("../../../utils/formatters/formatarNumero.cjs"),_=require("../core/ChartFrame.cjs"),k=require("../core/arcs.cjs"),B=require("../core/cartesianLayout.cjs"),G=require("../core/spacing.cjs");function J({accent:f,centerLabel:x="Total",defaultHiddenSlices:v,emptyMessage:M="Sem dados no período",formatPercent:i=l=>`${Math.round(l*100)}%`,formatValue:c=I.formatarNumero,height:b=260,hiddenSlices:q,legend:y="right",legendAlign:C,onHiddenSlicesChange:j,onHoverSlice:p,otherLabel:D="Outros",showCenter:R=!0,showLegendValues:S=!0,sliceRadius:N,slices:u,smallSliceThreshold:O=.02,thickness:T=.38,title:H}){const{font:l,height:$,radius:z,ref:F,width:d}=A.useChartMetrics(),{fillHeight:L,value:h}=B.chartHeight(b,$),e=P.useSliceRing({accent:f,defaultHiddenSlices:v,hiddenSlices:q,onHiddenSlicesChange:j,onHoverSlice:p,otherLabel:D,slices:u,smallSliceThreshold:O}),m=G.ringDiameter(d,h)/2,g=m*(1-Math.min(Math.max(T,0),1)),w=N??z,s=e.focused===null?void 0:e.slices[e.focused],a=E.fitCenterText(c(s?Math.max(s.value,0):e.total),s?s.label:x,l,g*2);return o.jsxs(_.ChartFrame,{centerOrigin:!0,containerRef:F,empty:e.slices.length===0||u.every(r=>!(r.value>0)),emptyMessage:M,fillHeight:L,height:h,legend:e.slices.map((r,t)=>({color:e.colors[t],hidden:e.isHidden(r.label),label:r.label,value:S?i(e.ratioOf(t)):void 0})),legendAlign:C,legendPosition:y,onToggleSeries:e.toggle,swatch:"dot",title:H,width:d,children:[e.slices.map((r,t)=>o.jsx("path",{"aria-label":`${r.label}: ${c(Math.max(r.value,0))} (${i(e.ratioOf(t))})`,className:n.default.slice,d:k.arcPath({...e.angles[t],cornerRadius:w,innerRadius:g,outerRadius:m}),fill:e.colors[t],onMouseEnter:()=>e.focus(t),onMouseLeave:()=>e.focus(null)},t)),R&&o.jsxs("g",{className:n.default.center,children:[o.jsx("text",{className:n.default.centerValue,dy:a.size*.1,style:{fontFamily:a.family,fontSize:a.size},textAnchor:"middle",children:a.value}),o.jsx("text",{className:n.default.centerLabel,dy:a.lineHeight*.62,textAnchor:"middle",children:a.label})]})]})}exports.ChartDonut=J;
2
+ //# sourceMappingURL=ChartDonut.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartDonut.cjs","sources":["../../../../src/components/charts/ChartDonut/ChartDonut.tsx"],"sourcesContent":["import {\n ChartFrame,\n arcPath,\n chartHeight,\n fitCenterText,\n ringDiameter,\n useChartMetrics,\n useSliceRing,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type ChartSlice,\n} from '../core';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartDonut.module.css';\n\nexport type { ChartSlice as ChartDonutSlice };\n\nexport interface ChartDonutProps {\n accent?: string;\n /** Texto sob o valor do centro, trocado pelo rotulo da fatia sob o ponteiro. */\n centerLabel?: string;\n defaultHiddenSlices?: readonly string[];\n emptyMessage?: string;\n formatPercent?: (ratio: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenSlices?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSlicesChange?: (hidden: readonly string[]) => void;\n /** Fatia sob o ponteiro, ja agrupada, ou `null` ao sair dela. */\n onHoverSlice?: (slice: ChartSlice | null) => void;\n /** Rotulo da fatia que reune as pequenas. */\n otherLabel?: string;\n /** Raio dos cantos de cada fatia. Sem valor, o token de raio pequeno. */\n sliceRadius?: number;\n showCenter?: boolean;\n showLegendValues?: boolean;\n slices: readonly ChartSlice[];\n /** Fracao do total abaixo da qual a fatia entra no agrupamento. */\n smallSliceThreshold?: number;\n /** Espessura do anel, como fracao do raio. */\n thickness?: number;\n title: string;\n}\n\nexport function ChartDonut({\n accent,\n centerLabel = 'Total',\n defaultHiddenSlices,\n emptyMessage = 'Sem dados no período',\n formatPercent = (fracao) => `${Math.round(fracao * 100)}%`,\n formatValue = formatarNumero,\n height = 260,\n hiddenSlices,\n legend = 'right',\n legendAlign,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel = 'Outros',\n showCenter = true,\n showLegendValues = true,\n sliceRadius,\n slices,\n smallSliceThreshold = 0.02,\n thickness = 0.38,\n title,\n}: ChartDonutProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n\n const anel = useSliceRing({\n accent,\n defaultHiddenSlices,\n hiddenSlices,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel,\n slices,\n smallSliceThreshold,\n });\n\n const diametro = ringDiameter(width, alturaDoDesenho);\n const raio = diametro / 2;\n const raioInterno = raio * (1 - Math.min(Math.max(thickness, 0), 1));\n\n const canto = sliceRadius ?? raioDoCanto;\n const focada = anel.focused === null ? undefined : anel.slices[anel.focused];\n const centro = fitCenterText(\n formatValue(focada ? Math.max(focada.value, 0) : anel.total),\n focada ? focada.label : centerLabel,\n font,\n raioInterno * 2,\n );\n\n return (\n <ChartFrame\n centerOrigin\n containerRef={ref}\n empty={anel.slices.length === 0 || slices.every((fatia) => !(fatia.value > 0))}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={anel.slices.map((fatia, indice) => ({\n color: anel.colors[indice],\n hidden: anel.isHidden(fatia.label),\n label: fatia.label,\n value: showLegendValues ? formatPercent(anel.ratioOf(indice)) : undefined,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n onToggleSeries={anel.toggle}\n swatch=\"dot\"\n title={title}\n width={width}\n >\n {anel.slices.map((fatia, indice) => (\n <path\n aria-label={`${fatia.label}: ${formatValue(Math.max(fatia.value, 0))} (${formatPercent(anel.ratioOf(indice))})`}\n className={styles.slice}\n d={arcPath({\n ...anel.angles[indice],\n cornerRadius: canto,\n innerRadius: raioInterno,\n outerRadius: raio,\n })}\n fill={anel.colors[indice]}\n key={indice}\n onMouseEnter={() => anel.focus(indice)}\n onMouseLeave={() => anel.focus(null)}\n />\n ))}\n\n {showCenter && (\n <g className={styles.center}>\n <text\n className={styles.centerValue}\n dy={centro.size * 0.1}\n style={{ fontFamily: centro.family, fontSize: centro.size }}\n textAnchor=\"middle\"\n >\n {centro.value}\n </text>\n <text className={styles.centerLabel} dy={centro.lineHeight * 0.62} textAnchor=\"middle\">\n {centro.label}\n </text>\n </g>\n )}\n </ChartFrame>\n );\n}\n"],"names":["ChartDonut","accent","centerLabel","defaultHiddenSlices","emptyMessage","formatPercent","fracao","formatValue","formatarNumero","height","hiddenSlices","legend","legendAlign","onHiddenSlicesChange","onHoverSlice","otherLabel","showCenter","showLegendValues","sliceRadius","slices","smallSliceThreshold","thickness","title","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","anel","useSliceRing","raio","ringDiameter","raioInterno","canto","focada","centro","fitCenterText","jsxs","ChartFrame","fatia","indice","jsx","styles","arcPath"],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import { jsxs as g, jsx as s } from "react/jsx-runtime";
2
+ import l from "./ChartDonut.module.css.js";
3
+ import { useChartMetrics as I } from "../core/useChartMetrics.js";
4
+ import { useSliceRing as P } from "../core/useSliceRing.js";
5
+ import { fitCenterText as k } from "../core/centerText.js";
6
+ import { formatarNumero as q } from "../../../utils/formatters/formatarNumero.js";
7
+ import { ChartFrame as B } from "../core/ChartFrame.js";
8
+ import { arcPath as G } from "../core/arcs.js";
9
+ import { chartHeight as J } from "../core/cartesianLayout.js";
10
+ import { ringDiameter as K } from "../core/spacing.js";
11
+ function re({
12
+ accent: p,
13
+ centerLabel: x = "Total",
14
+ defaultHiddenSlices: v,
15
+ emptyMessage: M = "Sem dados no período",
16
+ formatPercent: n = (i) => `${Math.round(i * 100)}%`,
17
+ formatValue: m = q,
18
+ height: b = 260,
19
+ hiddenSlices: y,
20
+ legend: C = "right",
21
+ legendAlign: D,
22
+ onHiddenSlicesChange: N,
23
+ onHoverSlice: R,
24
+ otherLabel: H = "Outros",
25
+ showCenter: O = !0,
26
+ showLegendValues: S = !0,
27
+ sliceRadius: $,
28
+ slices: c,
29
+ smallSliceThreshold: z = 0.02,
30
+ thickness: T = 0.38,
31
+ title: j
32
+ }) {
33
+ const { font: i, height: w, radius: A, ref: F, width: u } = I(), { fillHeight: L, value: d } = J(b, w), e = P({
34
+ accent: p,
35
+ defaultHiddenSlices: v,
36
+ hiddenSlices: y,
37
+ onHiddenSlicesChange: N,
38
+ onHoverSlice: R,
39
+ otherLabel: H,
40
+ slices: c,
41
+ smallSliceThreshold: z
42
+ }), h = K(u, d) / 2, f = h * (1 - Math.min(Math.max(T, 0), 1)), E = $ ?? A, a = e.focused === null ? void 0 : e.slices[e.focused], r = k(
43
+ m(a ? Math.max(a.value, 0) : e.total),
44
+ a ? a.label : x,
45
+ i,
46
+ f * 2
47
+ );
48
+ return /* @__PURE__ */ g(
49
+ B,
50
+ {
51
+ centerOrigin: !0,
52
+ containerRef: F,
53
+ empty: e.slices.length === 0 || c.every((t) => !(t.value > 0)),
54
+ emptyMessage: M,
55
+ fillHeight: L,
56
+ height: d,
57
+ legend: e.slices.map((t, o) => ({
58
+ color: e.colors[o],
59
+ hidden: e.isHidden(t.label),
60
+ label: t.label,
61
+ value: S ? n(e.ratioOf(o)) : void 0
62
+ })),
63
+ legendAlign: D,
64
+ legendPosition: C,
65
+ onToggleSeries: e.toggle,
66
+ swatch: "dot",
67
+ title: j,
68
+ width: u,
69
+ children: [
70
+ e.slices.map((t, o) => /* @__PURE__ */ s(
71
+ "path",
72
+ {
73
+ "aria-label": `${t.label}: ${m(Math.max(t.value, 0))} (${n(e.ratioOf(o))})`,
74
+ className: l.slice,
75
+ d: G({
76
+ ...e.angles[o],
77
+ cornerRadius: E,
78
+ innerRadius: f,
79
+ outerRadius: h
80
+ }),
81
+ fill: e.colors[o],
82
+ onMouseEnter: () => e.focus(o),
83
+ onMouseLeave: () => e.focus(null)
84
+ },
85
+ o
86
+ )),
87
+ O && /* @__PURE__ */ g("g", { className: l.center, children: [
88
+ /* @__PURE__ */ s(
89
+ "text",
90
+ {
91
+ className: l.centerValue,
92
+ dy: r.size * 0.1,
93
+ style: { fontFamily: r.family, fontSize: r.size },
94
+ textAnchor: "middle",
95
+ children: r.value
96
+ }
97
+ ),
98
+ /* @__PURE__ */ s("text", { className: l.centerLabel, dy: r.lineHeight * 0.62, textAnchor: "middle", children: r.label })
99
+ ] })
100
+ ]
101
+ }
102
+ );
103
+ }
104
+ export {
105
+ re as ChartDonut
106
+ };
107
+ //# sourceMappingURL=ChartDonut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartDonut.js","sources":["../../../../src/components/charts/ChartDonut/ChartDonut.tsx"],"sourcesContent":["import {\n ChartFrame,\n arcPath,\n chartHeight,\n fitCenterText,\n ringDiameter,\n useChartMetrics,\n useSliceRing,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type ChartSlice,\n} from '../core';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartDonut.module.css';\n\nexport type { ChartSlice as ChartDonutSlice };\n\nexport interface ChartDonutProps {\n accent?: string;\n /** Texto sob o valor do centro, trocado pelo rotulo da fatia sob o ponteiro. */\n centerLabel?: string;\n defaultHiddenSlices?: readonly string[];\n emptyMessage?: string;\n formatPercent?: (ratio: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenSlices?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSlicesChange?: (hidden: readonly string[]) => void;\n /** Fatia sob o ponteiro, ja agrupada, ou `null` ao sair dela. */\n onHoverSlice?: (slice: ChartSlice | null) => void;\n /** Rotulo da fatia que reune as pequenas. */\n otherLabel?: string;\n /** Raio dos cantos de cada fatia. Sem valor, o token de raio pequeno. */\n sliceRadius?: number;\n showCenter?: boolean;\n showLegendValues?: boolean;\n slices: readonly ChartSlice[];\n /** Fracao do total abaixo da qual a fatia entra no agrupamento. */\n smallSliceThreshold?: number;\n /** Espessura do anel, como fracao do raio. */\n thickness?: number;\n title: string;\n}\n\nexport function ChartDonut({\n accent,\n centerLabel = 'Total',\n defaultHiddenSlices,\n emptyMessage = 'Sem dados no período',\n formatPercent = (fracao) => `${Math.round(fracao * 100)}%`,\n formatValue = formatarNumero,\n height = 260,\n hiddenSlices,\n legend = 'right',\n legendAlign,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel = 'Outros',\n showCenter = true,\n showLegendValues = true,\n sliceRadius,\n slices,\n smallSliceThreshold = 0.02,\n thickness = 0.38,\n title,\n}: ChartDonutProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n\n const anel = useSliceRing({\n accent,\n defaultHiddenSlices,\n hiddenSlices,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel,\n slices,\n smallSliceThreshold,\n });\n\n const diametro = ringDiameter(width, alturaDoDesenho);\n const raio = diametro / 2;\n const raioInterno = raio * (1 - Math.min(Math.max(thickness, 0), 1));\n\n const canto = sliceRadius ?? raioDoCanto;\n const focada = anel.focused === null ? undefined : anel.slices[anel.focused];\n const centro = fitCenterText(\n formatValue(focada ? Math.max(focada.value, 0) : anel.total),\n focada ? focada.label : centerLabel,\n font,\n raioInterno * 2,\n );\n\n return (\n <ChartFrame\n centerOrigin\n containerRef={ref}\n empty={anel.slices.length === 0 || slices.every((fatia) => !(fatia.value > 0))}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={anel.slices.map((fatia, indice) => ({\n color: anel.colors[indice],\n hidden: anel.isHidden(fatia.label),\n label: fatia.label,\n value: showLegendValues ? formatPercent(anel.ratioOf(indice)) : undefined,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n onToggleSeries={anel.toggle}\n swatch=\"dot\"\n title={title}\n width={width}\n >\n {anel.slices.map((fatia, indice) => (\n <path\n aria-label={`${fatia.label}: ${formatValue(Math.max(fatia.value, 0))} (${formatPercent(anel.ratioOf(indice))})`}\n className={styles.slice}\n d={arcPath({\n ...anel.angles[indice],\n cornerRadius: canto,\n innerRadius: raioInterno,\n outerRadius: raio,\n })}\n fill={anel.colors[indice]}\n key={indice}\n onMouseEnter={() => anel.focus(indice)}\n onMouseLeave={() => anel.focus(null)}\n />\n ))}\n\n {showCenter && (\n <g className={styles.center}>\n <text\n className={styles.centerValue}\n dy={centro.size * 0.1}\n style={{ fontFamily: centro.family, fontSize: centro.size }}\n textAnchor=\"middle\"\n >\n {centro.value}\n </text>\n <text className={styles.centerLabel} dy={centro.lineHeight * 0.62} textAnchor=\"middle\">\n {centro.label}\n </text>\n </g>\n )}\n </ChartFrame>\n );\n}\n"],"names":["ChartDonut","accent","centerLabel","defaultHiddenSlices","emptyMessage","formatPercent","fracao","formatValue","formatarNumero","height","hiddenSlices","legend","legendAlign","onHiddenSlicesChange","onHoverSlice","otherLabel","showCenter","showLegendValues","sliceRadius","slices","smallSliceThreshold","thickness","title","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","anel","useSliceRing","raio","ringDiameter","raioInterno","canto","focada","centro","fitCenterText","jsxs","ChartFrame","fatia","indice","jsx","styles","arcPath"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_slice_o9cwf_3",c="_center_o9cwf_13",t="_centerValue_o9cwf_17",l="_centerLabel_o9cwf_23",n={slice:e,center:c,centerValue:t,centerLabel:l};exports.center=c;exports.centerLabel=l;exports.centerValue=t;exports.default=n;exports.slice=e;
2
+ //# sourceMappingURL=ChartDonut.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartDonut.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ const e = "_slice_o9cwf_3", c = "_center_o9cwf_13", t = "_centerValue_o9cwf_17", n = "_centerLabel_o9cwf_23", _ = {
2
+ slice: e,
3
+ center: c,
4
+ centerValue: t,
5
+ centerLabel: n
6
+ };
7
+ export {
8
+ c as center,
9
+ n as centerLabel,
10
+ t as centerValue,
11
+ _ as default,
12
+ e as slice
13
+ };
14
+ //# sourceMappingURL=ChartDonut.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartDonut.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),m=require("react"),u=require("./ChartLine.module.css.cjs"),ee=require("../core/useChartMetrics.cjs"),te=require("../core/useSeriesToggle.cjs"),le=require("../palette/seriesColor.cjs"),c=require("../scales/scales.cjs"),q=require("../core/cartesianLayout.cjs"),ae=require("../core/spacing.cjs"),oe=require("../core/useTweenedNumbers.cjs"),se=require("../../../utils/formatters/formatarNumero.cjs"),re=require("../core/CartesianFrame.cjs"),ne=require("../core/shapes.cjs");function ie(n,a){return n[a]!==null&&!n[a-1]&&!n[a+1]}function ue({accent:n,categories:a,curve:H="smooth",defaultHiddenSeries:O,emptyMessage:A="Sem dados no período",formatValue:h=se.formatarNumero,height:V=260,includeZero:y=!0,hiddenSeries:z,labelAngle:_="auto",legend:B="bottom",legendAlign:E,onHiddenSeriesChange:G,series:o,showDataLabels:L=!1,showDots:I=!1,title:J,xAxis:C="visible",yAxis:M="visible",yAxisRight:N="hidden"}){const{font:j,height:K,ref:Q,width:T}=ee.useChartMetrics(),{fillHeight:U,value:v}=q.chartHeight(V,K),{isHidden:d,toggle:W}=te.useSeriesToggle({defaultHiddenSeries:O,hiddenSeries:z,onHiddenSeriesChange:G}),p=m.useMemo(()=>le.resolveSeriesColors(o,{accent:n}),[n,o]),x=m.useMemo(()=>c.mergeDomains(o.filter(e=>!d(e.label)).map(e=>c.domainOf(e.values.filter(t=>t!==null),{includeZero:y}))),[y,d,o]),k=q.valueLabelsFor(x,v,h),{margins:X,plot:s,rotation:Y}=q.cartesianLayout({bottomLabels:a,font:j,height:v,labelAngle:_,leftLabels:k,rightLabels:k,topRoom:L?ae.valueLabelRoom(j):0,width:T,xAxis:C,yAxis:M,yAxisRight:N}),F=m.useMemo(()=>c.pointScale({domain:a,padding:0,range:[0,s.width]}),[a,s.width]),R=m.useMemo(()=>c.linearScale({domain:x,range:[s.height,0]}),[x,s.height]),[S,$]=oe.useTweenedNumbers(R.domain()),b=m.useMemo(()=>c.linearScale({domain:{min:S,max:$},nice:!1,range:[s.height,0]}),[$,S,s.height]),w=c.ticksFor(R,s.height),g=o.map(e=>a.map((t,f)=>{const l=e.values[f];return l==null||!Number.isFinite(l)?null:{x:F(t)??0,y:b(l)}})),Z=a.map(e=>({label:e,position:F(e)??0})),D=w.map(e=>({label:h(e),position:b(e)}));return i.jsx(re.CartesianFrame,{containerRef:Q,empty:o.length===0||a.length===0,emptyMessage:A,fillHeight:U,grid:[{baseline:b(0),lines:w.map(e=>b(e)),orientation:"horizontal"}],height:v,legend:o.map((e,t)=>({color:p[t],hidden:d(e.label),label:e.label})),legendAlign:E,legendPosition:B,margins:X,onToggleSeries:W,plot:s,title:J,width:T,xAxis:{labelRotation:Y,ticks:Z,visibility:C},yAxis:{hideLine:!0,ticks:D,visibility:M},yAxisRight:{hideLine:!0,ticks:D,visibility:N},children:o.map((e,t)=>{const f=d(e.label);return i.jsxs("g",{"aria-hidden":f||void 0,className:`${u.default.series} ${f?u.default.seriesOff:""}`,children:[i.jsx("path",{className:u.default.line,d:ne.linePath(g[t],H),fill:"none",stroke:p[t]}),g[t].map((l,r)=>{if(l===null)return null;const P=`${e.label}, ${a[r]}: ${h(e.values[r]??0)}`;return i.jsx("circle",{"aria-label":P,className:I||ie(g[t],r)?u.default.dotVisible:u.default.dot,cx:l.x,cy:l.y,fill:p[t],r:4,children:i.jsx("title",{children:P})},r)}),L&&g[t].map((l,r)=>l===null?null:i.jsx("text",{className:u.default.valueLabel,textAnchor:"middle",x:l.x,y:l.y-10,children:h(e.values[r]??0)},r))]},t)})})}exports.ChartLine=ue;
2
+ //# sourceMappingURL=ChartLine.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartLine.cjs","sources":["../../../../src/components/charts/ChartLine/ChartLine.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport {\n CartesianFrame,\n cartesianLayout,\n chartHeight,\n linePath,\n useChartMetrics,\n useSeriesToggle,\n useTweenedNumbers,\n valueLabelRoom,\n valueLabelsFor,\n type AxisLabelAngle,\n type AxisTick,\n type AxisVisibility,\n type ChartCurve,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type ChartPoint,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { domainOf, linearScale, mergeDomains, pointScale, ticksFor } from '../scales';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartLine.module.css';\n/**\n * Ponto sem vizinho desenhado. A curva entre ele e o nada nao tem tracado, e o\n * marcador so no hover deixaria o dado invisivel — entao ele aparece sempre.\n */\nfunction isolado(pontos: readonly (ChartPoint | null)[], indice: number) {\n return pontos[indice] !== null && !pontos[indice - 1] && !pontos[indice + 1];\n}\n\n\nexport interface ChartLineSeries extends SeriesAppearance {\n label: string;\n values: readonly (number | null)[];\n}\n\nexport interface ChartLineProps {\n accent?: string;\n categories: readonly string[];\n curve?: ChartCurve;\n defaultHiddenSeries?: readonly string[];\n emptyMessage?: string;\n formatValue?: (value: number) => string;\n /**\n * Inclui o zero no dominio do eixo de valor. Ligado por padrao, porque marca\n * que nao parte do zero exagera a diferenca; para medidas que nao se comparam\n * a ele — um ano, uma temperatura — desligue; um ano pede tambem um formato sem separador de milhar em `formatValue`.\n */\n includeZero?: boolean;\n height?: ChartHeight;\n hiddenSeries?: readonly string[];\n labelAngle?: AxisLabelAngle;\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n series: readonly ChartLineSeries[];\n showDataLabels?: boolean;\n showDots?: boolean;\n title: string;\n xAxis?: AxisVisibility;\n yAxis?: AxisVisibility;\n yAxisRight?: AxisVisibility;\n}\n\nexport function ChartLine({\n accent,\n categories,\n curve = 'smooth',\n defaultHiddenSeries,\n emptyMessage = 'Sem dados no período',\n formatValue = formatarNumero,\n height = 260,\n includeZero = true,\n hiddenSeries,\n labelAngle = 'auto',\n legend = 'bottom',\n legendAlign,\n onHiddenSeriesChange,\n series,\n showDataLabels = false,\n showDots = false,\n title,\n xAxis = 'visible',\n yAxis = 'visible',\n yAxisRight = 'hidden',\n}: ChartLineProps) {\n const { font, height: alturaMedida, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({ defaultHiddenSeries, hiddenSeries, onHiddenSeriesChange });\n\n // A cor sai da lista inteira, e nao das visiveis: desligar uma serie nao pode\n // repintar as demais.\n const cores = useMemo(() => resolveSeriesColors(series, { accent }), [accent, series]);\n\n const dominio = useMemo(\n () =>\n mergeDomains(\n series\n .filter((serie) => !isHidden(serie.label))\n .map((serie) => domainOf(serie.values.filter((valor) => valor !== null), { includeZero })),\n ),\n [includeZero, isHidden, series],\n );\n\n const rotulosDeValor = valueLabelsFor(dominio, alturaDoDesenho, formatValue);\n\n const { margins, plot, rotation } = cartesianLayout({\n bottomLabels: categories,\n font,\n height: alturaDoDesenho,\n labelAngle,\n leftLabels: rotulosDeValor,\n rightLabels: rotulosDeValor,\n topRoom: showDataLabels ? valueLabelRoom(font) : 0,\n width,\n xAxis,\n yAxis,\n yAxisRight,\n });\n\n const escalaCategorias = useMemo(\n () => pointScale({ domain: categories, padding: 0, range: [0, plot.width] }),\n [categories, plot.width],\n );\n\n // A escala alvo fixa as marcas; a animada posiciona o desenho. Sem separar as\n // duas, as marcas exibiriam valores quebrados durante a transicao.\n const escalaAlvo = useMemo(\n () => linearScale({ domain: dominio, range: [plot.height, 0] }),\n [dominio, plot.height],\n );\n\n const [minimo, maximo] = useTweenedNumbers(escalaAlvo.domain());\n\n const escalaValores = useMemo(\n () => linearScale({ domain: { min: minimo, max: maximo }, nice: false, range: [plot.height, 0] }),\n [maximo, minimo, plot.height],\n );\n\n const marcasDeValor = ticksFor(escalaAlvo, plot.height);\n\n const pontosPorSerie = series.map((serie) =>\n categories.map<ChartPoint | null>((categoria, indice) => {\n const valor = serie.values[indice];\n\n if (valor === null || valor === undefined || !Number.isFinite(valor)) {\n return null;\n }\n\n return { x: escalaCategorias(categoria) ?? 0, y: escalaValores(valor) };\n }),\n );\n\n const marcasCategoria: AxisTick[] = categories.map((categoria) => ({\n label: categoria,\n position: escalaCategorias(categoria) ?? 0,\n }));\n\n const marcasValor: AxisTick[] = marcasDeValor.map((valor) => ({\n label: formatValue(valor),\n position: escalaValores(valor),\n }));\n\n return (\n <CartesianFrame\n containerRef={ref}\n empty={series.length === 0 || categories.length === 0}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n grid={[\n {\n baseline: escalaValores(0),\n lines: marcasDeValor.map((valor) => escalaValores(valor)),\n orientation: 'horizontal',\n },\n ]}\n height={alturaDoDesenho}\n legend={series.map((serie, indice) => ({\n color: cores[indice],\n hidden: isHidden(serie.label),\n label: serie.label,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n margins={margins}\n onToggleSeries={toggle}\n plot={plot}\n title={title}\n width={width}\n xAxis={{ labelRotation: rotation, ticks: marcasCategoria, visibility: xAxis }}\n yAxis={{ hideLine: true, ticks: marcasValor, visibility: yAxis }}\n yAxisRight={{ hideLine: true, ticks: marcasValor, visibility: yAxisRight }}\n >\n {series.map((serie, indiceSerie) => {\n const oculta = isHidden(serie.label);\n\n return (\n <g\n aria-hidden={oculta || undefined}\n className={`${styles.series} ${oculta ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n <path\n className={styles.line}\n d={linePath(pontosPorSerie[indiceSerie], curve)}\n fill=\"none\"\n stroke={cores[indiceSerie]}\n />\n\n {pontosPorSerie[indiceSerie].map((ponto, indice) => {\n if (ponto === null) {\n return null;\n }\n\n const descricao = `${serie.label}, ${categories[indice]}: ${formatValue(serie.values[indice] ?? 0)}`;\n\n return (\n <circle\n aria-label={descricao}\n className={\n showDots || isolado(pontosPorSerie[indiceSerie], indice)\n ? styles.dotVisible\n : styles.dot\n }\n cx={ponto.x}\n cy={ponto.y}\n fill={cores[indiceSerie]}\n key={indice}\n r={4}\n >\n <title>{descricao}</title>\n </circle>\n );\n })}\n\n {showDataLabels &&\n pontosPorSerie[indiceSerie].map((ponto, indice) =>\n ponto === null ? null : (\n <text\n className={styles.valueLabel}\n key={indice}\n textAnchor=\"middle\"\n x={ponto.x}\n y={ponto.y - 10}\n >\n {formatValue(serie.values[indice] ?? 0)}\n </text>\n ),\n )}\n </g>\n );\n })}\n </CartesianFrame>\n );\n}\n"],"names":["isolado","pontos","indice","ChartLine","accent","categories","curve","defaultHiddenSeries","emptyMessage","formatValue","formatarNumero","height","includeZero","hiddenSeries","labelAngle","legend","legendAlign","onHiddenSeriesChange","series","showDataLabels","showDots","title","xAxis","yAxis","yAxisRight","font","alturaMedida","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","cores","useMemo","resolveSeriesColors","dominio","mergeDomains","serie","domainOf","valor","rotulosDeValor","valueLabelsFor","margins","plot","rotation","cartesianLayout","valueLabelRoom","escalaCategorias","pointScale","escalaAlvo","linearScale","minimo","maximo","useTweenedNumbers","escalaValores","marcasDeValor","ticksFor","pontosPorSerie","categoria","marcasCategoria","marcasValor","jsx","CartesianFrame","indiceSerie","oculta","jsxs","styles","linePath","ponto","descricao"],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ import { jsx as s, jsxs as Z } from "react/jsx-runtime";
2
+ import { useMemo as h } from "react";
3
+ import m from "./ChartLine.module.css.js";
4
+ import { useChartMetrics as ll } from "../core/useChartMetrics.js";
5
+ import { useSeriesToggle as ol } from "../core/useSeriesToggle.js";
6
+ import { resolveSeriesColors as tl } from "../palette/seriesColor.js";
7
+ import { mergeDomains as al, domainOf as el, pointScale as il, linearScale as j, ticksFor as rl } from "../scales/scales.js";
8
+ import { valueLabelsFor as nl, cartesianLayout as ml, chartHeight as sl } from "../core/cartesianLayout.js";
9
+ import { valueLabelRoom as hl } from "../core/spacing.js";
10
+ import { useTweenedNumbers as ul } from "../core/useTweenedNumbers.js";
11
+ import { formatarNumero as cl } from "../../../utils/formatters/formatarNumero.js";
12
+ import { CartesianFrame as dl } from "../core/CartesianFrame.js";
13
+ import { linePath as fl } from "../core/shapes.js";
14
+ function pl(n, a) {
15
+ return n[a] !== null && !n[a - 1] && !n[a + 1];
16
+ }
17
+ function wl({
18
+ accent: n,
19
+ categories: a,
20
+ curve: A = "smooth",
21
+ defaultHiddenSeries: O,
22
+ emptyMessage: V = "Sem dados no período",
23
+ formatValue: u = cl,
24
+ height: z = 260,
25
+ includeZero: x = !0,
26
+ hiddenSeries: S,
27
+ labelAngle: q = "auto",
28
+ legend: B = "bottom",
29
+ legendAlign: E,
30
+ onHiddenSeriesChange: G,
31
+ series: e,
32
+ showDataLabels: y = !1,
33
+ showDots: I = !1,
34
+ title: J,
35
+ xAxis: L = "visible",
36
+ yAxis: N = "visible",
37
+ yAxisRight: C = "hidden"
38
+ }) {
39
+ const { font: k, height: K, ref: Q, width: $ } = ll(), { fillHeight: U, value: b } = sl(z, K), { isHidden: c, toggle: W } = ol({ defaultHiddenSeries: O, hiddenSeries: S, onHiddenSeriesChange: G }), g = h(() => tl(e, { accent: n }), [n, e]), v = h(
40
+ () => al(
41
+ e.filter((l) => !c(l.label)).map((l) => el(l.values.filter((o) => o !== null), { includeZero: x }))
42
+ ),
43
+ [x, c, e]
44
+ ), D = nl(v, b, u), { margins: X, plot: i, rotation: Y } = ml({
45
+ bottomLabels: a,
46
+ font: k,
47
+ height: b,
48
+ labelAngle: q,
49
+ leftLabels: D,
50
+ rightLabels: D,
51
+ topRoom: y ? hl(k) : 0,
52
+ width: $,
53
+ xAxis: L,
54
+ yAxis: N,
55
+ yAxisRight: C
56
+ }), F = h(
57
+ () => il({ domain: a, padding: 0, range: [0, i.width] }),
58
+ [a, i.width]
59
+ ), R = h(
60
+ () => j({ domain: v, range: [i.height, 0] }),
61
+ [v, i.height]
62
+ ), [w, H] = ul(R.domain()), d = h(
63
+ () => j({ domain: { min: w, max: H }, nice: !1, range: [i.height, 0] }),
64
+ [H, w, i.height]
65
+ ), M = rl(R, i.height), f = e.map(
66
+ (l) => a.map((o, p) => {
67
+ const t = l.values[p];
68
+ return t == null || !Number.isFinite(t) ? null : { x: F(o) ?? 0, y: d(t) };
69
+ })
70
+ ), _ = a.map((l) => ({
71
+ label: l,
72
+ position: F(l) ?? 0
73
+ })), P = M.map((l) => ({
74
+ label: u(l),
75
+ position: d(l)
76
+ }));
77
+ return /* @__PURE__ */ s(
78
+ dl,
79
+ {
80
+ containerRef: Q,
81
+ empty: e.length === 0 || a.length === 0,
82
+ emptyMessage: V,
83
+ fillHeight: U,
84
+ grid: [
85
+ {
86
+ baseline: d(0),
87
+ lines: M.map((l) => d(l)),
88
+ orientation: "horizontal"
89
+ }
90
+ ],
91
+ height: b,
92
+ legend: e.map((l, o) => ({
93
+ color: g[o],
94
+ hidden: c(l.label),
95
+ label: l.label
96
+ })),
97
+ legendAlign: E,
98
+ legendPosition: B,
99
+ margins: X,
100
+ onToggleSeries: W,
101
+ plot: i,
102
+ title: J,
103
+ width: $,
104
+ xAxis: { labelRotation: Y, ticks: _, visibility: L },
105
+ yAxis: { hideLine: !0, ticks: P, visibility: N },
106
+ yAxisRight: { hideLine: !0, ticks: P, visibility: C },
107
+ children: e.map((l, o) => {
108
+ const p = c(l.label);
109
+ return /* @__PURE__ */ Z(
110
+ "g",
111
+ {
112
+ "aria-hidden": p || void 0,
113
+ className: `${m.series} ${p ? m.seriesOff : ""}`,
114
+ children: [
115
+ /* @__PURE__ */ s(
116
+ "path",
117
+ {
118
+ className: m.line,
119
+ d: fl(f[o], A),
120
+ fill: "none",
121
+ stroke: g[o]
122
+ }
123
+ ),
124
+ f[o].map((t, r) => {
125
+ if (t === null)
126
+ return null;
127
+ const T = `${l.label}, ${a[r]}: ${u(l.values[r] ?? 0)}`;
128
+ return /* @__PURE__ */ s(
129
+ "circle",
130
+ {
131
+ "aria-label": T,
132
+ className: I || pl(f[o], r) ? m.dotVisible : m.dot,
133
+ cx: t.x,
134
+ cy: t.y,
135
+ fill: g[o],
136
+ r: 4,
137
+ children: /* @__PURE__ */ s("title", { children: T })
138
+ },
139
+ r
140
+ );
141
+ }),
142
+ y && f[o].map(
143
+ (t, r) => t === null ? null : /* @__PURE__ */ s(
144
+ "text",
145
+ {
146
+ className: m.valueLabel,
147
+ textAnchor: "middle",
148
+ x: t.x,
149
+ y: t.y - 10,
150
+ children: u(l.values[r] ?? 0)
151
+ },
152
+ r
153
+ )
154
+ )
155
+ ]
156
+ },
157
+ o
158
+ );
159
+ })
160
+ }
161
+ );
162
+ }
163
+ export {
164
+ wl as ChartLine
165
+ };
166
+ //# sourceMappingURL=ChartLine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartLine.js","sources":["../../../../src/components/charts/ChartLine/ChartLine.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport {\n CartesianFrame,\n cartesianLayout,\n chartHeight,\n linePath,\n useChartMetrics,\n useSeriesToggle,\n useTweenedNumbers,\n valueLabelRoom,\n valueLabelsFor,\n type AxisLabelAngle,\n type AxisTick,\n type AxisVisibility,\n type ChartCurve,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type ChartPoint,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { domainOf, linearScale, mergeDomains, pointScale, ticksFor } from '../scales';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartLine.module.css';\n/**\n * Ponto sem vizinho desenhado. A curva entre ele e o nada nao tem tracado, e o\n * marcador so no hover deixaria o dado invisivel — entao ele aparece sempre.\n */\nfunction isolado(pontos: readonly (ChartPoint | null)[], indice: number) {\n return pontos[indice] !== null && !pontos[indice - 1] && !pontos[indice + 1];\n}\n\n\nexport interface ChartLineSeries extends SeriesAppearance {\n label: string;\n values: readonly (number | null)[];\n}\n\nexport interface ChartLineProps {\n accent?: string;\n categories: readonly string[];\n curve?: ChartCurve;\n defaultHiddenSeries?: readonly string[];\n emptyMessage?: string;\n formatValue?: (value: number) => string;\n /**\n * Inclui o zero no dominio do eixo de valor. Ligado por padrao, porque marca\n * que nao parte do zero exagera a diferenca; para medidas que nao se comparam\n * a ele — um ano, uma temperatura — desligue; um ano pede tambem um formato sem separador de milhar em `formatValue`.\n */\n includeZero?: boolean;\n height?: ChartHeight;\n hiddenSeries?: readonly string[];\n labelAngle?: AxisLabelAngle;\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n series: readonly ChartLineSeries[];\n showDataLabels?: boolean;\n showDots?: boolean;\n title: string;\n xAxis?: AxisVisibility;\n yAxis?: AxisVisibility;\n yAxisRight?: AxisVisibility;\n}\n\nexport function ChartLine({\n accent,\n categories,\n curve = 'smooth',\n defaultHiddenSeries,\n emptyMessage = 'Sem dados no período',\n formatValue = formatarNumero,\n height = 260,\n includeZero = true,\n hiddenSeries,\n labelAngle = 'auto',\n legend = 'bottom',\n legendAlign,\n onHiddenSeriesChange,\n series,\n showDataLabels = false,\n showDots = false,\n title,\n xAxis = 'visible',\n yAxis = 'visible',\n yAxisRight = 'hidden',\n}: ChartLineProps) {\n const { font, height: alturaMedida, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({ defaultHiddenSeries, hiddenSeries, onHiddenSeriesChange });\n\n // A cor sai da lista inteira, e nao das visiveis: desligar uma serie nao pode\n // repintar as demais.\n const cores = useMemo(() => resolveSeriesColors(series, { accent }), [accent, series]);\n\n const dominio = useMemo(\n () =>\n mergeDomains(\n series\n .filter((serie) => !isHidden(serie.label))\n .map((serie) => domainOf(serie.values.filter((valor) => valor !== null), { includeZero })),\n ),\n [includeZero, isHidden, series],\n );\n\n const rotulosDeValor = valueLabelsFor(dominio, alturaDoDesenho, formatValue);\n\n const { margins, plot, rotation } = cartesianLayout({\n bottomLabels: categories,\n font,\n height: alturaDoDesenho,\n labelAngle,\n leftLabels: rotulosDeValor,\n rightLabels: rotulosDeValor,\n topRoom: showDataLabels ? valueLabelRoom(font) : 0,\n width,\n xAxis,\n yAxis,\n yAxisRight,\n });\n\n const escalaCategorias = useMemo(\n () => pointScale({ domain: categories, padding: 0, range: [0, plot.width] }),\n [categories, plot.width],\n );\n\n // A escala alvo fixa as marcas; a animada posiciona o desenho. Sem separar as\n // duas, as marcas exibiriam valores quebrados durante a transicao.\n const escalaAlvo = useMemo(\n () => linearScale({ domain: dominio, range: [plot.height, 0] }),\n [dominio, plot.height],\n );\n\n const [minimo, maximo] = useTweenedNumbers(escalaAlvo.domain());\n\n const escalaValores = useMemo(\n () => linearScale({ domain: { min: minimo, max: maximo }, nice: false, range: [plot.height, 0] }),\n [maximo, minimo, plot.height],\n );\n\n const marcasDeValor = ticksFor(escalaAlvo, plot.height);\n\n const pontosPorSerie = series.map((serie) =>\n categories.map<ChartPoint | null>((categoria, indice) => {\n const valor = serie.values[indice];\n\n if (valor === null || valor === undefined || !Number.isFinite(valor)) {\n return null;\n }\n\n return { x: escalaCategorias(categoria) ?? 0, y: escalaValores(valor) };\n }),\n );\n\n const marcasCategoria: AxisTick[] = categories.map((categoria) => ({\n label: categoria,\n position: escalaCategorias(categoria) ?? 0,\n }));\n\n const marcasValor: AxisTick[] = marcasDeValor.map((valor) => ({\n label: formatValue(valor),\n position: escalaValores(valor),\n }));\n\n return (\n <CartesianFrame\n containerRef={ref}\n empty={series.length === 0 || categories.length === 0}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n grid={[\n {\n baseline: escalaValores(0),\n lines: marcasDeValor.map((valor) => escalaValores(valor)),\n orientation: 'horizontal',\n },\n ]}\n height={alturaDoDesenho}\n legend={series.map((serie, indice) => ({\n color: cores[indice],\n hidden: isHidden(serie.label),\n label: serie.label,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n margins={margins}\n onToggleSeries={toggle}\n plot={plot}\n title={title}\n width={width}\n xAxis={{ labelRotation: rotation, ticks: marcasCategoria, visibility: xAxis }}\n yAxis={{ hideLine: true, ticks: marcasValor, visibility: yAxis }}\n yAxisRight={{ hideLine: true, ticks: marcasValor, visibility: yAxisRight }}\n >\n {series.map((serie, indiceSerie) => {\n const oculta = isHidden(serie.label);\n\n return (\n <g\n aria-hidden={oculta || undefined}\n className={`${styles.series} ${oculta ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n <path\n className={styles.line}\n d={linePath(pontosPorSerie[indiceSerie], curve)}\n fill=\"none\"\n stroke={cores[indiceSerie]}\n />\n\n {pontosPorSerie[indiceSerie].map((ponto, indice) => {\n if (ponto === null) {\n return null;\n }\n\n const descricao = `${serie.label}, ${categories[indice]}: ${formatValue(serie.values[indice] ?? 0)}`;\n\n return (\n <circle\n aria-label={descricao}\n className={\n showDots || isolado(pontosPorSerie[indiceSerie], indice)\n ? styles.dotVisible\n : styles.dot\n }\n cx={ponto.x}\n cy={ponto.y}\n fill={cores[indiceSerie]}\n key={indice}\n r={4}\n >\n <title>{descricao}</title>\n </circle>\n );\n })}\n\n {showDataLabels &&\n pontosPorSerie[indiceSerie].map((ponto, indice) =>\n ponto === null ? null : (\n <text\n className={styles.valueLabel}\n key={indice}\n textAnchor=\"middle\"\n x={ponto.x}\n y={ponto.y - 10}\n >\n {formatValue(serie.values[indice] ?? 0)}\n </text>\n ),\n )}\n </g>\n );\n })}\n </CartesianFrame>\n );\n}\n"],"names":["isolado","pontos","indice","ChartLine","accent","categories","curve","defaultHiddenSeries","emptyMessage","formatValue","formatarNumero","height","includeZero","hiddenSeries","labelAngle","legend","legendAlign","onHiddenSeriesChange","series","showDataLabels","showDots","title","xAxis","yAxis","yAxisRight","font","alturaMedida","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","cores","useMemo","resolveSeriesColors","dominio","mergeDomains","serie","domainOf","valor","rotulosDeValor","valueLabelsFor","margins","plot","rotation","cartesianLayout","valueLabelRoom","escalaCategorias","pointScale","escalaAlvo","linearScale","minimo","maximo","useTweenedNumbers","escalaValores","marcasDeValor","ticksFor","pontosPorSerie","categoria","marcasCategoria","marcasValor","jsx","CartesianFrame","indiceSerie","oculta","jsxs","styles","linePath","ponto","descricao"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_line_1r7tk_1 _line_141iy_132",s="_dot_1r7tk_5 _dot_141iy_140",_="_dotVisible_1r7tk_9 _dotVisible_141iy_145",i="_valueLabel_1r7tk_13 _valueLabel_141iy_124",t="_series_1r7tk_17 _series_141iy_209",l="_seriesOff_1r7tk_21 _seriesOff_141iy_213",o={line:e,dot:s,dotVisible:_,valueLabel:i,series:t,seriesOff:l};exports.default=o;exports.dot=s;exports.dotVisible=_;exports.line=e;exports.series=t;exports.seriesOff=l;exports.valueLabel=i;
2
+ //# sourceMappingURL=ChartLine.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartLine.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ const _ = "_line_1r7tk_1 _line_141iy_132", e = "_dot_1r7tk_5 _dot_141iy_140", s = "_dotVisible_1r7tk_9 _dotVisible_141iy_145", i = "_valueLabel_1r7tk_13 _valueLabel_141iy_124", t = "_series_1r7tk_17 _series_141iy_209", l = "_seriesOff_1r7tk_21 _seriesOff_141iy_213", o = {
2
+ line: _,
3
+ dot: e,
4
+ dotVisible: s,
5
+ valueLabel: i,
6
+ series: t,
7
+ seriesOff: l
8
+ };
9
+ export {
10
+ o as default,
11
+ e as dot,
12
+ s as dotVisible,
13
+ _ as line,
14
+ t as series,
15
+ l as seriesOff,
16
+ i as valueLabel
17
+ };
18
+ //# sourceMappingURL=ChartLine.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartLine.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),h=require("./ChartPie.module.css.cjs"),B=require("../core/useChartMetrics.cjs"),E=require("../core/useSliceRing.cjs"),I=require("../core/ChartFrame.cjs"),g=require("../core/arcs.cjs"),_=require("../../../utils/formatters/formatarNumero.cjs"),k=require("../core/measureText.cjs"),z=require("../palette/seriesColor.cjs"),G=require("../core/cartesianLayout.cjs"),J=require("../core/spacing.cjs");function K({accent:m,defaultHiddenSlices:f,emptyMessage:b="Sem dados no período",formatPercent:a=s=>`${Math.round(s*100)}%`,formatValue:q=_.formatarNumero,height:C=260,hiddenSlices:x,legend:M="bottom",legendAlign:p,onHiddenSlicesChange:v,onHoverSlice:R,otherLabel:O="Outros",showDataLabels:y=!1,showLegendValues:S=!1,sliceRadius:j,slices:n,smallSliceThreshold:P=.02,title:D}){const{font:s,height:H,radius:L,ref:N,width:i}=B.useChartMetrics(),{fillHeight:$,value:u}=G.chartHeight(C,H),e=E.useSliceRing({accent:m,defaultHiddenSlices:f,hiddenSlices:x,onHiddenSlicesChange:v,onHoverSlice:R,otherLabel:O,slices:n,smallSliceThreshold:P}),o=J.ringDiameter(i,u)/2,A=j??L;return l.jsxs(I.ChartFrame,{centerOrigin:!0,containerRef:N,empty:e.slices.length===0||n.every(t=>!(t.value>0)),emptyMessage:b,fillHeight:$,height:u,legend:e.slices.map((t,r)=>({color:e.colors[r],hidden:e.isHidden(t.label),label:t.label,value:S?a(e.ratioOf(r)):void 0})),legendAlign:p,legendPosition:M,onToggleSeries:e.toggle,swatch:"dot",title:D,width:i,children:[e.slices.map((t,r)=>l.jsx("path",{"aria-label":`${t.label}: ${q(Math.max(t.value,0))} (${a(e.ratioOf(r))})`,className:h.default.slice,d:g.arcPath({...e.angles[r],cornerRadius:A,innerRadius:0,outerRadius:o}),fill:e.colors[r],onMouseEnter:()=>e.focus(r),onMouseLeave:()=>e.focus(null)},r)),y&&e.slices.map((t,r)=>{const c=a(e.ratioOf(r)),[T,w]=g.arcCentroid({...e.angles[r],innerRadius:0,outerRadius:o}),d=e.angles[r].endAngle-e.angles[r].startAngle,F=d>=Math.PI?o:2*(o/2)*Math.sin(d/2);return e.isHidden(t.label)||k.measureLabel(c,s)>F?null:l.jsx("text",{className:h.default.sliceLabel,dominantBaseline:"middle",fill:z.textColorOn(e.colors[r]),textAnchor:"middle",x:T,y:w,children:c},r)})]})}exports.ChartPie=K;
2
+ //# sourceMappingURL=ChartPie.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartPie.cjs","sources":["../../../../src/components/charts/ChartPie/ChartPie.tsx"],"sourcesContent":["import {\n ChartFrame,\n arcCentroid,\n arcPath,\n chartHeight,\n measureLabel,\n ringDiameter,\n useChartMetrics,\n useSliceRing,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type ChartSlice,\n} from '../core';\nimport { textColorOn } from '../palette';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartPie.module.css';\n\nexport type { ChartSlice as ChartPieSlice };\n\nexport interface ChartPieProps {\n accent?: string;\n defaultHiddenSlices?: readonly string[];\n emptyMessage?: string;\n formatPercent?: (ratio: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenSlices?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSlicesChange?: (hidden: readonly string[]) => void;\n /** Fatia sob o ponteiro, ja agrupada, ou `null` ao sair dela. */\n onHoverSlice?: (slice: ChartSlice | null) => void;\n /** Rotulo da fatia que reune as pequenas. */\n otherLabel?: string;\n showDataLabels?: boolean;\n showLegendValues?: boolean;\n /** Raio dos cantos de cada fatia. Sem valor, o token de raio pequeno. */\n sliceRadius?: number;\n slices: readonly ChartSlice[];\n /** Fracao do total abaixo da qual a fatia entra no agrupamento. */\n smallSliceThreshold?: number;\n title: string;\n}\n\nexport function ChartPie({\n accent,\n defaultHiddenSlices,\n emptyMessage = 'Sem dados no período',\n formatPercent = (fracao) => `${Math.round(fracao * 100)}%`,\n formatValue = formatarNumero,\n height = 260,\n hiddenSlices,\n legend = 'bottom',\n legendAlign,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel = 'Outros',\n showDataLabels = false,\n showLegendValues = false,\n sliceRadius,\n slices,\n smallSliceThreshold = 0.02,\n title,\n}: ChartPieProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n\n const anel = useSliceRing({\n accent,\n defaultHiddenSlices,\n hiddenSlices,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel,\n slices,\n smallSliceThreshold,\n });\n\n const raio = ringDiameter(width, alturaDoDesenho) / 2;\n const canto = sliceRadius ?? raioDoCanto;\n\n return (\n <ChartFrame\n centerOrigin\n containerRef={ref}\n empty={anel.slices.length === 0 || slices.every((fatia) => !(fatia.value > 0))}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={anel.slices.map((fatia, indice) => ({\n color: anel.colors[indice],\n hidden: anel.isHidden(fatia.label),\n label: fatia.label,\n value: showLegendValues ? formatPercent(anel.ratioOf(indice)) : undefined,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n onToggleSeries={anel.toggle}\n swatch=\"dot\"\n title={title}\n width={width}\n >\n {anel.slices.map((fatia, indice) => (\n <path\n aria-label={`${fatia.label}: ${formatValue(Math.max(fatia.value, 0))} (${formatPercent(anel.ratioOf(indice))})`}\n className={styles.slice}\n d={arcPath({ ...anel.angles[indice], cornerRadius: canto, innerRadius: 0, outerRadius: raio })}\n fill={anel.colors[indice]}\n key={indice}\n onMouseEnter={() => anel.focus(indice)}\n onMouseLeave={() => anel.focus(null)}\n />\n ))}\n\n {showDataLabels &&\n anel.slices.map((fatia, indice) => {\n const rotulo = formatPercent(anel.ratioOf(indice));\n const [x, y] = arcCentroid({ ...anel.angles[indice], innerRadius: 0, outerRadius: raio });\n const angulo = anel.angles[indice].endAngle - anel.angles[indice].startAngle;\n\n // O rotulo so entra quando a fatia o comporta. Ate meia volta a\n // largura disponivel e a corda no centro do arco; dali em diante a\n // corda volta a encolher, e quem manda e o raio.\n const disponivel =\n angulo >= Math.PI ? raio : 2 * (raio / 2) * Math.sin(angulo / 2);\n\n if (anel.isHidden(fatia.label) || measureLabel(rotulo, font) > disponivel) {\n return null;\n }\n\n return (\n <text\n className={styles.sliceLabel}\n dominantBaseline=\"middle\"\n fill={textColorOn(anel.colors[indice])}\n key={indice}\n textAnchor=\"middle\"\n x={x}\n y={y}\n >\n {rotulo}\n </text>\n );\n })}\n </ChartFrame>\n );\n}\n"],"names":["ChartPie","accent","defaultHiddenSlices","emptyMessage","formatPercent","fracao","formatValue","formatarNumero","height","hiddenSlices","legend","legendAlign","onHiddenSlicesChange","onHoverSlice","otherLabel","showDataLabels","showLegendValues","sliceRadius","slices","smallSliceThreshold","title","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","anel","useSliceRing","raio","ringDiameter","canto","jsxs","ChartFrame","fatia","indice","jsx","styles","arcPath","rotulo","x","y","arcCentroid","angulo","disponivel","measureLabel","textColorOn"],"mappings":"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"}