@plenustech/design-system 0.2.2 → 0.2.3

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 (373) hide show
  1. package/dist/components/actions/ButtonTile/ButtonTile.cjs +2 -0
  2. package/dist/components/actions/ButtonTile/ButtonTile.cjs.map +1 -0
  3. package/dist/components/actions/ButtonTile/ButtonTile.js +23 -0
  4. package/dist/components/actions/ButtonTile/ButtonTile.js.map +1 -0
  5. package/dist/components/actions/ButtonTile/ButtonTile.module.css.cjs +2 -0
  6. package/dist/components/actions/ButtonTile/ButtonTile.module.css.cjs.map +1 -0
  7. package/dist/components/actions/ButtonTile/ButtonTile.module.css.js +16 -0
  8. package/dist/components/actions/ButtonTile/ButtonTile.module.css.js.map +1 -0
  9. package/dist/components/actions/Toolbar/Toolbar.cjs +2 -0
  10. package/dist/components/actions/Toolbar/Toolbar.cjs.map +1 -0
  11. package/dist/components/actions/Toolbar/Toolbar.js +118 -0
  12. package/dist/components/actions/Toolbar/Toolbar.js.map +1 -0
  13. package/dist/components/actions/Toolbar/Toolbar.module.css.cjs +2 -0
  14. package/dist/components/actions/Toolbar/Toolbar.module.css.cjs.map +1 -0
  15. package/dist/components/actions/Toolbar/Toolbar.module.css.js +20 -0
  16. package/dist/components/actions/Toolbar/Toolbar.module.css.js.map +1 -0
  17. package/dist/components/charts/ChartArea/ChartArea.cjs +1 -1
  18. package/dist/components/charts/ChartArea/ChartArea.cjs.map +1 -1
  19. package/dist/components/charts/ChartArea/ChartArea.js +196 -148
  20. package/dist/components/charts/ChartArea/ChartArea.js.map +1 -1
  21. package/dist/components/charts/ChartArea/ChartArea.module.css.cjs +1 -1
  22. package/dist/components/charts/ChartArea/ChartArea.module.css.js +12 -10
  23. package/dist/components/charts/ChartArea/ChartArea.module.css.js.map +1 -1
  24. package/dist/components/charts/ChartBar/ChartBar.cjs +1 -1
  25. package/dist/components/charts/ChartBar/ChartBar.cjs.map +1 -1
  26. package/dist/components/charts/ChartBar/ChartBar.js +168 -145
  27. package/dist/components/charts/ChartBar/ChartBar.js.map +1 -1
  28. package/dist/components/charts/ChartBar/ChartBar.module.css.cjs +1 -1
  29. package/dist/components/charts/ChartBar/ChartBar.module.css.js +12 -10
  30. package/dist/components/charts/ChartBar/ChartBar.module.css.js.map +1 -1
  31. package/dist/components/charts/ChartCombo/ChartCombo.cjs +1 -1
  32. package/dist/components/charts/ChartCombo/ChartCombo.cjs.map +1 -1
  33. package/dist/components/charts/ChartCombo/ChartCombo.js +179 -154
  34. package/dist/components/charts/ChartCombo/ChartCombo.js.map +1 -1
  35. package/dist/components/charts/ChartCombo/ChartCombo.module.css.cjs +1 -1
  36. package/dist/components/charts/ChartCombo/ChartCombo.module.css.js +16 -14
  37. package/dist/components/charts/ChartCombo/ChartCombo.module.css.js.map +1 -1
  38. package/dist/components/charts/ChartDonut/ChartDonut.cjs +1 -1
  39. package/dist/components/charts/ChartDonut/ChartDonut.cjs.map +1 -1
  40. package/dist/components/charts/ChartDonut/ChartDonut.js +72 -61
  41. package/dist/components/charts/ChartDonut/ChartDonut.js.map +1 -1
  42. package/dist/components/charts/ChartLine/ChartLine.cjs +1 -1
  43. package/dist/components/charts/ChartLine/ChartLine.cjs.map +1 -1
  44. package/dist/components/charts/ChartLine/ChartLine.js +196 -143
  45. package/dist/components/charts/ChartLine/ChartLine.js.map +1 -1
  46. package/dist/components/charts/ChartLine/ChartLine.module.css.cjs +1 -1
  47. package/dist/components/charts/ChartLine/ChartLine.module.css.js +16 -14
  48. package/dist/components/charts/ChartLine/ChartLine.module.css.js.map +1 -1
  49. package/dist/components/charts/ChartPie/ChartPie.cjs +1 -1
  50. package/dist/components/charts/ChartPie/ChartPie.cjs.map +1 -1
  51. package/dist/components/charts/ChartPie/ChartPie.js +71 -60
  52. package/dist/components/charts/ChartPie/ChartPie.js.map +1 -1
  53. package/dist/components/charts/ChartRadial/ChartRadial.cjs +1 -1
  54. package/dist/components/charts/ChartRadial/ChartRadial.cjs.map +1 -1
  55. package/dist/components/charts/ChartRadial/ChartRadial.js +101 -84
  56. package/dist/components/charts/ChartRadial/ChartRadial.js.map +1 -1
  57. package/dist/components/charts/ChartSankey/ChartSankey.cjs +1 -1
  58. package/dist/components/charts/ChartSankey/ChartSankey.cjs.map +1 -1
  59. package/dist/components/charts/ChartSankey/ChartSankey.js +148 -125
  60. package/dist/components/charts/ChartSankey/ChartSankey.js.map +1 -1
  61. package/dist/components/charts/ChartScatter/ChartScatter.cjs +1 -1
  62. package/dist/components/charts/ChartScatter/ChartScatter.cjs.map +1 -1
  63. package/dist/components/charts/ChartScatter/ChartScatter.js +138 -106
  64. package/dist/components/charts/ChartScatter/ChartScatter.js.map +1 -1
  65. package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs +1 -1
  66. package/dist/components/charts/ChartScatter/ChartScatter.module.css.js +3 -3
  67. package/dist/components/charts/ChartSunburst/ChartSunburst.cjs +1 -1
  68. package/dist/components/charts/ChartSunburst/ChartSunburst.cjs.map +1 -1
  69. package/dist/components/charts/ChartSunburst/ChartSunburst.js +115 -100
  70. package/dist/components/charts/ChartSunburst/ChartSunburst.js.map +1 -1
  71. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
  72. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
  73. package/dist/components/charts/ChartTooltip/ChartTooltip.js +1 -1
  74. package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
  75. package/dist/components/charts/ChartTreemap/ChartTreemap.cjs +1 -1
  76. package/dist/components/charts/ChartTreemap/ChartTreemap.cjs.map +1 -1
  77. package/dist/components/charts/ChartTreemap/ChartTreemap.js +100 -89
  78. package/dist/components/charts/ChartTreemap/ChartTreemap.js.map +1 -1
  79. package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs +1 -1
  80. package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs.map +1 -1
  81. package/dist/components/charts/ChartWaterfall/ChartWaterfall.js +125 -105
  82. package/dist/components/charts/ChartWaterfall/ChartWaterfall.js.map +1 -1
  83. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs +1 -1
  84. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js +8 -6
  85. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js.map +1 -1
  86. package/dist/components/charts/core/CartesianFrame.cjs +1 -1
  87. package/dist/components/charts/core/CartesianFrame.cjs.map +1 -1
  88. package/dist/components/charts/core/CartesianFrame.js +61 -96
  89. package/dist/components/charts/core/CartesianFrame.js.map +1 -1
  90. package/dist/components/charts/core/Chart.module.css.cjs +1 -1
  91. package/dist/components/charts/core/Chart.module.css.js +52 -54
  92. package/dist/components/charts/core/Chart.module.css.js.map +1 -1
  93. package/dist/components/charts/core/ChartFrame.cjs +1 -1
  94. package/dist/components/charts/core/ChartFrame.cjs.map +1 -1
  95. package/dist/components/charts/core/ChartFrame.js +53 -47
  96. package/dist/components/charts/core/ChartFrame.js.map +1 -1
  97. package/dist/components/charts/core/PointBands.cjs +2 -0
  98. package/dist/components/charts/core/PointBands.cjs.map +1 -0
  99. package/dist/components/charts/core/PointBands.js +41 -0
  100. package/dist/components/charts/core/PointBands.js.map +1 -0
  101. package/dist/components/charts/core/cartesianLayout.cjs +1 -1
  102. package/dist/components/charts/core/cartesianLayout.cjs.map +1 -1
  103. package/dist/components/charts/core/cartesianLayout.js +49 -41
  104. package/dist/components/charts/core/cartesianLayout.js.map +1 -1
  105. package/dist/components/charts/core/hoverPath.cjs +2 -0
  106. package/dist/components/charts/core/hoverPath.cjs.map +1 -0
  107. package/dist/components/charts/core/hoverPath.js +7 -0
  108. package/dist/components/charts/core/hoverPath.js.map +1 -0
  109. package/dist/components/charts/core/pointLabels.cjs +2 -0
  110. package/dist/components/charts/core/pointLabels.cjs.map +1 -0
  111. package/dist/components/charts/core/pointLabels.js +12 -0
  112. package/dist/components/charts/core/pointLabels.js.map +1 -0
  113. package/dist/components/charts/core/tooltips.cjs +2 -0
  114. package/dist/components/charts/core/tooltips.cjs.map +1 -0
  115. package/dist/components/charts/core/tooltips.js +48 -0
  116. package/dist/components/charts/core/tooltips.js.map +1 -0
  117. package/dist/components/charts/core/useCartesianLayout.cjs +2 -0
  118. package/dist/components/charts/core/useCartesianLayout.cjs.map +1 -0
  119. package/dist/components/charts/core/useCartesianLayout.js +38 -0
  120. package/dist/components/charts/core/useCartesianLayout.js.map +1 -0
  121. package/dist/components/charts/core/useSeriesToggle.cjs +1 -1
  122. package/dist/components/charts/core/useSeriesToggle.cjs.map +1 -1
  123. package/dist/components/charts/core/useSeriesToggle.js +19 -12
  124. package/dist/components/charts/core/useSeriesToggle.js.map +1 -1
  125. package/dist/components/data-display/Accordion/Accordion.cjs +1 -1
  126. package/dist/components/data-display/Accordion/Accordion.cjs.map +1 -1
  127. package/dist/components/data-display/Accordion/Accordion.js +56 -46
  128. package/dist/components/data-display/Accordion/Accordion.js.map +1 -1
  129. package/dist/components/data-display/Accordion/Accordion.module.css.cjs +1 -1
  130. package/dist/components/data-display/Accordion/Accordion.module.css.js +16 -16
  131. package/dist/components/data-display/SortableList/SortableList.cjs +2 -0
  132. package/dist/components/data-display/SortableList/SortableList.cjs.map +1 -0
  133. package/dist/components/data-display/SortableList/SortableList.js +168 -0
  134. package/dist/components/data-display/SortableList/SortableList.js.map +1 -0
  135. package/dist/components/data-display/SortableList/SortableList.module.css.cjs +2 -0
  136. package/dist/components/data-display/SortableList/SortableList.module.css.cjs.map +1 -0
  137. package/dist/components/data-display/SortableList/SortableList.module.css.js +34 -0
  138. package/dist/components/data-display/SortableList/SortableList.module.css.js.map +1 -0
  139. package/dist/components/data-display/Table/Table.cjs +1 -1
  140. package/dist/components/data-display/Table/Table.cjs.map +1 -1
  141. package/dist/components/data-display/Table/Table.js +86 -85
  142. package/dist/components/data-display/Table/Table.js.map +1 -1
  143. package/dist/components/data-display/Table/Table.module.css.cjs +1 -1
  144. package/dist/components/data-display/Table/Table.module.css.js +50 -51
  145. package/dist/components/data-display/Table/Table.module.css.js.map +1 -1
  146. package/dist/components/data-display/Tag/Tag.cjs +2 -0
  147. package/dist/components/data-display/Tag/Tag.cjs.map +1 -0
  148. package/dist/components/data-display/Tag/Tag.js +50 -0
  149. package/dist/components/data-display/Tag/Tag.js.map +1 -0
  150. package/dist/components/data-display/Tag/Tag.module.css.cjs +2 -0
  151. package/dist/components/data-display/Tag/Tag.module.css.cjs.map +1 -0
  152. package/dist/components/data-display/Tag/Tag.module.css.js +22 -0
  153. package/dist/components/data-display/Tag/Tag.module.css.js.map +1 -0
  154. package/dist/components/data-display/Timeline/Timeline.cjs +2 -0
  155. package/dist/components/data-display/Timeline/Timeline.cjs.map +1 -0
  156. package/dist/components/data-display/Timeline/Timeline.js +31 -0
  157. package/dist/components/data-display/Timeline/Timeline.js.map +1 -0
  158. package/dist/components/data-display/Timeline/Timeline.module.css.cjs +2 -0
  159. package/dist/components/data-display/Timeline/Timeline.module.css.cjs.map +1 -0
  160. package/dist/components/data-display/Timeline/Timeline.module.css.js +30 -0
  161. package/dist/components/data-display/Timeline/Timeline.module.css.js.map +1 -0
  162. package/dist/components/feedback/Skeleton/Skeleton.cjs +2 -0
  163. package/dist/components/feedback/Skeleton/Skeleton.cjs.map +1 -0
  164. package/dist/components/feedback/Skeleton/Skeleton.js +17 -0
  165. package/dist/components/feedback/Skeleton/Skeleton.js.map +1 -0
  166. package/dist/components/feedback/Skeleton/Skeleton.module.css.cjs +2 -0
  167. package/dist/components/feedback/Skeleton/Skeleton.module.css.cjs.map +1 -0
  168. package/dist/components/feedback/Skeleton/Skeleton.module.css.js +15 -0
  169. package/dist/components/feedback/Skeleton/Skeleton.module.css.js.map +1 -0
  170. package/dist/components/feedback/Toast/Toast.module.css.cjs +2 -0
  171. package/dist/components/feedback/Toast/Toast.module.css.cjs.map +1 -0
  172. package/dist/components/feedback/Toast/Toast.module.css.js +31 -0
  173. package/dist/components/feedback/Toast/Toast.module.css.js.map +1 -0
  174. package/dist/components/feedback/Toast/ToastRegion.cjs +2 -0
  175. package/dist/components/feedback/Toast/ToastRegion.cjs.map +1 -0
  176. package/dist/components/feedback/Toast/ToastRegion.js +62 -0
  177. package/dist/components/feedback/Toast/ToastRegion.js.map +1 -0
  178. package/dist/components/feedback/Toast/toastStore.cjs +2 -0
  179. package/dist/components/feedback/Toast/toastStore.cjs.map +1 -0
  180. package/dist/components/feedback/Toast/toastStore.js +33 -0
  181. package/dist/components/feedback/Toast/toastStore.js.map +1 -0
  182. package/dist/components/forms/Checkbox/Checkbox.cjs +1 -1
  183. package/dist/components/forms/Checkbox/Checkbox.cjs.map +1 -1
  184. package/dist/components/forms/Checkbox/Checkbox.js +43 -31
  185. package/dist/components/forms/Checkbox/Checkbox.js.map +1 -1
  186. package/dist/components/forms/Checkbox/Checkbox.module.css.cjs +1 -1
  187. package/dist/components/forms/Checkbox/Checkbox.module.css.js +1 -1
  188. package/dist/components/forms/CheckboxGroup/CheckboxGroup.cjs +2 -0
  189. package/dist/components/forms/CheckboxGroup/CheckboxGroup.cjs.map +1 -0
  190. package/dist/components/forms/CheckboxGroup/CheckboxGroup.js +54 -0
  191. package/dist/components/forms/CheckboxGroup/CheckboxGroup.js.map +1 -0
  192. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs +2 -0
  193. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs.map +1 -0
  194. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js +22 -0
  195. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js.map +1 -0
  196. package/dist/components/forms/ColorPicker/ColorPicker.cjs +2 -0
  197. package/dist/components/forms/ColorPicker/ColorPicker.cjs.map +1 -0
  198. package/dist/components/forms/ColorPicker/ColorPicker.js +57 -0
  199. package/dist/components/forms/ColorPicker/ColorPicker.js.map +1 -0
  200. package/dist/components/forms/ColorPicker/ColorPicker.module.css.cjs +2 -0
  201. package/dist/components/forms/ColorPicker/ColorPicker.module.css.cjs.map +1 -0
  202. package/dist/components/forms/ColorPicker/ColorPicker.module.css.js +22 -0
  203. package/dist/components/forms/ColorPicker/ColorPicker.module.css.js.map +1 -0
  204. package/dist/components/forms/ComboBox/ComboBox.module.css.cjs +1 -1
  205. package/dist/components/forms/ComboBox/ComboBox.module.css.js +20 -20
  206. package/dist/components/forms/Field/Field.cjs +1 -1
  207. package/dist/components/forms/Field/Field.cjs.map +1 -1
  208. package/dist/components/forms/Field/Field.js +21 -20
  209. package/dist/components/forms/Field/Field.js.map +1 -1
  210. package/dist/components/forms/Field/Field.module.css.cjs +1 -1
  211. package/dist/components/forms/Field/Field.module.css.js +18 -12
  212. package/dist/components/forms/Field/Field.module.css.js.map +1 -1
  213. package/dist/components/forms/FileUpload/FileUpload.cjs +2 -0
  214. package/dist/components/forms/FileUpload/FileUpload.cjs.map +1 -0
  215. package/dist/components/forms/FileUpload/FileUpload.js +142 -0
  216. package/dist/components/forms/FileUpload/FileUpload.js.map +1 -0
  217. package/dist/components/forms/FileUpload/FileUpload.module.css.cjs +2 -0
  218. package/dist/components/forms/FileUpload/FileUpload.module.css.cjs.map +1 -0
  219. package/dist/components/forms/FileUpload/FileUpload.module.css.js +46 -0
  220. package/dist/components/forms/FileUpload/FileUpload.module.css.js.map +1 -0
  221. package/dist/components/forms/InputPassword/InputPassword.module.css.cjs +1 -1
  222. package/dist/components/forms/InputPassword/InputPassword.module.css.js +12 -12
  223. package/dist/components/forms/InputText/InputText.cjs +1 -1
  224. package/dist/components/forms/InputText/InputText.cjs.map +1 -1
  225. package/dist/components/forms/InputText/InputText.js +55 -47
  226. package/dist/components/forms/InputText/InputText.js.map +1 -1
  227. package/dist/components/forms/InputText/InputText.module.css.cjs +1 -1
  228. package/dist/components/forms/InputText/InputText.module.css.js +10 -10
  229. package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs +1 -1
  230. package/dist/components/forms/RadioGroup/RadioGroup.module.css.js +4 -4
  231. package/dist/components/forms/SegmentedControl/SegmentedControl.cjs +2 -0
  232. package/dist/components/forms/SegmentedControl/SegmentedControl.cjs.map +1 -0
  233. package/dist/components/forms/SegmentedControl/SegmentedControl.js +52 -0
  234. package/dist/components/forms/SegmentedControl/SegmentedControl.js.map +1 -0
  235. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs +2 -0
  236. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs.map +1 -0
  237. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.js +22 -0
  238. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.js.map +1 -0
  239. package/dist/components/forms/Select/Select.module.css.cjs +1 -1
  240. package/dist/components/forms/Select/Select.module.css.js +13 -13
  241. package/dist/components/forms/Switch/Switch.module.css.cjs +1 -1
  242. package/dist/components/forms/Switch/Switch.module.css.js +2 -2
  243. package/dist/components/icons/icons.cjs +1 -1
  244. package/dist/components/icons/icons.cjs.map +1 -1
  245. package/dist/components/icons/icons.js +198 -40
  246. package/dist/components/icons/icons.js.map +1 -1
  247. package/dist/components/navigation/SkipLink/SkipLink.cjs +2 -0
  248. package/dist/components/navigation/SkipLink/SkipLink.cjs.map +1 -0
  249. package/dist/components/navigation/SkipLink/SkipLink.js +9 -0
  250. package/dist/components/navigation/SkipLink/SkipLink.js.map +1 -0
  251. package/dist/components/navigation/SkipLink/SkipLink.module.css.cjs +2 -0
  252. package/dist/components/navigation/SkipLink/SkipLink.module.css.cjs.map +1 -0
  253. package/dist/components/navigation/SkipLink/SkipLink.module.css.js +8 -0
  254. package/dist/components/navigation/SkipLink/SkipLink.module.css.js.map +1 -0
  255. package/dist/components/navigation/Steps/Steps.cjs +2 -0
  256. package/dist/components/navigation/Steps/Steps.cjs.map +1 -0
  257. package/dist/components/navigation/Steps/Steps.js +30 -0
  258. package/dist/components/navigation/Steps/Steps.js.map +1 -0
  259. package/dist/components/navigation/Steps/Steps.module.css.cjs +2 -0
  260. package/dist/components/navigation/Steps/Steps.module.css.cjs.map +1 -0
  261. package/dist/components/navigation/Steps/Steps.module.css.js +26 -0
  262. package/dist/components/navigation/Steps/Steps.module.css.js.map +1 -0
  263. package/dist/components/navigation/Tabs/Tabs.cjs +1 -1
  264. package/dist/components/navigation/Tabs/Tabs.cjs.map +1 -1
  265. package/dist/components/navigation/Tabs/Tabs.js +88 -79
  266. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  267. package/dist/components/navigation/Tabs/Tabs.module.css.cjs +1 -1
  268. package/dist/components/navigation/Tabs/Tabs.module.css.js +18 -14
  269. package/dist/components/navigation/Tabs/Tabs.module.css.js.map +1 -1
  270. package/dist/components/overlays/Dialog/Dialog.cjs +1 -1
  271. package/dist/components/overlays/Dialog/Dialog.cjs.map +1 -1
  272. package/dist/components/overlays/Dialog/Dialog.js +11 -58
  273. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  274. package/dist/components/overlays/Dialog/DialogFrame.cjs +2 -0
  275. package/dist/components/overlays/Dialog/DialogFrame.cjs.map +1 -0
  276. package/dist/components/overlays/Dialog/DialogFrame.js +65 -0
  277. package/dist/components/overlays/Dialog/DialogFrame.js.map +1 -0
  278. package/dist/components/overlays/Drawer/Drawer.cjs +2 -0
  279. package/dist/components/overlays/Drawer/Drawer.cjs.map +1 -0
  280. package/dist/components/overlays/Drawer/Drawer.js +17 -0
  281. package/dist/components/overlays/Drawer/Drawer.js.map +1 -0
  282. package/dist/components/overlays/Drawer/Drawer.module.css.cjs +2 -0
  283. package/dist/components/overlays/Drawer/Drawer.module.css.cjs.map +1 -0
  284. package/dist/components/overlays/Drawer/Drawer.module.css.js +23 -0
  285. package/dist/components/overlays/Drawer/Drawer.module.css.js.map +1 -0
  286. package/dist/components/overlays/Menu/Menu.cjs +1 -1
  287. package/dist/components/overlays/Menu/Menu.cjs.map +1 -1
  288. package/dist/components/overlays/Menu/Menu.js +105 -86
  289. package/dist/components/overlays/Menu/Menu.js.map +1 -1
  290. package/dist/components/overlays/Menu/Menu.module.css.cjs +1 -1
  291. package/dist/components/overlays/Menu/Menu.module.css.js +24 -6
  292. package/dist/components/overlays/Menu/Menu.module.css.js.map +1 -1
  293. package/dist/design-system.css +1 -1
  294. package/dist/index.cjs +1 -1
  295. package/dist/index.js +184 -122
  296. package/dist/index.js.map +1 -1
  297. package/dist/types/components/actions/ButtonTile/ButtonTile.d.ts +14 -0
  298. package/dist/types/components/actions/ButtonTile/index.d.ts +2 -0
  299. package/dist/types/components/actions/Toolbar/Toolbar.d.ts +27 -0
  300. package/dist/types/components/actions/Toolbar/index.d.ts +2 -0
  301. package/dist/types/components/charts/ChartArea/ChartArea.d.ts +15 -4
  302. package/dist/types/components/charts/ChartBar/ChartBar.d.ts +11 -4
  303. package/dist/types/components/charts/ChartCombo/ChartCombo.d.ts +16 -4
  304. package/dist/types/components/charts/ChartDonut/ChartDonut.d.ts +5 -1
  305. package/dist/types/components/charts/ChartLine/ChartLine.d.ts +15 -4
  306. package/dist/types/components/charts/ChartPie/ChartPie.d.ts +5 -1
  307. package/dist/types/components/charts/ChartRadial/ChartRadial.d.ts +5 -1
  308. package/dist/types/components/charts/ChartSankey/ChartSankey.d.ts +5 -1
  309. package/dist/types/components/charts/ChartScatter/ChartScatter.d.ts +7 -1
  310. package/dist/types/components/charts/ChartSunburst/ChartSunburst.d.ts +11 -2
  311. package/dist/types/components/charts/ChartTooltip/ChartTooltip.d.ts +2 -0
  312. package/dist/types/components/charts/ChartTreemap/ChartTreemap.d.ts +11 -2
  313. package/dist/types/components/charts/ChartWaterfall/ChartWaterfall.d.ts +8 -3
  314. package/dist/types/components/charts/core/CartesianFrame.d.ts +6 -1
  315. package/dist/types/components/charts/core/ChartFrame.d.ts +7 -1
  316. package/dist/types/components/charts/core/PointBands.d.ts +22 -0
  317. package/dist/types/components/charts/core/cartesianLayout.d.ts +10 -4
  318. package/dist/types/components/charts/core/hoverPath.d.ts +10 -0
  319. package/dist/types/components/charts/core/index.d.ts +13 -3
  320. package/dist/types/components/charts/core/pointLabels.d.ts +13 -0
  321. package/dist/types/components/charts/core/tooltips.d.ts +49 -0
  322. package/dist/types/components/charts/core/useCartesianLayout.d.ts +20 -0
  323. package/dist/types/components/charts/core/useSeriesToggle.d.ts +15 -1
  324. package/dist/types/components/data-display/Accordion/Accordion.d.ts +6 -1
  325. package/dist/types/components/data-display/Accordion/index.d.ts +1 -1
  326. package/dist/types/components/data-display/SortableList/SortableList.d.ts +22 -0
  327. package/dist/types/components/data-display/SortableList/index.d.ts +2 -0
  328. package/dist/types/components/data-display/Tag/Tag.d.ts +13 -0
  329. package/dist/types/components/data-display/Tag/index.d.ts +2 -0
  330. package/dist/types/components/data-display/Timeline/Timeline.d.ts +15 -0
  331. package/dist/types/components/data-display/Timeline/index.d.ts +2 -0
  332. package/dist/types/components/feedback/Skeleton/Skeleton.d.ts +13 -0
  333. package/dist/types/components/feedback/Skeleton/index.d.ts +2 -0
  334. package/dist/types/components/feedback/Toast/ToastRegion.d.ts +2 -0
  335. package/dist/types/components/feedback/Toast/index.d.ts +3 -0
  336. package/dist/types/components/feedback/Toast/toastStore.d.ts +24 -0
  337. package/dist/types/components/forms/CheckboxGroup/CheckboxGroup.d.ts +28 -0
  338. package/dist/types/components/forms/CheckboxGroup/index.d.ts +2 -0
  339. package/dist/types/components/forms/ColorPicker/ColorPicker.d.ts +26 -0
  340. package/dist/types/components/forms/ColorPicker/index.d.ts +2 -0
  341. package/dist/types/components/forms/Field/Field.d.ts +6 -2
  342. package/dist/types/components/forms/Field/index.d.ts +1 -1
  343. package/dist/types/components/forms/FileUpload/FileUpload.d.ts +37 -0
  344. package/dist/types/components/forms/FileUpload/index.d.ts +2 -0
  345. package/dist/types/components/forms/InputText/InputText.d.ts +4 -2
  346. package/dist/types/components/forms/SegmentedControl/SegmentedControl.d.ts +23 -0
  347. package/dist/types/components/forms/SegmentedControl/index.d.ts +2 -0
  348. package/dist/types/components/icons/icons.d.ts +29 -0
  349. package/dist/types/components/icons/index.d.ts +1 -1
  350. package/dist/types/components/navigation/SkipLink/SkipLink.d.ts +7 -0
  351. package/dist/types/components/navigation/SkipLink/index.d.ts +2 -0
  352. package/dist/types/components/navigation/Steps/Steps.d.ts +16 -0
  353. package/dist/types/components/navigation/Steps/index.d.ts +2 -0
  354. package/dist/types/components/navigation/Tabs/Tabs.d.ts +5 -1
  355. package/dist/types/components/overlays/Dialog/Dialog.d.ts +2 -2
  356. package/dist/types/components/overlays/Dialog/DialogFrame.d.ts +7 -0
  357. package/dist/types/components/overlays/Drawer/Drawer.d.ts +9 -0
  358. package/dist/types/components/overlays/Drawer/index.d.ts +2 -0
  359. package/dist/types/components/overlays/Menu/Menu.d.ts +16 -2
  360. package/dist/types/components/overlays/Menu/index.d.ts +1 -1
  361. package/dist/types/index.d.ts +35 -7
  362. package/dist/types/utils/formatters/formatarNumero.d.ts +6 -1
  363. package/dist/types/utils/formatters/formatarTamanhoDeArquivo.d.ts +7 -0
  364. package/dist/types/utils/formatters/index.d.ts +3 -1
  365. package/dist/utils/formatters/formatarNumero.cjs +1 -1
  366. package/dist/utils/formatters/formatarNumero.cjs.map +1 -1
  367. package/dist/utils/formatters/formatarNumero.js +42 -17
  368. package/dist/utils/formatters/formatarNumero.js.map +1 -1
  369. package/dist/utils/formatters/formatarTamanhoDeArquivo.cjs +2 -0
  370. package/dist/utils/formatters/formatarTamanhoDeArquivo.cjs.map +1 -0
  371. package/dist/utils/formatters/formatarTamanhoDeArquivo.js +17 -0
  372. package/dist/utils/formatters/formatarTamanhoDeArquivo.js.map +1 -0
  373. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("./ButtonTile.module.css.cjs"),d=require("../../overlays/Tooltip/Tooltip.cjs");function f({className:i,description:l,icon:o,label:s,selected:a,size:r="md",type:u="button",...c}){const n=e.jsxs("button",{...c,"aria-pressed":a,className:[t.default.tile,t.default[r],i].filter(Boolean).join(" "),type:u,children:[e.jsx("span",{"aria-hidden":"true",className:t.default.icon,children:o}),e.jsx("span",{className:t.default.label,children:s})]});return l?e.jsx(d.Tooltip,{content:l,children:n}):n}exports.ButtonTile=f;
