@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
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.cjs","sources":["../../../../src/components/navigation/Tabs/Tabs.tsx"],"sourcesContent":["import {\n useEffect,\n useId,\n useMemo,\n useRef,\n type ComponentPropsWithRef,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Tabs.module.css';\n\nexport interface TabItem {\n content: ReactNode;\n disabled?: boolean;\n key: string;\n label: string;\n}\n\nexport type TabsOrientation = 'horizontal' | 'vertical';\n\nexport interface TabsProps extends ComponentPropsWithRef<'div'> {\n defaultSelectedKey?: string;\n items: readonly TabItem[];\n label: string;\n onSelectionChange?: (key: string) => void;\n orientation?: TabsOrientation;\n selectedKey?: string;\n}\n\nexport function Tabs({\n className,\n defaultSelectedKey,\n items,\n label,\n onSelectionChange,\n orientation = 'horizontal',\n selectedKey,\n ...props\n}: TabsProps) {\n const baseId = `tabs-${useId()}`;\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 primeira = collection.find((item) => !item.disabled)?.key;\n const selection = useSelection({\n items: collection,\n mode: 'single',\n defaultSelectedKeys: selectedKey === undefined ? [defaultSelectedKey ?? primeira ?? ''] : undefined,\n selectedKeys: selectedKey === undefined ? undefined : [selectedKey],\n onSelectionChange: (keys) => {\n const [escolhida] = keys;\n if (escolhida !== undefined) {\n onSelectionChange?.(escolhida);\n }\n },\n });\n const [ativa] = selection.selectedKeys;\n const painel = items.find((item) => item.key === ativa);\n // A lista sempre tem uma parada de Tab: com a escolhida inexistente ou desabilitada, nenhuma aba era alcancavel.\n const parada = collection.some((item) => item.key === ativa && !item.disabled) ? ativa : primeira;\n\n useEffect(() => {\n if (selection.focusedKey) {\n nodes.current.get(selection.focusedKey)?.focus();\n }\n }, [selection.focusedKey]);\n\n // Ativacao automatica: mover o foco troca a aba, conforme o padrao do APG\n // para paineis que carregam instantaneamente.\n function mover(proxima: string | undefined) {\n if (proxima) {\n selection.select(proxima);\n }\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const atual = selection.focusedKey ?? ativa;\n const avancar = orientation === 'vertical' ? 'ArrowDown' : 'ArrowRight';\n const voltar = orientation === 'vertical' ? 'ArrowUp' : 'ArrowLeft';\n\n if (event.key === avancar) {\n event.preventDefault();\n mover(proximaChave(collection, atual, 1));\n } else if (event.key === voltar) {\n event.preventDefault();\n mover(proximaChave(collection, atual, -1));\n } else if (event.key === 'Home') {\n event.preventDefault();\n mover(collection.find((item) => !item.disabled)?.key);\n } else if (event.key === 'End') {\n event.preventDefault();\n mover([...collection].reverse().find((item) => !item.disabled)?.key);\n }\n }\n\n return (\n <div {...props} className={[styles.tabs, styles[orientation], className].filter(Boolean).join(' ')}>\n <div\n className={styles.list}\n role=\"tablist\"\n aria-label={label}\n aria-orientation={orientation}\n onKeyDown={handleKeyDown}\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.tab, ativa === item.key && styles.active].filter(Boolean).join(' ')}\n type=\"button\"\n role=\"tab\"\n id={`${baseId}-${item.key}`}\n aria-controls={ativa === item.key ? `${baseId}-${item.key}-panel` : undefined}\n aria-selected={ativa === item.key}\n disabled={item.disabled}\n tabIndex={parada === item.key ? 0 : -1}\n onClick={() => selection.select(item.key)}\n >\n {item.label}\n </button>\n ))}\n </div>\n {painel && (\n <div\n className={styles.panel}\n role=\"tabpanel\"\n id={`${baseId}-${painel.key}-panel`}\n aria-labelledby={`${baseId}-${painel.key}`}\n tabIndex={0}\n >\n {painel.content}\n </div>\n )}\n </div>\n );\n}\n\n// Percorre em circulo, como o APG define para abas.\nfunction proximaChave(items: readonly SelectionItem[], from: string | undefined, passo: 1 | -1) {\n const total = items.length;\n const inicio = items.findIndex((item) => item.key === from);\n\n for (let i = 1; i <= total; i += 1) {\n const item = items[(inicio + passo * i + total * total) % total];\n if (!item.disabled) {\n return item.key;\n }\n }\n\n return from;\n}\n"],"names":["Tabs","className","defaultSelectedKey","items","label","onSelectionChange","orientation","selectedKey","props","baseId","useId","nodes","useRef","collection","useMemo","item","primeira","_a","selection","useSelection","keys","escolhida","ativa","painel","parada","useEffect","mover","proxima","handleKeyDown","event","atual","avancar","voltar","proximaChave","_b","styles","jsx","node","from","passo","total","inicio","i"],"mappings":"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"}
1
+ {"version":3,"file":"Tabs.cjs","sources":["../../../../src/components/navigation/Tabs/Tabs.tsx"],"sourcesContent":["import {\n useEffect,\n useId,\n useMemo,\n useRef,\n type ComponentPropsWithRef,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Tabs.module.css';\n\nexport interface TabItem {\n content: ReactNode;\n disabled?: boolean;\n key: string;\n label: string;\n}\n\nexport type TabsOrientation = 'horizontal' | 'vertical';\n\nexport interface TabsProps extends ComponentPropsWithRef<'div'> {\n defaultSelectedKey?: string;\n /** O painel ocupa a altura que sobra nas abas e rola por dentro. As abas precisam de altura, dada por quem as usa. */\n fillHeight?: boolean;\n /** As abas dividem a largura em partes iguais, em vez de ficar do tamanho do rotulo. */\n fitted?: boolean;\n items: readonly TabItem[];\n label: string;\n onSelectionChange?: (key: string) => void;\n orientation?: TabsOrientation;\n selectedKey?: string;\n}\n\nexport function Tabs({\n className,\n defaultSelectedKey,\n fillHeight = false,\n fitted = false,\n items,\n label,\n onSelectionChange,\n orientation = 'horizontal',\n selectedKey,\n ...props\n}: TabsProps) {\n const baseId = `tabs-${useId()}`;\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 primeira = collection.find((item) => !item.disabled)?.key;\n const selection = useSelection({\n items: collection,\n mode: 'single',\n defaultSelectedKeys: selectedKey === undefined ? [defaultSelectedKey ?? primeira ?? ''] : undefined,\n selectedKeys: selectedKey === undefined ? undefined : [selectedKey],\n onSelectionChange: (keys) => {\n const [escolhida] = keys;\n if (escolhida !== undefined) {\n onSelectionChange?.(escolhida);\n }\n },\n });\n const [ativa] = selection.selectedKeys;\n const painel = items.find((item) => item.key === ativa);\n // A lista sempre tem uma parada de Tab: com a escolhida inexistente ou desabilitada, nenhuma aba era alcancavel.\n const parada = collection.some((item) => item.key === ativa && !item.disabled) ? ativa : primeira;\n\n useEffect(() => {\n if (selection.focusedKey) {\n nodes.current.get(selection.focusedKey)?.focus();\n }\n }, [selection.focusedKey]);\n\n // Ativacao automatica: mover o foco troca a aba, conforme o padrao do APG\n // para paineis que carregam instantaneamente.\n function mover(proxima: string | undefined) {\n if (proxima) {\n selection.select(proxima);\n }\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const atual = selection.focusedKey ?? ativa;\n const avancar = orientation === 'vertical' ? 'ArrowDown' : 'ArrowRight';\n const voltar = orientation === 'vertical' ? 'ArrowUp' : 'ArrowLeft';\n\n if (event.key === avancar) {\n event.preventDefault();\n mover(proximaChave(collection, atual, 1));\n } else if (event.key === voltar) {\n event.preventDefault();\n mover(proximaChave(collection, atual, -1));\n } else if (event.key === 'Home') {\n event.preventDefault();\n mover(collection.find((item) => !item.disabled)?.key);\n } else if (event.key === 'End') {\n event.preventDefault();\n mover([...collection].reverse().find((item) => !item.disabled)?.key);\n }\n }\n\n return (\n <div\n {...props}\n className={[styles.tabs, styles[orientation], fitted && styles.fitted, fillHeight && styles.fillHeight, className]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={styles.list}\n role=\"tablist\"\n aria-label={label}\n aria-orientation={orientation}\n onKeyDown={handleKeyDown}\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.tab, ativa === item.key && styles.active].filter(Boolean).join(' ')}\n type=\"button\"\n role=\"tab\"\n id={`${baseId}-${item.key}`}\n aria-controls={ativa === item.key ? `${baseId}-${item.key}-panel` : undefined}\n aria-selected={ativa === item.key}\n disabled={item.disabled}\n tabIndex={parada === item.key ? 0 : -1}\n onClick={() => selection.select(item.key)}\n >\n {item.label}\n </button>\n ))}\n </div>\n {painel && (\n <div\n className={styles.panel}\n role=\"tabpanel\"\n id={`${baseId}-${painel.key}-panel`}\n aria-labelledby={`${baseId}-${painel.key}`}\n tabIndex={0}\n >\n {painel.content}\n </div>\n )}\n </div>\n );\n}\n\n// Percorre em circulo, como o APG define para abas.\nfunction proximaChave(items: readonly SelectionItem[], from: string | undefined, passo: 1 | -1) {\n const total = items.length;\n const inicio = items.findIndex((item) => item.key === from);\n\n for (let i = 1; i <= total; i += 1) {\n const item = items[(inicio + passo * i + total * total) % total];\n if (!item.disabled) {\n return item.key;\n }\n }\n\n return from;\n}\n"],"names":["Tabs","className","defaultSelectedKey","fillHeight","fitted","items","label","onSelectionChange","orientation","selectedKey","props","baseId","useId","nodes","useRef","collection","useMemo","item","primeira","_a","selection","useSelection","keys","escolhida","ativa","painel","parada","useEffect","mover","proxima","handleKeyDown","event","atual","avancar","voltar","proximaChave","_b","jsxs","styles","jsx","node","from","passo","total","inicio","i"],"mappings":"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"}
@@ -1,96 +1,105 @@
1
- import { jsxs as B, jsx as $ } from "react/jsx-runtime";
2
- import { useId as E, useRef as M, useMemo as R, useEffect as g } from "react";
3
- import i from "./Tabs.module.css.js";
4
- import { useSelection as z } from "../../../hooks/useSelection/useSelection.js";
5
- function V({
1
+ import { jsxs as E, jsx as w } from "react/jsx-runtime";
2
+ import { useId as H, useRef as M, useMemo as R, useEffect as z } from "react";
3
+ import l from "./Tabs.module.css.js";
4
+ import { useSelection as L } from "../../../hooks/useSelection/useSelection.js";
5
+ function F({
6
6
  className: c,
7
- defaultSelectedKey: y,
8
- items: d,
9
- label: n,
10
- onSelectionChange: f,
11
- orientation: a = "horizontal",
12
- selectedKey: t,
13
- ...I
7
+ defaultSelectedKey: f,
8
+ fillHeight: p = !1,
9
+ fitted: t = !1,
10
+ items: i,
11
+ label: s,
12
+ onSelectionChange: n,
13
+ orientation: y = "horizontal",
14
+ selectedKey: v,
15
+ ...A
14
16
  }) {
15
- var h;
16
- const u = `tabs-${E()}`, p = M(/* @__PURE__ */ new Map()), o = R(
17
- () => d.map((e) => ({ key: e.key, disabled: e.disabled, textValue: e.label })),
18
- [d]
19
- ), w = (h = o.find((e) => !e.disabled)) == null ? void 0 : h.key, s = z({
17
+ var D;
18
+ const u = `tabs-${H()}`, $ = M(/* @__PURE__ */ new Map()), o = R(
19
+ () => i.map((e) => ({ key: e.key, disabled: e.disabled, textValue: e.label })),
20
+ [i]
21
+ ), x = (D = o.find((e) => !e.disabled)) == null ? void 0 : D.key, d = L({
20
22
  items: o,
21
23
  mode: "single",
22
- defaultSelectedKeys: t === void 0 ? [y ?? w ?? ""] : void 0,
23
- selectedKeys: t === void 0 ? void 0 : [t],
24
+ defaultSelectedKeys: v === void 0 ? [f ?? x ?? ""] : void 0,
25
+ selectedKeys: v === void 0 ? void 0 : [v],
24
26
  onSelectionChange: (e) => {
25
- const [l] = e;
26
- l !== void 0 && (f == null || f(l));
27
+ const [a] = e;
28
+ a !== void 0 && (n == null || n(a));
27
29
  }
28
- }), [r] = s.selectedKeys, b = d.find((e) => e.key === r), j = o.some((e) => e.key === r && !e.disabled) ? r : w;
29
- g(() => {
30
+ }), [r] = d.selectedKeys, b = i.find((e) => e.key === r), N = o.some((e) => e.key === r && !e.disabled) ? r : x;
31
+ z(() => {
30
32
  var e;
31
- s.focusedKey && ((e = p.current.get(s.focusedKey)) == null || e.focus());
32
- }, [s.focusedKey]);
33
+ d.focusedKey && ((e = $.current.get(d.focusedKey)) == null || e.focus());
34
+ }, [d.focusedKey]);
33
35
  function k(e) {
34
- e && s.select(e);
36
+ e && d.select(e);
35
37
  }
36
- function A(e) {
37
- var x, D;
38
- const l = s.focusedKey ?? r, N = a === "vertical" ? "ArrowDown" : "ArrowRight", m = a === "vertical" ? "ArrowUp" : "ArrowLeft";
39
- e.key === N ? (e.preventDefault(), k(K(o, l, 1))) : e.key === m ? (e.preventDefault(), k(K(o, l, -1))) : e.key === "Home" ? (e.preventDefault(), k((x = o.find((v) => !v.disabled)) == null ? void 0 : x.key)) : e.key === "End" && (e.preventDefault(), k((D = [...o].reverse().find((v) => !v.disabled)) == null ? void 0 : D.key));
38
+ function g(e) {
39
+ var K, I;
40
+ const a = d.focusedKey ?? r, m = y === "vertical" ? "ArrowDown" : "ArrowRight", B = y === "vertical" ? "ArrowUp" : "ArrowLeft";
41
+ e.key === m ? (e.preventDefault(), k(j(o, a, 1))) : e.key === B ? (e.preventDefault(), k(j(o, a, -1))) : e.key === "Home" ? (e.preventDefault(), k((K = o.find((h) => !h.disabled)) == null ? void 0 : K.key)) : e.key === "End" && (e.preventDefault(), k((I = [...o].reverse().find((h) => !h.disabled)) == null ? void 0 : I.key));
40
42
  }
41
- return /* @__PURE__ */ B("div", { ...I, className: [i.tabs, i[a], c].filter(Boolean).join(" "), children: [
42
- /* @__PURE__ */ $(
43
- "div",
44
- {
45
- className: i.list,
46
- role: "tablist",
47
- "aria-label": n,
48
- "aria-orientation": a,
49
- onKeyDown: A,
50
- children: d.map((e) => /* @__PURE__ */ $(
51
- "button",
43
+ return /* @__PURE__ */ E(
44
+ "div",
45
+ {
46
+ ...A,
47
+ className: [l.tabs, l[y], t && l.fitted, p && l.fillHeight, c].filter(Boolean).join(" "),
48
+ children: [
49
+ /* @__PURE__ */ w(
50
+ "div",
52
51
  {
53
- ref: (l) => {
54
- l ? p.current.set(e.key, l) : p.current.delete(e.key);
55
- },
56
- className: [i.tab, r === e.key && i.active].filter(Boolean).join(" "),
57
- type: "button",
58
- role: "tab",
59
- id: `${u}-${e.key}`,
60
- "aria-controls": r === e.key ? `${u}-${e.key}-panel` : void 0,
61
- "aria-selected": r === e.key,
62
- disabled: e.disabled,
63
- tabIndex: j === e.key ? 0 : -1,
64
- onClick: () => s.select(e.key),
65
- children: e.label
66
- },
67
- e.key
68
- ))
69
- }
70
- ),
71
- b && /* @__PURE__ */ $(
72
- "div",
73
- {
74
- className: i.panel,
75
- role: "tabpanel",
76
- id: `${u}-${b.key}-panel`,
77
- "aria-labelledby": `${u}-${b.key}`,
78
- tabIndex: 0,
79
- children: b.content
80
- }
81
- )
82
- ] });
52
+ className: l.list,
53
+ role: "tablist",
54
+ "aria-label": s,
55
+ "aria-orientation": y,
56
+ onKeyDown: g,
57
+ children: i.map((e) => /* @__PURE__ */ w(
58
+ "button",
59
+ {
60
+ ref: (a) => {
61
+ a ? $.current.set(e.key, a) : $.current.delete(e.key);
62
+ },
63
+ className: [l.tab, r === e.key && l.active].filter(Boolean).join(" "),
64
+ type: "button",
65
+ role: "tab",
66
+ id: `${u}-${e.key}`,
67
+ "aria-controls": r === e.key ? `${u}-${e.key}-panel` : void 0,
68
+ "aria-selected": r === e.key,
69
+ disabled: e.disabled,
70
+ tabIndex: N === e.key ? 0 : -1,
71
+ onClick: () => d.select(e.key),
72
+ children: e.label
73
+ },
74
+ e.key
75
+ ))
76
+ }
77
+ ),
78
+ b && /* @__PURE__ */ w(
79
+ "div",
80
+ {
81
+ className: l.panel,
82
+ role: "tabpanel",
83
+ id: `${u}-${b.key}-panel`,
84
+ "aria-labelledby": `${u}-${b.key}`,
85
+ tabIndex: 0,
86
+ children: b.content
87
+ }
88
+ )
89
+ ]
90
+ }
91
+ );
83
92
  }
84
- function K(c, y, d) {
85
- const n = c.length, f = c.findIndex((a) => a.key === y);
86
- for (let a = 1; a <= n; a += 1) {
87
- const t = c[(f + d * a + n * n) % n];
88
- if (!t.disabled)
89
- return t.key;
93
+ function j(c, f, p) {
94
+ const t = c.length, i = c.findIndex((s) => s.key === f);
95
+ for (let s = 1; s <= t; s += 1) {
96
+ const n = c[(i + p * s + t * t) % t];
97
+ if (!n.disabled)
98
+ return n.key;
90
99
  }
91
- return y;
100
+ return f;
92
101
  }
93
102
  export {
94
- V as Tabs
103
+ F as Tabs
95
104
  };
96
105
  //# sourceMappingURL=Tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","sources":["../../../../src/components/navigation/Tabs/Tabs.tsx"],"sourcesContent":["import {\n useEffect,\n useId,\n useMemo,\n useRef,\n type ComponentPropsWithRef,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Tabs.module.css';\n\nexport interface TabItem {\n content: ReactNode;\n disabled?: boolean;\n key: string;\n label: string;\n}\n\nexport type TabsOrientation = 'horizontal' | 'vertical';\n\nexport interface TabsProps extends ComponentPropsWithRef<'div'> {\n defaultSelectedKey?: string;\n items: readonly TabItem[];\n label: string;\n onSelectionChange?: (key: string) => void;\n orientation?: TabsOrientation;\n selectedKey?: string;\n}\n\nexport function Tabs({\n className,\n defaultSelectedKey,\n items,\n label,\n onSelectionChange,\n orientation = 'horizontal',\n selectedKey,\n ...props\n}: TabsProps) {\n const baseId = `tabs-${useId()}`;\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 primeira = collection.find((item) => !item.disabled)?.key;\n const selection = useSelection({\n items: collection,\n mode: 'single',\n defaultSelectedKeys: selectedKey === undefined ? [defaultSelectedKey ?? primeira ?? ''] : undefined,\n selectedKeys: selectedKey === undefined ? undefined : [selectedKey],\n onSelectionChange: (keys) => {\n const [escolhida] = keys;\n if (escolhida !== undefined) {\n onSelectionChange?.(escolhida);\n }\n },\n });\n const [ativa] = selection.selectedKeys;\n const painel = items.find((item) => item.key === ativa);\n // A lista sempre tem uma parada de Tab: com a escolhida inexistente ou desabilitada, nenhuma aba era alcancavel.\n const parada = collection.some((item) => item.key === ativa && !item.disabled) ? ativa : primeira;\n\n useEffect(() => {\n if (selection.focusedKey) {\n nodes.current.get(selection.focusedKey)?.focus();\n }\n }, [selection.focusedKey]);\n\n // Ativacao automatica: mover o foco troca a aba, conforme o padrao do APG\n // para paineis que carregam instantaneamente.\n function mover(proxima: string | undefined) {\n if (proxima) {\n selection.select(proxima);\n }\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const atual = selection.focusedKey ?? ativa;\n const avancar = orientation === 'vertical' ? 'ArrowDown' : 'ArrowRight';\n const voltar = orientation === 'vertical' ? 'ArrowUp' : 'ArrowLeft';\n\n if (event.key === avancar) {\n event.preventDefault();\n mover(proximaChave(collection, atual, 1));\n } else if (event.key === voltar) {\n event.preventDefault();\n mover(proximaChave(collection, atual, -1));\n } else if (event.key === 'Home') {\n event.preventDefault();\n mover(collection.find((item) => !item.disabled)?.key);\n } else if (event.key === 'End') {\n event.preventDefault();\n mover([...collection].reverse().find((item) => !item.disabled)?.key);\n }\n }\n\n return (\n <div {...props} className={[styles.tabs, styles[orientation], className].filter(Boolean).join(' ')}>\n <div\n className={styles.list}\n role=\"tablist\"\n aria-label={label}\n aria-orientation={orientation}\n onKeyDown={handleKeyDown}\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.tab, ativa === item.key && styles.active].filter(Boolean).join(' ')}\n type=\"button\"\n role=\"tab\"\n id={`${baseId}-${item.key}`}\n aria-controls={ativa === item.key ? `${baseId}-${item.key}-panel` : undefined}\n aria-selected={ativa === item.key}\n disabled={item.disabled}\n tabIndex={parada === item.key ? 0 : -1}\n onClick={() => selection.select(item.key)}\n >\n {item.label}\n </button>\n ))}\n </div>\n {painel && (\n <div\n className={styles.panel}\n role=\"tabpanel\"\n id={`${baseId}-${painel.key}-panel`}\n aria-labelledby={`${baseId}-${painel.key}`}\n tabIndex={0}\n >\n {painel.content}\n </div>\n )}\n </div>\n );\n}\n\n// Percorre em circulo, como o APG define para abas.\nfunction proximaChave(items: readonly SelectionItem[], from: string | undefined, passo: 1 | -1) {\n const total = items.length;\n const inicio = items.findIndex((item) => item.key === from);\n\n for (let i = 1; i <= total; i += 1) {\n const item = items[(inicio + passo * i + total * total) % total];\n if (!item.disabled) {\n return item.key;\n }\n }\n\n return from;\n}\n"],"names":["Tabs","className","defaultSelectedKey","items","label","onSelectionChange","orientation","selectedKey","props","baseId","useId","nodes","useRef","collection","useMemo","item","primeira","_a","selection","useSelection","keys","escolhida","ativa","painel","parada","useEffect","mover","proxima","handleKeyDown","event","atual","avancar","voltar","proximaChave","_b","styles","jsx","node","from","passo","total","inicio","i"],"mappings":"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"}
1
+ {"version":3,"file":"Tabs.js","sources":["../../../../src/components/navigation/Tabs/Tabs.tsx"],"sourcesContent":["import {\n useEffect,\n useId,\n useMemo,\n useRef,\n type ComponentPropsWithRef,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Tabs.module.css';\n\nexport interface TabItem {\n content: ReactNode;\n disabled?: boolean;\n key: string;\n label: string;\n}\n\nexport type TabsOrientation = 'horizontal' | 'vertical';\n\nexport interface TabsProps extends ComponentPropsWithRef<'div'> {\n defaultSelectedKey?: string;\n /** O painel ocupa a altura que sobra nas abas e rola por dentro. As abas precisam de altura, dada por quem as usa. */\n fillHeight?: boolean;\n /** As abas dividem a largura em partes iguais, em vez de ficar do tamanho do rotulo. */\n fitted?: boolean;\n items: readonly TabItem[];\n label: string;\n onSelectionChange?: (key: string) => void;\n orientation?: TabsOrientation;\n selectedKey?: string;\n}\n\nexport function Tabs({\n className,\n defaultSelectedKey,\n fillHeight = false,\n fitted = false,\n items,\n label,\n onSelectionChange,\n orientation = 'horizontal',\n selectedKey,\n ...props\n}: TabsProps) {\n const baseId = `tabs-${useId()}`;\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 primeira = collection.find((item) => !item.disabled)?.key;\n const selection = useSelection({\n items: collection,\n mode: 'single',\n defaultSelectedKeys: selectedKey === undefined ? [defaultSelectedKey ?? primeira ?? ''] : undefined,\n selectedKeys: selectedKey === undefined ? undefined : [selectedKey],\n onSelectionChange: (keys) => {\n const [escolhida] = keys;\n if (escolhida !== undefined) {\n onSelectionChange?.(escolhida);\n }\n },\n });\n const [ativa] = selection.selectedKeys;\n const painel = items.find((item) => item.key === ativa);\n // A lista sempre tem uma parada de Tab: com a escolhida inexistente ou desabilitada, nenhuma aba era alcancavel.\n const parada = collection.some((item) => item.key === ativa && !item.disabled) ? ativa : primeira;\n\n useEffect(() => {\n if (selection.focusedKey) {\n nodes.current.get(selection.focusedKey)?.focus();\n }\n }, [selection.focusedKey]);\n\n // Ativacao automatica: mover o foco troca a aba, conforme o padrao do APG\n // para paineis que carregam instantaneamente.\n function mover(proxima: string | undefined) {\n if (proxima) {\n selection.select(proxima);\n }\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const atual = selection.focusedKey ?? ativa;\n const avancar = orientation === 'vertical' ? 'ArrowDown' : 'ArrowRight';\n const voltar = orientation === 'vertical' ? 'ArrowUp' : 'ArrowLeft';\n\n if (event.key === avancar) {\n event.preventDefault();\n mover(proximaChave(collection, atual, 1));\n } else if (event.key === voltar) {\n event.preventDefault();\n mover(proximaChave(collection, atual, -1));\n } else if (event.key === 'Home') {\n event.preventDefault();\n mover(collection.find((item) => !item.disabled)?.key);\n } else if (event.key === 'End') {\n event.preventDefault();\n mover([...collection].reverse().find((item) => !item.disabled)?.key);\n }\n }\n\n return (\n <div\n {...props}\n className={[styles.tabs, styles[orientation], fitted && styles.fitted, fillHeight && styles.fillHeight, className]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={styles.list}\n role=\"tablist\"\n aria-label={label}\n aria-orientation={orientation}\n onKeyDown={handleKeyDown}\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.tab, ativa === item.key && styles.active].filter(Boolean).join(' ')}\n type=\"button\"\n role=\"tab\"\n id={`${baseId}-${item.key}`}\n aria-controls={ativa === item.key ? `${baseId}-${item.key}-panel` : undefined}\n aria-selected={ativa === item.key}\n disabled={item.disabled}\n tabIndex={parada === item.key ? 0 : -1}\n onClick={() => selection.select(item.key)}\n >\n {item.label}\n </button>\n ))}\n </div>\n {painel && (\n <div\n className={styles.panel}\n role=\"tabpanel\"\n id={`${baseId}-${painel.key}-panel`}\n aria-labelledby={`${baseId}-${painel.key}`}\n tabIndex={0}\n >\n {painel.content}\n </div>\n )}\n </div>\n );\n}\n\n// Percorre em circulo, como o APG define para abas.\nfunction proximaChave(items: readonly SelectionItem[], from: string | undefined, passo: 1 | -1) {\n const total = items.length;\n const inicio = items.findIndex((item) => item.key === from);\n\n for (let i = 1; i <= total; i += 1) {\n const item = items[(inicio + passo * i + total * total) % total];\n if (!item.disabled) {\n return item.key;\n }\n }\n\n return from;\n}\n"],"names":["Tabs","className","defaultSelectedKey","fillHeight","fitted","items","label","onSelectionChange","orientation","selectedKey","props","baseId","useId","nodes","useRef","collection","useMemo","item","primeira","_a","selection","useSelection","keys","escolhida","ativa","painel","parada","useEffect","mover","proxima","handleKeyDown","event","atual","avancar","voltar","proximaChave","_b","jsxs","styles","jsx","node","from","passo","total","inicio","i"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t="_tabs_runad_1",a="_horizontal_runad_7",e="_list_runad_11",n="_active_runad_17",l="_vertical_runad_23",_="_tab_runad_1",s="_panel_runad_45",o={tabs:t,horizontal:a,list:e,active:n,vertical:l,tab:_,panel:s};exports.active=n;exports.default=o;exports.horizontal=a;exports.list=e;exports.panel=s;exports.tab=_;exports.tabs=t;exports.vertical=l;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t="_tabs_cf8v3_1",e="_horizontal_cf8v3_7",i="_list_cf8v3_11",l="_active_cf8v3_17",c="_vertical_cf8v3_23",_="_tab_cf8v3_1",a="_panel_cf8v3_45",s="_fitted_cf8v3_89",o="_fillHeight_cf8v3_95",n={tabs:t,horizontal:e,list:i,active:l,vertical:c,tab:_,panel:a,fitted:s,fillHeight:o};exports.active=l;exports.default=n;exports.fillHeight=o;exports.fitted=s;exports.horizontal=e;exports.list=i;exports.panel=a;exports.tab=_;exports.tabs=t;exports.vertical=c;
2
2
  //# sourceMappingURL=Tabs.module.css.cjs.map
@@ -1,20 +1,24 @@
1
- const t = "_tabs_runad_1", a = "_horizontal_runad_7", n = "_list_runad_11", _ = "_active_runad_17", s = "_vertical_runad_23", o = "_tab_runad_1", c = "_panel_runad_45", l = {
1
+ const t = "_tabs_cf8v3_1", _ = "_horizontal_cf8v3_7", c = "_list_cf8v3_11", i = "_active_cf8v3_17", a = "_vertical_cf8v3_23", l = "_tab_cf8v3_1", s = "_panel_cf8v3_45", e = "_fitted_cf8v3_89", o = "_fillHeight_cf8v3_95", f = {
2
2
  tabs: t,
3
- horizontal: a,
4
- list: n,
5
- active: _,
6
- vertical: s,
7
- tab: o,
8
- panel: c
3
+ horizontal: _,
4
+ list: c,
5
+ active: i,
6
+ vertical: a,
7
+ tab: l,
8
+ panel: s,
9
+ fitted: e,
10
+ fillHeight: o
9
11
  };
10
12
  export {
11
- _ as active,
12
- l as default,
13
- a as horizontal,
14
- n as list,
15
- c as panel,
16
- o as tab,
13
+ i as active,
14
+ f as default,
15
+ o as fillHeight,
16
+ e as fitted,
17
+ _ as horizontal,
18
+ c as list,
19
+ s as panel,
20
+ l as tab,
17
21
  t as tabs,
18
- s as vertical
22
+ a as vertical
19
23
  };
20
24
  //# sourceMappingURL=Tabs.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
1
+ {"version":3,"file":"Tabs.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),d=require("react"),D=require("react-dom"),q=require("@react-aria/focus"),o=require("@react-aria/overlays"),I=require("../../../hooks/useMergedRefs.cjs"),r=require("./Dialog.module.css.cjs"),P=require("../../icons/icons.cjs");function R({open:s,...a}){return!s||typeof document>"u"?null:D.createPortal(e.jsx(F,{...a}),document.body)}function F({children:s,className:a,description:i,dismissable:l=!0,footer:n,icon:u,onClose:c,ref:h,role:x="dialog",size:y="md",title:g,...v}){const t=d.useRef(null),b=I.useMergedRefs(t,h),f=d.useId(),m=`${f}-title`,j=`${f}-description`,{overlayProps:p,underlayProps:N}=o.useOverlay({isOpen:!0,onClose:c,isDismissable:l,isKeyboardDismissDisabled:!l},t);return o.usePreventScroll(),d.useEffect(()=>t.current?o.ariaHideOutside([t.current]):void 0,[]),e.jsx("div",{...N,className:r.default.underlay,children:e.jsx(q.FocusScope,{contain:!0,restoreFocus:!0,autoFocus:!0,children:e.jsxs("div",{...v,...p,ref:b,className:[r.default.dialog,r.default[y],a].filter(Boolean).join(" "),role:x,"aria-modal":"true","aria-labelledby":m,"aria-describedby":i?j:void 0,children:[e.jsxs("header",{className:[r.default.header,s&&r.default.headerDivided].filter(Boolean).join(" "),children:[u&&e.jsx("span",{"aria-hidden":"true",className:r.default.icon,children:u}),e.jsxs("div",{className:r.default.heading,children:[e.jsx("h2",{className:r.default.title,id:m,children:g}),i&&e.jsx("p",{className:r.default.description,id:j,children:i})]}),l&&e.jsx("button",{className:r.default.close,type:"button","aria-label":"Fechar",onClick:c,children:e.jsx(P.IconClose,{size:20})})]}),s&&e.jsx("div",{className:r.default.body,children:s}),n&&e.jsx("div",{className:r.default.footer,children:n})]})})})}exports.Dialog=R;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),o=require("./DialogFrame.cjs"),e=require("./Dialog.module.css.cjs");function u({size:a="md",...l}){return r.jsx(o.DialogFrame,{...l,surfaceClassName:[e.default.dialog,e.default[a]].join(" "),underlayClassName:e.default.underlay})}exports.Dialog=u;
2
2
  //# sourceMappingURL=Dialog.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.cjs","sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import { useEffect, useId, useRef, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { ariaHideOutside, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport styles from './Dialog.module.css';\nimport { IconClose } from '../../icons';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** As propriedades nativas vao ao elemento do dialogo; o `className` soma ao do sistema. */\nexport interface DialogProps extends Omit<ComponentPropsWithRef<'div'>, 'children' | 'role' | 'title'> {\n children?: ReactNode;\n description?: string;\n dismissable?: boolean;\n footer?: ReactNode;\n /** Opcional. Desenhado ao lado do titulo, fora da leitura: quem fala e o titulo. */\n icon?: ReactNode;\n onClose: () => void;\n open: boolean;\n /** `alertdialog` para a confirmacao que interrompe e exige resposta, como a de uma acao destrutiva. */\n role?: DialogRole;\n size?: DialogSize;\n title: string;\n}\n\nexport function Dialog({ open, ...props }: DialogProps) {\n // No servidor nao ha `document` para o portal; o Dialog nasce na hidratacao.\n if (!open || typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(<DialogContent {...props} />, document.body);\n}\n\nfunction DialogContent({\n children,\n className,\n description,\n dismissable = true,\n footer,\n icon,\n onClose,\n ref: refDoConsumidor,\n role = 'dialog',\n size = 'md',\n title,\n ...props\n}: Omit<DialogProps, 'open'>) {\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRefs(ref, refDoConsumidor);\n const generatedId = useId();\n const titleId = `${generatedId}-title`;\n const descriptionId = `${generatedId}-description`;\n\n const { overlayProps, underlayProps } = useOverlay(\n {\n isOpen: true,\n onClose,\n isDismissable: dismissable,\n isKeyboardDismissDisabled: !dismissable,\n },\n ref,\n );\n\n usePreventScroll();\n\n useEffect(() => (ref.current ? ariaHideOutside([ref.current]) : undefined), []);\n\n return (\n <div {...underlayProps} className={styles.underlay}>\n <FocusScope contain restoreFocus autoFocus>\n <div\n {...props}\n {...overlayProps}\n ref={mergedRef}\n className={[styles.dialog, styles[size], className].filter(Boolean).join(' ')}\n role={role}\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n >\n <header className={[styles.header, children && styles.headerDivided].filter(Boolean).join(' ')}>\n {icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {icon}\n </span>\n )}\n <div className={styles.heading}>\n <h2 className={styles.title} id={titleId}>{title}</h2>\n {description && <p className={styles.description} id={descriptionId}>{description}</p>}\n </div>\n {dismissable && (\n <button className={styles.close} type=\"button\" aria-label=\"Fechar\" onClick={onClose}>\n <IconClose size={20} />\n </button>\n )}\n </header>\n {children && <div className={styles.body}>{children}</div>}\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n </FocusScope>\n </div>\n );\n}\n"],"names":["Dialog","open","props","createPortal","jsx","DialogContent","children","className","description","dismissable","footer","icon","onClose","refDoConsumidor","role","size","title","ref","useRef","mergedRef","useMergedRefs","generatedId","useId","titleId","descriptionId","overlayProps","underlayProps","useOverlay","usePreventScroll","useEffect","ariaHideOutside","styles","FocusScope","jsxs","IconClose"],"mappings":"sVA2BO,SAASA,EAAO,CAAE,KAAAC,EAAM,GAAGC,GAAsB,CAEtD,MAAI,CAACD,GAAQ,OAAO,SAAa,IACxB,KAGFE,EAAAA,aAAaC,EAAAA,IAACC,EAAA,CAAe,GAAGH,EAAO,EAAI,SAAS,IAAI,CACjE,CAEA,SAASG,EAAc,CACrB,SAAAC,EACA,UAAAC,EACA,YAAAC,EACA,YAAAC,EAAc,GACd,OAAAC,EACA,KAAAC,EACA,QAAAC,EACA,IAAKC,EACL,KAAAC,EAAO,SACP,KAAAC,EAAO,KACP,MAAAC,EACA,GAAGd,CACL,EAA8B,CAC5B,MAAMe,EAAMC,EAAAA,OAAuB,IAAI,EACjCC,EAAYC,EAAAA,cAAcH,EAAKJ,CAAe,EAC9CQ,EAAcC,EAAAA,MAAA,EACdC,EAAU,GAAGF,CAAW,SACxBG,EAAgB,GAAGH,CAAW,eAE9B,CAAE,aAAAI,EAAc,cAAAC,CAAA,EAAkBC,EAAAA,WACtC,CACE,OAAQ,GACR,QAAAf,EACA,cAAeH,EACf,0BAA2B,CAACA,CAAA,EAE9BQ,CAAA,EAGFW,OAAAA,mBAAA,EAEAC,YAAU,IAAOZ,EAAI,QAAUa,EAAAA,gBAAgB,CAACb,EAAI,OAAO,CAAC,EAAI,OAAY,EAAE,EAG5Eb,EAAAA,IAAC,MAAA,CAAK,GAAGsB,EAAe,UAAWK,EAAAA,QAAO,SACxC,SAAA3B,EAAAA,IAAC4B,EAAAA,WAAA,CAAW,QAAO,GAAC,aAAY,GAAC,UAAS,GACxC,SAAAC,EAAAA,KAAC,MAAA,CACE,GAAG/B,EACH,GAAGuB,EACJ,IAAKN,EACL,UAAW,CAACY,EAAAA,QAAO,OAAQA,EAAAA,QAAOhB,CAAI,EAAGR,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC5E,KAAAO,EACA,aAAW,OACX,kBAAiBS,EACjB,mBAAkBf,EAAcgB,EAAgB,OAEhD,SAAA,CAAAS,EAAAA,KAAC,SAAA,CAAO,UAAW,CAACF,EAAAA,QAAO,OAAQzB,GAAYyB,EAAAA,QAAO,aAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC1F,SAAA,CAAApB,SACE,OAAA,CAAK,cAAY,OAAO,UAAWoB,UAAO,KACxC,SAAApB,CAAA,CACH,EAEFsB,EAAAA,KAAC,MAAA,CAAI,UAAWF,EAAAA,QAAO,QACrB,SAAA,CAAA3B,MAAC,MAAG,UAAW2B,EAAAA,QAAO,MAAO,GAAIR,EAAU,SAAAP,EAAM,EAChDR,SAAgB,IAAA,CAAE,UAAWuB,EAAAA,QAAO,YAAa,GAAIP,EAAgB,SAAAhB,CAAA,CAAY,CAAA,EACpF,EACCC,GACCL,EAAAA,IAAC,SAAA,CAAO,UAAW2B,EAAAA,QAAO,MAAO,KAAK,SAAS,aAAW,SAAS,QAASnB,EAC1E,SAAAR,EAAAA,IAAC8B,EAAAA,UAAA,CAAU,KAAM,GAAI,CAAA,CACvB,CAAA,EAEJ,EACC5B,GAAYF,EAAAA,IAAC,MAAA,CAAI,UAAW2B,UAAO,KAAO,SAAAzB,EAAS,EACnDI,GAAUN,EAAAA,IAAC,MAAA,CAAI,UAAW2B,EAAAA,QAAO,OAAS,SAAArB,CAAA,CAAO,CAAA,CAAA,CAAA,EAEtD,CAAA,CACF,CAEJ"}
1
+ {"version":3,"file":"Dialog.cjs","sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { DialogFrame } from './DialogFrame';\nimport styles from './Dialog.module.css';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** As propriedades nativas vao ao elemento do dialogo; o `className` soma ao do sistema. */\nexport interface DialogProps extends Omit<ComponentPropsWithRef<'div'>, 'children' | 'role' | 'title'> {\n children?: ReactNode;\n description?: string;\n dismissable?: boolean;\n footer?: ReactNode;\n /** Opcional. Desenhado ao lado do titulo, fora da leitura: quem fala e o titulo. */\n icon?: ReactNode;\n onClose: () => void;\n open: boolean;\n /** `alertdialog` para a confirmacao que interrompe e exige resposta, como a de uma acao destrutiva. */\n role?: DialogRole;\n size?: DialogSize;\n title: string;\n}\n\nexport function Dialog({ size = 'md', ...props }: DialogProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.dialog, styles[size]].join(' ')}\n underlayClassName={styles.underlay}\n />\n );\n}\n"],"names":["Dialog","size","props","jsx","DialogFrame","styles"],"mappings":"yLAuBO,SAASA,EAAO,CAAE,KAAAC,EAAO,KAAM,GAAGC,GAAsB,CAC7D,OACEC,EAAAA,IAACC,EAAAA,YAAA,CACE,GAAGF,EACJ,iBAAkB,CAACG,EAAAA,QAAO,OAAQA,EAAAA,QAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG,EACxD,kBAAmBI,EAAAA,QAAO,QAAA,CAAA,CAGhC"}
@@ -1,64 +1,17 @@
1
- import { jsx as r, jsxs as d } from "react/jsx-runtime";
2
- import { useRef as I, useId as j, useEffect as F } from "react";
3
- import { createPortal as P } from "react-dom";
4
- import { FocusScope as x } from "@react-aria/focus";
5
- import { useOverlay as O, usePreventScroll as R, ariaHideOutside as B } from "@react-aria/overlays";
6
- import { useMergedRefs as C } from "../../../hooks/useMergedRefs.js";
7
- import e from "./Dialog.module.css.js";
8
- import { IconClose as S } from "../../icons/icons.js";
9
- function A({ open: i, ...t }) {
10
- return !i || typeof document > "u" ? null : P(/* @__PURE__ */ r($, { ...t }), document.body);
11
- }
12
- function $({
13
- children: i,
14
- className: t,
15
- description: a,
16
- dismissable: s = !0,
17
- footer: l,
18
- icon: n,
19
- onClose: c,
20
- ref: p,
21
- role: h = "dialog",
22
- size: y = "md",
23
- title: v,
24
- ...b
25
- }) {
26
- const o = I(null), N = C(o, p), u = j(), m = `${u}-title`, f = `${u}-description`, { overlayProps: g, underlayProps: D } = O(
27
- {
28
- isOpen: !0,
29
- onClose: c,
30
- isDismissable: s,
31
- isKeyboardDismissDisabled: !s
32
- },
33
- o
34
- );
35
- return R(), F(() => o.current ? B([o.current]) : void 0, []), /* @__PURE__ */ r("div", { ...D, className: e.underlay, children: /* @__PURE__ */ r(x, { contain: !0, restoreFocus: !0, autoFocus: !0, children: /* @__PURE__ */ d(
36
- "div",
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import { DialogFrame as e } from "./DialogFrame.js";
3
+ import r from "./Dialog.module.css.js";
4
+ function t({ size: o = "md", ...a }) {
5
+ return /* @__PURE__ */ m(
6
+ e,
37
7
  {
38
- ...b,
39
- ...g,
40
- ref: N,
41
- className: [e.dialog, e[y], t].filter(Boolean).join(" "),
42
- role: h,
43
- "aria-modal": "true",
44
- "aria-labelledby": m,
45
- "aria-describedby": a ? f : void 0,
46
- children: [
47
- /* @__PURE__ */ d("header", { className: [e.header, i && e.headerDivided].filter(Boolean).join(" "), children: [
48
- n && /* @__PURE__ */ r("span", { "aria-hidden": "true", className: e.icon, children: n }),
49
- /* @__PURE__ */ d("div", { className: e.heading, children: [
50
- /* @__PURE__ */ r("h2", { className: e.title, id: m, children: v }),
51
- a && /* @__PURE__ */ r("p", { className: e.description, id: f, children: a })
52
- ] }),
53
- s && /* @__PURE__ */ r("button", { className: e.close, type: "button", "aria-label": "Fechar", onClick: c, children: /* @__PURE__ */ r(S, { size: 20 }) })
54
- ] }),
55
- i && /* @__PURE__ */ r("div", { className: e.body, children: i }),
56
- l && /* @__PURE__ */ r("div", { className: e.footer, children: l })
57
- ]
8
+ ...a,
9
+ surfaceClassName: [r.dialog, r[o]].join(" "),
10
+ underlayClassName: r.underlay
58
11
  }
59
- ) }) });
12
+ );
60
13
  }
61
14
  export {
62
- A as Dialog
15
+ t as Dialog
63
16
  };
64
17
  //# sourceMappingURL=Dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import { useEffect, useId, useRef, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { ariaHideOutside, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport styles from './Dialog.module.css';\nimport { IconClose } from '../../icons';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** As propriedades nativas vao ao elemento do dialogo; o `className` soma ao do sistema. */\nexport interface DialogProps extends Omit<ComponentPropsWithRef<'div'>, 'children' | 'role' | 'title'> {\n children?: ReactNode;\n description?: string;\n dismissable?: boolean;\n footer?: ReactNode;\n /** Opcional. Desenhado ao lado do titulo, fora da leitura: quem fala e o titulo. */\n icon?: ReactNode;\n onClose: () => void;\n open: boolean;\n /** `alertdialog` para a confirmacao que interrompe e exige resposta, como a de uma acao destrutiva. */\n role?: DialogRole;\n size?: DialogSize;\n title: string;\n}\n\nexport function Dialog({ open, ...props }: DialogProps) {\n // No servidor nao ha `document` para o portal; o Dialog nasce na hidratacao.\n if (!open || typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(<DialogContent {...props} />, document.body);\n}\n\nfunction DialogContent({\n children,\n className,\n description,\n dismissable = true,\n footer,\n icon,\n onClose,\n ref: refDoConsumidor,\n role = 'dialog',\n size = 'md',\n title,\n ...props\n}: Omit<DialogProps, 'open'>) {\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRefs(ref, refDoConsumidor);\n const generatedId = useId();\n const titleId = `${generatedId}-title`;\n const descriptionId = `${generatedId}-description`;\n\n const { overlayProps, underlayProps } = useOverlay(\n {\n isOpen: true,\n onClose,\n isDismissable: dismissable,\n isKeyboardDismissDisabled: !dismissable,\n },\n ref,\n );\n\n usePreventScroll();\n\n useEffect(() => (ref.current ? ariaHideOutside([ref.current]) : undefined), []);\n\n return (\n <div {...underlayProps} className={styles.underlay}>\n <FocusScope contain restoreFocus autoFocus>\n <div\n {...props}\n {...overlayProps}\n ref={mergedRef}\n className={[styles.dialog, styles[size], className].filter(Boolean).join(' ')}\n role={role}\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n >\n <header className={[styles.header, children && styles.headerDivided].filter(Boolean).join(' ')}>\n {icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {icon}\n </span>\n )}\n <div className={styles.heading}>\n <h2 className={styles.title} id={titleId}>{title}</h2>\n {description && <p className={styles.description} id={descriptionId}>{description}</p>}\n </div>\n {dismissable && (\n <button className={styles.close} type=\"button\" aria-label=\"Fechar\" onClick={onClose}>\n <IconClose size={20} />\n </button>\n )}\n </header>\n {children && <div className={styles.body}>{children}</div>}\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n </FocusScope>\n </div>\n );\n}\n"],"names":["Dialog","open","props","createPortal","jsx","DialogContent","children","className","description","dismissable","footer","icon","onClose","refDoConsumidor","role","size","title","ref","useRef","mergedRef","useMergedRefs","generatedId","useId","titleId","descriptionId","overlayProps","underlayProps","useOverlay","usePreventScroll","useEffect","ariaHideOutside","styles","FocusScope","jsxs","IconClose"],"mappings":";;;;;;;;AA2BO,SAASA,EAAO,EAAE,MAAAC,GAAM,GAAGC,KAAsB;AAEtD,SAAI,CAACD,KAAQ,OAAO,WAAa,MACxB,OAGFE,EAAa,gBAAAC,EAACC,GAAA,EAAe,GAAGH,GAAO,GAAI,SAAS,IAAI;AACjE;AAEA,SAASG,EAAc;AAAA,EACrB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,KAAKC;AAAA,EACL,MAAAC,IAAO;AAAA,EACP,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,GAAGd;AACL,GAA8B;AAC5B,QAAMe,IAAMC,EAAuB,IAAI,GACjCC,IAAYC,EAAcH,GAAKJ,CAAe,GAC9CQ,IAAcC,EAAA,GACdC,IAAU,GAAGF,CAAW,UACxBG,IAAgB,GAAGH,CAAW,gBAE9B,EAAE,cAAAI,GAAc,eAAAC,EAAA,IAAkBC;AAAA,IACtC;AAAA,MACE,QAAQ;AAAA,MACR,SAAAf;AAAA,MACA,eAAeH;AAAA,MACf,2BAA2B,CAACA;AAAA,IAAA;AAAA,IAE9BQ;AAAA,EAAA;AAGF,SAAAW,EAAA,GAEAC,EAAU,MAAOZ,EAAI,UAAUa,EAAgB,CAACb,EAAI,OAAO,CAAC,IAAI,QAAY,EAAE,GAG5E,gBAAAb,EAAC,OAAA,EAAK,GAAGsB,GAAe,WAAWK,EAAO,UACxC,UAAA,gBAAA3B,EAAC4B,GAAA,EAAW,SAAO,IAAC,cAAY,IAAC,WAAS,IACxC,UAAA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG/B;AAAA,MACH,GAAGuB;AAAA,MACJ,KAAKN;AAAA,MACL,WAAW,CAACY,EAAO,QAAQA,EAAOhB,CAAI,GAAGR,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAC5E,MAAAO;AAAA,MACA,cAAW;AAAA,MACX,mBAAiBS;AAAA,MACjB,oBAAkBf,IAAcgB,IAAgB;AAAA,MAEhD,UAAA;AAAA,QAAA,gBAAAS,EAAC,UAAA,EAAO,WAAW,CAACF,EAAO,QAAQzB,KAAYyB,EAAO,aAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC1F,UAAA;AAAA,UAAApB,uBACE,QAAA,EAAK,eAAY,QAAO,WAAWoB,EAAO,MACxC,UAAApB,EAAA,CACH;AAAA,UAEF,gBAAAsB,EAAC,OAAA,EAAI,WAAWF,EAAO,SACrB,UAAA;AAAA,YAAA,gBAAA3B,EAAC,QAAG,WAAW2B,EAAO,OAAO,IAAIR,GAAU,UAAAP,GAAM;AAAA,YAChDR,uBAAgB,KAAA,EAAE,WAAWuB,EAAO,aAAa,IAAIP,GAAgB,UAAAhB,EAAA,CAAY;AAAA,UAAA,GACpF;AAAA,UACCC,KACC,gBAAAL,EAAC,UAAA,EAAO,WAAW2B,EAAO,OAAO,MAAK,UAAS,cAAW,UAAS,SAASnB,GAC1E,UAAA,gBAAAR,EAAC8B,GAAA,EAAU,MAAM,IAAI,EAAA,CACvB;AAAA,QAAA,GAEJ;AAAA,QACC5B,KAAY,gBAAAF,EAAC,OAAA,EAAI,WAAW2B,EAAO,MAAO,UAAAzB,GAAS;AAAA,QACnDI,KAAU,gBAAAN,EAAC,OAAA,EAAI,WAAW2B,EAAO,QAAS,UAAArB,EAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEtD,EAAA,CACF;AAEJ;"}
1
+ {"version":3,"file":"Dialog.js","sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { DialogFrame } from './DialogFrame';\nimport styles from './Dialog.module.css';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** As propriedades nativas vao ao elemento do dialogo; o `className` soma ao do sistema. */\nexport interface DialogProps extends Omit<ComponentPropsWithRef<'div'>, 'children' | 'role' | 'title'> {\n children?: ReactNode;\n description?: string;\n dismissable?: boolean;\n footer?: ReactNode;\n /** Opcional. Desenhado ao lado do titulo, fora da leitura: quem fala e o titulo. */\n icon?: ReactNode;\n onClose: () => void;\n open: boolean;\n /** `alertdialog` para a confirmacao que interrompe e exige resposta, como a de uma acao destrutiva. */\n role?: DialogRole;\n size?: DialogSize;\n title: string;\n}\n\nexport function Dialog({ size = 'md', ...props }: DialogProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.dialog, styles[size]].join(' ')}\n underlayClassName={styles.underlay}\n />\n );\n}\n"],"names":["Dialog","size","props","jsx","DialogFrame","styles"],"mappings":";;;AAuBO,SAASA,EAAO,EAAE,MAAAC,IAAO,MAAM,GAAGC,KAAsB;AAC7D,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,kBAAkB,CAACG,EAAO,QAAQA,EAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG;AAAA,MACxD,mBAAmBI,EAAO;AAAA,IAAA;AAAA,EAAA;AAGhC;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),q=require("react-dom"),F=require("@react-aria/focus"),d=require("@react-aria/overlays"),I=require("../../../hooks/useMergedRefs.cjs"),r=require("./Dialog.module.css.cjs"),P=require("../../icons/icons.cjs");function R({open:s,...t}){return!s||typeof document>"u"?null:q.createPortal(e.jsx(O,{...t}),document.body)}function O({children:s,className:t,description:i,dismissable:o=!0,footer:n,icon:c,onClose:u,ref:h,role:x="dialog",surfaceClassName:v,title:y,underlayClassName:b,...g}){const a=l.useRef(null),p=I.useMergedRefs(a,h),f=l.useId(),m=`${f}-title`,j=`${f}-description`,{overlayProps:N,underlayProps:D}=d.useOverlay({isOpen:!0,onClose:u,isDismissable:o,isKeyboardDismissDisabled:!o},a);return d.usePreventScroll(),l.useEffect(()=>a.current?d.ariaHideOutside([a.current]):void 0,[]),e.jsx("div",{...D,className:b,children:e.jsx(F.FocusScope,{contain:!0,restoreFocus:!0,autoFocus:!0,children:e.jsxs("div",{...g,...N,ref:p,className:[v,t].filter(Boolean).join(" "),role:x,"aria-modal":"true","aria-labelledby":m,"aria-describedby":i?j:void 0,children:[e.jsxs("header",{className:[r.default.header,s&&r.default.headerDivided].filter(Boolean).join(" "),children:[c&&e.jsx("span",{"aria-hidden":"true",className:r.default.icon,children:c}),e.jsxs("div",{className:r.default.heading,children:[e.jsx("h2",{className:r.default.title,id:m,children:y}),i&&e.jsx("p",{className:r.default.description,id:j,children:i})]}),o&&e.jsx("button",{className:r.default.close,type:"button","aria-label":"Fechar",onClick:u,children:e.jsx(P.IconClose,{size:20})})]}),s&&e.jsx("div",{className:r.default.body,children:s}),n&&e.jsx("div",{className:r.default.footer,children:n})]})})})}exports.DialogFrame=R;
2
+ //# sourceMappingURL=DialogFrame.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DialogFrame.cjs","sources":["../../../../src/components/overlays/Dialog/DialogFrame.tsx"],"sourcesContent":["import { useEffect, useId, useRef, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { ariaHideOutside, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { IconClose } from '../../icons';\nimport type { DialogProps } from './Dialog';\nimport styles from './Dialog.module.css';\n\nexport interface DialogFrameProps extends Omit<DialogProps, 'size'> {\n surfaceClassName: string;\n underlayClassName: string;\n}\n\n/** Mecanica modal do `Dialog` e do `Drawer`: portal, foco preso, rolagem travada, cabecalho, corpo e rodape. Interna. */\nexport function DialogFrame({ open, ...props }: DialogFrameProps) {\n // No servidor nao ha `document` para o portal; o modal nasce na hidratacao.\n if (!open || typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(<DialogFrameContent {...props} />, document.body);\n}\n\nfunction DialogFrameContent({\n children,\n className,\n description,\n dismissable = true,\n footer,\n icon,\n onClose,\n ref: refDoConsumidor,\n role = 'dialog',\n surfaceClassName,\n title,\n underlayClassName,\n ...props\n}: Omit<DialogFrameProps, 'open'>) {\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRefs(ref, refDoConsumidor);\n const generatedId = useId();\n const titleId = `${generatedId}-title`;\n const descriptionId = `${generatedId}-description`;\n\n const { overlayProps, underlayProps } = useOverlay(\n {\n isOpen: true,\n onClose,\n isDismissable: dismissable,\n isKeyboardDismissDisabled: !dismissable,\n },\n ref,\n );\n\n usePreventScroll();\n\n useEffect(() => (ref.current ? ariaHideOutside([ref.current]) : undefined), []);\n\n return (\n <div {...underlayProps} className={underlayClassName}>\n <FocusScope contain restoreFocus autoFocus>\n <div\n {...props}\n {...overlayProps}\n ref={mergedRef}\n className={[surfaceClassName, className].filter(Boolean).join(' ')}\n role={role}\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n >\n <header className={[styles.header, children && styles.headerDivided].filter(Boolean).join(' ')}>\n {icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {icon}\n </span>\n )}\n <div className={styles.heading}>\n <h2 className={styles.title} id={titleId}>{title}</h2>\n {description && <p className={styles.description} id={descriptionId}>{description}</p>}\n </div>\n {dismissable && (\n <button className={styles.close} type=\"button\" aria-label=\"Fechar\" onClick={onClose}>\n <IconClose size={20} />\n </button>\n )}\n </header>\n {children && <div className={styles.body}>{children}</div>}\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n </FocusScope>\n </div>\n );\n}\n"],"names":["DialogFrame","open","props","createPortal","jsx","DialogFrameContent","children","className","description","dismissable","footer","icon","onClose","refDoConsumidor","role","surfaceClassName","title","underlayClassName","ref","useRef","mergedRef","useMergedRefs","generatedId","useId","titleId","descriptionId","overlayProps","underlayProps","useOverlay","usePreventScroll","useEffect","ariaHideOutside","FocusScope","jsxs","styles","IconClose"],"mappings":"sVAeO,SAASA,EAAY,CAAE,KAAAC,EAAM,GAAGC,GAA2B,CAEhE,MAAI,CAACD,GAAQ,OAAO,SAAa,IACxB,KAGFE,EAAAA,aAAaC,EAAAA,IAACC,EAAA,CAAoB,GAAGH,EAAO,EAAI,SAAS,IAAI,CACtE,CAEA,SAASG,EAAmB,CAC1B,SAAAC,EACA,UAAAC,EACA,YAAAC,EACA,YAAAC,EAAc,GACd,OAAAC,EACA,KAAAC,EACA,QAAAC,EACA,IAAKC,EACL,KAAAC,EAAO,SACP,iBAAAC,EACA,MAAAC,EACA,kBAAAC,EACA,GAAGf,CACL,EAAmC,CACjC,MAAMgB,EAAMC,EAAAA,OAAuB,IAAI,EACjCC,EAAYC,EAAAA,cAAcH,EAAKL,CAAe,EAC9CS,EAAcC,EAAAA,MAAA,EACdC,EAAU,GAAGF,CAAW,SACxBG,EAAgB,GAAGH,CAAW,eAE9B,CAAE,aAAAI,EAAc,cAAAC,CAAA,EAAkBC,EAAAA,WACtC,CACE,OAAQ,GACR,QAAAhB,EACA,cAAeH,EACf,0BAA2B,CAACA,CAAA,EAE9BS,CAAA,EAGFW,OAAAA,mBAAA,EAEAC,YAAU,IAAOZ,EAAI,QAAUa,EAAAA,gBAAgB,CAACb,EAAI,OAAO,CAAC,EAAI,OAAY,EAAE,EAG5Ed,EAAAA,IAAC,MAAA,CAAK,GAAGuB,EAAe,UAAWV,EACjC,SAAAb,EAAAA,IAAC4B,EAAAA,WAAA,CAAW,QAAO,GAAC,aAAY,GAAC,UAAS,GACxC,SAAAC,EAAAA,KAAC,MAAA,CACE,GAAG/B,EACH,GAAGwB,EACJ,IAAKN,EACL,UAAW,CAACL,EAAkBR,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACjE,KAAAO,EACA,aAAW,OACX,kBAAiBU,EACjB,mBAAkBhB,EAAciB,EAAgB,OAEhD,SAAA,CAAAQ,EAAAA,KAAC,SAAA,CAAO,UAAW,CAACC,EAAAA,QAAO,OAAQ5B,GAAY4B,EAAAA,QAAO,aAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC1F,SAAA,CAAAvB,SACE,OAAA,CAAK,cAAY,OAAO,UAAWuB,UAAO,KACxC,SAAAvB,CAAA,CACH,EAEFsB,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,QACrB,SAAA,CAAA9B,MAAC,MAAG,UAAW8B,EAAAA,QAAO,MAAO,GAAIV,EAAU,SAAAR,EAAM,EAChDR,SAAgB,IAAA,CAAE,UAAW0B,EAAAA,QAAO,YAAa,GAAIT,EAAgB,SAAAjB,CAAA,CAAY,CAAA,EACpF,EACCC,GACCL,EAAAA,IAAC,SAAA,CAAO,UAAW8B,EAAAA,QAAO,MAAO,KAAK,SAAS,aAAW,SAAS,QAAStB,EAC1E,SAAAR,EAAAA,IAAC+B,EAAAA,UAAA,CAAU,KAAM,GAAI,CAAA,CACvB,CAAA,EAEJ,EACC7B,GAAYF,EAAAA,IAAC,MAAA,CAAI,UAAW8B,UAAO,KAAO,SAAA5B,EAAS,EACnDI,GAAUN,EAAAA,IAAC,MAAA,CAAI,UAAW8B,EAAAA,QAAO,OAAS,SAAAxB,CAAA,CAAO,CAAA,CAAA,CAAA,EAEtD,CAAA,CACF,CAEJ"}
@@ -0,0 +1,65 @@
1
+ import { jsx as e, jsxs as n } from "react/jsx-runtime";
2
+ import { useRef as I, useId as j, useEffect as P } from "react";
3
+ import { createPortal as x } from "react-dom";
4
+ import { FocusScope as O } from "@react-aria/focus";
5
+ import { useOverlay as R, usePreventScroll as B, ariaHideOutside as C } from "@react-aria/overlays";
6
+ import { useMergedRefs as S } from "../../../hooks/useMergedRefs.js";
7
+ import r from "./Dialog.module.css.js";
8
+ import { IconClose as $ } from "../../icons/icons.js";
9
+ function G({ open: i, ...t }) {
10
+ return !i || typeof document > "u" ? null : x(/* @__PURE__ */ e(k, { ...t }), document.body);
11
+ }
12
+ function k({
13
+ children: i,
14
+ className: t,
15
+ description: a,
16
+ dismissable: s = !0,
17
+ footer: d,
18
+ icon: l,
19
+ onClose: c,
20
+ ref: p,
21
+ role: h = "dialog",
22
+ surfaceClassName: v,
23
+ title: y,
24
+ underlayClassName: b,
25
+ ...N
26
+ }) {
27
+ const o = I(null), g = S(o, p), u = j(), m = `${u}-title`, f = `${u}-description`, { overlayProps: D, underlayProps: F } = R(
28
+ {
29
+ isOpen: !0,
30
+ onClose: c,
31
+ isDismissable: s,
32
+ isKeyboardDismissDisabled: !s
33
+ },
34
+ o
35
+ );
36
+ return B(), P(() => o.current ? C([o.current]) : void 0, []), /* @__PURE__ */ e("div", { ...F, className: b, children: /* @__PURE__ */ e(O, { contain: !0, restoreFocus: !0, autoFocus: !0, children: /* @__PURE__ */ n(
37
+ "div",
38
+ {
39
+ ...N,
40
+ ...D,
41
+ ref: g,
42
+ className: [v, t].filter(Boolean).join(" "),
43
+ role: h,
44
+ "aria-modal": "true",
45
+ "aria-labelledby": m,
46
+ "aria-describedby": a ? f : void 0,
47
+ children: [
48
+ /* @__PURE__ */ n("header", { className: [r.header, i && r.headerDivided].filter(Boolean).join(" "), children: [
49
+ l && /* @__PURE__ */ e("span", { "aria-hidden": "true", className: r.icon, children: l }),
50
+ /* @__PURE__ */ n("div", { className: r.heading, children: [
51
+ /* @__PURE__ */ e("h2", { className: r.title, id: m, children: y }),
52
+ a && /* @__PURE__ */ e("p", { className: r.description, id: f, children: a })
53
+ ] }),
54
+ s && /* @__PURE__ */ e("button", { className: r.close, type: "button", "aria-label": "Fechar", onClick: c, children: /* @__PURE__ */ e($, { size: 20 }) })
55
+ ] }),
56
+ i && /* @__PURE__ */ e("div", { className: r.body, children: i }),
57
+ d && /* @__PURE__ */ e("div", { className: r.footer, children: d })
58
+ ]
59
+ }
60
+ ) }) });
61
+ }
62
+ export {
63
+ G as DialogFrame
64
+ };
65
+ //# sourceMappingURL=DialogFrame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DialogFrame.js","sources":["../../../../src/components/overlays/Dialog/DialogFrame.tsx"],"sourcesContent":["import { useEffect, useId, useRef, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { ariaHideOutside, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { IconClose } from '../../icons';\nimport type { DialogProps } from './Dialog';\nimport styles from './Dialog.module.css';\n\nexport interface DialogFrameProps extends Omit<DialogProps, 'size'> {\n surfaceClassName: string;\n underlayClassName: string;\n}\n\n/** Mecanica modal do `Dialog` e do `Drawer`: portal, foco preso, rolagem travada, cabecalho, corpo e rodape. Interna. */\nexport function DialogFrame({ open, ...props }: DialogFrameProps) {\n // No servidor nao ha `document` para o portal; o modal nasce na hidratacao.\n if (!open || typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(<DialogFrameContent {...props} />, document.body);\n}\n\nfunction DialogFrameContent({\n children,\n className,\n description,\n dismissable = true,\n footer,\n icon,\n onClose,\n ref: refDoConsumidor,\n role = 'dialog',\n surfaceClassName,\n title,\n underlayClassName,\n ...props\n}: Omit<DialogFrameProps, 'open'>) {\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRefs(ref, refDoConsumidor);\n const generatedId = useId();\n const titleId = `${generatedId}-title`;\n const descriptionId = `${generatedId}-description`;\n\n const { overlayProps, underlayProps } = useOverlay(\n {\n isOpen: true,\n onClose,\n isDismissable: dismissable,\n isKeyboardDismissDisabled: !dismissable,\n },\n ref,\n );\n\n usePreventScroll();\n\n useEffect(() => (ref.current ? ariaHideOutside([ref.current]) : undefined), []);\n\n return (\n <div {...underlayProps} className={underlayClassName}>\n <FocusScope contain restoreFocus autoFocus>\n <div\n {...props}\n {...overlayProps}\n ref={mergedRef}\n className={[surfaceClassName, className].filter(Boolean).join(' ')}\n role={role}\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n >\n <header className={[styles.header, children && styles.headerDivided].filter(Boolean).join(' ')}>\n {icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {icon}\n </span>\n )}\n <div className={styles.heading}>\n <h2 className={styles.title} id={titleId}>{title}</h2>\n {description && <p className={styles.description} id={descriptionId}>{description}</p>}\n </div>\n {dismissable && (\n <button className={styles.close} type=\"button\" aria-label=\"Fechar\" onClick={onClose}>\n <IconClose size={20} />\n </button>\n )}\n </header>\n {children && <div className={styles.body}>{children}</div>}\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n </FocusScope>\n </div>\n );\n}\n"],"names":["DialogFrame","open","props","createPortal","jsx","DialogFrameContent","children","className","description","dismissable","footer","icon","onClose","refDoConsumidor","role","surfaceClassName","title","underlayClassName","ref","useRef","mergedRef","useMergedRefs","generatedId","useId","titleId","descriptionId","overlayProps","underlayProps","useOverlay","usePreventScroll","useEffect","ariaHideOutside","FocusScope","jsxs","styles","IconClose"],"mappings":";;;;;;;;AAeO,SAASA,EAAY,EAAE,MAAAC,GAAM,GAAGC,KAA2B;AAEhE,SAAI,CAACD,KAAQ,OAAO,WAAa,MACxB,OAGFE,EAAa,gBAAAC,EAACC,GAAA,EAAoB,GAAGH,GAAO,GAAI,SAAS,IAAI;AACtE;AAEA,SAASG,EAAmB;AAAA,EAC1B,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,KAAKC;AAAA,EACL,MAAAC,IAAO;AAAA,EACP,kBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,GAAGf;AACL,GAAmC;AACjC,QAAMgB,IAAMC,EAAuB,IAAI,GACjCC,IAAYC,EAAcH,GAAKL,CAAe,GAC9CS,IAAcC,EAAA,GACdC,IAAU,GAAGF,CAAW,UACxBG,IAAgB,GAAGH,CAAW,gBAE9B,EAAE,cAAAI,GAAc,eAAAC,EAAA,IAAkBC;AAAA,IACtC;AAAA,MACE,QAAQ;AAAA,MACR,SAAAhB;AAAA,MACA,eAAeH;AAAA,MACf,2BAA2B,CAACA;AAAA,IAAA;AAAA,IAE9BS;AAAA,EAAA;AAGF,SAAAW,EAAA,GAEAC,EAAU,MAAOZ,EAAI,UAAUa,EAAgB,CAACb,EAAI,OAAO,CAAC,IAAI,QAAY,EAAE,GAG5E,gBAAAd,EAAC,OAAA,EAAK,GAAGuB,GAAe,WAAWV,GACjC,UAAA,gBAAAb,EAAC4B,GAAA,EAAW,SAAO,IAAC,cAAY,IAAC,WAAS,IACxC,UAAA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG/B;AAAA,MACH,GAAGwB;AAAA,MACJ,KAAKN;AAAA,MACL,WAAW,CAACL,GAAkBR,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MACjE,MAAAO;AAAA,MACA,cAAW;AAAA,MACX,mBAAiBU;AAAA,MACjB,oBAAkBhB,IAAciB,IAAgB;AAAA,MAEhD,UAAA;AAAA,QAAA,gBAAAQ,EAAC,UAAA,EAAO,WAAW,CAACC,EAAO,QAAQ5B,KAAY4B,EAAO,aAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC1F,UAAA;AAAA,UAAAvB,uBACE,QAAA,EAAK,eAAY,QAAO,WAAWuB,EAAO,MACxC,UAAAvB,EAAA,CACH;AAAA,UAEF,gBAAAsB,EAAC,OAAA,EAAI,WAAWC,EAAO,SACrB,UAAA;AAAA,YAAA,gBAAA9B,EAAC,QAAG,WAAW8B,EAAO,OAAO,IAAIV,GAAU,UAAAR,GAAM;AAAA,YAChDR,uBAAgB,KAAA,EAAE,WAAW0B,EAAO,aAAa,IAAIT,GAAgB,UAAAjB,EAAA,CAAY;AAAA,UAAA,GACpF;AAAA,UACCC,KACC,gBAAAL,EAAC,UAAA,EAAO,WAAW8B,EAAO,OAAO,MAAK,UAAS,cAAW,UAAS,SAAStB,GAC1E,UAAA,gBAAAR,EAAC+B,GAAA,EAAU,MAAM,IAAI,EAAA,CACvB;AAAA,QAAA,GAEJ;AAAA,QACC7B,KAAY,gBAAAF,EAAC,OAAA,EAAI,WAAW8B,EAAO,MAAO,UAAA5B,GAAS;AAAA,QACnDI,KAAU,gBAAAN,EAAC,OAAA,EAAI,WAAW8B,EAAO,QAAS,UAAAxB,EAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEtD,EAAA,CACF;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react/jsx-runtime"),l=require("../Dialog/DialogFrame.cjs"),e=require("./Drawer.module.css.cjs");function i({side:r="right",size:a="md",...t}){return u.jsx(l.DialogFrame,{...t,surfaceClassName:[e.default.drawer,e.default[a]].join(" "),underlayClassName:[e.default.underlay,e.default[r]].join(" ")})}exports.Drawer=i;
2
+ //# sourceMappingURL=Drawer.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.cjs","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":"iMAaO,SAASA,EAAO,CAAE,KAAAC,EAAO,QAAS,KAAAC,EAAO,KAAM,GAAGC,GAAsB,CAC7E,OACEC,EAAAA,IAACC,EAAAA,YAAA,CACE,GAAGF,EACJ,iBAAkB,CAACG,EAAAA,QAAO,OAAQA,EAAAA,QAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG,EACxD,kBAAmB,CAACI,EAAAA,QAAO,SAAUA,EAAAA,QAAOL,CAAI,CAAC,EAAE,KAAK,GAAG,CAAA,CAAA,CAGjE"}
@@ -0,0 +1,17 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import { DialogFrame as i } from "../Dialog/DialogFrame.js";
3
+ import r from "./Drawer.module.css.js";
4
+ function l({ side: a = "right", size: e = "md", ...o }) {
5
+ return /* @__PURE__ */ m(
6
+ i,
7
+ {
8
+ ...o,
9
+ surfaceClassName: [r.drawer, r[e]].join(" "),
10
+ underlayClassName: [r.underlay, r[a]].join(" ")
11
+ }
12
+ );
13
+ }
14
+ export {
15
+ l as Drawer
16
+ };
17
+ //# sourceMappingURL=Drawer.js.map