@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 @@
1
+ {"version":3,"file":"Drawer.js","sources":["../../../../src/components/overlays/Drawer/Drawer.tsx"],"sourcesContent":["import type { DialogProps } from '../Dialog';\nimport { DialogFrame } from '../Dialog/DialogFrame';\nimport styles from './Drawer.module.css';\n\nexport type DrawerSide = 'left' | 'right';\nexport type DrawerSize = 'sm' | 'md' | 'lg';\n\nexport interface DrawerProps extends Omit<DialogProps, 'icon' | 'role' | 'size'> {\n side?: DrawerSide;\n size?: DrawerSize;\n}\n\n/** Painel modal preso a lateral da tela, com a mesma mecanica do `Dialog`: foco preso, Esc fecha, a pagina nao rola. */\nexport function Drawer({ side = 'right', size = 'md', ...props }: DrawerProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.drawer, styles[size]].join(' ')}\n underlayClassName={[styles.underlay, styles[side]].join(' ')}\n />\n );\n}\n"],"names":["Drawer","side","size","props","jsx","DialogFrame","styles"],"mappings":";;;AAaO,SAASA,EAAO,EAAE,MAAAC,IAAO,SAAS,MAAAC,IAAO,MAAM,GAAGC,KAAsB;AAC7E,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,kBAAkB,CAACG,EAAO,QAAQA,EAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG;AAAA,MACxD,mBAAmB,CAACI,EAAO,UAAUA,EAAOL,CAAI,CAAC,EAAE,KAAK,GAAG;AAAA,IAAA;AAAA,EAAA;AAGjE;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r="_underlay_wnki2_1",e="_right_wnki2_12",_="_left_wnki2_16",t="_drawer_wnki2_21",d="_sm_wnki2_43",n="_md_wnki2_47",l="_lg_wnki2_51",a={underlay:r,"drawer-fade":"_drawer-fade_wnki2_1",right:e,left:_,drawer:t,"drawer-from-right":"_drawer-from-right_wnki2_1","drawer-from-left":"_drawer-from-left_wnki2_1",sm:d,md:n,lg:l};exports.default=a;exports.drawer=t;exports.left=_;exports.lg=l;exports.md=n;exports.right=e;exports.sm=d;exports.underlay=r;
2
+ //# sourceMappingURL=Drawer.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ const r = "_underlay_wnki2_1", _ = "_right_wnki2_12", e = "_left_wnki2_16", n = "_drawer_wnki2_21", t = "_sm_wnki2_43", w = "_md_wnki2_47", d = "_lg_wnki2_51", a = {
2
+ underlay: r,
3
+ "drawer-fade": "_drawer-fade_wnki2_1",
4
+ right: _,
5
+ left: e,
6
+ drawer: n,
7
+ "drawer-from-right": "_drawer-from-right_wnki2_1",
8
+ "drawer-from-left": "_drawer-from-left_wnki2_1",
9
+ sm: t,
10
+ md: w,
11
+ lg: d
12
+ };
13
+ export {
14
+ a as default,
15
+ n as drawer,
16
+ e as left,
17
+ d as lg,
18
+ w as md,
19
+ _ as right,
20
+ t as sm,
21
+ r as underlay
22
+ };
23
+ //# sourceMappingURL=Drawer.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("react/jsx-runtime"),n=require("react"),S=require("react-dom"),j=require("@react-aria/focus"),q=require("@react-aria/overlays"),P=require("../../../hooks/useMergedRefs.cjs"),K=require("./Menu.module.css.cjs"),A=require("../../../hooks/useSelection/useSelection.cjs");function O(r,d){return o=>{r==null||r(o),d(o)}}function E({children:r,defaultOpen:d=!1,items:o,label:g,onOpenChange:c,open:y}){const a=n.useRef(null),[x,h]=n.useState(d),[l,p]=n.useState("first"),i=y??x;function k(s){h(s),c==null||c(s)}function b(s){p(s),k(!0)}function m(s){var w;k(!1),s&&((w=a.current)==null||w.focus())}const u=r.props,D=P.useMergedRefs(a,u.ref),M=n.cloneElement(r,{ref:D,"aria-haspopup":"menu","aria-expanded":i,onClick:O(u.onClick,()=>i?m(!0):b("first")),onKeyDown:O(u.onKeyDown,s=>{(s.key==="ArrowDown"||s.key==="ArrowUp")&&(s.preventDefault(),b(s.key==="ArrowDown"?"first":"last"))})});return f.jsxs(f.Fragment,{children:[M,i&&typeof document<"u"&&S.createPortal(f.jsx(j.FocusScope,{children:f.jsx(N,{items:o,label:g,openedWith:l,onClose:m,triggerRef:a})}),document.body)]})}function N({items:r,label:d,onClose:o,openedWith:g,triggerRef:c}){var R;const y=n.useRef(null),a=n.useRef(new Map),x=n.useMemo(()=>r.map(e=>({key:e.key,disabled:e.disabled,textValue:e.label})),[r]),h=A.useSelection({items:x,mode:"none"}),{focusedKey:l,focusFirst:p,focusLast:i,focusNext:k,focusPrevious:b,search:m}=h,{overlayProps:u}=q.useOverlay({isOpen:!0,onClose:()=>o(!1),isDismissable:!0,shouldCloseOnBlur:!1,shouldCloseOnInteractOutside:e=>{var t;return!((t=c.current)!=null&&t.contains(e))}},y),{overlayProps:D}=q.useOverlayPosition({targetRef:c,overlayRef:y,placement:"bottom start",offset:6,containerPadding:8,isOpen:!0}),M=Math.min(Number((R=D.style)==null?void 0:R.maxHeight)||360,360);n.useEffect(()=>{g==="last"?i():p()},[]),n.useEffect(()=>{var e;l&&((e=a.current.get(l))==null||e.focus())},[l]);function s(e){var t;e.disabled||(o(!0),(t=e.onSelect)==null||t.call(e))}function w(e){e.key==="ArrowDown"?(e.preventDefault(),k()):e.key==="ArrowUp"?(e.preventDefault(),b()):e.key==="Home"?(e.preventDefault(),p()):e.key==="End"?(e.preventDefault(),i()):e.key==="Escape"||e.key==="Tab"?o(!0):e.key.length===1&&!e.metaKey&&!e.ctrlKey&&m(e.key)}return f.jsx("div",{...u,"data-react-aria-top-layer":"true",ref:y,className:K.default.menu,style:{...D.style,maxHeight:M},role:"menu","aria-label":d,onKeyDown:e=>{var t;w(e),(t=u.onKeyDown)==null||t.call(u,e)},children:r.map(e=>f.jsx("button",{ref:t=>{t?a.current.set(e.key,t):a.current.delete(e.key)},className:K.default.item,type:"button",role:"menuitem",disabled:e.disabled,tabIndex:l===e.key?0:-1,onClick:()=>s(e),children:e.label},e.key))})}exports.Menu=E;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),c=require("react"),A=require("react-dom"),E=require("@react-aria/focus"),R=require("@react-aria/overlays"),I=require("../../../hooks/useMergedRefs.cjs"),o=require("./Menu.module.css.cjs"),T=require("../../../hooks/useSelection/useSelection.cjs"),B=require("../../icons/icons.cjs");function S(n,y){return u=>{n==null||n(u),y(u)}}function F({children:n,defaultOpen:y=!1,items:u,label:D,onOpenChange:a,open:h}){const l=c.useRef(null),[p,w]=c.useState(y),[M,i]=c.useState("first"),f=h??p;function k(t){w(t),a==null||a(t)}function b(t){i(t),k(!0)}function x(t){var g;k(!1),t&&((g=l.current)==null||g.focus())}const m=n.props,d=I.useMergedRefs(l,m.ref),j=c.cloneElement(n,{ref:d,"aria-haspopup":"menu","aria-expanded":f,onClick:S(m.onClick,()=>f?x(!0):b("first")),onKeyDown:S(m.onKeyDown,t=>{(t.key==="ArrowDown"||t.key==="ArrowUp")&&(t.preventDefault(),b(t.key==="ArrowDown"?"first":"last"))})});return r.jsxs(r.Fragment,{children:[j,f&&typeof document<"u"&&A.createPortal(r.jsx(E.FocusScope,{children:r.jsx(H,{items:u,label:D,openedWith:M,onClose:x,triggerRef:l})}),document.body)]})}function K(n){return"items"in n}function H({items:n,label:y,onClose:u,openedWith:D,triggerRef:a}){var q;const h=c.useRef(null),l=c.useRef(new Map),p=c.useMemo(()=>n.flatMap(e=>K(e)?e.items:[e]),[n]),w=c.useMemo(()=>p.map(e=>({key:e.key,disabled:e.disabled,textValue:e.label})),[p]),M=T.useSelection({items:w,mode:"none"}),{focusedKey:i,focusFirst:f,focusLast:k,focusNext:b,focusPrevious:x,search:m}=M,{overlayProps:d}=R.useOverlay({isOpen:!0,onClose:()=>u(!1),isDismissable:!0,shouldCloseOnBlur:!1,shouldCloseOnInteractOutside:e=>{var s;return!((s=a.current)!=null&&s.contains(e))}},h),{overlayProps:j}=R.useOverlayPosition({targetRef:a,overlayRef:h,placement:"bottom start",offset:6,containerPadding:8,isOpen:!0}),t=Math.min(Number((q=j.style)==null?void 0:q.maxHeight)||360,360);c.useEffect(()=>{D==="last"?k():f()},[]),c.useEffect(()=>{var e;i&&((e=l.current.get(i))==null||e.focus())},[i]);function g(e){var s;e.disabled||(u(!0),(s=e.onSelect)==null||s.call(e))}function N(e){const s=e.checked!==void 0;return r.jsxs("button",{"aria-checked":s?e.checked:void 0,"aria-keyshortcuts":e.shortcut,className:[o.default.item,e.tone==="danger"&&o.default.danger].filter(Boolean).join(" "),disabled:e.disabled,onClick:()=>g(e),ref:O=>{O?l.current.set(e.key,O):l.current.delete(e.key)},role:s?"menuitemcheckbox":"menuitem",tabIndex:i===e.key?0:-1,type:"button",children:[e.icon&&r.jsx("span",{"aria-hidden":"true",className:o.default.icon,children:e.icon}),r.jsx("span",{className:o.default.label,children:e.label}),e.shortcut&&r.jsx("kbd",{"aria-hidden":"true",className:o.default.shortcut,children:e.shortcut}),s&&r.jsx(B.IconCheck,{className:[o.default.check,e.checked&&o.default.checkOn].filter(Boolean).join(" ")})]},e.key)}function P(e){e.key==="ArrowDown"?(e.preventDefault(),b()):e.key==="ArrowUp"?(e.preventDefault(),x()):e.key==="Home"?(e.preventDefault(),f()):e.key==="End"?(e.preventDefault(),k()):e.key==="Escape"||e.key==="Tab"?u(!0):e.key.length===1&&!e.metaKey&&!e.ctrlKey&&m(e.key)}return r.jsx("div",{...d,"data-react-aria-top-layer":"true",ref:h,className:o.default.menu,style:{...j.style,maxHeight:t},role:"menu","aria-label":y,onKeyDown:e=>{var s;P(e),(s=d.onKeyDown)==null||s.call(d,e)},children:n.map((e,s)=>K(e)?r.jsxs("div",{"aria-label":e.title,className:o.default.section,role:"group",children:[s>0&&r.jsx("div",{"aria-hidden":"true",className:o.default.divider}),e.title&&r.jsx("div",{"aria-hidden":"true",className:o.default.sectionTitle,children:e.title}),e.items.map(N)]},e.key):N(e))})}exports.Menu=F;
2
2
  //# sourceMappingURL=Menu.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.cjs","sources":["../../../../src/components/overlays/Menu/Menu.tsx"],"sourcesContent":["import {\n cloneElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactElement,\n type Ref,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay, useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Menu.module.css';\n\nexport interface MenuItem {\n disabled?: boolean;\n key: string;\n label: string;\n onSelect?: () => void;\n}\n\nexport interface MenuProps {\n children: ReactElement<Record<string, unknown>>;\n /** Abertura inicial no modo nao controlado. */\n defaultOpen?: boolean;\n items: readonly MenuItem[];\n label: string;\n /** Avisa cada abertura e fechamento pedidos pelo gatilho, pelo teclado, pela opcao ou pelo clique fora. */\n onOpenChange?: (open: boolean) => void;\n /** Controla a abertura; sem ele, o menu guarda o proprio estado. */\n open?: boolean;\n}\n\n/** Encadeia o manipulador do gatilho ao do menu, em vez de substitui-lo. */\nfunction encadear<E>(proprio: ((evento: E) => void) | undefined, seguinte: (evento: E) => void) {\n return (evento: E) => {\n proprio?.(evento);\n seguinte(evento);\n };\n}\n\nexport function Menu({ children, defaultOpen = false, items, label, onOpenChange, open: controlledOpen }: MenuProps) {\n const triggerRef = useRef<HTMLElement>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [openedWith, setOpenedWith] = useState<'first' | 'last'>('first');\n const open = controlledOpen ?? internalOpen;\n\n function setOpen(proximo: boolean) {\n setInternalOpen(proximo);\n onOpenChange?.(proximo);\n }\n\n function abrir(from: 'first' | 'last') {\n setOpenedWith(from);\n setOpen(true);\n }\n\n // O foco volta na hora, antes de o `onSelect` montar o que vem depois, como um campo com `autoFocus` ou\n // um Dialog, que guarda o elemento em foco para devolver. Clique fora nao devolve: o foco e de quem foi clicado.\n function fechar(devolverFoco: boolean) {\n setOpen(false);\n\n if (devolverFoco) {\n triggerRef.current?.focus();\n }\n }\n\n const dono = children.props;\n const mergedTriggerRef = useMergedRefs(triggerRef, dono.ref as Ref<HTMLElement> | undefined);\n const trigger = cloneElement(children, {\n ref: mergedTriggerRef,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n onClick: encadear(dono.onClick as (evento: unknown) => void, () =>\n open ? fechar(true) : abrir('first'),\n ),\n onKeyDown: encadear(dono.onKeyDown as (evento: KeyboardEvent) => void, (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n abrir(event.key === 'ArrowDown' ? 'first' : 'last');\n }\n }),\n });\n\n return (\n <>\n {trigger}\n {open &&\n typeof document !== 'undefined' &&\n createPortal(\n // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.\n // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.\n <FocusScope>\n <MenuList\n items={items}\n label={label}\n openedWith={openedWith}\n onClose={fechar}\n triggerRef={triggerRef}\n />\n </FocusScope>,\n document.body,\n )}\n </>\n );\n}\n\nfunction MenuList({\n items,\n label,\n onClose,\n openedWith,\n triggerRef,\n}: {\n items: readonly MenuItem[];\n label: string;\n onClose: (devolverFoco: boolean) => void;\n openedWith: 'first' | 'last';\n triggerRef: React.RefObject<HTMLElement | null>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const nodes = useRef(new Map<string, HTMLElement>());\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({ items: collection, mode: 'none' });\n const { focusedKey, focusFirst, focusLast, focusNext, focusPrevious, search } = selection;\n\n // useOverlayPosition entrega toda a altura disponivel; limitamos para que\n // uma lista longa nao ocupe a tela inteira.\n // Sem isto o gatilho conta como \"fora\": o ponteiro fecha o menu e o clique\n // dele reabre em seguida, e o menu pisca sem abrir.\n const { overlayProps } = useOverlay(\n {\n isOpen: true,\n onClose: () => onClose(false),\n isDismissable: true,\n shouldCloseOnBlur: false,\n shouldCloseOnInteractOutside: (elemento) => !triggerRef.current?.contains(elemento),\n },\n ref,\n );\n const { overlayProps: positionProps } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: ref,\n placement: 'bottom start',\n offset: 6,\n containerPadding: 8,\n isOpen: true,\n });\n\n const alturaMaxima = Math.min(Number(positionProps.style?.maxHeight) || 360, 360);\n\n useEffect(() => {\n if (openedWith === 'last') {\n focusLast();\n } else {\n focusFirst();\n }\n // Posicao inicial depende apenas de como o menu foi aberto.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (focusedKey) {\n nodes.current.get(focusedKey)?.focus();\n }\n }, [focusedKey]);\n\n function acionar(item: MenuItem) {\n if (item.disabled) {\n return;\n }\n\n onClose(true);\n item.onSelect?.();\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPrevious();\n } else if (event.key === 'Home') {\n event.preventDefault();\n focusFirst();\n } else if (event.key === 'End') {\n event.preventDefault();\n focusLast();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n onClose(true);\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey) {\n search(event.key);\n }\n }\n\n return (\n <div\n {...overlayProps}\n data-react-aria-top-layer=\"true\"\n ref={ref}\n className={styles.menu}\n style={{ ...positionProps.style, maxHeight: alturaMaxima }}\n role=\"menu\"\n aria-label={label}\n onKeyDown={(event) => {\n // Espalhar overlayProps antes nao basta: este onKeyDown o substituiria.\n handleKeyDown(event);\n overlayProps.onKeyDown?.(event);\n }}\n >\n {items.map((item) => (\n <button\n key={item.key}\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n className={styles.item}\n type=\"button\"\n role=\"menuitem\"\n disabled={item.disabled}\n tabIndex={focusedKey === item.key ? 0 : -1}\n onClick={() => acionar(item)}\n >\n {item.label}\n </button>\n ))}\n </div>\n );\n}\n"],"names":["encadear","proprio","seguinte","evento","Menu","children","defaultOpen","items","label","onOpenChange","controlledOpen","triggerRef","useRef","internalOpen","setInternalOpen","useState","openedWith","setOpenedWith","open","setOpen","proximo","abrir","from","fechar","devolverFoco","_a","dono","mergedTriggerRef","useMergedRefs","trigger","cloneElement","event","jsxs","Fragment","createPortal","FocusScope","jsx","MenuList","onClose","ref","nodes","collection","useMemo","item","selection","useSelection","focusedKey","focusFirst","focusLast","focusNext","focusPrevious","search","overlayProps","useOverlay","elemento","positionProps","useOverlayPosition","alturaMaxima","useEffect","acionar","handleKeyDown","styles","node"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.cjs","sources":["../../../../src/components/overlays/Menu/Menu.tsx"],"sourcesContent":["import {\n cloneElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay, useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport { IconCheck } from '../../icons';\nimport styles from './Menu.module.css';\n\nexport interface MenuItem {\n /** Com ele, o item e de marcar e mostra o visto quando marcado, como o tipo atual de um bloco. */\n checked?: boolean;\n disabled?: boolean;\n /** Icone decorativo antes do texto. */\n icon?: ReactNode;\n key: string;\n label: string;\n onSelect?: () => void;\n /** Atalho escrito a direita, como `Ctrl+D`, e anunciado em `aria-keyshortcuts`. */\n shortcut?: string;\n /** `danger` para a acao que destroi, como remover. */\n tone?: 'danger';\n}\n\n/** Grupo de itens, com titulo opcional; entre dois grupos, o menu desenha o divisor. */\nexport interface MenuSection {\n items: readonly MenuItem[];\n key: string;\n title?: string;\n}\n\nexport interface MenuProps {\n children: ReactElement<Record<string, unknown>>;\n /** Abertura inicial no modo nao controlado. */\n defaultOpen?: boolean;\n items: readonly (MenuItem | MenuSection)[];\n label: string;\n /** Avisa cada abertura e fechamento pedidos pelo gatilho, pelo teclado, pela opcao ou pelo clique fora. */\n onOpenChange?: (open: boolean) => void;\n /** Controla a abertura; sem ele, o menu guarda o proprio estado. */\n open?: boolean;\n}\n\n/** Encadeia o manipulador do gatilho ao do menu, em vez de substitui-lo. */\nfunction encadear<E>(proprio: ((evento: E) => void) | undefined, seguinte: (evento: E) => void) {\n return (evento: E) => {\n proprio?.(evento);\n seguinte(evento);\n };\n}\n\nexport function Menu({ children, defaultOpen = false, items, label, onOpenChange, open: controlledOpen }: MenuProps) {\n const triggerRef = useRef<HTMLElement>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [openedWith, setOpenedWith] = useState<'first' | 'last'>('first');\n const open = controlledOpen ?? internalOpen;\n\n function setOpen(proximo: boolean) {\n setInternalOpen(proximo);\n onOpenChange?.(proximo);\n }\n\n function abrir(from: 'first' | 'last') {\n setOpenedWith(from);\n setOpen(true);\n }\n\n // O foco volta na hora, antes de o `onSelect` montar o que vem depois, como um campo com `autoFocus` ou\n // um Dialog, que guarda o elemento em foco para devolver. Clique fora nao devolve: o foco e de quem foi clicado.\n function fechar(devolverFoco: boolean) {\n setOpen(false);\n\n if (devolverFoco) {\n triggerRef.current?.focus();\n }\n }\n\n const dono = children.props;\n const mergedTriggerRef = useMergedRefs(triggerRef, dono.ref as Ref<HTMLElement> | undefined);\n const trigger = cloneElement(children, {\n ref: mergedTriggerRef,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n onClick: encadear(dono.onClick as (evento: unknown) => void, () =>\n open ? fechar(true) : abrir('first'),\n ),\n onKeyDown: encadear(dono.onKeyDown as (evento: KeyboardEvent) => void, (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n abrir(event.key === 'ArrowDown' ? 'first' : 'last');\n }\n }),\n });\n\n return (\n <>\n {trigger}\n {open &&\n typeof document !== 'undefined' &&\n createPortal(\n // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.\n // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.\n <FocusScope>\n <MenuList\n items={items}\n label={label}\n openedWith={openedWith}\n onClose={fechar}\n triggerRef={triggerRef}\n />\n </FocusScope>,\n document.body,\n )}\n </>\n );\n}\n\nfunction ehSecao(entrada: MenuItem | MenuSection): entrada is MenuSection {\n return 'items' in entrada;\n}\n\nfunction MenuList({\n items: entradas,\n label,\n onClose,\n openedWith,\n triggerRef,\n}: {\n items: readonly (MenuItem | MenuSection)[];\n label: string;\n onClose: (devolverFoco: boolean) => void;\n openedWith: 'first' | 'last';\n triggerRef: React.RefObject<HTMLElement | null>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const nodes = useRef(new Map<string, HTMLElement>());\n // O teclado percorre os itens de todos os grupos como uma lista so.\n const items = useMemo(() => entradas.flatMap((entrada) => (ehSecao(entrada) ? entrada.items : [entrada])), [entradas]);\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({ items: collection, mode: 'none' });\n const { focusedKey, focusFirst, focusLast, focusNext, focusPrevious, search } = selection;\n\n // useOverlayPosition entrega toda a altura disponivel; limitamos para que\n // uma lista longa nao ocupe a tela inteira.\n // Sem isto o gatilho conta como \"fora\": o ponteiro fecha o menu e o clique\n // dele reabre em seguida, e o menu pisca sem abrir.\n const { overlayProps } = useOverlay(\n {\n isOpen: true,\n onClose: () => onClose(false),\n isDismissable: true,\n shouldCloseOnBlur: false,\n shouldCloseOnInteractOutside: (elemento) => !triggerRef.current?.contains(elemento),\n },\n ref,\n );\n const { overlayProps: positionProps } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: ref,\n placement: 'bottom start',\n offset: 6,\n containerPadding: 8,\n isOpen: true,\n });\n\n const alturaMaxima = Math.min(Number(positionProps.style?.maxHeight) || 360, 360);\n\n useEffect(() => {\n if (openedWith === 'last') {\n focusLast();\n } else {\n focusFirst();\n }\n // Posicao inicial depende apenas de como o menu foi aberto.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (focusedKey) {\n nodes.current.get(focusedKey)?.focus();\n }\n }, [focusedKey]);\n\n function acionar(item: MenuItem) {\n if (item.disabled) {\n return;\n }\n\n onClose(true);\n item.onSelect?.();\n }\n\n function renderizarItem(item: MenuItem) {\n const marcavel = item.checked !== undefined;\n\n return (\n <button\n aria-checked={marcavel ? item.checked : undefined}\n aria-keyshortcuts={item.shortcut}\n className={[styles.item, item.tone === 'danger' && styles.danger].filter(Boolean).join(' ')}\n disabled={item.disabled}\n key={item.key}\n onClick={() => acionar(item)}\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n role={marcavel ? 'menuitemcheckbox' : 'menuitem'}\n tabIndex={focusedKey === item.key ? 0 : -1}\n type=\"button\"\n >\n {item.icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {item.icon}\n </span>\n )}\n <span className={styles.label}>{item.label}</span>\n {item.shortcut && (\n <kbd aria-hidden=\"true\" className={styles.shortcut}>\n {item.shortcut}\n </kbd>\n )}\n {marcavel && <IconCheck className={[styles.check, item.checked && styles.checkOn].filter(Boolean).join(' ')} />}\n </button>\n );\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPrevious();\n } else if (event.key === 'Home') {\n event.preventDefault();\n focusFirst();\n } else if (event.key === 'End') {\n event.preventDefault();\n focusLast();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n onClose(true);\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey) {\n search(event.key);\n }\n }\n\n return (\n <div\n {...overlayProps}\n data-react-aria-top-layer=\"true\"\n ref={ref}\n className={styles.menu}\n style={{ ...positionProps.style, maxHeight: alturaMaxima }}\n role=\"menu\"\n aria-label={label}\n onKeyDown={(event) => {\n // Espalhar overlayProps antes nao basta: este onKeyDown o substituiria.\n handleKeyDown(event);\n overlayProps.onKeyDown?.(event);\n }}\n >\n {entradas.map((entrada, indice) => {\n if (!ehSecao(entrada)) {\n return renderizarItem(entrada);\n }\n\n return (\n <div aria-label={entrada.title} className={styles.section} key={entrada.key} role=\"group\">\n {indice > 0 && <div aria-hidden=\"true\" className={styles.divider} />}\n {entrada.title && (\n <div aria-hidden=\"true\" className={styles.sectionTitle}>\n {entrada.title}\n </div>\n )}\n {entrada.items.map(renderizarItem)}\n </div>\n );\n })}\n </div>\n );\n}\n"],"names":["encadear","proprio","seguinte","evento","Menu","children","defaultOpen","items","label","onOpenChange","controlledOpen","triggerRef","useRef","internalOpen","setInternalOpen","useState","openedWith","setOpenedWith","open","setOpen","proximo","abrir","from","fechar","devolverFoco","_a","dono","mergedTriggerRef","useMergedRefs","trigger","cloneElement","event","jsxs","Fragment","createPortal","FocusScope","jsx","MenuList","ehSecao","entrada","entradas","onClose","ref","nodes","useMemo","collection","item","selection","useSelection","focusedKey","focusFirst","focusLast","focusNext","focusPrevious","search","overlayProps","useOverlay","elemento","positionProps","useOverlayPosition","alturaMaxima","useEffect","acionar","renderizarItem","marcavel","styles","node","IconCheck","handleKeyDown","indice"],"mappings":"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"}