2
+ //# sourceMappingURL=ButtonTile.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonTile.cjs","sources":["../../../../src/components/actions/ButtonTile/ButtonTile.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes, ReactNode, Ref } from 'react';\nimport { Tooltip } from '../../overlays/Tooltip';\nimport styles from './ButtonTile.module.css';\n\nexport type ButtonTileSize = 'sm' | 'md';\n\nexport interface ButtonTileProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'aria-label' | 'aria-pressed' | 'children'> {\n /** Mostrada como dica no foco e no ponteiro, e ligada ao botão por `aria-describedby`. */\n description?: string;\n icon: ReactNode;\n /** Texto visível e nome do botão. */\n label: string;\n ref?: Ref<HTMLButtonElement>;\n /** Para o ladrilho que alterna: vira `aria-pressed`. Sem ele, o ladrilho é um botão comum. */\n selected?: boolean;\n size?: ButtonTileSize;\n}\n\nexport function ButtonTile({ className, description, icon, label, selected, size = 'md', type = 'button', ...props }: ButtonTileProps) {\n const tile = (\n <button\n {...props}\n aria-pressed={selected}\n className={[styles.tile, styles[size], className].filter(Boolean).join(' ')}\n type={type}\n >\n <span aria-hidden=\"true\" className={styles.icon}>\n {icon}\n </span>\n <span className={styles.label}>{label}</span>\n </button>\n );\n\n return description ? <Tooltip content={description}>{tile}</Tooltip> : tile;\n}\n"],"names":["ButtonTile","className","description","icon","label","selected","size","type","props","tile","jsxs","styles","jsx","Tooltip"],"mappings":"8MAmBO,SAASA,EAAW,CAAE,UAAAC,EAAW,YAAAC,EAAa,KAAAC,EAAM,MAAAC,EAAO,SAAAC,EAAU,KAAAC,EAAO,KAAM,KAAAC,EAAO,SAAU,GAAGC,GAA0B,CACrI,MAAMC,EACJC,EAAAA,KAAC,SAAA,CACE,GAAGF,EACJ,eAAcH,EACd,UAAW,CAACM,EAAAA,QAAO,KAAMA,EAAAA,QAAOL,CAAI,EAAGL,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC1E,KAAAM,EAEA,SAAA,CAAAK,MAAC,QAAK,cAAY,OAAO,UAAWD,EAAAA,QAAO,KACxC,SAAAR,EACH,EACAS,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,MAAQ,SAAAP,CAAA,CAAM,CAAA,CAAA,CAAA,EAI1C,OAAOF,EAAcU,MAACC,EAAAA,QAAA,CAAQ,QAASX,EAAc,WAAK,EAAaO,CACzE"}
@@ -0,0 +1,23 @@
1
+ import { jsxs as d, jsx as t } from "react/jsx-runtime";
2
+ import e from "./ButtonTile.module.css.js";
3
+ import { Tooltip as p } from "../../overlays/Tooltip/Tooltip.js";
4
+ function b({ className: r, description: n, icon: i, label: l, selected: s, size: a = "md", type: c = "button", ...m }) {
5
+ const o = /* @__PURE__ */ d(
6
+ "button",
7
+ {
8
+ ...m,
9
+ "aria-pressed": s,
10
+ className: [e.tile, e[a], r].filter(Boolean).join(" "),
11
+ type: c,
12
+ children: [
13
+ /* @__PURE__ */ t("span", { "aria-hidden": "true", className: e.icon, children: i }),
14
+ /* @__PURE__ */ t("span", { className: e.label, children: l })
15
+ ]
16
+ }
17
+ );
18
+ return n ? /* @__PURE__ */ t(p, { content: n, children: o }) : o;
19
+ }
20
+ export {
21
+ b as ButtonTile
22
+ };
23
+ //# sourceMappingURL=ButtonTile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonTile.js","sources":["../../../../src/components/actions/ButtonTile/ButtonTile.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes, ReactNode, Ref } from 'react';\nimport { Tooltip } from '../../overlays/Tooltip';\nimport styles from './ButtonTile.module.css';\n\nexport type ButtonTileSize = 'sm' | 'md';\n\nexport interface ButtonTileProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'aria-label' | 'aria-pressed' | 'children'> {\n /** Mostrada como dica no foco e no ponteiro, e ligada ao botão por `aria-describedby`. */\n description?: string;\n icon: ReactNode;\n /** Texto visível e nome do botão. */\n label: string;\n ref?: Ref<HTMLButtonElement>;\n /** Para o ladrilho que alterna: vira `aria-pressed`. Sem ele, o ladrilho é um botão comum. */\n selected?: boolean;\n size?: ButtonTileSize;\n}\n\nexport function ButtonTile({ className, description, icon, label, selected, size = 'md', type = 'button', ...props }: ButtonTileProps) {\n const tile = (\n <button\n {...props}\n aria-pressed={selected}\n className={[styles.tile, styles[size], className].filter(Boolean).join(' ')}\n type={type}\n >\n <span aria-hidden=\"true\" className={styles.icon}>\n {icon}\n </span>\n <span className={styles.label}>{label}</span>\n </button>\n );\n\n return description ? <Tooltip content={description}>{tile}</Tooltip> : tile;\n}\n"],"names":["ButtonTile","className","description","icon","label","selected","size","type","props","tile","jsxs","styles","jsx","Tooltip"],"mappings":";;;AAmBO,SAASA,EAAW,EAAE,WAAAC,GAAW,aAAAC,GAAa,MAAAC,GAAM,OAAAC,GAAO,UAAAC,GAAU,MAAAC,IAAO,MAAM,MAAAC,IAAO,UAAU,GAAGC,KAA0B;AACrI,QAAMC,IACJ,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,gBAAcH;AAAA,MACd,WAAW,CAACM,EAAO,MAAMA,EAAOL,CAAI,GAAGL,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAC1E,MAAAM;AAAA,MAEA,UAAA;AAAA,QAAA,gBAAAK,EAAC,UAAK,eAAY,QAAO,WAAWD,EAAO,MACxC,UAAAR,GACH;AAAA,QACA,gBAAAS,EAAC,QAAA,EAAK,WAAWD,EAAO,OAAQ,UAAAP,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAI1C,SAAOF,IAAc,gBAAAU,EAACC,GAAA,EAAQ,SAASX,GAAc,aAAK,IAAaO;AACzE;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_tile_yper1_2",l="_sm_yper1_24",t="_md_yper1_32",_="_icon_yper1_40",s="_label_yper1_54",o={tile:e,sm:l,md:t,icon:_,label:s};exports.default=o;exports.icon=_;exports.label=s;exports.md=t;exports.sm=l;exports.tile=e;
2
+ //# sourceMappingURL=ButtonTile.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonTile.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ const _ = "_tile_yper1_2", e = "_sm_yper1_24", s = "_md_yper1_32", t = "_icon_yper1_40", l = "_label_yper1_54", o = {
2
+ tile: _,
3
+ sm: e,
4
+ md: s,
5
+ icon: t,
6
+ label: l
7
+ };
8
+ export {
9
+ o as default,
10
+ t as icon,
11
+ l as label,
12
+ s as md,
13
+ e as sm,
14
+ _ as tile
15
+ };
16
+ //# sourceMappingURL=ButtonTile.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonTile.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react/jsx-runtime"),m=require("react"),M=require("react-dom"),S=require("@react-aria/overlays"),h=require("../../../hooks/useMergedRefs.cjs"),i=require("./Toolbar.module.css.cjs"),D="button, a[href], input, select, textarea, [tabindex]",N='input:not([type="checkbox"]), textarea, select, [contenteditable="true"]',w=8;function p(e){return[...e.querySelectorAll(D)].filter(o=>!o.matches(":disabled"))}function T(e,o){const r=e.find(a=>a===o)??e[0];e.forEach(a=>{a.tabIndex=a===r?0:-1})}function E(e,o,r,a){const l=a==="vertical"?"ArrowDown":"ArrowRight",s=a==="vertical"?"ArrowUp":"ArrowLeft";return e===l?(o+1)%r:e===s?(o-1+r)%r:e==="Home"?0:e==="End"?r-1:void 0}function v({anchorRef:e,placement:o="top start",...r}){return e?typeof document>"u"?null:M.createPortal(g.jsx(k,{...r,anchorRef:e,placement:o}),document.body):g.jsx(A,{...r})}function k({anchorRef:e,placement:o,ref:r,style:a,...l}){const s=m.useRef(null),f=h.useMergedRefs(s,r),{overlayProps:d}=S.useOverlayPosition({targetRef:e,overlayRef:s,placement:o,offset:w,isOpen:!0});return g.jsx(A,{...l,ref:f,anchored:!0,"data-react-aria-top-layer":"true",style:{...a,...d.style}})}function A({anchored:e=!1,appearance:o="floating",children:r,className:a,label:l,onFocus:s,onKeyDown:f,orientation:d="horizontal",ref:R,sticky:j=!1,...q}){const x=m.useRef(null),O=h.useMergedRefs(x,R),y=m.useRef(null);m.useLayoutEffect(()=>{const t=x.current,n=()=>T(p(t),y.current);n();const u=new MutationObserver(n);return u.observe(t,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["disabled"]}),()=>u.disconnect()},[]);function P(t){var b;s==null||s(t);const n=p(t.currentTarget);if(t.target===t.currentTarget){(b=n.find(c=>c.tabIndex===0)??n[0])==null||b.focus();return}const u=n.find(c=>c===t.target);u&&(y.current=u,T(n,u))}function I(t){f==null||f(t);const n=t.target;if(t.defaultPrevented||n.matches(N))return;const u=p(t.currentTarget),b=u.indexOf(n),c=b===-1?void 0:E(t.key,b,u.length,d);c!==void 0&&(t.preventDefault(),u[c].focus())}return g.jsx("div",{...q,ref:O,"aria-label":l,"aria-orientation":d,className:[i.default.toolbar,i.default[d],i.default[o],j&&!e&&i.default.sticky,e&&i.default.anchored,a].filter(Boolean).join(" "),onFocus:P,onKeyDown:I,role:"toolbar",tabIndex:-1,children:r})}function B({className:e,label:o,...r}){return g.jsx("div",{...r,"aria-label":o,className:[i.default.group,e].filter(Boolean).join(" "),role:"group"})}v.Group=B;exports.Toolbar=v;
2
+ //# sourceMappingURL=Toolbar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toolbar.cjs","sources":["../../../../src/components/actions/Toolbar/Toolbar.tsx"],"sourcesContent":["import {\n useLayoutEffect,\n useRef,\n type ComponentPropsWithRef,\n type FocusEvent,\n type KeyboardEvent,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport type { PopoverPlacement } from '../../overlays/Popover';\nimport styles from './Toolbar.module.css';\n\nexport type ToolbarOrientation = 'horizontal' | 'vertical';\nexport type ToolbarAppearance = 'floating' | 'flat';\nexport type ToolbarPlacement = PopoverPlacement;\n\nexport interface ToolbarProps extends Omit<ComponentPropsWithRef<'div'>, 'aria-label' | 'role'> {\n /** A barra flutua ancorada a este elemento, num portal, sem tirar o foco de quem o tem. */\n anchorRef?: RefObject<HTMLElement | null>;\n appearance?: ToolbarAppearance;\n children: ReactNode;\n label: string;\n orientation?: ToolbarOrientation;\n placement?: ToolbarPlacement;\n /** Gruda a barra no topo da área que rola. Vale para a barra no fluxo, sem `anchorRef`. */\n sticky?: boolean;\n}\n\nconst ITENS = 'button, a[href], input, select, textarea, [tabindex]';\n// Campos que usam as setas para si mesmos: nelas, a barra não toma a tecla.\nconst CAMPOS = 'input:not([type=\"checkbox\"]), textarea, select, [contenteditable=\"true\"]';\nconst DISTANCIA_DA_ANCORA = 8;\n\nfunction itensDe(barra: HTMLElement) {\n return [...barra.querySelectorAll<HTMLElement>(ITENS)].filter((item) => !item.matches(':disabled'));\n}\n\nfunction marcarParada(itens: readonly HTMLElement[], ativo: HTMLElement | null) {\n const parada = itens.find((item) => item === ativo) ?? itens[0];\n itens.forEach((item) => {\n item.tabIndex = item === parada ? 0 : -1;\n });\n}\n\nfunction destinoDaTecla(tecla: string, atual: number, total: number, orientation: ToolbarOrientation) {\n const avancar = orientation === 'vertical' ? 'ArrowDown' : 'ArrowRight';\n const voltar = orientation === 'vertical' ? 'ArrowUp' : 'ArrowLeft';\n\n if (tecla === avancar) {\n return (atual + 1) % total;\n }\n\n if (tecla === voltar) {\n return (atual - 1 + total) % total;\n }\n\n if (tecla === 'Home') {\n return 0;\n }\n\n return tecla === 'End' ? total - 1 : undefined;\n}\n\nexport function Toolbar({ anchorRef, placement = 'top start', ...props }: ToolbarProps) {\n if (!anchorRef) {\n return <ToolbarBar {...props} />;\n }\n\n // No servidor não há `document` para o portal; a barra ancorada nasce na hidratação.\n if (typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(<AnchoredToolbar {...props} anchorRef={anchorRef} placement={placement} />, document.body);\n}\n\nfunction AnchoredToolbar({\n anchorRef,\n placement,\n ref: refDoConsumidor,\n style,\n ...props\n}: Omit<ToolbarProps, 'anchorRef' | 'placement'> & { anchorRef: RefObject<HTMLElement | null>; placement: ToolbarPlacement }) {\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRefs(ref, refDoConsumidor);\n const { overlayProps } = useOverlayPosition({\n targetRef: anchorRef,\n overlayRef: ref,\n placement,\n offset: DISTANCIA_DA_ANCORA,\n isOpen: true,\n });\n\n // Sem FocusScope: a barra aparece sobre o bloco e o cursor continua no texto.\n return (\n <ToolbarBar\n {...props}\n ref={mergedRef}\n anchored\n data-react-aria-top-layer=\"true\"\n style={{ ...style, ...overlayProps.style }}\n />\n );\n}\n\nfunction ToolbarBar({\n anchored = false,\n appearance = 'floating',\n children,\n className,\n label,\n onFocus,\n onKeyDown,\n orientation = 'horizontal',\n ref: refDoConsumidor,\n sticky = false,\n ...props\n}: Omit<ToolbarProps, 'anchorRef' | 'placement'> & { anchored?: boolean }) {\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRefs(ref, refDoConsumidor);\n const ativo = useRef<HTMLElement | null>(null);\n\n // Uma só parada de Tab: o item ativo. Itens que entram, saem ou se desabilitam refazem a marcação.\n useLayoutEffect(() => {\n const barra = ref.current!;\n const remarcar = () => marcarParada(itensDe(barra), ativo.current);\n\n remarcar();\n const observador = new MutationObserver(remarcar);\n observador.observe(barra, { subtree: true, childList: true, attributes: true, attributeFilter: ['disabled'] });\n\n return () => observador.disconnect();\n }, []);\n\n function handleFocus(event: FocusEvent<HTMLDivElement>) {\n onFocus?.(event);\n const itens = itensDe(event.currentTarget);\n\n // Focar a própria barra, como num atalho do produto, leva ao item ativo.\n if (event.target === event.currentTarget) {\n (itens.find((item) => item.tabIndex === 0) ?? itens[0])?.focus();\n return;\n }\n\n const item = itens.find((candidato) => candidato === event.target);\n if (item) {\n ativo.current = item;\n marcarParada(itens, item);\n }\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n onKeyDown?.(event);\n const alvo = event.target as HTMLElement;\n\n if (event.defaultPrevented || alvo.matches(CAMPOS)) {\n return;\n }\n\n const itens = itensDe(event.currentTarget);\n const atual = itens.indexOf(alvo);\n const destino = atual === -1 ? undefined : destinoDaTecla(event.key, atual, itens.length, orientation);\n\n if (destino === undefined) {\n return;\n }\n\n event.preventDefault();\n itens[destino]!.focus();\n }\n\n return (\n <div\n {...props}\n ref={mergedRef}\n aria-label={label}\n aria-orientation={orientation}\n className={[\n styles.toolbar,\n styles[orientation],\n styles[appearance],\n sticky && !anchored && styles.sticky,\n anchored && styles.anchored,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n role=\"toolbar\"\n tabIndex={-1}\n >\n {children}\n </div>\n );\n}\n\nexport interface ToolbarGroupProps extends Omit<ComponentPropsWithRef<'div'>, 'aria-label' | 'role'> {\n children: ReactNode;\n /** Nome do grupo, quando os botões dele formam um conjunto, como os alinhamentos. */\n label?: string;\n}\n\nfunction ToolbarGroup({ className, label, ...props }: ToolbarGroupProps) {\n return <div {...props} aria-label={label} className={[styles.group, className].filter(Boolean).join(' ')} role=\"group\" />;\n}\n\nToolbar.Group = ToolbarGroup;\n"],"names":["ITENS","CAMPOS","DISTANCIA_DA_ANCORA","itensDe","barra","item","marcarParada","itens","ativo","parada","destinoDaTecla","tecla","atual","total","orientation","avancar","voltar","Toolbar","anchorRef","placement","props","createPortal","AnchoredToolbar","jsx","ToolbarBar","refDoConsumidor","style","ref","useRef","mergedRef","useMergedRefs","overlayProps","useOverlayPosition","anchored","appearance","children","className","label","onFocus","onKeyDown","sticky","useLayoutEffect","remarcar","observador","handleFocus","event","_a","candidato","handleKeyDown","alvo","destino","styles","ToolbarGroup"],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import { useRef as g, useLayoutEffect as w } from "react";
3
+ import { createPortal as D } from "react-dom";
4
+ import { useOverlayPosition as E } from "@react-aria/overlays";
5
+ import { useMergedRefs as v } from "../../../hooks/useMergedRefs.js";
6
+ import f from "./Toolbar.module.css.js";
7
+ const S = "button, a[href], input, select, textarea, [tabindex]", j = 'input:not([type="checkbox"]), textarea, select, [contenteditable="true"]', k = 8;
8
+ function p(r) {
9
+ return [...r.querySelectorAll(S)].filter((o) => !o.matches(":disabled"));
10
+ }
11
+ function A(r, o) {
12
+ const t = r.find((n) => n === o) ?? r[0];
13
+ r.forEach((n) => {
14
+ n.tabIndex = n === t ? 0 : -1;
15
+ });
16
+ }
17
+ function B(r, o, t, n) {
18
+ const s = n === "vertical" ? "ArrowDown" : "ArrowRight", u = n === "vertical" ? "ArrowUp" : "ArrowLeft";
19
+ return r === s ? (o + 1) % t : r === u ? (o - 1 + t) % t : r === "Home" ? 0 : r === "End" ? t - 1 : void 0;
20
+ }
21
+ function C({ anchorRef: r, placement: o = "top start", ...t }) {
22
+ return r ? typeof document > "u" ? null : D(/* @__PURE__ */ m(L, { ...t, anchorRef: r, placement: o }), document.body) : /* @__PURE__ */ m(x, { ...t });
23
+ }
24
+ function L({
25
+ anchorRef: r,
26
+ placement: o,
27
+ ref: t,
28
+ style: n,
29
+ ...s
30
+ }) {
31
+ const u = g(null), l = v(u, t), { overlayProps: d } = E({
32
+ targetRef: r,
33
+ overlayRef: u,
34
+ placement: o,
35
+ offset: k,
36
+ isOpen: !0
37
+ });
38
+ return /* @__PURE__ */ m(
39
+ x,
40
+ {
41
+ ...s,
42
+ ref: l,
43
+ anchored: !0,
44
+ "data-react-aria-top-layer": "true",
45
+ style: { ...n, ...d.style }
46
+ }
47
+ );
48
+ }
49
+ function x({
50
+ anchored: r = !1,
51
+ appearance: o = "floating",
52
+ children: t,
53
+ className: n,
54
+ label: s,
55
+ onFocus: u,
56
+ onKeyDown: l,
57
+ orientation: d = "horizontal",
58
+ ref: T,
59
+ sticky: R = !1,
60
+ ...I
61
+ }) {
62
+ const h = g(null), O = v(h, T), y = g(null);
63
+ w(() => {
64
+ const e = h.current, a = () => A(p(e), y.current);
65
+ a();
66
+ const i = new MutationObserver(a);
67
+ return i.observe(e, { subtree: !0, childList: !0, attributes: !0, attributeFilter: ["disabled"] }), () => i.disconnect();
68
+ }, []);
69
+ function P(e) {
70
+ var b;
71
+ u == null || u(e);
72
+ const a = p(e.currentTarget);
73
+ if (e.target === e.currentTarget) {
74
+ (b = a.find((c) => c.tabIndex === 0) ?? a[0]) == null || b.focus();
75
+ return;
76
+ }
77
+ const i = a.find((c) => c === e.target);
78
+ i && (y.current = i, A(a, i));
79
+ }
80
+ function N(e) {
81
+ l == null || l(e);
82
+ const a = e.target;
83
+ if (e.defaultPrevented || a.matches(j))
84
+ return;
85
+ const i = p(e.currentTarget), b = i.indexOf(a), c = b === -1 ? void 0 : B(e.key, b, i.length, d);
86
+ c !== void 0 && (e.preventDefault(), i[c].focus());
87
+ }
88
+ return /* @__PURE__ */ m(
89
+ "div",
90
+ {
91
+ ...I,
92
+ ref: O,
93
+ "aria-label": s,
94
+ "aria-orientation": d,
95
+ className: [
96
+ f.toolbar,
97
+ f[d],
98
+ f[o],
99
+ R && !r && f.sticky,
100
+ r && f.anchored,
101
+ n
102
+ ].filter(Boolean).join(" "),
103
+ onFocus: P,
104
+ onKeyDown: N,
105
+ role: "toolbar",
106
+ tabIndex: -1,
107
+ children: t
108
+ }
109
+ );
110
+ }
111
+ function M({ className: r, label: o, ...t }) {
112
+ return /* @__PURE__ */ m("div", { ...t, "aria-label": o, className: [f.group, r].filter(Boolean).join(" "), role: "group" });
113
+ }
114
+ C.Group = M;
115
+ export {
116
+ C as Toolbar
117
+ };
118
+ //# sourceMappingURL=Toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toolbar.js","sources":["../../../../src/components/actions/Toolbar/Toolbar.tsx"],"sourcesContent":["import {\n useLayoutEffect,\n useRef,\n type ComponentPropsWithRef,\n type FocusEvent,\n type KeyboardEvent,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport type { PopoverPlacement } from '../../overlays/Popover';\nimport styles from './Toolbar.module.css';\n\nexport type ToolbarOrientation = 'horizontal' | 'vertical';\nexport type ToolbarAppearance = 'floating' | 'flat';\nexport type ToolbarPlacement = PopoverPlacement;\n\nexport interface ToolbarProps extends Omit<ComponentPropsWithRef<'div'>, 'aria-label' | 'role'> {\n /** A barra flutua ancorada a este elemento, num portal, sem tirar o foco de quem o tem. */\n anchorRef?: RefObject<HTMLElement | null>;\n appearance?: ToolbarAppearance;\n children: ReactNode;\n label: string;\n orientation?: ToolbarOrientation;\n placement?: ToolbarPlacement;\n /** Gruda a barra no topo da área que rola. Vale para a barra no fluxo, sem `anchorRef`. */\n sticky?: boolean;\n}\n\nconst ITENS = 'button, a[href], input, select, textarea, [tabindex]';\n// Campos que usam as setas para si mesmos: nelas, a barra não toma a tecla.\nconst CAMPOS = 'input:not([type=\"checkbox\"]), textarea, select, [contenteditable=\"true\"]';\nconst DISTANCIA_DA_ANCORA = 8;\n\nfunction itensDe(barra: HTMLElement) {\n return [...barra.querySelectorAll<HTMLElement>(ITENS)].filter((item) => !item.matches(':disabled'));\n}\n\nfunction marcarParada(itens: readonly HTMLElement[], ativo: HTMLElement | null) {\n const parada = itens.find((item) => item === ativo) ?? itens[0];\n itens.forEach((item) => {\n item.tabIndex = item === parada ? 0 : -1;\n });\n}\n\nfunction destinoDaTecla(tecla: string, atual: number, total: number, orientation: ToolbarOrientation) {\n const avancar = orientation === 'vertical' ? 'ArrowDown' : 'ArrowRight';\n const voltar = orientation === 'vertical' ? 'ArrowUp' : 'ArrowLeft';\n\n if (tecla === avancar) {\n return (atual + 1) % total;\n }\n\n if (tecla === voltar) {\n return (atual - 1 + total) % total;\n }\n\n if (tecla === 'Home') {\n return 0;\n }\n\n return tecla === 'End' ? total - 1 : undefined;\n}\n\nexport function Toolbar({ anchorRef, placement = 'top start', ...props }: ToolbarProps) {\n if (!anchorRef) {\n return <ToolbarBar {...props} />;\n }\n\n // No servidor não há `document` para o portal; a barra ancorada nasce na hidratação.\n if (typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(<AnchoredToolbar {...props} anchorRef={anchorRef} placement={placement} />, document.body);\n}\n\nfunction AnchoredToolbar({\n anchorRef,\n placement,\n ref: refDoConsumidor,\n style,\n ...props\n}: Omit<ToolbarProps, 'anchorRef' | 'placement'> & { anchorRef: RefObject<HTMLElement | null>; placement: ToolbarPlacement }) {\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRefs(ref, refDoConsumidor);\n const { overlayProps } = useOverlayPosition({\n targetRef: anchorRef,\n overlayRef: ref,\n placement,\n offset: DISTANCIA_DA_ANCORA,\n isOpen: true,\n });\n\n // Sem FocusScope: a barra aparece sobre o bloco e o cursor continua no texto.\n return (\n <ToolbarBar\n {...props}\n ref={mergedRef}\n anchored\n data-react-aria-top-layer=\"true\"\n style={{ ...style, ...overlayProps.style }}\n />\n );\n}\n\nfunction ToolbarBar({\n anchored = false,\n appearance = 'floating',\n children,\n className,\n label,\n onFocus,\n onKeyDown,\n orientation = 'horizontal',\n ref: refDoConsumidor,\n sticky = false,\n ...props\n}: Omit<ToolbarProps, 'anchorRef' | 'placement'> & { anchored?: boolean }) {\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRefs(ref, refDoConsumidor);\n const ativo = useRef<HTMLElement | null>(null);\n\n // Uma só parada de Tab: o item ativo. Itens que entram, saem ou se desabilitam refazem a marcação.\n useLayoutEffect(() => {\n const barra = ref.current!;\n const remarcar = () => marcarParada(itensDe(barra), ativo.current);\n\n remarcar();\n const observador = new MutationObserver(remarcar);\n observador.observe(barra, { subtree: true, childList: true, attributes: true, attributeFilter: ['disabled'] });\n\n return () => observador.disconnect();\n }, []);\n\n function handleFocus(event: FocusEvent<HTMLDivElement>) {\n onFocus?.(event);\n const itens = itensDe(event.currentTarget);\n\n // Focar a própria barra, como num atalho do produto, leva ao item ativo.\n if (event.target === event.currentTarget) {\n (itens.find((item) => item.tabIndex === 0) ?? itens[0])?.focus();\n return;\n }\n\n const item = itens.find((candidato) => candidato === event.target);\n if (item) {\n ativo.current = item;\n marcarParada(itens, item);\n }\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n onKeyDown?.(event);\n const alvo = event.target as HTMLElement;\n\n if (event.defaultPrevented || alvo.matches(CAMPOS)) {\n return;\n }\n\n const itens = itensDe(event.currentTarget);\n const atual = itens.indexOf(alvo);\n const destino = atual === -1 ? undefined : destinoDaTecla(event.key, atual, itens.length, orientation);\n\n if (destino === undefined) {\n return;\n }\n\n event.preventDefault();\n itens[destino]!.focus();\n }\n\n return (\n <div\n {...props}\n ref={mergedRef}\n aria-label={label}\n aria-orientation={orientation}\n className={[\n styles.toolbar,\n styles[orientation],\n styles[appearance],\n sticky && !anchored && styles.sticky,\n anchored && styles.anchored,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n role=\"toolbar\"\n tabIndex={-1}\n >\n {children}\n </div>\n );\n}\n\nexport interface ToolbarGroupProps extends Omit<ComponentPropsWithRef<'div'>, 'aria-label' | 'role'> {\n children: ReactNode;\n /** Nome do grupo, quando os botões dele formam um conjunto, como os alinhamentos. */\n label?: string;\n}\n\nfunction ToolbarGroup({ className, label, ...props }: ToolbarGroupProps) {\n return <div {...props} aria-label={label} className={[styles.group, className].filter(Boolean).join(' ')} role=\"group\" />;\n}\n\nToolbar.Group = ToolbarGroup;\n"],"names":["ITENS","CAMPOS","DISTANCIA_DA_ANCORA","itensDe","barra","item","marcarParada","itens","ativo","parada","destinoDaTecla","tecla","atual","total","orientation","avancar","voltar","Toolbar","anchorRef","placement","props","createPortal","AnchoredToolbar","jsx","ToolbarBar","refDoConsumidor","style","ref","useRef","mergedRef","useMergedRefs","overlayProps","useOverlayPosition","anchored","appearance","children","className","label","onFocus","onKeyDown","sticky","useLayoutEffect","remarcar","observador","handleFocus","event","_a","candidato","handleKeyDown","alvo","destino","styles","ToolbarGroup"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o="_toolbar_3clyj_1",t="_vertical_3clyj_14",l="_floating_3clyj_19",c="_sticky_3clyj_27",r="_anchored_3clyj_34",a="_group_3clyj_38",_="_horizontal_3clyj_49",e={toolbar:o,vertical:t,floating:l,sticky:c,anchored:r,group:a,horizontal:_};exports.anchored=r;exports.default=e;exports.floating=l;exports.group=a;exports.horizontal=_;exports.sticky=c;exports.toolbar=o;exports.vertical=t;
2
+ //# sourceMappingURL=Toolbar.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toolbar.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ const o = "_toolbar_3clyj_1", t = "_vertical_3clyj_14", c = "_floating_3clyj_19", l = "_sticky_3clyj_27", _ = "_anchored_3clyj_34", a = "_group_3clyj_38", n = "_horizontal_3clyj_49", r = {
2
+ toolbar: o,
3
+ vertical: t,
4
+ floating: c,
5
+ sticky: l,
6
+ anchored: _,
7
+ group: a,
8
+ horizontal: n
9
+ };
10
+ export {
11
+ _ as anchored,
12
+ r as default,
13
+ c as floating,
14
+ a as group,
15
+ n as horizontal,
16
+ l as sticky,
17
+ o as toolbar,
18
+ t as vertical
19
+ };
20
+ //# sourceMappingURL=Toolbar.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toolbar.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),v=require("react"),y=require("./ChartArea.module.css.cjs"),mt=require("../core/useChartMetrics.cjs"),ht=require("../core/useSeriesToggle.cjs"),pt=require("../palette/seriesColor.cjs"),E=require("../core/useTweenedNumbers.cjs"),i=require("../scales/scales.cjs"),D=require("../core/cartesianLayout.cjs"),dt=require("../core/spacing.cjs"),ft=require("../../../utils/formatters/formatarNumero.cjs"),bt=require("../core/CartesianFrame.cjs"),J=require("../core/shapes.cjs");function gt(u,a){return u[a]!==null&&!u[a-1]&&!u[a+1]}function xt(u,a){const M=u.flatMap(p=>p===null?[]:[p.y1]),j=Math.min(a,...M),C=Math.max(a,...M);return C>j?(a-j)/(C-j):1}function vt({accent:u,categories:a,curve:M="smooth",defaultHiddenSeries:j,emptyMessage:C="Sem dados no período",formatValue:p=ft.formatarNumero,height:K=260,includeZero:O=!0,hiddenSeries:Q,labelAngle:U="auto",legend:W="bottom",legendAlign:X,onHiddenSeriesChange:Y,series:l,showDataLabels:T=!1,showDots:Z=!1,stacked:g=!1,title:tt,xAxis:S="visible",yAxis:w="visible",yAxisRight:A="hidden"}){const F=v.useId(),{font:P,height:et,ref:ot,width:R}=mt.useChartMetrics(),{fillHeight:at,value:q}=D.chartHeight(K,et),{isHidden:x,toggle:lt}=ht.useSeriesToggle({defaultHiddenSeries:j,hiddenSeries:Q,onHiddenSeriesChange:Y}),d=v.useMemo(()=>pt.resolveSeriesColors(l,{accent:u}),[u,l]),nt=E.useTweenedNumbers(l.map(e=>x(e.label)?0:1)),st=e=>nt[e]??0,N=v.useMemo(()=>{const e=t=>x(l[t].label)?0:1;return g?i.domainOf(a.flatMap((t,o)=>i.stackDiverging(l.map((m,r)=>(m.values[o]??0)*e(r))).flat())):i.mergeDomains(l.filter(t=>!x(t.label)).map(t=>i.domainOf(t.values.filter(o=>o!==null),{includeZero:O})))},[a,O,x,l,g]),H=D.valueLabelsFor(N,q,p),{margins:rt,plot:c,rotation:it}=D.cartesianLayout({bottomLabels:a,font:P,height:q,labelAngle:U,leftLabels:H,rightLabels:H,topRoom:T?dt.valueLabelRoom(P):0,width:R,xAxis:S,yAxis:w,yAxisRight:A}),_=v.useMemo(()=>i.pointScale({domain:a,padding:0,range:[0,c.width]}),[a,c.width]),k=v.useMemo(()=>i.linearScale({domain:N,range:[c.height,0]}),[N,c.height]),[L,$]=E.useTweenedNumbers(k.domain()),f=v.useMemo(()=>i.linearScale({domain:{min:L,max:$},nice:!1,range:[c.height,0]}),[$,L,c.height]),z=i.ticksFor(k,c.height),I=f(Math.min(Math.max(0,L),$)),ut=a.map((e,t)=>i.stackDiverging(l.map((o,m)=>(o.values[t]??0)*st(m)))),V=l.map((e,t)=>a.map((o,m)=>{const r=e.values[m];if(r==null||!Number.isFinite(r))return null;const[h,s]=ut[m][t];return{x:_(o)??0,y0:g?f(h):I,y1:f(g?s:r)}})),ct=a.map(e=>({label:e,position:_(e)??0})),G=z.map(e=>({label:p(e),position:f(e)}));return n.jsxs(bt.CartesianFrame,{containerRef:ot,empty:l.length===0||a.length===0,emptyMessage:C,grid:[{baseline:f(0),lines:z.map(e=>f(e)),orientation:"horizontal"}],fillHeight:at,height:q,legend:l.map((e,t)=>({color:d[t],hidden:x(e.label),label:e.label})),legendAlign:X,legendPosition:W,margins:rt,onToggleSeries:lt,plot:c,title:tt,width:R,xAxis:{labelRotation:it,ticks:ct,visibility:S},yAxis:{hideLine:!0,ticks:G,visibility:w},yAxisRight:{hideLine:!0,ticks:G,visibility:A},children:[!g&&n.jsx("defs",{children:l.map((e,t)=>{const o=xt(V[t],I);return n.jsxs("linearGradient",{id:`${F}-${t}`,x1:"0",x2:"0",y1:"0",y2:"1",children:[o>0&&n.jsx("stop",{offset:o*.05,stopColor:d[t],stopOpacity:.6}),n.jsx("stop",{offset:o,stopColor:d[t],stopOpacity:.05}),o<1&&n.jsx("stop",{offset:o+(1-o)*.95,stopColor:d[t],stopOpacity:.6})]},t)})}),l.map((e,t)=>{const o=V[t],m=o.map(h=>h===null?null:{x:h.x,y:h.y1}),r=x(e.label);return n.jsxs("g",{"aria-hidden":r||void 0,className:`${y.default.series} ${r?y.default.seriesOff:""}`,children:[n.jsx("path",{d:J.areaPath(o,M),fill:g?d[t]:`url(#${F}-${t})`}),n.jsx("path",{className:y.default.outline,d:J.linePath(m,M),fill:"none",stroke:d[t]}),a.map((h,s)=>{const b=o[s];if(b===null)return null;const B=`${e.label}, ${h}: ${p(e.values[s]??0)}`;return n.jsx("circle",{"aria-label":B,className:Z||gt(o,s)?y.default.dotVisible:y.default.dot,cx:b.x,cy:b.y1,fill:d[t],r:4,children:n.jsx("title",{children:B})},s)}),T&&a.map((h,s)=>{const b=o[s];return b===null?null:n.jsx("text",{className:y.default.valueLabel,textAnchor:"middle",x:b.x,y:b.y1-10,children:p(e.values[s]??0)},s)})]},t)})]})}exports.ChartArea=vt;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),g=require("react"),v=require("./ChartArea.module.css.cjs"),Oo=require("../core/useChartMetrics.cjs"),ao=require("../core/useSeriesToggle.cjs"),So=require("../palette/seriesColor.cjs"),no=require("../core/useTweenedNumbers.cjs"),m=require("../scales/scales.cjs"),N=require("../core/cartesianLayout.cjs"),Fo=require("../core/useCartesianLayout.cjs"),To=require("../core/spacing.cjs"),Ao=require("../core/useHoveredBand.cjs"),R=require("../core/PointBands.cjs"),Do=require("../../../utils/formatters/formatarNumero.cjs"),Ro=require("../core/CartesianFrame.cjs"),lo=require("../core/shapes.cjs"),wo=require("../core/pointLabels.cjs"),Bo=require("../core/tooltips.cjs");function ko(h,a){return h[a]!==null&&!h[a-1]&&!h[a+1]}function Eo(h,a){const y=h.flatMap(M=>M===null?[]:[M.y1]),q=Math.min(a,...y),j=Math.max(a,...y);return j>q?(a-q)/(j-q):1}function Io({accent:h,categories:a,curve:y="smooth",defaultHiddenSeries:q,emptyMessage:j="Sem dados no período",formatTooltipValue:M,formatValue:C=Do.formatarNumero,height:so=260,includeZero:w=!0,hiddenSeries:ro,labelAngle:io="auto",legend:uo="bottom",legendAlign:co,onHiddenSeriesChange:mo,onHoverCategory:B,series:n,showDataLabels:P="hidden",showDots:k="onHover",showTooltip:E=!0,stacked:p=!1,title:ho,xAxis:I="visible",yAxis:_="visible",yAxisRight:z="hidden"}){const G=g.useId(),{font:H,height:po,ref:fo,width:V}=Oo.useChartMetrics(),{fillHeight:bo,value:O}=N.chartHeight(so,po),{isHidden:x,isOutOfScale:Y,toggle:go}=ao.useSeriesToggle({defaultHiddenSeries:q,hiddenSeries:ro,labels:n.map(o=>o.label),onHiddenSeriesChange:mo}),d=g.useMemo(()=>So.resolveSeriesColors(n,{accent:h}),[h,n]),vo=no.useTweenedNumbers(n.map(o=>x(o.label)?0:1)),xo=o=>vo[o]??0,S=g.useMemo(()=>{const o=ao.seriesInScale(n,Y),t=e=>o.includes(n[e])?1:0;return p?m.domainOf(a.flatMap((e,i)=>m.stackDiverging(n.map((c,u)=>(c.values[i]??0)*t(u))).flat())):m.mergeDomains(o.map(e=>m.domainOf(e.values.filter(i=>i!==null),{includeZero:w})))},[a,w,Y,n,p]),J=N.valueLabelsFor(S,O,C),{axisReveal:yo,margins:qo,plot:r,rotation:Co}=Fo.useCartesianLayout({bottomLabels:a,font:H,height:O,labelAngle:io,leftLabels:J,rightLabels:J,topRoom:P==="hidden"?0:To.valueLabelRoom(H),width:V,xAxis:I,yAxis:_,yAxisRight:z}),K=g.useMemo(()=>m.pointScale({domain:a,padding:0,range:[0,r.width]}),[a,r.width]),{hover:jo,hovered:L}=Ao.useHoveredBand(B),[Mo,Po]=g.useState(null),F=E||B!==void 0||k==="onHover"||P==="onHover",Q=g.useMemo(()=>m.linearScale({domain:S,range:[r.height,0]}),[S,r.height]),[T,A]=no.useTweenedNumbers(Q.domain()),b=g.useMemo(()=>m.linearScale({domain:{min:T,max:A},nice:!1,range:[r.height,0]}),[A,T,r.height]),U=m.ticksFor(Q,r.height),W=b(Math.min(Math.max(0,T),A)),Ho=a.map((o,t)=>m.stackDiverging(n.map((e,i)=>(e.values[t]??0)*xo(i)))),D=n.map((o,t)=>a.map((e,i)=>{const c=o.values[i];if(c==null||!Number.isFinite(c))return null;const[u,s]=Ho[i][t];return{x:K(e)??0,y0:p?b(u):W,y1:b(p?s:c)}})),X=D.map(o=>o.map(t=>t&&{x:t.x,y:t.y1})),Z=R.nearestSeriesAt(X,L,Mo,o=>x(n[o].label)),oo=a.map(o=>({label:o,position:K(o)??0})),to=oo.map(o=>o.position),eo=U.map(o=>({label:C(o),position:b(o)}));return l.jsxs(Ro.CartesianFrame,{axisReveal:yo,containerRef:fo,empty:n.length===0||a.length===0,emptyMessage:j,grid:[{baseline:b(0),lines:U.map(o=>b(o)),orientation:"horizontal"}],fillHeight:bo,height:O,legend:n.map((o,t)=>({color:d[t],hidden:x(o.label),label:o.label})),legendAlign:co,legendPosition:uo,margins:qo,onToggleSeries:go,plot:r,title:ho,tooltip:E?Bo.categoryTooltip({categories:a,colors:d,format:M??C,index:L,isHidden:x,series:n,showTotal:p}):void 0,width:V,xAxis:{labelRotation:Co,ticks:oo,visibility:I},yAxis:{hideLine:!0,ticks:eo,visibility:_},yAxisRight:{hideLine:!0,ticks:eo,visibility:z},children:[F&&L!==null&&l.jsx(R.PointCursor,{plot:r,position:to[L]}),!p&&l.jsx("defs",{children:n.map((o,t)=>{const e=Eo(D[t],W);return l.jsxs("linearGradient",{id:`${G}-${t}`,x1:"0",x2:"0",y1:"0",y2:"1",children:[e>0&&l.jsx("stop",{offset:e*.05,stopColor:d[t],stopOpacity:.6}),l.jsx("stop",{offset:e,stopColor:d[t],stopOpacity:.05}),e<1&&l.jsx("stop",{offset:e+(1-e)*.95,stopColor:d[t],stopOpacity:.6})]},t)})}),n.map((o,t)=>{const e=D[t],i=e.map(u=>u===null?null:{x:u.x,y:u.y1}),c=x(o.label);return l.jsxs("g",{"aria-hidden":c||void 0,className:`${v.default.series} ${c?v.default.seriesOff:""}`,children:[l.jsx("path",{d:lo.areaPath(e,y),fill:p?d[t]:`url(#${G}-${t})`,fillOpacity:p?.4:void 0}),l.jsx("path",{className:v.default.outline,d:lo.linePath(i,y),fill:"none",stroke:d[t]}),a.map((u,s)=>{const f=e[s];if(f===null)return null;const $=`${o.label}, ${u}: ${C(o.values[s]??0)}`;return l.jsx("circle",{"aria-label":$,className:N.markShown(k,t===Z)||ko(e,s)?v.default.dotVisible:v.default.dot,cx:f.x,cy:f.y1,stroke:d[t],r:4,children:!F&&l.jsx("title",{children:$})},s)}),P!=="hidden"&&a.map((u,s)=>{const f=e[s];if(f===null)return null;const{below:$,dx:Lo,textAnchor:$o}=wo.pointLabelPlacement(X,t,s,H.lineHeight,No=>x(n[No].label));return l.jsx("text",{className:`${v.default.valueLabel} ${N.markShown(P,t===Z)?"":v.default.valueLabelHidden}`,textAnchor:$o,x:f.x+Lo,y:$?f.y1+H.lineHeight+2:f.y1-10,children:C(o.values[s]??0)},s)})]},t)}),F&&l.jsx(R.PointBands,{onHover:jo,onPointerY:Po,plot:r,positions:to})]})}exports.ChartArea=Io;
2
2
  //# sourceMappingURL=ChartArea.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartArea.cjs","sources":["../../../../src/components/charts/ChartArea/ChartArea.tsx"],"sourcesContent":["import { useId, useMemo } from 'react';\nimport {\n CartesianFrame,\n areaPath,\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 ChartBand,\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, stackDiverging, ticksFor } from '../scales';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartArea.module.css';\n/**\n * Faixa sem vizinha desenhada. O contorno entre ela e o nada nao tem tracado, e\n * o marcador so no hover deixaria o dado invisivel.\n */\nfunction isolada(faixas: readonly (ChartBand | null)[], indice: number) {\n return faixas[indice] !== null && !faixas[indice - 1] && !faixas[indice + 1];\n}\n\n/** Altura do zero dentro da area da serie, de 0 no topo a 1 na base. O degrade clareia rumo a ele pelos dois lados. */\nfunction alturaDoZero(faixas: readonly (ChartBand | null)[], base: number) {\n const pontas = faixas.flatMap((faixa) => (faixa === null ? [] : [faixa.y1]));\n const topo = Math.min(base, ...pontas);\n const fundo = Math.max(base, ...pontas);\n\n return fundo > topo ? (base - topo) / (fundo - topo) : 1;\n}\n\nexport interface ChartAreaSeries extends SeriesAppearance {\n label: string;\n values: readonly (number | null)[];\n}\n\nexport interface ChartAreaProps {\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 ChartAreaSeries[];\n showDataLabels?: boolean;\n showDots?: boolean;\n stacked?: boolean;\n title: string;\n xAxis?: AxisVisibility;\n yAxis?: AxisVisibility;\n yAxisRight?: AxisVisibility;\n}\n\n\nexport function ChartArea({\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 stacked = false,\n title,\n xAxis = 'visible',\n yAxis = 'visible',\n yAxisRight = 'hidden',\n}: ChartAreaProps) {\n const gradienteId = useId();\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 // Presenca de cada serie, entre zero e um. Empilhadas, ela pesa a\n // contribuicao, entao a faixa desligada encolhe e a pilha acompanha.\n const presencas = useTweenedNumbers(series.map((serie) => (isHidden(serie.label) ? 0 : 1)));\n const presenca = (indice: number) => presencas[indice] ?? 0;\n\n const dominio = useMemo(() => {\n const visivel = (ordem: number) => (isHidden(series[ordem].label) ? 0 : 1);\n\n if (stacked) {\n return domainOf(\n categories.flatMap((_, indice) =>\n stackDiverging(series.map((serie, ordem) => (serie.values[indice] ?? 0) * visivel(ordem))).flat(),\n ),\n );\n }\n\n return mergeDomains(\n series\n .filter((serie) => !isHidden(serie.label))\n .map((serie) => domainOf(serie.values.filter((valor) => valor !== null), { includeZero })),\n );\n }, [categories, includeZero, isHidden, series, stacked]);\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 // Sem o zero no dominio, a area desce ate o limite do eixo, e nao ate um zero fora do desenho.\n const base = escalaValores(Math.min(Math.max(0, minimo), maximo));\n const pilhas = categories.map((_, indice) =>\n stackDiverging(series.map((serie, ordem) => (serie.values[indice] ?? 0) * presenca(ordem))),\n );\n\n const faixasPorSerie = series.map((serie, indiceSerie) =>\n categories.map<ChartBand | 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 const [de, ate] = pilhas[indice][indiceSerie];\n\n return {\n x: escalaCategorias(categoria) ?? 0,\n y0: stacked ? escalaValores(de) : base,\n y1: stacked ? escalaValores(ate) : escalaValores(valor),\n };\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 grid={[\n {\n baseline: escalaValores(0),\n lines: marcasDeValor.map((valor) => escalaValores(valor)),\n orientation: 'horizontal',\n },\n ]}\n fillHeight={fillHeight}\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 {/* Sem empilhamento as areas se sobrepoem, e um topo opaco esconderia a de\n baixo. O contorno em cor cheia e que marca o limite de cada faixa. */}\n {!stacked && (\n <defs>\n {series.map((serie, indice) => {\n const zero = alturaDoZero(faixasPorSerie[indice], base);\n\n return (\n <linearGradient id={`${gradienteId}-${indice}`} key={indice} x1=\"0\" x2=\"0\" y1=\"0\" y2=\"1\">\n {zero > 0 && <stop offset={zero * 0.05} stopColor={cores[indice]} stopOpacity={0.6} />}\n <stop offset={zero} stopColor={cores[indice]} stopOpacity={0.05} />\n {zero < 1 && <stop offset={zero + (1 - zero) * 0.95} stopColor={cores[indice]} stopOpacity={0.6} />}\n </linearGradient>\n );\n })}\n </defs>\n )}\n\n {series.map((serie, indiceSerie) => {\n const faixas = faixasPorSerie[indiceSerie];\n const contorno = faixas.map<ChartPoint | null>((faixa) =>\n faixa === null ? null : { x: faixa.x, y: faixa.y1 },\n );\n\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 d={areaPath(faixas, curve)}\n fill={stacked ? cores[indiceSerie] : `url(#${gradienteId}-${indiceSerie})`}\n />\n <path\n className={styles.outline}\n d={linePath(contorno, curve)}\n fill=\"none\"\n stroke={cores[indiceSerie]}\n />\n\n {categories.map((categoria, indice) => {\n const faixa = faixas[indice];\n\n if (faixa === null) {\n return null;\n }\n\n const descricao = `${serie.label}, ${categoria}: ${formatValue(serie.values[indice] ?? 0)}`;\n\n return (\n <circle\n aria-label={descricao}\n className={showDots || isolada(faixas, indice) ? styles.dotVisible : styles.dot}\n cx={faixa.x}\n cy={faixa.y1}\n fill={cores[indiceSerie]}\n key={indice}\n r={4}\n >\n <title>{descricao}</title>\n </circle>\n );\n })}\n\n {showDataLabels &&\n categories.map((categoria, indice) => {\n const faixa = faixas[indice];\n\n if (faixa === null) {\n return null;\n }\n\n return (\n <text\n className={styles.valueLabel}\n key={indice}\n textAnchor=\"middle\"\n x={faixa.x}\n y={faixa.y1 - 10}\n >\n {formatValue(serie.values[indice] ?? 0)}\n </text>\n );\n })}\n </g>\n );\n })}\n </CartesianFrame>\n );\n}\n"],"names":["isolada","faixas","indice","alturaDoZero","base","pontas","faixa","topo","fundo","ChartArea","accent","categories","curve","defaultHiddenSeries","emptyMessage","formatValue","formatarNumero","height","includeZero","hiddenSeries","labelAngle","legend","legendAlign","onHiddenSeriesChange","series","showDataLabels","showDots","stacked","title","xAxis","yAxis","yAxisRight","gradienteId","useId","font","alturaMedida","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","cores","useMemo","resolveSeriesColors","presencas","useTweenedNumbers","serie","presenca","dominio","visivel","ordem","domainOf","_","stackDiverging","mergeDomains","valor","rotulosDeValor","valueLabelsFor","margins","plot","rotation","cartesianLayout","valueLabelRoom","escalaCategorias","pointScale","escalaAlvo","linearScale","minimo","maximo","escalaValores","marcasDeValor","ticksFor","pilhas","faixasPorSerie","indiceSerie","categoria","de","ate","marcasCategoria","marcasValor","jsxs","CartesianFrame","jsx","zero","contorno","oculta","styles","areaPath","linePath","descricao"],"mappings":"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"}
1
+ {"version":3,"file":"ChartArea.cjs","sources":["../../../../src/components/charts/ChartArea/ChartArea.tsx"],"sourcesContent":["import { useId, useMemo, useState } from 'react';\nimport {\n CartesianFrame,\n categoryTooltip,\n PointBands,\n PointCursor,\n areaPath,\n seriesInScale,\n useCartesianLayout,\n chartHeight,\n linePath,\n markShown,\n nearestSeriesAt,\n pointLabelPlacement,\n useChartMetrics,\n useHoveredBand,\n useSeriesToggle,\n useTweenedNumbers,\n valueLabelRoom,\n valueLabelsFor,\n type AxisLabelAngle,\n type AxisTick,\n type AxisVisibility,\n type ChartBand,\n type ChartCurve,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type MarkVisibility,\n type ChartPoint,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { domainOf, linearScale, mergeDomains, pointScale, stackDiverging, ticksFor } from '../scales';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartArea.module.css';\n/**\n * Faixa sem vizinha desenhada. O contorno entre ela e o nada nao tem tracado, e\n * o marcador so no hover deixaria o dado invisivel.\n */\nfunction isolada(faixas: readonly (ChartBand | null)[], indice: number) {\n return faixas[indice] !== null && !faixas[indice - 1] && !faixas[indice + 1];\n}\n\n/** Altura do zero dentro da area da serie, de 0 no topo a 1 na base. O degrade clareia rumo a ele pelos dois lados. */\nfunction alturaDoZero(faixas: readonly (ChartBand | null)[], base: number) {\n const pontas = faixas.flatMap((faixa) => (faixa === null ? [] : [faixa.y1]));\n const topo = Math.min(base, ...pontas);\n const fundo = Math.max(base, ...pontas);\n\n return fundo > topo ? (base - topo) / (fundo - topo) : 1;\n}\n\nexport interface ChartAreaSeries extends SeriesAppearance {\n label: string;\n values: readonly (number | null)[];\n}\n\nexport interface ChartAreaProps {\n accent?: string;\n categories: readonly string[];\n curve?: ChartCurve;\n defaultHiddenSeries?: readonly string[];\n emptyMessage?: string;\n /** Formato dos valores no balao. Sem ele, vale o `formatValue`: o eixo pode sair compacto e o balao, exato. */\n formatTooltipValue?: (value: number) => 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 /** Indice da categoria mais proxima do ponteiro, ou `null` ao sair. */\n onHoverCategory?: (index: number | null) => void;\n series: readonly ChartAreaSeries[];\n /** Valor acima de cada ponto: sempre, nunca, ou so os da serie mais proxima do ponteiro. */\n showDataLabels?: MarkVisibility;\n /** Pontos de cada valor: sempre, nunca, ou so os da serie mais proxima do ponteiro. */\n showDots?: MarkVisibility;\n /**\n * Balao com as series da categoria mais proxima do ponteiro. Desligue para montar o proprio\n * `ChartTooltip` pela costura; sem balao nem costura, o ponto volta a ter o `<title>`.\n */\n showTooltip?: boolean;\n stacked?: boolean;\n title: string;\n xAxis?: AxisVisibility;\n yAxis?: AxisVisibility;\n yAxisRight?: AxisVisibility;\n}\n\n\nexport function ChartArea({\n accent,\n categories,\n curve = 'smooth',\n defaultHiddenSeries,\n emptyMessage = 'Sem dados no período',\n formatTooltipValue,\n formatValue = formatarNumero,\n height = 260,\n includeZero = true,\n hiddenSeries,\n labelAngle = 'auto',\n legend = 'bottom',\n legendAlign,\n onHiddenSeriesChange,\n onHoverCategory,\n series,\n showDataLabels = 'hidden',\n showDots = 'onHover',\n showTooltip = true,\n stacked = false,\n title,\n xAxis = 'visible',\n yAxis = 'visible',\n yAxisRight = 'hidden',\n}: ChartAreaProps) {\n const gradienteId = useId();\n const { font, height: alturaMedida, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, isOutOfScale, toggle } = useSeriesToggle({\n defaultHiddenSeries,\n hiddenSeries,\n labels: series.map((serie) => serie.label),\n onHiddenSeriesChange,\n });\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. Empilhadas, ela pesa a\n // contribuicao, entao a faixa desligada encolhe e a pilha acompanha.\n const presencas = useTweenedNumbers(series.map((serie) => (isHidden(serie.label) ? 0 : 1)));\n const presenca = (indice: number) => presencas[indice] ?? 0;\n\n const dominio = useMemo(() => {\n const naEscala = seriesInScale(series, isOutOfScale);\n const visivel = (ordem: number) => (naEscala.includes(series[ordem]) ? 1 : 0);\n\n if (stacked) {\n return domainOf(\n categories.flatMap((_, indice) =>\n stackDiverging(series.map((serie, ordem) => (serie.values[indice] ?? 0) * visivel(ordem))).flat(),\n ),\n );\n }\n\n return mergeDomains(\n naEscala.map((serie) => domainOf(serie.values.filter((valor) => valor !== null), { includeZero })),\n );\n }, [categories, includeZero, isOutOfScale, series, stacked]);\n\n const rotulosDeValor = valueLabelsFor(dominio, alturaDoDesenho, formatValue);\n\n const { axisReveal, margins, plot, rotation } = useCartesianLayout({\n bottomLabels: categories,\n font,\n height: alturaDoDesenho,\n labelAngle,\n leftLabels: rotulosDeValor,\n rightLabels: rotulosDeValor,\n topRoom: showDataLabels === 'hidden' ? 0 : valueLabelRoom(font),\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 const { hover: focarCategoria, hovered: categoriaEmFoco } = useHoveredBand(onHoverCategory);\n const [alturaDoPonteiro, setAlturaDoPonteiro] = useState<number | null>(null);\n const comFaixas =\n showTooltip || onHoverCategory !== undefined || showDots === 'onHover' || showDataLabels === 'onHover';\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 // Sem o zero no dominio, a area desce ate o limite do eixo, e nao ate um zero fora do desenho.\n const base = escalaValores(Math.min(Math.max(0, minimo), maximo));\n const pilhas = categories.map((_, indice) =>\n stackDiverging(series.map((serie, ordem) => (serie.values[indice] ?? 0) * presenca(ordem))),\n );\n\n const faixasPorSerie = series.map((serie, indiceSerie) =>\n categories.map<ChartBand | 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 const [de, ate] = pilhas[indice][indiceSerie];\n\n return {\n x: escalaCategorias(categoria) ?? 0,\n y0: stacked ? escalaValores(de) : base,\n y1: stacked ? escalaValores(ate) : escalaValores(valor),\n };\n }),\n );\n\n const contornos = faixasPorSerie.map((faixas) => faixas.map((faixa) => faixa && { x: faixa.x, y: faixa.y1 }));\n const serieEmFoco = nearestSeriesAt(\n contornos,\n categoriaEmFoco,\n alturaDoPonteiro,\n (indice) => isHidden(series[indice].label),\n );\n\n const marcasCategoria: AxisTick[] = categories.map((categoria) => ({\n label: categoria,\n position: escalaCategorias(categoria) ?? 0,\n }));\n const posicoesCategoria = marcasCategoria.map((marca) => marca.position);\n\n const marcasValor: AxisTick[] = marcasDeValor.map((valor) => ({\n label: formatValue(valor),\n position: escalaValores(valor),\n }));\n\n return (\n <CartesianFrame\n axisReveal={axisReveal}\n containerRef={ref}\n empty={series.length === 0 || categories.length === 0}\n emptyMessage={emptyMessage}\n grid={[\n {\n baseline: escalaValores(0),\n lines: marcasDeValor.map((valor) => escalaValores(valor)),\n orientation: 'horizontal',\n },\n ]}\n fillHeight={fillHeight}\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 tooltip={\n showTooltip\n ? categoryTooltip({\n categories,\n colors: cores,\n format: formatTooltipValue ?? formatValue,\n index: categoriaEmFoco,\n isHidden,\n series,\n showTotal: stacked,\n })\n : undefined\n }\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 {comFaixas && categoriaEmFoco !== null && (\n <PointCursor plot={plot} position={posicoesCategoria[categoriaEmFoco]} />\n )}\n\n {/* Sem empilhamento as areas se sobrepoem, e um topo opaco esconderia a de\n baixo. O contorno em cor cheia e que marca o limite de cada faixa. */}\n {!stacked && (\n <defs>\n {series.map((serie, indice) => {\n const zero = alturaDoZero(faixasPorSerie[indice], base);\n\n return (\n <linearGradient id={`${gradienteId}-${indice}`} key={indice} x1=\"0\" x2=\"0\" y1=\"0\" y2=\"1\">\n {zero > 0 && <stop offset={zero * 0.05} stopColor={cores[indice]} stopOpacity={0.6} />}\n <stop offset={zero} stopColor={cores[indice]} stopOpacity={0.05} />\n {zero < 1 && <stop offset={zero + (1 - zero) * 0.95} stopColor={cores[indice]} stopOpacity={0.6} />}\n </linearGradient>\n );\n })}\n </defs>\n )}\n\n {series.map((serie, indiceSerie) => {\n const faixas = faixasPorSerie[indiceSerie];\n const contorno = faixas.map<ChartPoint | null>((faixa) =>\n faixa === null ? null : { x: faixa.x, y: faixa.y1 },\n );\n\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 d={areaPath(faixas, curve)}\n fill={stacked ? cores[indiceSerie] : `url(#${gradienteId}-${indiceSerie})`}\n fillOpacity={stacked ? 0.4 : undefined}\n />\n <path\n className={styles.outline}\n d={linePath(contorno, curve)}\n fill=\"none\"\n stroke={cores[indiceSerie]}\n />\n\n {categories.map((categoria, indice) => {\n const faixa = faixas[indice];\n\n if (faixa === null) {\n return null;\n }\n\n const descricao = `${serie.label}, ${categoria}: ${formatValue(serie.values[indice] ?? 0)}`;\n\n return (\n <circle\n aria-label={descricao}\n className={\n markShown(showDots, indiceSerie === serieEmFoco) || isolada(faixas, indice)\n ? styles.dotVisible\n : styles.dot\n }\n cx={faixa.x}\n cy={faixa.y1}\n stroke={cores[indiceSerie]}\n key={indice}\n r={4}\n >\n {!comFaixas && <title>{descricao}</title>}\n </circle>\n );\n })}\n\n {showDataLabels !== 'hidden' &&\n categories.map((categoria, indice) => {\n const faixa = faixas[indice];\n\n if (faixa === null) {\n return null;\n }\n\n const { below, dx, textAnchor } = pointLabelPlacement(contornos, indiceSerie, indice, font.lineHeight, (outra) =>\n isHidden(series[outra].label),\n );\n\n return (\n <text\n className={`${styles.valueLabel} ${markShown(showDataLabels, indiceSerie === serieEmFoco) ? '' : styles.valueLabelHidden}`}\n key={indice}\n textAnchor={textAnchor}\n x={faixa.x + dx}\n y={below ? faixa.y1 + font.lineHeight + 2 : faixa.y1 - 10}\n >\n {formatValue(serie.values[indice] ?? 0)}\n </text>\n );\n })}\n </g>\n );\n })}\n\n {comFaixas && (\n <PointBands\n onHover={focarCategoria}\n onPointerY={setAlturaDoPonteiro}\n plot={plot}\n positions={posicoesCategoria}\n />\n )}\n </CartesianFrame>\n );\n}\n"],"names":["isolada","faixas","indice","alturaDoZero","base","pontas","faixa","topo","fundo","ChartArea","accent","categories","curve","defaultHiddenSeries","emptyMessage","formatTooltipValue","formatValue","formatarNumero","height","includeZero","hiddenSeries","labelAngle","legend","legendAlign","onHiddenSeriesChange","onHoverCategory","series","showDataLabels","showDots","showTooltip","stacked","title","xAxis","yAxis","yAxisRight","gradienteId","useId","font","alturaMedida","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","isOutOfScale","toggle","useSeriesToggle","serie","cores","useMemo","resolveSeriesColors","presencas","useTweenedNumbers","presenca","dominio","naEscala","seriesInScale","visivel","ordem","domainOf","_","stackDiverging","mergeDomains","valor","rotulosDeValor","valueLabelsFor","axisReveal","margins","plot","rotation","useCartesianLayout","valueLabelRoom","escalaCategorias","pointScale","focarCategoria","categoriaEmFoco","useHoveredBand","alturaDoPonteiro","setAlturaDoPonteiro","useState","comFaixas","escalaAlvo","linearScale","minimo","maximo","escalaValores","marcasDeValor","ticksFor","pilhas","faixasPorSerie","indiceSerie","categoria","de","ate","contornos","serieEmFoco","nearestSeriesAt","marcasCategoria","posicoesCategoria","marca","marcasValor","jsxs","CartesianFrame","categoryTooltip","jsx","PointCursor","zero","contorno","oculta","styles","areaPath","linePath","descricao","markShown","below","dx","textAnchor","pointLabelPlacement","outra","PointBands"],"mappings":"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"}