@@ -1,74 +1,78 @@
1
- import { jsxs as E, Fragment as N, jsx as w } from "react/jsx-runtime";
2
- import { useRef as K, useState as O, cloneElement as S, useMemo as F, useEffect as A } from "react";
3
- import { createPortal as H } from "react-dom";
4
- import { FocusScope as I } from "@react-aria/focus";
5
- import { useOverlay as j, useOverlayPosition as L } from "@react-aria/overlays";
6
- import { useMergedRefs as T } from "../../../hooks/useMergedRefs.js";
7
- import P from "./Menu.module.css.js";
8
- import { useSelection as U } from "../../../hooks/useSelection/useSelection.js";
9
- function R(o, f) {
10
- return (s) => {
11
- o == null || o(s), f(s);
1
+ import { jsxs as K, Fragment as F, jsx as n } from "react/jsx-runtime";
2
+ import { useRef as M, useState as P, cloneElement as H, useMemo as R, useEffect as S } from "react";
3
+ import { createPortal as T } from "react-dom";
4
+ import { FocusScope as C } from "@react-aria/focus";
5
+ import { useOverlay as L, useOverlayPosition as U } from "@react-aria/overlays";
6
+ import { useMergedRefs as W } from "../../../hooks/useMergedRefs.js";
7
+ import t from "./Menu.module.css.js";
8
+ import { useSelection as z } from "../../../hooks/useSelection/useSelection.js";
9
+ import { IconCheck as V } from "../../icons/icons.js";
10
+ function j(s, d) {
11
+ return (c) => {
12
+ s == null || s(c), d(c);
12
13
  };
13
14
  }
14
- function X({ children: o, defaultOpen: f = !1, items: s, label: D, onOpenChange: l, open: i }) {
15
- const a = K(null), [h, g] = O(f), [u, d] = O("first"), c = i ?? h;
16
- function y(t) {
17
- g(t), l == null || l(t);
15
+ function ee({ children: s, defaultOpen: d = !1, items: c, label: g, onOpenChange: l, open: m }) {
16
+ const i = M(null), [h, N] = P(d), [x, a] = P("first"), u = m ?? h;
17
+ function y(o) {
18
+ N(o), l == null || l(o);
18
19
  }
19
- function p(t) {
20
- d(t), y(!0);
20
+ function k(o) {
21
+ a(o), y(!0);
21
22
  }
22
- function m(t) {
23
- var b;
24
- y(!1), t && ((b = a.current) == null || b.focus());
23
+ function b(o) {
24
+ var D;
25
+ y(!1), o && ((D = i.current) == null || D.focus());
25
26
  }
26
- const n = o.props, k = T(a, n.ref), x = S(o, {
27
- ref: k,
27
+ const p = s.props, f = W(i, p.ref), w = H(s, {
28
+ ref: f,
28
29
  "aria-haspopup": "menu",
29
- "aria-expanded": c,
30
- onClick: R(
31
- n.onClick,
32
- () => c ? m(!0) : p("first")
30
+ "aria-expanded": u,
31
+ onClick: j(
32
+ p.onClick,
33
+ () => u ? b(!0) : k("first")
33
34
  ),
34
- onKeyDown: R(n.onKeyDown, (t) => {
35
- (t.key === "ArrowDown" || t.key === "ArrowUp") && (t.preventDefault(), p(t.key === "ArrowDown" ? "first" : "last"));
35
+ onKeyDown: j(p.onKeyDown, (o) => {
36
+ (o.key === "ArrowDown" || o.key === "ArrowUp") && (o.preventDefault(), k(o.key === "ArrowDown" ? "first" : "last"));
36
37
  })
37
38
  });
38
- return /* @__PURE__ */ E(N, { children: [
39
- x,
40
- c && typeof document < "u" && H(
39
+ return /* @__PURE__ */ K(F, { children: [
40
+ w,
41
+ u && typeof document < "u" && T(
41
42
  // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.
42
43
  // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.
43
- /* @__PURE__ */ w(I, { children: /* @__PURE__ */ w(
44
- W,
44
+ /* @__PURE__ */ n(C, { children: /* @__PURE__ */ n(
45
+ q,
45
46
  {
46
- items: s,
47
- label: D,
48
- openedWith: u,
49
- onClose: m,
50
- triggerRef: a
47
+ items: c,
48
+ label: g,
49
+ openedWith: x,
50
+ onClose: b,
51
+ triggerRef: i
51
52
  }
52
53
  ) }),
53
54
  document.body
54
55
  )
55
56
  ] });
56
57
  }
57
- function W({
58
- items: o,
59
- label: f,
60
- onClose: s,
61
- openedWith: D,
58
+ function E(s) {
59
+ return "items" in s;
60
+ }
61
+ function q({
62
+ items: s,
63
+ label: d,
64
+ onClose: c,
65
+ openedWith: g,
62
66
  triggerRef: l
63
67
  }) {
64
- var M;
65
- const i = K(null), a = K(/* @__PURE__ */ new Map()), h = F(
66
- () => o.map((e) => ({ key: e.key, disabled: e.disabled, textValue: e.label })),
67
- [o]
68
- ), g = U({ items: h, mode: "none" }), { focusedKey: u, focusFirst: d, focusLast: c, focusNext: y, focusPrevious: p, search: m } = g, { overlayProps: n } = j(
68
+ var A;
69
+ const m = M(null), i = M(/* @__PURE__ */ new Map()), h = R(() => s.flatMap((e) => E(e) ? e.items : [e]), [s]), N = R(
70
+ () => h.map((e) => ({ key: e.key, disabled: e.disabled, textValue: e.label })),
71
+ [h]
72
+ ), x = z({ items: N, mode: "none" }), { focusedKey: a, focusFirst: u, focusLast: y, focusNext: k, focusPrevious: b, search: p } = x, { overlayProps: f } = L(
69
73
  {
70
74
  isOpen: !0,
71
- onClose: () => s(!1),
75
+ onClose: () => c(!1),
72
76
  isDismissable: !0,
73
77
  shouldCloseOnBlur: !1,
74
78
  shouldCloseOnInteractOutside: (e) => {
@@ -76,62 +80,77 @@ function W({
76
80
  return !((r = l.current) != null && r.contains(e));
77
81
  }
78
82
  },
79
- i
80
- ), { overlayProps: k } = L({
83
+ m
84
+ ), { overlayProps: w } = U({
81
85
  targetRef: l,
82
- overlayRef: i,
86
+ overlayRef: m,
83
87
  placement: "bottom start",
84
88
  offset: 6,
85
89
  containerPadding: 8,
86
90
  isOpen: !0
87
- }), x = Math.min(Number((M = k.style) == null ? void 0 : M.maxHeight) || 360, 360);
88
- A(() => {
89
- D === "last" ? c() : d();
90
- }, []), A(() => {
91
+ }), o = Math.min(Number((A = w.style) == null ? void 0 : A.maxHeight) || 360, 360);
92
+ S(() => {
93
+ g === "last" ? y() : u();
94
+ }, []), S(() => {
91
95
  var e;
92
- u && ((e = a.current.get(u)) == null || e.focus());
93
- }, [u]);
94
- function t(e) {
96
+ a && ((e = i.current.get(a)) == null || e.focus());
97
+ }, [a]);
98
+ function D(e) {
95
99
  var r;
96
- e.disabled || (s(!0), (r = e.onSelect) == null || r.call(e));
100
+ e.disabled || (c(!0), (r = e.onSelect) == null || r.call(e));
101
+ }
102
+ function O(e) {
103
+ const r = e.checked !== void 0;
104
+ return /* @__PURE__ */ K(
105
+ "button",
106
+ {
107
+ "aria-checked": r ? e.checked : void 0,
108
+ "aria-keyshortcuts": e.shortcut,
109
+ className: [t.item, e.tone === "danger" && t.danger].filter(Boolean).join(" "),
110
+ disabled: e.disabled,
111
+ onClick: () => D(e),
112
+ ref: (I) => {
113
+ I ? i.current.set(e.key, I) : i.current.delete(e.key);
114
+ },
115
+ role: r ? "menuitemcheckbox" : "menuitem",
116
+ tabIndex: a === e.key ? 0 : -1,
117
+ type: "button",
118
+ children: [
119
+ e.icon && /* @__PURE__ */ n("span", { "aria-hidden": "true", className: t.icon, children: e.icon }),
120
+ /* @__PURE__ */ n("span", { className: t.label, children: e.label }),
121
+ e.shortcut && /* @__PURE__ */ n("kbd", { "aria-hidden": "true", className: t.shortcut, children: e.shortcut }),
122
+ r && /* @__PURE__ */ n(V, { className: [t.check, e.checked && t.checkOn].filter(Boolean).join(" ") })
123
+ ]
124
+ },
125
+ e.key
126
+ );
97
127
  }
98
- function b(e) {
99
- e.key === "ArrowDown" ? (e.preventDefault(), y()) : e.key === "ArrowUp" ? (e.preventDefault(), p()) : e.key === "Home" ? (e.preventDefault(), d()) : e.key === "End" ? (e.preventDefault(), c()) : e.key === "Escape" || e.key === "Tab" ? s(!0) : e.key.length === 1 && !e.metaKey && !e.ctrlKey && m(e.key);
128
+ function B(e) {
129
+ e.key === "ArrowDown" ? (e.preventDefault(), k()) : e.key === "ArrowUp" ? (e.preventDefault(), b()) : e.key === "Home" ? (e.preventDefault(), u()) : e.key === "End" ? (e.preventDefault(), y()) : e.key === "Escape" || e.key === "Tab" ? c(!0) : e.key.length === 1 && !e.metaKey && !e.ctrlKey && p(e.key);
100
130
  }
101
- return /* @__PURE__ */ w(
131
+ return /* @__PURE__ */ n(
102
132
  "div",
103
133
  {
104
- ...n,
134
+ ...f,
105
135
  "data-react-aria-top-layer": "true",
106
- ref: i,
107
- className: P.menu,
108
- style: { ...k.style, maxHeight: x },
136
+ ref: m,
137
+ className: t.menu,
138
+ style: { ...w.style, maxHeight: o },
109
139
  role: "menu",
110
- "aria-label": f,
140
+ "aria-label": d,
111
141
  onKeyDown: (e) => {
112
142
  var r;
113
- b(e), (r = n.onKeyDown) == null || r.call(n, e);
143
+ B(e), (r = f.onKeyDown) == null || r.call(f, e);
114
144
  },
115
- children: o.map((e) => /* @__PURE__ */ w(
116
- "button",
117
- {
118
- ref: (r) => {
119
- r ? a.current.set(e.key, r) : a.current.delete(e.key);
120
- },
121
- className: P.item,
122
- type: "button",
123
- role: "menuitem",
124
- disabled: e.disabled,
125
- tabIndex: u === e.key ? 0 : -1,
126
- onClick: () => t(e),
127
- children: e.label
128
- },
129
- e.key
130
- ))
145
+ children: s.map((e, r) => E(e) ? /* @__PURE__ */ K("div", { "aria-label": e.title, className: t.section, role: "group", children: [
146
+ r > 0 && /* @__PURE__ */ n("div", { "aria-hidden": "true", className: t.divider }),
147
+ e.title && /* @__PURE__ */ n("div", { "aria-hidden": "true", className: t.sectionTitle, children: e.title }),
148
+ e.items.map(O)
149
+ ] }, e.key) : O(e))
131
150
  }
132
151
  );
133
152
  }
134
153
  export {
135
- X as Menu
154
+ ee as Menu
136
155
  };
137
156
  //# sourceMappingURL=Menu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","sources":["../../../../src/components/overlays/Menu/Menu.tsx"],"sourcesContent":["import {\n cloneElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactElement,\n type Ref,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay, useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Menu.module.css';\n\nexport interface MenuItem {\n disabled?: boolean;\n key: string;\n label: string;\n onSelect?: () => void;\n}\n\nexport interface MenuProps {\n children: ReactElement<Record<string, unknown>>;\n /** Abertura inicial no modo nao controlado. */\n defaultOpen?: boolean;\n items: readonly MenuItem[];\n label: string;\n /** Avisa cada abertura e fechamento pedidos pelo gatilho, pelo teclado, pela opcao ou pelo clique fora. */\n onOpenChange?: (open: boolean) => void;\n /** Controla a abertura; sem ele, o menu guarda o proprio estado. */\n open?: boolean;\n}\n\n/** Encadeia o manipulador do gatilho ao do menu, em vez de substitui-lo. */\nfunction encadear<E>(proprio: ((evento: E) => void) | undefined, seguinte: (evento: E) => void) {\n return (evento: E) => {\n proprio?.(evento);\n seguinte(evento);\n };\n}\n\nexport function Menu({ children, defaultOpen = false, items, label, onOpenChange, open: controlledOpen }: MenuProps) {\n const triggerRef = useRef<HTMLElement>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [openedWith, setOpenedWith] = useState<'first' | 'last'>('first');\n const open = controlledOpen ?? internalOpen;\n\n function setOpen(proximo: boolean) {\n setInternalOpen(proximo);\n onOpenChange?.(proximo);\n }\n\n function abrir(from: 'first' | 'last') {\n setOpenedWith(from);\n setOpen(true);\n }\n\n // O foco volta na hora, antes de o `onSelect` montar o que vem depois, como um campo com `autoFocus` ou\n // um Dialog, que guarda o elemento em foco para devolver. Clique fora nao devolve: o foco e de quem foi clicado.\n function fechar(devolverFoco: boolean) {\n setOpen(false);\n\n if (devolverFoco) {\n triggerRef.current?.focus();\n }\n }\n\n const dono = children.props;\n const mergedTriggerRef = useMergedRefs(triggerRef, dono.ref as Ref<HTMLElement> | undefined);\n const trigger = cloneElement(children, {\n ref: mergedTriggerRef,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n onClick: encadear(dono.onClick as (evento: unknown) => void, () =>\n open ? fechar(true) : abrir('first'),\n ),\n onKeyDown: encadear(dono.onKeyDown as (evento: KeyboardEvent) => void, (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n abrir(event.key === 'ArrowDown' ? 'first' : 'last');\n }\n }),\n });\n\n return (\n <>\n {trigger}\n {open &&\n typeof document !== 'undefined' &&\n createPortal(\n // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.\n // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.\n <FocusScope>\n <MenuList\n items={items}\n label={label}\n openedWith={openedWith}\n onClose={fechar}\n triggerRef={triggerRef}\n />\n </FocusScope>,\n document.body,\n )}\n </>\n );\n}\n\nfunction MenuList({\n items,\n label,\n onClose,\n openedWith,\n triggerRef,\n}: {\n items: readonly MenuItem[];\n label: string;\n onClose: (devolverFoco: boolean) => void;\n openedWith: 'first' | 'last';\n triggerRef: React.RefObject<HTMLElement | null>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const nodes = useRef(new Map<string, HTMLElement>());\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({ items: collection, mode: 'none' });\n const { focusedKey, focusFirst, focusLast, focusNext, focusPrevious, search } = selection;\n\n // useOverlayPosition entrega toda a altura disponivel; limitamos para que\n // uma lista longa nao ocupe a tela inteira.\n // Sem isto o gatilho conta como \"fora\": o ponteiro fecha o menu e o clique\n // dele reabre em seguida, e o menu pisca sem abrir.\n const { overlayProps } = useOverlay(\n {\n isOpen: true,\n onClose: () => onClose(false),\n isDismissable: true,\n shouldCloseOnBlur: false,\n shouldCloseOnInteractOutside: (elemento) => !triggerRef.current?.contains(elemento),\n },\n ref,\n );\n const { overlayProps: positionProps } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: ref,\n placement: 'bottom start',\n offset: 6,\n containerPadding: 8,\n isOpen: true,\n });\n\n const alturaMaxima = Math.min(Number(positionProps.style?.maxHeight) || 360, 360);\n\n useEffect(() => {\n if (openedWith === 'last') {\n focusLast();\n } else {\n focusFirst();\n }\n // Posicao inicial depende apenas de como o menu foi aberto.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (focusedKey) {\n nodes.current.get(focusedKey)?.focus();\n }\n }, [focusedKey]);\n\n function acionar(item: MenuItem) {\n if (item.disabled) {\n return;\n }\n\n onClose(true);\n item.onSelect?.();\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPrevious();\n } else if (event.key === 'Home') {\n event.preventDefault();\n focusFirst();\n } else if (event.key === 'End') {\n event.preventDefault();\n focusLast();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n onClose(true);\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey) {\n search(event.key);\n }\n }\n\n return (\n <div\n {...overlayProps}\n data-react-aria-top-layer=\"true\"\n ref={ref}\n className={styles.menu}\n style={{ ...positionProps.style, maxHeight: alturaMaxima }}\n role=\"menu\"\n aria-label={label}\n onKeyDown={(event) => {\n // Espalhar overlayProps antes nao basta: este onKeyDown o substituiria.\n handleKeyDown(event);\n overlayProps.onKeyDown?.(event);\n }}\n >\n {items.map((item) => (\n <button\n key={item.key}\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n className={styles.item}\n type=\"button\"\n role=\"menuitem\"\n disabled={item.disabled}\n tabIndex={focusedKey === item.key ? 0 : -1}\n onClick={() => acionar(item)}\n >\n {item.label}\n </button>\n ))}\n </div>\n );\n}\n"],"names":["encadear","proprio","seguinte","evento","Menu","children","defaultOpen","items","label","onOpenChange","controlledOpen","triggerRef","useRef","internalOpen","setInternalOpen","useState","openedWith","setOpenedWith","open","setOpen","proximo","abrir","from","fechar","devolverFoco","_a","dono","mergedTriggerRef","useMergedRefs","trigger","cloneElement","event","jsxs","Fragment","createPortal","FocusScope","jsx","MenuList","onClose","ref","nodes","collection","useMemo","item","selection","useSelection","focusedKey","focusFirst","focusLast","focusNext","focusPrevious","search","overlayProps","useOverlay","elemento","positionProps","useOverlayPosition","alturaMaxima","useEffect","acionar","handleKeyDown","styles","node"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.js","sources":["../../../../src/components/overlays/Menu/Menu.tsx"],"sourcesContent":["import {\n cloneElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay, useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport { IconCheck } from '../../icons';\nimport styles from './Menu.module.css';\n\nexport interface MenuItem {\n /** Com ele, o item e de marcar e mostra o visto quando marcado, como o tipo atual de um bloco. */\n checked?: boolean;\n disabled?: boolean;\n /** Icone decorativo antes do texto. */\n icon?: ReactNode;\n key: string;\n label: string;\n onSelect?: () => void;\n /** Atalho escrito a direita, como `Ctrl+D`, e anunciado em `aria-keyshortcuts`. */\n shortcut?: string;\n /** `danger` para a acao que destroi, como remover. */\n tone?: 'danger';\n}\n\n/** Grupo de itens, com titulo opcional; entre dois grupos, o menu desenha o divisor. */\nexport interface MenuSection {\n items: readonly MenuItem[];\n key: string;\n title?: string;\n}\n\nexport interface MenuProps {\n children: ReactElement<Record<string, unknown>>;\n /** Abertura inicial no modo nao controlado. */\n defaultOpen?: boolean;\n items: readonly (MenuItem | MenuSection)[];\n label: string;\n /** Avisa cada abertura e fechamento pedidos pelo gatilho, pelo teclado, pela opcao ou pelo clique fora. */\n onOpenChange?: (open: boolean) => void;\n /** Controla a abertura; sem ele, o menu guarda o proprio estado. */\n open?: boolean;\n}\n\n/** Encadeia o manipulador do gatilho ao do menu, em vez de substitui-lo. */\nfunction encadear<E>(proprio: ((evento: E) => void) | undefined, seguinte: (evento: E) => void) {\n return (evento: E) => {\n proprio?.(evento);\n seguinte(evento);\n };\n}\n\nexport function Menu({ children, defaultOpen = false, items, label, onOpenChange, open: controlledOpen }: MenuProps) {\n const triggerRef = useRef<HTMLElement>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [openedWith, setOpenedWith] = useState<'first' | 'last'>('first');\n const open = controlledOpen ?? internalOpen;\n\n function setOpen(proximo: boolean) {\n setInternalOpen(proximo);\n onOpenChange?.(proximo);\n }\n\n function abrir(from: 'first' | 'last') {\n setOpenedWith(from);\n setOpen(true);\n }\n\n // O foco volta na hora, antes de o `onSelect` montar o que vem depois, como um campo com `autoFocus` ou\n // um Dialog, que guarda o elemento em foco para devolver. Clique fora nao devolve: o foco e de quem foi clicado.\n function fechar(devolverFoco: boolean) {\n setOpen(false);\n\n if (devolverFoco) {\n triggerRef.current?.focus();\n }\n }\n\n const dono = children.props;\n const mergedTriggerRef = useMergedRefs(triggerRef, dono.ref as Ref<HTMLElement> | undefined);\n const trigger = cloneElement(children, {\n ref: mergedTriggerRef,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n onClick: encadear(dono.onClick as (evento: unknown) => void, () =>\n open ? fechar(true) : abrir('first'),\n ),\n onKeyDown: encadear(dono.onKeyDown as (evento: KeyboardEvent) => void, (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n abrir(event.key === 'ArrowDown' ? 'first' : 'last');\n }\n }),\n });\n\n return (\n <>\n {trigger}\n {open &&\n typeof document !== 'undefined' &&\n createPortal(\n // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.\n // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.\n <FocusScope>\n <MenuList\n items={items}\n label={label}\n openedWith={openedWith}\n onClose={fechar}\n triggerRef={triggerRef}\n />\n </FocusScope>,\n document.body,\n )}\n </>\n );\n}\n\nfunction ehSecao(entrada: MenuItem | MenuSection): entrada is MenuSection {\n return 'items' in entrada;\n}\n\nfunction MenuList({\n items: entradas,\n label,\n onClose,\n openedWith,\n triggerRef,\n}: {\n items: readonly (MenuItem | MenuSection)[];\n label: string;\n onClose: (devolverFoco: boolean) => void;\n openedWith: 'first' | 'last';\n triggerRef: React.RefObject<HTMLElement | null>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const nodes = useRef(new Map<string, HTMLElement>());\n // O teclado percorre os itens de todos os grupos como uma lista so.\n const items = useMemo(() => entradas.flatMap((entrada) => (ehSecao(entrada) ? entrada.items : [entrada])), [entradas]);\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({ items: collection, mode: 'none' });\n const { focusedKey, focusFirst, focusLast, focusNext, focusPrevious, search } = selection;\n\n // useOverlayPosition entrega toda a altura disponivel; limitamos para que\n // uma lista longa nao ocupe a tela inteira.\n // Sem isto o gatilho conta como \"fora\": o ponteiro fecha o menu e o clique\n // dele reabre em seguida, e o menu pisca sem abrir.\n const { overlayProps } = useOverlay(\n {\n isOpen: true,\n onClose: () => onClose(false),\n isDismissable: true,\n shouldCloseOnBlur: false,\n shouldCloseOnInteractOutside: (elemento) => !triggerRef.current?.contains(elemento),\n },\n ref,\n );\n const { overlayProps: positionProps } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: ref,\n placement: 'bottom start',\n offset: 6,\n containerPadding: 8,\n isOpen: true,\n });\n\n const alturaMaxima = Math.min(Number(positionProps.style?.maxHeight) || 360, 360);\n\n useEffect(() => {\n if (openedWith === 'last') {\n focusLast();\n } else {\n focusFirst();\n }\n // Posicao inicial depende apenas de como o menu foi aberto.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (focusedKey) {\n nodes.current.get(focusedKey)?.focus();\n }\n }, [focusedKey]);\n\n function acionar(item: MenuItem) {\n if (item.disabled) {\n return;\n }\n\n onClose(true);\n item.onSelect?.();\n }\n\n function renderizarItem(item: MenuItem) {\n const marcavel = item.checked !== undefined;\n\n return (\n <button\n aria-checked={marcavel ? item.checked : undefined}\n aria-keyshortcuts={item.shortcut}\n className={[styles.item, item.tone === 'danger' && styles.danger].filter(Boolean).join(' ')}\n disabled={item.disabled}\n key={item.key}\n onClick={() => acionar(item)}\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n role={marcavel ? 'menuitemcheckbox' : 'menuitem'}\n tabIndex={focusedKey === item.key ? 0 : -1}\n type=\"button\"\n >\n {item.icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {item.icon}\n </span>\n )}\n <span className={styles.label}>{item.label}</span>\n {item.shortcut && (\n <kbd aria-hidden=\"true\" className={styles.shortcut}>\n {item.shortcut}\n </kbd>\n )}\n {marcavel && <IconCheck className={[styles.check, item.checked && styles.checkOn].filter(Boolean).join(' ')} />}\n </button>\n );\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPrevious();\n } else if (event.key === 'Home') {\n event.preventDefault();\n focusFirst();\n } else if (event.key === 'End') {\n event.preventDefault();\n focusLast();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n onClose(true);\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey) {\n search(event.key);\n }\n }\n\n return (\n <div\n {...overlayProps}\n data-react-aria-top-layer=\"true\"\n ref={ref}\n className={styles.menu}\n style={{ ...positionProps.style, maxHeight: alturaMaxima }}\n role=\"menu\"\n aria-label={label}\n onKeyDown={(event) => {\n // Espalhar overlayProps antes nao basta: este onKeyDown o substituiria.\n handleKeyDown(event);\n overlayProps.onKeyDown?.(event);\n }}\n >\n {entradas.map((entrada, indice) => {\n if (!ehSecao(entrada)) {\n return renderizarItem(entrada);\n }\n\n return (\n <div aria-label={entrada.title} className={styles.section} key={entrada.key} role=\"group\">\n {indice > 0 && <div aria-hidden=\"true\" className={styles.divider} />}\n {entrada.title && (\n <div aria-hidden=\"true\" className={styles.sectionTitle}>\n {entrada.title}\n </div>\n )}\n {entrada.items.map(renderizarItem)}\n </div>\n );\n })}\n </div>\n );\n}\n"],"names":["encadear","proprio","seguinte","evento","Menu","children","defaultOpen","items","label","onOpenChange","controlledOpen","triggerRef","useRef","internalOpen","setInternalOpen","useState","openedWith","setOpenedWith","open","setOpen","proximo","abrir","from","fechar","devolverFoco","_a","dono","mergedTriggerRef","useMergedRefs","trigger","cloneElement","event","jsxs","Fragment","createPortal","FocusScope","jsx","MenuList","ehSecao","entrada","entradas","onClose","ref","nodes","useMemo","collection","item","selection","useSelection","focusedKey","focusFirst","focusLast","focusNext","focusPrevious","search","overlayProps","useOverlay","elemento","positionProps","useOverlayPosition","alturaMaxima","useEffect","acionar","renderizarItem","marcavel","styles","node","IconCheck","handleKeyDown","indice"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_menu_opb5f_1",t="_item_opb5f_20",u={menu:e,item:t};exports.default=u;exports.item=t;exports.menu=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_menu_ssmgq_1",s="_item_ssmgq_20",c="_icon_ssmgq_53",t="_label_ssmgq_60",n="_shortcut_ssmgq_66",_="_check_ssmgq_75",o="_checkOn_ssmgq_81",i="_danger_ssmgq_85",m="_section_ssmgq_101",l="_divider_ssmgq_107",g="_sectionTitle_ssmgq_113",r={menu:e,item:s,icon:c,label:t,shortcut:n,check:_,checkOn:o,danger:i,section:m,divider:l,sectionTitle:g};exports.check=_;exports.checkOn=o;exports.danger=i;exports.default=r;exports.divider=l;exports.icon=c;exports.item=s;exports.label=t;exports.menu=e;exports.section=m;exports.sectionTitle=g;exports.shortcut=n;
2
2
  //# sourceMappingURL=Menu.module.css.cjs.map
@@ -1,10 +1,28 @@
1
- const e = "_menu_opb5f_1", t = "_item_opb5f_20", m = {
2
- menu: e,
3
- item: t
1
+ const s = "_menu_ssmgq_1", c = "_item_ssmgq_20", e = "_icon_ssmgq_53", t = "_label_ssmgq_60", _ = "_shortcut_ssmgq_66", n = "_check_ssmgq_75", o = "_checkOn_ssmgq_81", i = "_danger_ssmgq_85", m = "_section_ssmgq_101", g = "_divider_ssmgq_107", l = "_sectionTitle_ssmgq_113", q = {
2
+ menu: s,
3
+ item: c,
4
+ icon: e,
5
+ label: t,
6
+ shortcut: _,
7
+ check: n,
8
+ checkOn: o,
9
+ danger: i,
10
+ section: m,
11
+ divider: g,
12
+ sectionTitle: l
4
13
  };
5
14
  export {
6
- m as default,
7
- t as item,
8
- e as menu
15
+ n as check,
16
+ o as checkOn,
17
+ i as danger,
18
+ q as default,
19
+ g as divider,
20
+ e as icon,
21
+ c as item,
22
+ t as label,
23
+ s as menu,
24
+ m as section,
25
+ l as sectionTitle,
26
+ _ as shortcut
9
27
  };
10
28
  //# sourceMappingURL=Menu.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"Menu.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}