@plenustech/design-system 0.2.2 → 0.2.4

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 (508) 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/ChartGauge/ChartGauge.cjs +2 -0
  43. package/dist/components/charts/ChartGauge/ChartGauge.cjs.map +1 -0
  44. package/dist/components/charts/ChartGauge/ChartGauge.js +307 -0
  45. package/dist/components/charts/ChartGauge/ChartGauge.js.map +1 -0
  46. package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs +2 -0
  47. package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs.map +1 -0
  48. package/dist/components/charts/ChartGauge/ChartGauge.module.css.js +76 -0
  49. package/dist/components/charts/ChartGauge/ChartGauge.module.css.js.map +1 -0
  50. package/dist/components/charts/ChartGauge/gaugeLayout.cjs +2 -0
  51. package/dist/components/charts/ChartGauge/gaugeLayout.cjs.map +1 -0
  52. package/dist/components/charts/ChartGauge/gaugeLayout.js +107 -0
  53. package/dist/components/charts/ChartGauge/gaugeLayout.js.map +1 -0
  54. package/dist/components/charts/ChartGauge/gaugeReading.cjs +2 -0
  55. package/dist/components/charts/ChartGauge/gaugeReading.cjs.map +1 -0
  56. package/dist/components/charts/ChartGauge/gaugeReading.js +112 -0
  57. package/dist/components/charts/ChartGauge/gaugeReading.js.map +1 -0
  58. package/dist/components/charts/ChartGauge/gaugeScale.cjs +2 -0
  59. package/dist/components/charts/ChartGauge/gaugeScale.cjs.map +1 -0
  60. package/dist/components/charts/ChartGauge/gaugeScale.js +57 -0
  61. package/dist/components/charts/ChartGauge/gaugeScale.js.map +1 -0
  62. package/dist/components/charts/ChartLine/ChartLine.cjs +1 -1
  63. package/dist/components/charts/ChartLine/ChartLine.cjs.map +1 -1
  64. package/dist/components/charts/ChartLine/ChartLine.js +196 -143
  65. package/dist/components/charts/ChartLine/ChartLine.js.map +1 -1
  66. package/dist/components/charts/ChartLine/ChartLine.module.css.cjs +1 -1
  67. package/dist/components/charts/ChartLine/ChartLine.module.css.js +16 -14
  68. package/dist/components/charts/ChartLine/ChartLine.module.css.js.map +1 -1
  69. package/dist/components/charts/ChartMap/ChartMap.cjs +2 -0
  70. package/dist/components/charts/ChartMap/ChartMap.cjs.map +1 -0
  71. package/dist/components/charts/ChartMap/ChartMap.js +523 -0
  72. package/dist/components/charts/ChartMap/ChartMap.js.map +1 -0
  73. package/dist/components/charts/ChartMap/ChartMap.module.css.cjs +2 -0
  74. package/dist/components/charts/ChartMap/ChartMap.module.css.cjs.map +1 -0
  75. package/dist/components/charts/ChartMap/ChartMap.module.css.js +124 -0
  76. package/dist/components/charts/ChartMap/ChartMap.module.css.js.map +1 -0
  77. package/dist/components/charts/ChartMap/ChartMapLegend.cjs +2 -0
  78. package/dist/components/charts/ChartMap/ChartMapLegend.cjs.map +1 -0
  79. package/dist/components/charts/ChartMap/ChartMapLegend.js +102 -0
  80. package/dist/components/charts/ChartMap/ChartMapLegend.js.map +1 -0
  81. package/dist/components/charts/ChartMap/ChartMapTable.cjs +2 -0
  82. package/dist/components/charts/ChartMap/ChartMapTable.cjs.map +1 -0
  83. package/dist/components/charts/ChartMap/ChartMapTable.js +118 -0
  84. package/dist/components/charts/ChartMap/ChartMapTable.js.map +1 -0
  85. package/dist/components/charts/ChartMap/mapGeometry.cjs +2 -0
  86. package/dist/components/charts/ChartMap/mapGeometry.cjs.map +1 -0
  87. package/dist/components/charts/ChartMap/mapGeometry.js +113 -0
  88. package/dist/components/charts/ChartMap/mapGeometry.js.map +1 -0
  89. package/dist/components/charts/ChartMap/mapLabels.cjs +2 -0
  90. package/dist/components/charts/ChartMap/mapLabels.cjs.map +1 -0
  91. package/dist/components/charts/ChartMap/mapLabels.js +80 -0
  92. package/dist/components/charts/ChartMap/mapLabels.js.map +1 -0
  93. package/dist/components/charts/ChartMap/mapScales.cjs +2 -0
  94. package/dist/components/charts/ChartMap/mapScales.cjs.map +1 -0
  95. package/dist/components/charts/ChartMap/mapScales.js +131 -0
  96. package/dist/components/charts/ChartMap/mapScales.js.map +1 -0
  97. package/dist/components/charts/ChartMap/polylabel.cjs +2 -0
  98. package/dist/components/charts/ChartMap/polylabel.cjs.map +1 -0
  99. package/dist/components/charts/ChartMap/polylabel.js +50 -0
  100. package/dist/components/charts/ChartMap/polylabel.js.map +1 -0
  101. package/dist/components/charts/ChartPie/ChartPie.cjs +1 -1
  102. package/dist/components/charts/ChartPie/ChartPie.cjs.map +1 -1
  103. package/dist/components/charts/ChartPie/ChartPie.js +71 -60
  104. package/dist/components/charts/ChartPie/ChartPie.js.map +1 -1
  105. package/dist/components/charts/ChartRadial/ChartRadial.cjs +1 -1
  106. package/dist/components/charts/ChartRadial/ChartRadial.cjs.map +1 -1
  107. package/dist/components/charts/ChartRadial/ChartRadial.js +101 -84
  108. package/dist/components/charts/ChartRadial/ChartRadial.js.map +1 -1
  109. package/dist/components/charts/ChartSankey/ChartSankey.cjs +1 -1
  110. package/dist/components/charts/ChartSankey/ChartSankey.cjs.map +1 -1
  111. package/dist/components/charts/ChartSankey/ChartSankey.js +148 -125
  112. package/dist/components/charts/ChartSankey/ChartSankey.js.map +1 -1
  113. package/dist/components/charts/ChartScatter/ChartScatter.cjs +1 -1
  114. package/dist/components/charts/ChartScatter/ChartScatter.cjs.map +1 -1
  115. package/dist/components/charts/ChartScatter/ChartScatter.js +138 -106
  116. package/dist/components/charts/ChartScatter/ChartScatter.js.map +1 -1
  117. package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs +1 -1
  118. package/dist/components/charts/ChartScatter/ChartScatter.module.css.js +3 -3
  119. package/dist/components/charts/ChartSunburst/ChartSunburst.cjs +1 -1
  120. package/dist/components/charts/ChartSunburst/ChartSunburst.cjs.map +1 -1
  121. package/dist/components/charts/ChartSunburst/ChartSunburst.js +115 -100
  122. package/dist/components/charts/ChartSunburst/ChartSunburst.js.map +1 -1
  123. package/dist/components/charts/ChartTimeline/ChartTimeline.cjs +2 -0
  124. package/dist/components/charts/ChartTimeline/ChartTimeline.cjs.map +1 -0
  125. package/dist/components/charts/ChartTimeline/ChartTimeline.js +703 -0
  126. package/dist/components/charts/ChartTimeline/ChartTimeline.js.map +1 -0
  127. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs +2 -0
  128. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs.map +1 -0
  129. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js +124 -0
  130. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js.map +1 -0
  131. package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs +2 -0
  132. package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs.map +1 -0
  133. package/dist/components/charts/ChartTimeline/ChartTimelineTable.js +42 -0
  134. package/dist/components/charts/ChartTimeline/ChartTimelineTable.js.map +1 -0
  135. package/dist/components/charts/ChartTimeline/timelineLayout.cjs +2 -0
  136. package/dist/components/charts/ChartTimeline/timelineLayout.cjs.map +1 -0
  137. package/dist/components/charts/ChartTimeline/timelineLayout.js +109 -0
  138. package/dist/components/charts/ChartTimeline/timelineLayout.js.map +1 -0
  139. package/dist/components/charts/ChartTimeline/timelineTime.cjs +2 -0
  140. package/dist/components/charts/ChartTimeline/timelineTime.cjs.map +1 -0
  141. package/dist/components/charts/ChartTimeline/timelineTime.js +91 -0
  142. package/dist/components/charts/ChartTimeline/timelineTime.js.map +1 -0
  143. package/dist/components/charts/ChartTimeline/timelineTooltip.cjs +2 -0
  144. package/dist/components/charts/ChartTimeline/timelineTooltip.cjs.map +1 -0
  145. package/dist/components/charts/ChartTimeline/timelineTooltip.js +77 -0
  146. package/dist/components/charts/ChartTimeline/timelineTooltip.js.map +1 -0
  147. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
  148. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
  149. package/dist/components/charts/ChartTooltip/ChartTooltip.js +1 -1
  150. package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
  151. package/dist/components/charts/ChartTreemap/ChartTreemap.cjs +1 -1
  152. package/dist/components/charts/ChartTreemap/ChartTreemap.cjs.map +1 -1
  153. package/dist/components/charts/ChartTreemap/ChartTreemap.js +100 -89
  154. package/dist/components/charts/ChartTreemap/ChartTreemap.js.map +1 -1
  155. package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs +1 -1
  156. package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs.map +1 -1
  157. package/dist/components/charts/ChartWaterfall/ChartWaterfall.js +125 -105
  158. package/dist/components/charts/ChartWaterfall/ChartWaterfall.js.map +1 -1
  159. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs +1 -1
  160. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js +8 -6
  161. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js.map +1 -1
  162. package/dist/components/charts/core/CartesianFrame.cjs +1 -1
  163. package/dist/components/charts/core/CartesianFrame.cjs.map +1 -1
  164. package/dist/components/charts/core/CartesianFrame.js +61 -96
  165. package/dist/components/charts/core/CartesianFrame.js.map +1 -1
  166. package/dist/components/charts/core/Chart.module.css.cjs +1 -1
  167. package/dist/components/charts/core/Chart.module.css.js +52 -54
  168. package/dist/components/charts/core/Chart.module.css.js.map +1 -1
  169. package/dist/components/charts/core/ChartFrame.cjs +1 -1
  170. package/dist/components/charts/core/ChartFrame.cjs.map +1 -1
  171. package/dist/components/charts/core/ChartFrame.js +53 -47
  172. package/dist/components/charts/core/ChartFrame.js.map +1 -1
  173. package/dist/components/charts/core/ChartLegend.cjs +1 -1
  174. package/dist/components/charts/core/ChartLegend.cjs.map +1 -1
  175. package/dist/components/charts/core/ChartLegend.js +37 -25
  176. package/dist/components/charts/core/ChartLegend.js.map +1 -1
  177. package/dist/components/charts/core/PointBands.cjs +2 -0
  178. package/dist/components/charts/core/PointBands.cjs.map +1 -0
  179. package/dist/components/charts/core/PointBands.js +41 -0
  180. package/dist/components/charts/core/PointBands.js.map +1 -0
  181. package/dist/components/charts/core/cartesianLayout.cjs +1 -1
  182. package/dist/components/charts/core/cartesianLayout.cjs.map +1 -1
  183. package/dist/components/charts/core/cartesianLayout.js +49 -41
  184. package/dist/components/charts/core/cartesianLayout.js.map +1 -1
  185. package/dist/components/charts/core/hoverPath.cjs +2 -0
  186. package/dist/components/charts/core/hoverPath.cjs.map +1 -0
  187. package/dist/components/charts/core/hoverPath.js +7 -0
  188. package/dist/components/charts/core/hoverPath.js.map +1 -0
  189. package/dist/components/charts/core/pointLabels.cjs +2 -0
  190. package/dist/components/charts/core/pointLabels.cjs.map +1 -0
  191. package/dist/components/charts/core/pointLabels.js +12 -0
  192. package/dist/components/charts/core/pointLabels.js.map +1 -0
  193. package/dist/components/charts/core/tooltips.cjs +2 -0
  194. package/dist/components/charts/core/tooltips.cjs.map +1 -0
  195. package/dist/components/charts/core/tooltips.js +48 -0
  196. package/dist/components/charts/core/tooltips.js.map +1 -0
  197. package/dist/components/charts/core/useCartesianLayout.cjs +2 -0
  198. package/dist/components/charts/core/useCartesianLayout.cjs.map +1 -0
  199. package/dist/components/charts/core/useCartesianLayout.js +38 -0
  200. package/dist/components/charts/core/useCartesianLayout.js.map +1 -0
  201. package/dist/components/charts/core/useChartMetrics.cjs +1 -1
  202. package/dist/components/charts/core/useChartMetrics.cjs.map +1 -1
  203. package/dist/components/charts/core/useChartMetrics.js +20 -25
  204. package/dist/components/charts/core/useChartMetrics.js.map +1 -1
  205. package/dist/components/charts/core/useSeriesToggle.cjs +1 -1
  206. package/dist/components/charts/core/useSeriesToggle.cjs.map +1 -1
  207. package/dist/components/charts/core/useSeriesToggle.js +19 -12
  208. package/dist/components/charts/core/useSeriesToggle.js.map +1 -1
  209. package/dist/components/data-display/Accordion/Accordion.cjs +1 -1
  210. package/dist/components/data-display/Accordion/Accordion.cjs.map +1 -1
  211. package/dist/components/data-display/Accordion/Accordion.js +56 -46
  212. package/dist/components/data-display/Accordion/Accordion.js.map +1 -1
  213. package/dist/components/data-display/Accordion/Accordion.module.css.cjs +1 -1
  214. package/dist/components/data-display/Accordion/Accordion.module.css.js +16 -16
  215. package/dist/components/data-display/List/List.cjs.map +1 -1
  216. package/dist/components/data-display/List/List.js.map +1 -1
  217. package/dist/components/data-display/List/List.module.css.cjs +1 -1
  218. package/dist/components/data-display/List/List.module.css.js +34 -24
  219. package/dist/components/data-display/List/List.module.css.js.map +1 -1
  220. package/dist/components/data-display/List/ListingOptions.cjs +1 -1
  221. package/dist/components/data-display/List/ListingOptions.cjs.map +1 -1
  222. package/dist/components/data-display/List/ListingOptions.js +98 -74
  223. package/dist/components/data-display/List/ListingOptions.js.map +1 -1
  224. package/dist/components/data-display/List/useListing.cjs.map +1 -1
  225. package/dist/components/data-display/List/useListing.js.map +1 -1
  226. package/dist/components/data-display/SortableList/SortableList.cjs +2 -0
  227. package/dist/components/data-display/SortableList/SortableList.cjs.map +1 -0
  228. package/dist/components/data-display/SortableList/SortableList.js +168 -0
  229. package/dist/components/data-display/SortableList/SortableList.js.map +1 -0
  230. package/dist/components/data-display/SortableList/SortableList.module.css.cjs +2 -0
  231. package/dist/components/data-display/SortableList/SortableList.module.css.cjs.map +1 -0
  232. package/dist/components/data-display/SortableList/SortableList.module.css.js +34 -0
  233. package/dist/components/data-display/SortableList/SortableList.module.css.js.map +1 -0
  234. package/dist/components/data-display/Table/Table.cjs +1 -1
  235. package/dist/components/data-display/Table/Table.cjs.map +1 -1
  236. package/dist/components/data-display/Table/Table.js +86 -85
  237. package/dist/components/data-display/Table/Table.js.map +1 -1
  238. package/dist/components/data-display/Table/Table.module.css.cjs +1 -1
  239. package/dist/components/data-display/Table/Table.module.css.js +50 -51
  240. package/dist/components/data-display/Table/Table.module.css.js.map +1 -1
  241. package/dist/components/data-display/Tag/Tag.cjs +2 -0
  242. package/dist/components/data-display/Tag/Tag.cjs.map +1 -0
  243. package/dist/components/data-display/Tag/Tag.js +50 -0
  244. package/dist/components/data-display/Tag/Tag.js.map +1 -0
  245. package/dist/components/data-display/Tag/Tag.module.css.cjs +2 -0
  246. package/dist/components/data-display/Tag/Tag.module.css.cjs.map +1 -0
  247. package/dist/components/data-display/Tag/Tag.module.css.js +22 -0
  248. package/dist/components/data-display/Tag/Tag.module.css.js.map +1 -0
  249. package/dist/components/data-display/Timeline/Timeline.cjs +2 -0
  250. package/dist/components/data-display/Timeline/Timeline.cjs.map +1 -0
  251. package/dist/components/data-display/Timeline/Timeline.js +31 -0
  252. package/dist/components/data-display/Timeline/Timeline.js.map +1 -0
  253. package/dist/components/data-display/Timeline/Timeline.module.css.cjs +2 -0
  254. package/dist/components/data-display/Timeline/Timeline.module.css.cjs.map +1 -0
  255. package/dist/components/data-display/Timeline/Timeline.module.css.js +30 -0
  256. package/dist/components/data-display/Timeline/Timeline.module.css.js.map +1 -0
  257. package/dist/components/feedback/Skeleton/Skeleton.cjs +2 -0
  258. package/dist/components/feedback/Skeleton/Skeleton.cjs.map +1 -0
  259. package/dist/components/feedback/Skeleton/Skeleton.js +17 -0
  260. package/dist/components/feedback/Skeleton/Skeleton.js.map +1 -0
  261. package/dist/components/feedback/Skeleton/Skeleton.module.css.cjs +2 -0
  262. package/dist/components/feedback/Skeleton/Skeleton.module.css.cjs.map +1 -0
  263. package/dist/components/feedback/Skeleton/Skeleton.module.css.js +15 -0
  264. package/dist/components/feedback/Skeleton/Skeleton.module.css.js.map +1 -0
  265. package/dist/components/feedback/Toast/Toast.module.css.cjs +2 -0
  266. package/dist/components/feedback/Toast/Toast.module.css.cjs.map +1 -0
  267. package/dist/components/feedback/Toast/Toast.module.css.js +31 -0
  268. package/dist/components/feedback/Toast/Toast.module.css.js.map +1 -0
  269. package/dist/components/feedback/Toast/ToastRegion.cjs +2 -0
  270. package/dist/components/feedback/Toast/ToastRegion.cjs.map +1 -0
  271. package/dist/components/feedback/Toast/ToastRegion.js +62 -0
  272. package/dist/components/feedback/Toast/ToastRegion.js.map +1 -0
  273. package/dist/components/feedback/Toast/toastStore.cjs +2 -0
  274. package/dist/components/feedback/Toast/toastStore.cjs.map +1 -0
  275. package/dist/components/feedback/Toast/toastStore.js +33 -0
  276. package/dist/components/feedback/Toast/toastStore.js.map +1 -0
  277. package/dist/components/forms/Checkbox/Checkbox.cjs +1 -1
  278. package/dist/components/forms/Checkbox/Checkbox.cjs.map +1 -1
  279. package/dist/components/forms/Checkbox/Checkbox.js +43 -31
  280. package/dist/components/forms/Checkbox/Checkbox.js.map +1 -1
  281. package/dist/components/forms/Checkbox/Checkbox.module.css.cjs +1 -1
  282. package/dist/components/forms/Checkbox/Checkbox.module.css.js +1 -1
  283. package/dist/components/forms/CheckboxGroup/CheckboxGroup.cjs +2 -0
  284. package/dist/components/forms/CheckboxGroup/CheckboxGroup.cjs.map +1 -0
  285. package/dist/components/forms/CheckboxGroup/CheckboxGroup.js +54 -0
  286. package/dist/components/forms/CheckboxGroup/CheckboxGroup.js.map +1 -0
  287. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs +2 -0
  288. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs.map +1 -0
  289. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js +22 -0
  290. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js.map +1 -0
  291. package/dist/components/forms/ColorPicker/ColorPicker.cjs +2 -0
  292. package/dist/components/forms/ColorPicker/ColorPicker.cjs.map +1 -0
  293. package/dist/components/forms/ColorPicker/ColorPicker.js +57 -0
  294. package/dist/components/forms/ColorPicker/ColorPicker.js.map +1 -0
  295. package/dist/components/forms/ColorPicker/ColorPicker.module.css.cjs +2 -0
  296. package/dist/components/forms/ColorPicker/ColorPicker.module.css.cjs.map +1 -0
  297. package/dist/components/forms/ColorPicker/ColorPicker.module.css.js +22 -0
  298. package/dist/components/forms/ColorPicker/ColorPicker.module.css.js.map +1 -0
  299. package/dist/components/forms/ComboBox/ComboBox.cjs.map +1 -1
  300. package/dist/components/forms/ComboBox/ComboBox.js.map +1 -1
  301. package/dist/components/forms/ComboBox/ComboBox.module.css.cjs +1 -1
  302. package/dist/components/forms/ComboBox/ComboBox.module.css.js +20 -20
  303. package/dist/components/forms/Field/Field.cjs +1 -1
  304. package/dist/components/forms/Field/Field.cjs.map +1 -1
  305. package/dist/components/forms/Field/Field.js +21 -20
  306. package/dist/components/forms/Field/Field.js.map +1 -1
  307. package/dist/components/forms/Field/Field.module.css.cjs +1 -1
  308. package/dist/components/forms/Field/Field.module.css.js +18 -12
  309. package/dist/components/forms/Field/Field.module.css.js.map +1 -1
  310. package/dist/components/forms/FileUpload/FileUpload.cjs +2 -0
  311. package/dist/components/forms/FileUpload/FileUpload.cjs.map +1 -0
  312. package/dist/components/forms/FileUpload/FileUpload.js +142 -0
  313. package/dist/components/forms/FileUpload/FileUpload.js.map +1 -0
  314. package/dist/components/forms/FileUpload/FileUpload.module.css.cjs +2 -0
  315. package/dist/components/forms/FileUpload/FileUpload.module.css.cjs.map +1 -0
  316. package/dist/components/forms/FileUpload/FileUpload.module.css.js +46 -0
  317. package/dist/components/forms/FileUpload/FileUpload.module.css.js.map +1 -0
  318. package/dist/components/forms/InputPassword/InputPassword.module.css.cjs +1 -1
  319. package/dist/components/forms/InputPassword/InputPassword.module.css.js +12 -12
  320. package/dist/components/forms/InputText/InputText.cjs +1 -1
  321. package/dist/components/forms/InputText/InputText.cjs.map +1 -1
  322. package/dist/components/forms/InputText/InputText.js +55 -47
  323. package/dist/components/forms/InputText/InputText.js.map +1 -1
  324. package/dist/components/forms/InputText/InputText.module.css.cjs +1 -1
  325. package/dist/components/forms/InputText/InputText.module.css.js +10 -10
  326. package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs +1 -1
  327. package/dist/components/forms/RadioGroup/RadioGroup.module.css.js +4 -4
  328. package/dist/components/forms/SegmentedControl/SegmentedControl.cjs +2 -0
  329. package/dist/components/forms/SegmentedControl/SegmentedControl.cjs.map +1 -0
  330. package/dist/components/forms/SegmentedControl/SegmentedControl.js +52 -0
  331. package/dist/components/forms/SegmentedControl/SegmentedControl.js.map +1 -0
  332. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs +2 -0
  333. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs.map +1 -0
  334. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.js +22 -0
  335. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.js.map +1 -0
  336. package/dist/components/forms/Select/Select.module.css.cjs +1 -1
  337. package/dist/components/forms/Select/Select.module.css.js +13 -13
  338. package/dist/components/forms/Switch/Switch.module.css.cjs +1 -1
  339. package/dist/components/forms/Switch/Switch.module.css.js +2 -2
  340. package/dist/components/icons/icons.cjs +1 -1
  341. package/dist/components/icons/icons.cjs.map +1 -1
  342. package/dist/components/icons/icons.js +198 -40
  343. package/dist/components/icons/icons.js.map +1 -1
  344. package/dist/components/navigation/SkipLink/SkipLink.cjs +2 -0
  345. package/dist/components/navigation/SkipLink/SkipLink.cjs.map +1 -0
  346. package/dist/components/navigation/SkipLink/SkipLink.js +9 -0
  347. package/dist/components/navigation/SkipLink/SkipLink.js.map +1 -0
  348. package/dist/components/navigation/SkipLink/SkipLink.module.css.cjs +2 -0
  349. package/dist/components/navigation/SkipLink/SkipLink.module.css.cjs.map +1 -0
  350. package/dist/components/navigation/SkipLink/SkipLink.module.css.js +8 -0
  351. package/dist/components/navigation/SkipLink/SkipLink.module.css.js.map +1 -0
  352. package/dist/components/navigation/Steps/Steps.cjs +2 -0
  353. package/dist/components/navigation/Steps/Steps.cjs.map +1 -0
  354. package/dist/components/navigation/Steps/Steps.js +30 -0
  355. package/dist/components/navigation/Steps/Steps.js.map +1 -0
  356. package/dist/components/navigation/Steps/Steps.module.css.cjs +2 -0
  357. package/dist/components/navigation/Steps/Steps.module.css.cjs.map +1 -0
  358. package/dist/components/navigation/Steps/Steps.module.css.js +26 -0
  359. package/dist/components/navigation/Steps/Steps.module.css.js.map +1 -0
  360. package/dist/components/navigation/Tabs/Tabs.cjs +1 -1
  361. package/dist/components/navigation/Tabs/Tabs.cjs.map +1 -1
  362. package/dist/components/navigation/Tabs/Tabs.js +88 -79
  363. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  364. package/dist/components/navigation/Tabs/Tabs.module.css.cjs +1 -1
  365. package/dist/components/navigation/Tabs/Tabs.module.css.js +18 -14
  366. package/dist/components/navigation/Tabs/Tabs.module.css.js.map +1 -1
  367. package/dist/components/navigation/TabsNav/TabsNav.cjs +2 -0
  368. package/dist/components/navigation/TabsNav/TabsNav.cjs.map +1 -0
  369. package/dist/components/navigation/TabsNav/TabsNav.js +21 -0
  370. package/dist/components/navigation/TabsNav/TabsNav.js.map +1 -0
  371. package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs +2 -0
  372. package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs.map +1 -0
  373. package/dist/components/navigation/TabsNav/TabsNav.module.css.js +18 -0
  374. package/dist/components/navigation/TabsNav/TabsNav.module.css.js.map +1 -0
  375. package/dist/components/overlays/Dialog/Dialog.cjs +1 -1
  376. package/dist/components/overlays/Dialog/Dialog.cjs.map +1 -1
  377. package/dist/components/overlays/Dialog/Dialog.js +11 -58
  378. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  379. package/dist/components/overlays/Dialog/DialogFrame.cjs +2 -0
  380. package/dist/components/overlays/Dialog/DialogFrame.cjs.map +1 -0
  381. package/dist/components/overlays/Dialog/DialogFrame.js +65 -0
  382. package/dist/components/overlays/Dialog/DialogFrame.js.map +1 -0
  383. package/dist/components/overlays/Drawer/Drawer.cjs +2 -0
  384. package/dist/components/overlays/Drawer/Drawer.cjs.map +1 -0
  385. package/dist/components/overlays/Drawer/Drawer.js +17 -0
  386. package/dist/components/overlays/Drawer/Drawer.js.map +1 -0
  387. package/dist/components/overlays/Drawer/Drawer.module.css.cjs +2 -0
  388. package/dist/components/overlays/Drawer/Drawer.module.css.cjs.map +1 -0
  389. package/dist/components/overlays/Drawer/Drawer.module.css.js +23 -0
  390. package/dist/components/overlays/Drawer/Drawer.module.css.js.map +1 -0
  391. package/dist/components/overlays/Menu/Menu.cjs +1 -1
  392. package/dist/components/overlays/Menu/Menu.cjs.map +1 -1
  393. package/dist/components/overlays/Menu/Menu.js +105 -86
  394. package/dist/components/overlays/Menu/Menu.js.map +1 -1
  395. package/dist/components/overlays/Menu/Menu.module.css.cjs +1 -1
  396. package/dist/components/overlays/Menu/Menu.module.css.js +24 -6
  397. package/dist/components/overlays/Menu/Menu.module.css.js.map +1 -1
  398. package/dist/design-system.css +1 -1
  399. package/dist/index.cjs +1 -1
  400. package/dist/index.js +190 -118
  401. package/dist/index.js.map +1 -1
  402. package/dist/types/components/actions/ButtonTile/ButtonTile.d.ts +14 -0
  403. package/dist/types/components/actions/ButtonTile/index.d.ts +2 -0
  404. package/dist/types/components/actions/Toolbar/Toolbar.d.ts +27 -0
  405. package/dist/types/components/actions/Toolbar/index.d.ts +2 -0
  406. package/dist/types/components/charts/ChartArea/ChartArea.d.ts +15 -4
  407. package/dist/types/components/charts/ChartBar/ChartBar.d.ts +11 -4
  408. package/dist/types/components/charts/ChartCombo/ChartCombo.d.ts +16 -4
  409. package/dist/types/components/charts/ChartDonut/ChartDonut.d.ts +5 -1
  410. package/dist/types/components/charts/ChartGauge/ChartGauge.d.ts +83 -0
  411. package/dist/types/components/charts/ChartGauge/gaugeLayout.d.ts +64 -0
  412. package/dist/types/components/charts/ChartGauge/gaugeReading.d.ts +97 -0
  413. package/dist/types/components/charts/ChartGauge/gaugeScale.d.ts +38 -0
  414. package/dist/types/components/charts/ChartGauge/index.d.ts +2 -0
  415. package/dist/types/components/charts/ChartLine/ChartLine.d.ts +15 -4
  416. package/dist/types/components/charts/ChartMap/ChartMap.d.ts +104 -0
  417. package/dist/types/components/charts/ChartMap/ChartMapLegend.d.ts +44 -0
  418. package/dist/types/components/charts/ChartMap/ChartMapTable.d.ts +38 -0
  419. package/dist/types/components/charts/ChartMap/index.d.ts +4 -0
  420. package/dist/types/components/charts/ChartMap/mapGeometry.d.ts +56 -0
  421. package/dist/types/components/charts/ChartMap/mapLabels.d.ts +51 -0
  422. package/dist/types/components/charts/ChartMap/mapScales.d.ts +76 -0
  423. package/dist/types/components/charts/ChartMap/polylabel.d.ts +9 -0
  424. package/dist/types/components/charts/ChartPie/ChartPie.d.ts +5 -1
  425. package/dist/types/components/charts/ChartRadial/ChartRadial.d.ts +5 -1
  426. package/dist/types/components/charts/ChartSankey/ChartSankey.d.ts +5 -1
  427. package/dist/types/components/charts/ChartScatter/ChartScatter.d.ts +7 -1
  428. package/dist/types/components/charts/ChartSunburst/ChartSunburst.d.ts +11 -2
  429. package/dist/types/components/charts/ChartTimeline/ChartTimeline.d.ts +137 -0
  430. package/dist/types/components/charts/ChartTimeline/ChartTimelineTable.d.ts +25 -0
  431. package/dist/types/components/charts/ChartTimeline/index.d.ts +2 -0
  432. package/dist/types/components/charts/ChartTimeline/timelineLayout.d.ts +70 -0
  433. package/dist/types/components/charts/ChartTimeline/timelineTime.d.ts +16 -0
  434. package/dist/types/components/charts/ChartTimeline/timelineTooltip.d.ts +45 -0
  435. package/dist/types/components/charts/ChartTooltip/ChartTooltip.d.ts +2 -0
  436. package/dist/types/components/charts/ChartTreemap/ChartTreemap.d.ts +11 -2
  437. package/dist/types/components/charts/ChartWaterfall/ChartWaterfall.d.ts +8 -3
  438. package/dist/types/components/charts/core/CartesianFrame.d.ts +6 -1
  439. package/dist/types/components/charts/core/ChartFrame.d.ts +7 -1
  440. package/dist/types/components/charts/core/ChartLegend.d.ts +3 -1
  441. package/dist/types/components/charts/core/PointBands.d.ts +22 -0
  442. package/dist/types/components/charts/core/cartesianLayout.d.ts +10 -4
  443. package/dist/types/components/charts/core/hoverPath.d.ts +10 -0
  444. package/dist/types/components/charts/core/index.d.ts +13 -3
  445. package/dist/types/components/charts/core/pointLabels.d.ts +13 -0
  446. package/dist/types/components/charts/core/tooltips.d.ts +49 -0
  447. package/dist/types/components/charts/core/useCartesianLayout.d.ts +20 -0
  448. package/dist/types/components/charts/core/useSeriesToggle.d.ts +15 -1
  449. package/dist/types/components/data-display/Accordion/Accordion.d.ts +6 -1
  450. package/dist/types/components/data-display/Accordion/index.d.ts +1 -1
  451. package/dist/types/components/data-display/List/List.d.ts +1 -1
  452. package/dist/types/components/data-display/List/useListing.d.ts +7 -1
  453. package/dist/types/components/data-display/SortableList/SortableList.d.ts +22 -0
  454. package/dist/types/components/data-display/SortableList/index.d.ts +2 -0
  455. package/dist/types/components/data-display/Tag/Tag.d.ts +13 -0
  456. package/dist/types/components/data-display/Tag/index.d.ts +2 -0
  457. package/dist/types/components/data-display/Timeline/Timeline.d.ts +15 -0
  458. package/dist/types/components/data-display/Timeline/index.d.ts +2 -0
  459. package/dist/types/components/feedback/Skeleton/Skeleton.d.ts +13 -0
  460. package/dist/types/components/feedback/Skeleton/index.d.ts +2 -0
  461. package/dist/types/components/feedback/Toast/ToastRegion.d.ts +2 -0
  462. package/dist/types/components/feedback/Toast/index.d.ts +3 -0
  463. package/dist/types/components/feedback/Toast/toastStore.d.ts +24 -0
  464. package/dist/types/components/forms/CheckboxGroup/CheckboxGroup.d.ts +28 -0
  465. package/dist/types/components/forms/CheckboxGroup/index.d.ts +2 -0
  466. package/dist/types/components/forms/ColorPicker/ColorPicker.d.ts +26 -0
  467. package/dist/types/components/forms/ColorPicker/index.d.ts +2 -0
  468. package/dist/types/components/forms/ComboBox/ComboBox.d.ts +7 -1
  469. package/dist/types/components/forms/Field/Field.d.ts +6 -2
  470. package/dist/types/components/forms/Field/index.d.ts +1 -1
  471. package/dist/types/components/forms/FileUpload/FileUpload.d.ts +37 -0
  472. package/dist/types/components/forms/FileUpload/index.d.ts +2 -0
  473. package/dist/types/components/forms/InputText/InputText.d.ts +4 -2
  474. package/dist/types/components/forms/SegmentedControl/SegmentedControl.d.ts +23 -0
  475. package/dist/types/components/forms/SegmentedControl/index.d.ts +2 -0
  476. package/dist/types/components/icons/icons.d.ts +29 -0
  477. package/dist/types/components/icons/index.d.ts +1 -1
  478. package/dist/types/components/navigation/SkipLink/SkipLink.d.ts +7 -0
  479. package/dist/types/components/navigation/SkipLink/index.d.ts +2 -0
  480. package/dist/types/components/navigation/Steps/Steps.d.ts +16 -0
  481. package/dist/types/components/navigation/Steps/index.d.ts +2 -0
  482. package/dist/types/components/navigation/Tabs/Tabs.d.ts +5 -1
  483. package/dist/types/components/navigation/TabsNav/TabsNav.d.ts +20 -0
  484. package/dist/types/components/navigation/TabsNav/index.d.ts +2 -0
  485. package/dist/types/components/overlays/Dialog/Dialog.d.ts +21 -9
  486. package/dist/types/components/overlays/Dialog/DialogFrame.d.ts +13 -0
  487. package/dist/types/components/overlays/Drawer/Drawer.d.ts +9 -0
  488. package/dist/types/components/overlays/Drawer/index.d.ts +2 -0
  489. package/dist/types/components/overlays/Menu/Menu.d.ts +16 -2
  490. package/dist/types/components/overlays/Menu/index.d.ts +1 -1
  491. package/dist/types/index.d.ts +43 -7
  492. package/dist/types/utils/formatters/formatarDuracao.d.ts +5 -0
  493. package/dist/types/utils/formatters/formatarNumero.d.ts +6 -1
  494. package/dist/types/utils/formatters/formatarTamanhoDeArquivo.d.ts +7 -0
  495. package/dist/types/utils/formatters/index.d.ts +4 -1
  496. package/dist/utils/formatters/formatarDuracao.cjs +2 -0
  497. package/dist/utils/formatters/formatarDuracao.cjs.map +1 -0
  498. package/dist/utils/formatters/formatarDuracao.js +10 -0
  499. package/dist/utils/formatters/formatarDuracao.js.map +1 -0
  500. package/dist/utils/formatters/formatarNumero.cjs +1 -1
  501. package/dist/utils/formatters/formatarNumero.cjs.map +1 -1
  502. package/dist/utils/formatters/formatarNumero.js +42 -17
  503. package/dist/utils/formatters/formatarNumero.js.map +1 -1
  504. package/dist/utils/formatters/formatarTamanhoDeArquivo.cjs +2 -0
  505. package/dist/utils/formatters/formatarTamanhoDeArquivo.cjs.map +1 -0
  506. package/dist/utils/formatters/formatarTamanhoDeArquivo.js +17 -0
  507. package/dist/utils/formatters/formatarTamanhoDeArquivo.js.map +1 -0
  508. package/package.json +3 -1
@@ -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: o, ...a }) {
10
+ return !o || typeof document > "u" ? null : x(/* @__PURE__ */ e(k, { ...a }), document.body);
11
+ }
12
+ function k({
13
+ children: o,
14
+ className: a,
15
+ description: s,
16
+ dismissable: t = !0,
17
+ footer: l,
18
+ icon: c,
19
+ onClose: u,
20
+ ref: h,
21
+ role: v = "dialog",
22
+ surfaceClassName: y,
23
+ title: d,
24
+ underlayClassName: b,
25
+ ...N
26
+ }) {
27
+ const i = I(null), g = S(i, h), m = j(), f = `${m}-title`, p = `${m}-description`, { overlayProps: D, underlayProps: F } = R(
28
+ {
29
+ isOpen: !0,
30
+ onClose: u,
31
+ isDismissable: t,
32
+ isKeyboardDismissDisabled: !t
33
+ },
34
+ i
35
+ );
36
+ return B(), P(() => i.current ? C([i.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: [y, a].filter(Boolean).join(" "),
43
+ role: v,
44
+ "aria-modal": "true",
45
+ "aria-labelledby": d ? f : void 0,
46
+ "aria-describedby": s ? p : void 0,
47
+ children: [
48
+ d && /* @__PURE__ */ n("header", { className: [r.header, o && r.headerDivided].filter(Boolean).join(" "), children: [
49
+ c && /* @__PURE__ */ e("span", { "aria-hidden": "true", className: r.icon, children: c }),
50
+ /* @__PURE__ */ n("div", { className: r.heading, children: [
51
+ /* @__PURE__ */ e("h2", { className: r.title, id: f, children: d }),
52
+ s && /* @__PURE__ */ e("p", { className: r.description, id: p, children: s })
53
+ ] }),
54
+ t && /* @__PURE__ */ e("button", { className: r.close, type: "button", "aria-label": "Fechar", onClick: u, children: /* @__PURE__ */ e($, { size: 20 }) })
55
+ ] }),
56
+ o && /* @__PURE__ */ e("div", { className: r.body, children: o }),
57
+ l && /* @__PURE__ */ e("div", { className: r.footer, children: l })
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 { DialogBaseProps, DialogRole } from './Dialog';\nimport styles from './Dialog.module.css';\n\nexport interface DialogFrameProps extends DialogBaseProps {\n 'aria-label'?: string;\n description?: string;\n icon?: ReactNode;\n role?: DialogRole;\n surfaceClassName: string;\n title?: 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={title ? titleId : undefined}\n aria-describedby={description ? descriptionId : undefined}\n >\n {title && (\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 )}\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":";;;;;;;;AAoBO,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,mBAAiBE,IAAQQ,IAAU;AAAA,MACnC,oBAAkBhB,IAAciB,IAAgB;AAAA,MAE/C,UAAA;AAAA,QAAAT,KACC,gBAAAiB,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,QAED7B,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 { DialogBaseProps, DialogTitledProps } from '../Dialog/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 DialogBaseProps, Omit<DialogTitledProps, 'icon'> {\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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.js","sources":["../../../../src/components/overlays/Drawer/Drawer.tsx"],"sourcesContent":["import type { DialogBaseProps, DialogTitledProps } from '../Dialog/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 DialogBaseProps, Omit<DialogTitledProps, 'icon'> {\n side?: DrawerSide;\n size?: DrawerSize;\n}\n\n/** Painel modal preso a lateral da tela, com a mesma mecanica do `Dialog`: foco preso, Esc fecha, a pagina nao rola. */\nexport function Drawer({ side = 'right', size = 'md', ...props }: DrawerProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.drawer, styles[size]].join(' ')}\n underlayClassName={[styles.underlay, styles[side]].join(' ')}\n />\n );\n}\n"],"names":["Drawer","side","size","props","jsx","DialogFrame","styles"],"mappings":";;;AAaO,SAASA,EAAO,EAAE,MAAAC,IAAO,SAAS,MAAAC,IAAO,MAAM,GAAGC,KAAsB;AAC7E,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,kBAAkB,CAACG,EAAO,QAAQA,EAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG;AAAA,MACxD,mBAAmB,CAACI,EAAO,UAAUA,EAAOL,CAAI,CAAC,EAAE,KAAK,GAAG;AAAA,IAAA;AAAA,EAAA;AAGjE;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r="_underlay_wnki2_1",e="_right_wnki2_12",_="_left_wnki2_16",t="_drawer_wnki2_21",d="_sm_wnki2_43",n="_md_wnki2_47",l="_lg_wnki2_51",a={underlay:r,"drawer-fade":"_drawer-fade_wnki2_1",right:e,left:_,drawer:t,"drawer-from-right":"_drawer-from-right_wnki2_1","drawer-from-left":"_drawer-from-left_wnki2_1",sm:d,md:n,lg:l};exports.default=a;exports.drawer=t;exports.left=_;exports.lg=l;exports.md=n;exports.right=e;exports.sm=d;exports.underlay=r;
2
+ //# sourceMappingURL=Drawer.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ const r = "_underlay_wnki2_1", _ = "_right_wnki2_12", e = "_left_wnki2_16", n = "_drawer_wnki2_21", t = "_sm_wnki2_43", w = "_md_wnki2_47", d = "_lg_wnki2_51", a = {
2
+ underlay: r,
3
+ "drawer-fade": "_drawer-fade_wnki2_1",
4
+ right: _,
5
+ left: e,
6
+ drawer: n,
7
+ "drawer-from-right": "_drawer-from-right_wnki2_1",
8
+ "drawer-from-left": "_drawer-from-left_wnki2_1",
9
+ sm: t,
10
+ md: w,
11
+ lg: d
12
+ };
13
+ export {
14
+ a as default,
15
+ n as drawer,
16
+ e as left,
17
+ d as lg,
18
+ w as md,
19
+ _ as right,
20
+ t as sm,
21
+ r as underlay
22
+ };
23
+ //# sourceMappingURL=Drawer.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("react/jsx-runtime"),n=require("react"),S=require("react-dom"),j=require("@react-aria/focus"),q=require("@react-aria/overlays"),P=require("../../../hooks/useMergedRefs.cjs"),K=require("./Menu.module.css.cjs"),A=require("../../../hooks/useSelection/useSelection.cjs");function O(r,d){return o=>{r==null||r(o),d(o)}}function E({children:r,defaultOpen:d=!1,items:o,label:g,onOpenChange:c,open:y}){const a=n.useRef(null),[x,h]=n.useState(d),[l,p]=n.useState("first"),i=y??x;function k(s){h(s),c==null||c(s)}function b(s){p(s),k(!0)}function m(s){var w;k(!1),s&&((w=a.current)==null||w.focus())}const u=r.props,D=P.useMergedRefs(a,u.ref),M=n.cloneElement(r,{ref:D,"aria-haspopup":"menu","aria-expanded":i,onClick:O(u.onClick,()=>i?m(!0):b("first")),onKeyDown:O(u.onKeyDown,s=>{(s.key==="ArrowDown"||s.key==="ArrowUp")&&(s.preventDefault(),b(s.key==="ArrowDown"?"first":"last"))})});return f.jsxs(f.Fragment,{children:[M,i&&typeof document<"u"&&S.createPortal(f.jsx(j.FocusScope,{children:f.jsx(N,{items:o,label:g,openedWith:l,onClose:m,triggerRef:a})}),document.body)]})}function N({items:r,label:d,onClose:o,openedWith:g,triggerRef:c}){var R;const y=n.useRef(null),a=n.useRef(new Map),x=n.useMemo(()=>r.map(e=>({key:e.key,disabled:e.disabled,textValue:e.label})),[r]),h=A.useSelection({items:x,mode:"none"}),{focusedKey:l,focusFirst:p,focusLast:i,focusNext:k,focusPrevious:b,search:m}=h,{overlayProps:u}=q.useOverlay({isOpen:!0,onClose:()=>o(!1),isDismissable:!0,shouldCloseOnBlur:!1,shouldCloseOnInteractOutside:e=>{var t;return!((t=c.current)!=null&&t.contains(e))}},y),{overlayProps:D}=q.useOverlayPosition({targetRef:c,overlayRef:y,placement:"bottom start",offset:6,containerPadding:8,isOpen:!0}),M=Math.min(Number((R=D.style)==null?void 0:R.maxHeight)||360,360);n.useEffect(()=>{g==="last"?i():p()},[]),n.useEffect(()=>{var e;l&&((e=a.current.get(l))==null||e.focus())},[l]);function s(e){var t;e.disabled||(o(!0),(t=e.onSelect)==null||t.call(e))}function w(e){e.key==="ArrowDown"?(e.preventDefault(),k()):e.key==="ArrowUp"?(e.preventDefault(),b()):e.key==="Home"?(e.preventDefault(),p()):e.key==="End"?(e.preventDefault(),i()):e.key==="Escape"||e.key==="Tab"?o(!0):e.key.length===1&&!e.metaKey&&!e.ctrlKey&&m(e.key)}return f.jsx("div",{...u,"data-react-aria-top-layer":"true",ref:y,className:K.default.menu,style:{...D.style,maxHeight:M},role:"menu","aria-label":d,onKeyDown:e=>{var t;w(e),(t=u.onKeyDown)==null||t.call(u,e)},children:r.map(e=>f.jsx("button",{ref:t=>{t?a.current.set(e.key,t):a.current.delete(e.key)},className:K.default.item,type:"button",role:"menuitem",disabled:e.disabled,tabIndex:l===e.key?0:-1,onClick:()=>s(e),children:e.label},e.key))})}exports.Menu=E;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),c=require("react"),A=require("react-dom"),E=require("@react-aria/focus"),R=require("@react-aria/overlays"),I=require("../../../hooks/useMergedRefs.cjs"),o=require("./Menu.module.css.cjs"),T=require("../../../hooks/useSelection/useSelection.cjs"),B=require("../../icons/icons.cjs");function S(n,y){return u=>{n==null||n(u),y(u)}}function F({children:n,defaultOpen:y=!1,items:u,label:D,onOpenChange:a,open:h}){const l=c.useRef(null),[p,w]=c.useState(y),[M,i]=c.useState("first"),f=h??p;function k(t){w(t),a==null||a(t)}function b(t){i(t),k(!0)}function x(t){var g;k(!1),t&&((g=l.current)==null||g.focus())}const m=n.props,d=I.useMergedRefs(l,m.ref),j=c.cloneElement(n,{ref:d,"aria-haspopup":"menu","aria-expanded":f,onClick:S(m.onClick,()=>f?x(!0):b("first")),onKeyDown:S(m.onKeyDown,t=>{(t.key==="ArrowDown"||t.key==="ArrowUp")&&(t.preventDefault(),b(t.key==="ArrowDown"?"first":"last"))})});return r.jsxs(r.Fragment,{children:[j,f&&typeof document<"u"&&A.createPortal(r.jsx(E.FocusScope,{children:r.jsx(H,{items:u,label:D,openedWith:M,onClose:x,triggerRef:l})}),document.body)]})}function K(n){return"items"in n}function H({items:n,label:y,onClose:u,openedWith:D,triggerRef:a}){var q;const h=c.useRef(null),l=c.useRef(new Map),p=c.useMemo(()=>n.flatMap(e=>K(e)?e.items:[e]),[n]),w=c.useMemo(()=>p.map(e=>({key:e.key,disabled:e.disabled,textValue:e.label})),[p]),M=T.useSelection({items:w,mode:"none"}),{focusedKey:i,focusFirst:f,focusLast:k,focusNext:b,focusPrevious:x,search:m}=M,{overlayProps:d}=R.useOverlay({isOpen:!0,onClose:()=>u(!1),isDismissable:!0,shouldCloseOnBlur:!1,shouldCloseOnInteractOutside:e=>{var s;return!((s=a.current)!=null&&s.contains(e))}},h),{overlayProps:j}=R.useOverlayPosition({targetRef:a,overlayRef:h,placement:"bottom start",offset:6,containerPadding:8,isOpen:!0}),t=Math.min(Number((q=j.style)==null?void 0:q.maxHeight)||360,360);c.useEffect(()=>{D==="last"?k():f()},[]),c.useEffect(()=>{var e;i&&((e=l.current.get(i))==null||e.focus())},[i]);function g(e){var s;e.disabled||(u(!0),(s=e.onSelect)==null||s.call(e))}function N(e){const s=e.checked!==void 0;return r.jsxs("button",{"aria-checked":s?e.checked:void 0,"aria-keyshortcuts":e.shortcut,className:[o.default.item,e.tone==="danger"&&o.default.danger].filter(Boolean).join(" "),disabled:e.disabled,onClick:()=>g(e),ref:O=>{O?l.current.set(e.key,O):l.current.delete(e.key)},role:s?"menuitemcheckbox":"menuitem",tabIndex:i===e.key?0:-1,type:"button",children:[e.icon&&r.jsx("span",{"aria-hidden":"true",className:o.default.icon,children:e.icon}),r.jsx("span",{className:o.default.label,children:e.label}),e.shortcut&&r.jsx("kbd",{"aria-hidden":"true",className:o.default.shortcut,children:e.shortcut}),s&&r.jsx(B.IconCheck,{className:[o.default.check,e.checked&&o.default.checkOn].filter(Boolean).join(" ")})]},e.key)}function P(e){e.key==="ArrowDown"?(e.preventDefault(),b()):e.key==="ArrowUp"?(e.preventDefault(),x()):e.key==="Home"?(e.preventDefault(),f()):e.key==="End"?(e.preventDefault(),k()):e.key==="Escape"||e.key==="Tab"?u(!0):e.key.length===1&&!e.metaKey&&!e.ctrlKey&&m(e.key)}return r.jsx("div",{...d,"data-react-aria-top-layer":"true",ref:h,className:o.default.menu,style:{...j.style,maxHeight:t},role:"menu","aria-label":y,onKeyDown:e=>{var s;P(e),(s=d.onKeyDown)==null||s.call(d,e)},children:n.map((e,s)=>K(e)?r.jsxs("div",{"aria-label":e.title,className:o.default.section,role:"group",children:[s>0&&r.jsx("div",{"aria-hidden":"true",className:o.default.divider}),e.title&&r.jsx("div",{"aria-hidden":"true",className:o.default.sectionTitle,children:e.title}),e.items.map(N)]},e.key):N(e))})}exports.Menu=F;
2
2
  //# sourceMappingURL=Menu.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.cjs","sources":["../../../../src/components/overlays/Menu/Menu.tsx"],"sourcesContent":["import {\n cloneElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactElement,\n type Ref,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay, useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Menu.module.css';\n\nexport interface MenuItem {\n disabled?: boolean;\n key: string;\n label: string;\n onSelect?: () => void;\n}\n\nexport interface MenuProps {\n children: ReactElement<Record<string, unknown>>;\n /** Abertura inicial no modo nao controlado. */\n defaultOpen?: boolean;\n items: readonly MenuItem[];\n label: string;\n /** Avisa cada abertura e fechamento pedidos pelo gatilho, pelo teclado, pela opcao ou pelo clique fora. */\n onOpenChange?: (open: boolean) => void;\n /** Controla a abertura; sem ele, o menu guarda o proprio estado. */\n open?: boolean;\n}\n\n/** Encadeia o manipulador do gatilho ao do menu, em vez de substitui-lo. */\nfunction encadear<E>(proprio: ((evento: E) => void) | undefined, seguinte: (evento: E) => void) {\n return (evento: E) => {\n proprio?.(evento);\n seguinte(evento);\n };\n}\n\nexport function Menu({ children, defaultOpen = false, items, label, onOpenChange, open: controlledOpen }: MenuProps) {\n const triggerRef = useRef<HTMLElement>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [openedWith, setOpenedWith] = useState<'first' | 'last'>('first');\n const open = controlledOpen ?? internalOpen;\n\n function setOpen(proximo: boolean) {\n setInternalOpen(proximo);\n onOpenChange?.(proximo);\n }\n\n function abrir(from: 'first' | 'last') {\n setOpenedWith(from);\n setOpen(true);\n }\n\n // O foco volta na hora, antes de o `onSelect` montar o que vem depois, como um campo com `autoFocus` ou\n // um Dialog, que guarda o elemento em foco para devolver. Clique fora nao devolve: o foco e de quem foi clicado.\n function fechar(devolverFoco: boolean) {\n setOpen(false);\n\n if (devolverFoco) {\n triggerRef.current?.focus();\n }\n }\n\n const dono = children.props;\n const mergedTriggerRef = useMergedRefs(triggerRef, dono.ref as Ref<HTMLElement> | undefined);\n const trigger = cloneElement(children, {\n ref: mergedTriggerRef,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n onClick: encadear(dono.onClick as (evento: unknown) => void, () =>\n open ? fechar(true) : abrir('first'),\n ),\n onKeyDown: encadear(dono.onKeyDown as (evento: KeyboardEvent) => void, (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n abrir(event.key === 'ArrowDown' ? 'first' : 'last');\n }\n }),\n });\n\n return (\n <>\n {trigger}\n {open &&\n typeof document !== 'undefined' &&\n createPortal(\n // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.\n // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.\n <FocusScope>\n <MenuList\n items={items}\n label={label}\n openedWith={openedWith}\n onClose={fechar}\n triggerRef={triggerRef}\n />\n </FocusScope>,\n document.body,\n )}\n </>\n );\n}\n\nfunction MenuList({\n items,\n label,\n onClose,\n openedWith,\n triggerRef,\n}: {\n items: readonly MenuItem[];\n label: string;\n onClose: (devolverFoco: boolean) => void;\n openedWith: 'first' | 'last';\n triggerRef: React.RefObject<HTMLElement | null>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const nodes = useRef(new Map<string, HTMLElement>());\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({ items: collection, mode: 'none' });\n const { focusedKey, focusFirst, focusLast, focusNext, focusPrevious, search } = selection;\n\n // useOverlayPosition entrega toda a altura disponivel; limitamos para que\n // uma lista longa nao ocupe a tela inteira.\n // Sem isto o gatilho conta como \"fora\": o ponteiro fecha o menu e o clique\n // dele reabre em seguida, e o menu pisca sem abrir.\n const { overlayProps } = useOverlay(\n {\n isOpen: true,\n onClose: () => onClose(false),\n isDismissable: true,\n shouldCloseOnBlur: false,\n shouldCloseOnInteractOutside: (elemento) => !triggerRef.current?.contains(elemento),\n },\n ref,\n );\n const { overlayProps: positionProps } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: ref,\n placement: 'bottom start',\n offset: 6,\n containerPadding: 8,\n isOpen: true,\n });\n\n const alturaMaxima = Math.min(Number(positionProps.style?.maxHeight) || 360, 360);\n\n useEffect(() => {\n if (openedWith === 'last') {\n focusLast();\n } else {\n focusFirst();\n }\n // Posicao inicial depende apenas de como o menu foi aberto.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (focusedKey) {\n nodes.current.get(focusedKey)?.focus();\n }\n }, [focusedKey]);\n\n function acionar(item: MenuItem) {\n if (item.disabled) {\n return;\n }\n\n onClose(true);\n item.onSelect?.();\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPrevious();\n } else if (event.key === 'Home') {\n event.preventDefault();\n focusFirst();\n } else if (event.key === 'End') {\n event.preventDefault();\n focusLast();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n onClose(true);\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey) {\n search(event.key);\n }\n }\n\n return (\n <div\n {...overlayProps}\n data-react-aria-top-layer=\"true\"\n ref={ref}\n className={styles.menu}\n style={{ ...positionProps.style, maxHeight: alturaMaxima }}\n role=\"menu\"\n aria-label={label}\n onKeyDown={(event) => {\n // Espalhar overlayProps antes nao basta: este onKeyDown o substituiria.\n handleKeyDown(event);\n overlayProps.onKeyDown?.(event);\n }}\n >\n {items.map((item) => (\n <button\n key={item.key}\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n className={styles.item}\n type=\"button\"\n role=\"menuitem\"\n disabled={item.disabled}\n tabIndex={focusedKey === item.key ? 0 : -1}\n onClick={() => acionar(item)}\n >\n {item.label}\n </button>\n ))}\n </div>\n );\n}\n"],"names":["encadear","proprio","seguinte","evento","Menu","children","defaultOpen","items","label","onOpenChange","controlledOpen","triggerRef","useRef","internalOpen","setInternalOpen","useState","openedWith","setOpenedWith","open","setOpen","proximo","abrir","from","fechar","devolverFoco","_a","dono","mergedTriggerRef","useMergedRefs","trigger","cloneElement","event","jsxs","Fragment","createPortal","FocusScope","jsx","MenuList","onClose","ref","nodes","collection","useMemo","item","selection","useSelection","focusedKey","focusFirst","focusLast","focusNext","focusPrevious","search","overlayProps","useOverlay","elemento","positionProps","useOverlayPosition","alturaMaxima","useEffect","acionar","handleKeyDown","styles","node"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.cjs","sources":["../../../../src/components/overlays/Menu/Menu.tsx"],"sourcesContent":["import {\n cloneElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay, useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport { IconCheck } from '../../icons';\nimport styles from './Menu.module.css';\n\nexport interface MenuItem {\n /** Com ele, o item e de marcar e mostra o visto quando marcado, como o tipo atual de um bloco. */\n checked?: boolean;\n disabled?: boolean;\n /** Icone decorativo antes do texto. */\n icon?: ReactNode;\n key: string;\n label: string;\n onSelect?: () => void;\n /** Atalho escrito a direita, como `Ctrl+D`, e anunciado em `aria-keyshortcuts`. */\n shortcut?: string;\n /** `danger` para a acao que destroi, como remover. */\n tone?: 'danger';\n}\n\n/** Grupo de itens, com titulo opcional; entre dois grupos, o menu desenha o divisor. */\nexport interface MenuSection {\n items: readonly MenuItem[];\n key: string;\n title?: string;\n}\n\nexport interface MenuProps {\n children: ReactElement<Record<string, unknown>>;\n /** Abertura inicial no modo nao controlado. */\n defaultOpen?: boolean;\n items: readonly (MenuItem | MenuSection)[];\n label: string;\n /** Avisa cada abertura e fechamento pedidos pelo gatilho, pelo teclado, pela opcao ou pelo clique fora. */\n onOpenChange?: (open: boolean) => void;\n /** Controla a abertura; sem ele, o menu guarda o proprio estado. */\n open?: boolean;\n}\n\n/** Encadeia o manipulador do gatilho ao do menu, em vez de substitui-lo. */\nfunction encadear<E>(proprio: ((evento: E) => void) | undefined, seguinte: (evento: E) => void) {\n return (evento: E) => {\n proprio?.(evento);\n seguinte(evento);\n };\n}\n\nexport function Menu({ children, defaultOpen = false, items, label, onOpenChange, open: controlledOpen }: MenuProps) {\n const triggerRef = useRef<HTMLElement>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [openedWith, setOpenedWith] = useState<'first' | 'last'>('first');\n const open = controlledOpen ?? internalOpen;\n\n function setOpen(proximo: boolean) {\n setInternalOpen(proximo);\n onOpenChange?.(proximo);\n }\n\n function abrir(from: 'first' | 'last') {\n setOpenedWith(from);\n setOpen(true);\n }\n\n // O foco volta na hora, antes de o `onSelect` montar o que vem depois, como um campo com `autoFocus` ou\n // um Dialog, que guarda o elemento em foco para devolver. Clique fora nao devolve: o foco e de quem foi clicado.\n function fechar(devolverFoco: boolean) {\n setOpen(false);\n\n if (devolverFoco) {\n triggerRef.current?.focus();\n }\n }\n\n const dono = children.props;\n const mergedTriggerRef = useMergedRefs(triggerRef, dono.ref as Ref<HTMLElement> | undefined);\n const trigger = cloneElement(children, {\n ref: mergedTriggerRef,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n onClick: encadear(dono.onClick as (evento: unknown) => void, () =>\n open ? fechar(true) : abrir('first'),\n ),\n onKeyDown: encadear(dono.onKeyDown as (evento: KeyboardEvent) => void, (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n abrir(event.key === 'ArrowDown' ? 'first' : 'last');\n }\n }),\n });\n\n return (\n <>\n {trigger}\n {open &&\n typeof document !== 'undefined' &&\n createPortal(\n // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.\n // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.\n <FocusScope>\n <MenuList\n items={items}\n label={label}\n openedWith={openedWith}\n onClose={fechar}\n triggerRef={triggerRef}\n />\n </FocusScope>,\n document.body,\n )}\n </>\n );\n}\n\nfunction ehSecao(entrada: MenuItem | MenuSection): entrada is MenuSection {\n return 'items' in entrada;\n}\n\nfunction MenuList({\n items: entradas,\n label,\n onClose,\n openedWith,\n triggerRef,\n}: {\n items: readonly (MenuItem | MenuSection)[];\n label: string;\n onClose: (devolverFoco: boolean) => void;\n openedWith: 'first' | 'last';\n triggerRef: React.RefObject<HTMLElement | null>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const nodes = useRef(new Map<string, HTMLElement>());\n // O teclado percorre os itens de todos os grupos como uma lista so.\n const items = useMemo(() => entradas.flatMap((entrada) => (ehSecao(entrada) ? entrada.items : [entrada])), [entradas]);\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({ items: collection, mode: 'none' });\n const { focusedKey, focusFirst, focusLast, focusNext, focusPrevious, search } = selection;\n\n // useOverlayPosition entrega toda a altura disponivel; limitamos para que\n // uma lista longa nao ocupe a tela inteira.\n // Sem isto o gatilho conta como \"fora\": o ponteiro fecha o menu e o clique\n // dele reabre em seguida, e o menu pisca sem abrir.\n const { overlayProps } = useOverlay(\n {\n isOpen: true,\n onClose: () => onClose(false),\n isDismissable: true,\n shouldCloseOnBlur: false,\n shouldCloseOnInteractOutside: (elemento) => !triggerRef.current?.contains(elemento),\n },\n ref,\n );\n const { overlayProps: positionProps } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: ref,\n placement: 'bottom start',\n offset: 6,\n containerPadding: 8,\n isOpen: true,\n });\n\n const alturaMaxima = Math.min(Number(positionProps.style?.maxHeight) || 360, 360);\n\n useEffect(() => {\n if (openedWith === 'last') {\n focusLast();\n } else {\n focusFirst();\n }\n // Posicao inicial depende apenas de como o menu foi aberto.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (focusedKey) {\n nodes.current.get(focusedKey)?.focus();\n }\n }, [focusedKey]);\n\n function acionar(item: MenuItem) {\n if (item.disabled) {\n return;\n }\n\n onClose(true);\n item.onSelect?.();\n }\n\n function renderizarItem(item: MenuItem) {\n const marcavel = item.checked !== undefined;\n\n return (\n <button\n aria-checked={marcavel ? item.checked : undefined}\n aria-keyshortcuts={item.shortcut}\n className={[styles.item, item.tone === 'danger' && styles.danger].filter(Boolean).join(' ')}\n disabled={item.disabled}\n key={item.key}\n onClick={() => acionar(item)}\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n role={marcavel ? 'menuitemcheckbox' : 'menuitem'}\n tabIndex={focusedKey === item.key ? 0 : -1}\n type=\"button\"\n >\n {item.icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {item.icon}\n </span>\n )}\n <span className={styles.label}>{item.label}</span>\n {item.shortcut && (\n <kbd aria-hidden=\"true\" className={styles.shortcut}>\n {item.shortcut}\n </kbd>\n )}\n {marcavel && <IconCheck className={[styles.check, item.checked && styles.checkOn].filter(Boolean).join(' ')} />}\n </button>\n );\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPrevious();\n } else if (event.key === 'Home') {\n event.preventDefault();\n focusFirst();\n } else if (event.key === 'End') {\n event.preventDefault();\n focusLast();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n onClose(true);\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey) {\n search(event.key);\n }\n }\n\n return (\n <div\n {...overlayProps}\n data-react-aria-top-layer=\"true\"\n ref={ref}\n className={styles.menu}\n style={{ ...positionProps.style, maxHeight: alturaMaxima }}\n role=\"menu\"\n aria-label={label}\n onKeyDown={(event) => {\n // Espalhar overlayProps antes nao basta: este onKeyDown o substituiria.\n handleKeyDown(event);\n overlayProps.onKeyDown?.(event);\n }}\n >\n {entradas.map((entrada, indice) => {\n if (!ehSecao(entrada)) {\n return renderizarItem(entrada);\n }\n\n return (\n <div aria-label={entrada.title} className={styles.section} key={entrada.key} role=\"group\">\n {indice > 0 && <div aria-hidden=\"true\" className={styles.divider} />}\n {entrada.title && (\n <div aria-hidden=\"true\" className={styles.sectionTitle}>\n {entrada.title}\n </div>\n )}\n {entrada.items.map(renderizarItem)}\n </div>\n );\n })}\n </div>\n );\n}\n"],"names":["encadear","proprio","seguinte","evento","Menu","children","defaultOpen","items","label","onOpenChange","controlledOpen","triggerRef","useRef","internalOpen","setInternalOpen","useState","openedWith","setOpenedWith","open","setOpen","proximo","abrir","from","fechar","devolverFoco","_a","dono","mergedTriggerRef","useMergedRefs","trigger","cloneElement","event","jsxs","Fragment","createPortal","FocusScope","jsx","MenuList","ehSecao","entrada","entradas","onClose","ref","nodes","useMemo","collection","item","selection","useSelection","focusedKey","focusFirst","focusLast","focusNext","focusPrevious","search","overlayProps","useOverlay","elemento","positionProps","useOverlayPosition","alturaMaxima","useEffect","acionar","renderizarItem","marcavel","styles","node","IconCheck","handleKeyDown","indice"],"mappings":"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"}
@@ -1,74 +1,78 @@
1
- import { jsxs as E, Fragment as N, jsx as w } from "react/jsx-runtime";
2
- import { useRef as K, useState as O, cloneElement as S, useMemo as F, useEffect as A } from "react";
3
- import { createPortal as H } from "react-dom";
4
- import { FocusScope as I } from "@react-aria/focus";
5
- import { useOverlay as j, useOverlayPosition as L } from "@react-aria/overlays";
6
- import { useMergedRefs as T } from "../../../hooks/useMergedRefs.js";
7
- import P from "./Menu.module.css.js";
8
- import { useSelection as U } from "../../../hooks/useSelection/useSelection.js";
9
- function R(o, f) {
10
- return (s) => {
11
- o == null || o(s), f(s);
1
+ import { jsxs as K, Fragment as F, jsx as n } from "react/jsx-runtime";
2
+ import { useRef as M, useState as P, cloneElement as H, useMemo as R, useEffect as S } from "react";
3
+ import { createPortal as T } from "react-dom";
4
+ import { FocusScope as C } from "@react-aria/focus";
5
+ import { useOverlay as L, useOverlayPosition as U } from "@react-aria/overlays";
6
+ import { useMergedRefs as W } from "../../../hooks/useMergedRefs.js";
7
+ import t from "./Menu.module.css.js";
8
+ import { useSelection as z } from "../../../hooks/useSelection/useSelection.js";
9
+ import { IconCheck as V } from "../../icons/icons.js";
10
+ function j(s, d) {
11
+ return (c) => {
12
+ s == null || s(c), d(c);
12
13
  };
13
14
  }
14
- function X({ children: o, defaultOpen: f = !1, items: s, label: D, onOpenChange: l, open: i }) {
15
- const a = K(null), [h, g] = O(f), [u, d] = O("first"), c = i ?? h;
16
- function y(t) {
17
- g(t), l == null || l(t);
15
+ function ee({ children: s, defaultOpen: d = !1, items: c, label: g, onOpenChange: l, open: m }) {
16
+ const i = M(null), [h, N] = P(d), [x, a] = P("first"), u = m ?? h;
17
+ function y(o) {
18
+ N(o), l == null || l(o);
18
19
  }
19
- function p(t) {
20
- d(t), y(!0);
20
+ function k(o) {
21
+ a(o), y(!0);
21
22
  }
22
- function m(t) {
23
- var b;
24
- y(!1), t && ((b = a.current) == null || b.focus());
23
+ function b(o) {
24
+ var D;
25
+ y(!1), o && ((D = i.current) == null || D.focus());
25
26
  }
26
- const n = o.props, k = T(a, n.ref), x = S(o, {
27
- ref: k,
27
+ const p = s.props, f = W(i, p.ref), w = H(s, {
28
+ ref: f,
28
29
  "aria-haspopup": "menu",
29
- "aria-expanded": c,
30
- onClick: R(
31
- n.onClick,
32
- () => c ? m(!0) : p("first")
30
+ "aria-expanded": u,
31
+ onClick: j(
32
+ p.onClick,
33
+ () => u ? b(!0) : k("first")
33
34
  ),
34
- onKeyDown: R(n.onKeyDown, (t) => {
35
- (t.key === "ArrowDown" || t.key === "ArrowUp") && (t.preventDefault(), p(t.key === "ArrowDown" ? "first" : "last"));
35
+ onKeyDown: j(p.onKeyDown, (o) => {
36
+ (o.key === "ArrowDown" || o.key === "ArrowUp") && (o.preventDefault(), k(o.key === "ArrowDown" ? "first" : "last"));
36
37
  })
37
38
  });
38
- return /* @__PURE__ */ E(N, { children: [
39
- x,
40
- c && typeof document < "u" && H(
39
+ return /* @__PURE__ */ K(F, { children: [
40
+ w,
41
+ u && typeof document < "u" && T(
41
42
  // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.
42
43
  // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.
43
- /* @__PURE__ */ w(I, { children: /* @__PURE__ */ w(
44
- W,
44
+ /* @__PURE__ */ n(C, { children: /* @__PURE__ */ n(
45
+ q,
45
46
  {
46
- items: s,
47
- label: D,
48
- openedWith: u,
49
- onClose: m,
50
- triggerRef: a
47
+ items: c,
48
+ label: g,
49
+ openedWith: x,
50
+ onClose: b,
51
+ triggerRef: i
51
52
  }
52
53
  ) }),
53
54
  document.body
54
55
  )
55
56
  ] });
56
57
  }
57
- function W({
58
- items: o,
59
- label: f,
60
- onClose: s,
61
- openedWith: D,
58
+ function E(s) {
59
+ return "items" in s;
60
+ }
61
+ function q({
62
+ items: s,
63
+ label: d,
64
+ onClose: c,
65
+ openedWith: g,
62
66
  triggerRef: l
63
67
  }) {
64
- var M;
65
- const i = K(null), a = K(/* @__PURE__ */ new Map()), h = F(
66
- () => o.map((e) => ({ key: e.key, disabled: e.disabled, textValue: e.label })),
67
- [o]
68
- ), g = U({ items: h, mode: "none" }), { focusedKey: u, focusFirst: d, focusLast: c, focusNext: y, focusPrevious: p, search: m } = g, { overlayProps: n } = j(
68
+ var A;
69
+ const m = M(null), i = M(/* @__PURE__ */ new Map()), h = R(() => s.flatMap((e) => E(e) ? e.items : [e]), [s]), N = R(
70
+ () => h.map((e) => ({ key: e.key, disabled: e.disabled, textValue: e.label })),
71
+ [h]
72
+ ), x = z({ items: N, mode: "none" }), { focusedKey: a, focusFirst: u, focusLast: y, focusNext: k, focusPrevious: b, search: p } = x, { overlayProps: f } = L(
69
73
  {
70
74
  isOpen: !0,
71
- onClose: () => s(!1),
75
+ onClose: () => c(!1),
72
76
  isDismissable: !0,
73
77
  shouldCloseOnBlur: !1,
74
78
  shouldCloseOnInteractOutside: (e) => {
@@ -76,62 +80,77 @@ function W({
76
80
  return !((r = l.current) != null && r.contains(e));
77
81
  }
78
82
  },
79
- i
80
- ), { overlayProps: k } = L({
83
+ m
84
+ ), { overlayProps: w } = U({
81
85
  targetRef: l,
82
- overlayRef: i,
86
+ overlayRef: m,
83
87
  placement: "bottom start",
84
88
  offset: 6,
85
89
  containerPadding: 8,
86
90
  isOpen: !0
87
- }), x = Math.min(Number((M = k.style) == null ? void 0 : M.maxHeight) || 360, 360);
88
- A(() => {
89
- D === "last" ? c() : d();
90
- }, []), A(() => {
91
+ }), o = Math.min(Number((A = w.style) == null ? void 0 : A.maxHeight) || 360, 360);
92
+ S(() => {
93
+ g === "last" ? y() : u();
94
+ }, []), S(() => {
91
95
  var e;
92
- u && ((e = a.current.get(u)) == null || e.focus());
93
- }, [u]);
94
- function t(e) {
96
+ a && ((e = i.current.get(a)) == null || e.focus());
97
+ }, [a]);
98
+ function D(e) {
95
99
  var r;
96
- e.disabled || (s(!0), (r = e.onSelect) == null || r.call(e));
100
+ e.disabled || (c(!0), (r = e.onSelect) == null || r.call(e));
101
+ }
102
+ function O(e) {
103
+ const r = e.checked !== void 0;
104
+ return /* @__PURE__ */ K(
105
+ "button",
106
+ {
107
+ "aria-checked": r ? e.checked : void 0,
108
+ "aria-keyshortcuts": e.shortcut,
109
+ className: [t.item, e.tone === "danger" && t.danger].filter(Boolean).join(" "),
110
+ disabled: e.disabled,
111
+ onClick: () => D(e),
112
+ ref: (I) => {
113
+ I ? i.current.set(e.key, I) : i.current.delete(e.key);
114
+ },
115
+ role: r ? "menuitemcheckbox" : "menuitem",
116
+ tabIndex: a === e.key ? 0 : -1,
117
+ type: "button",
118
+ children: [
119
+ e.icon && /* @__PURE__ */ n("span", { "aria-hidden": "true", className: t.icon, children: e.icon }),
120
+ /* @__PURE__ */ n("span", { className: t.label, children: e.label }),
121
+ e.shortcut && /* @__PURE__ */ n("kbd", { "aria-hidden": "true", className: t.shortcut, children: e.shortcut }),
122
+ r && /* @__PURE__ */ n(V, { className: [t.check, e.checked && t.checkOn].filter(Boolean).join(" ") })
123
+ ]
124
+ },
125
+ e.key
126
+ );
97
127
  }
98
- function b(e) {
99
- e.key === "ArrowDown" ? (e.preventDefault(), y()) : e.key === "ArrowUp" ? (e.preventDefault(), p()) : e.key === "Home" ? (e.preventDefault(), d()) : e.key === "End" ? (e.preventDefault(), c()) : e.key === "Escape" || e.key === "Tab" ? s(!0) : e.key.length === 1 && !e.metaKey && !e.ctrlKey && m(e.key);
128
+ function B(e) {
129
+ e.key === "ArrowDown" ? (e.preventDefault(), k()) : e.key === "ArrowUp" ? (e.preventDefault(), b()) : e.key === "Home" ? (e.preventDefault(), u()) : e.key === "End" ? (e.preventDefault(), y()) : e.key === "Escape" || e.key === "Tab" ? c(!0) : e.key.length === 1 && !e.metaKey && !e.ctrlKey && p(e.key);
100
130
  }
101
- return /* @__PURE__ */ w(
131
+ return /* @__PURE__ */ n(
102
132
  "div",
103
133
  {
104
- ...n,
134
+ ...f,
105
135
  "data-react-aria-top-layer": "true",
106
- ref: i,
107
- className: P.menu,
108
- style: { ...k.style, maxHeight: x },
136
+ ref: m,
137
+ className: t.menu,
138
+ style: { ...w.style, maxHeight: o },
109
139
  role: "menu",
110
- "aria-label": f,
140
+ "aria-label": d,
111
141
  onKeyDown: (e) => {
112
142
  var r;
113
- b(e), (r = n.onKeyDown) == null || r.call(n, e);
143
+ B(e), (r = f.onKeyDown) == null || r.call(f, e);
114
144
  },
115
- children: o.map((e) => /* @__PURE__ */ w(
116
- "button",
117
- {
118
- ref: (r) => {
119
- r ? a.current.set(e.key, r) : a.current.delete(e.key);
120
- },
121
- className: P.item,
122
- type: "button",
123
- role: "menuitem",
124
- disabled: e.disabled,
125
- tabIndex: u === e.key ? 0 : -1,
126
- onClick: () => t(e),
127
- children: e.label
128
- },
129
- e.key
130
- ))
145
+ children: s.map((e, r) => E(e) ? /* @__PURE__ */ K("div", { "aria-label": e.title, className: t.section, role: "group", children: [
146
+ r > 0 && /* @__PURE__ */ n("div", { "aria-hidden": "true", className: t.divider }),
147
+ e.title && /* @__PURE__ */ n("div", { "aria-hidden": "true", className: t.sectionTitle, children: e.title }),
148
+ e.items.map(O)
149
+ ] }, e.key) : O(e))
131
150
  }
132
151
  );
133
152
  }
134
153
  export {
135
- X as Menu
154
+ ee as Menu
136
155
  };
137
156
  //# sourceMappingURL=Menu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","sources":["../../../../src/components/overlays/Menu/Menu.tsx"],"sourcesContent":["import {\n cloneElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactElement,\n type Ref,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay, useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Menu.module.css';\n\nexport interface MenuItem {\n disabled?: boolean;\n key: string;\n label: string;\n onSelect?: () => void;\n}\n\nexport interface MenuProps {\n children: ReactElement<Record<string, unknown>>;\n /** Abertura inicial no modo nao controlado. */\n defaultOpen?: boolean;\n items: readonly MenuItem[];\n label: string;\n /** Avisa cada abertura e fechamento pedidos pelo gatilho, pelo teclado, pela opcao ou pelo clique fora. */\n onOpenChange?: (open: boolean) => void;\n /** Controla a abertura; sem ele, o menu guarda o proprio estado. */\n open?: boolean;\n}\n\n/** Encadeia o manipulador do gatilho ao do menu, em vez de substitui-lo. */\nfunction encadear<E>(proprio: ((evento: E) => void) | undefined, seguinte: (evento: E) => void) {\n return (evento: E) => {\n proprio?.(evento);\n seguinte(evento);\n };\n}\n\nexport function Menu({ children, defaultOpen = false, items, label, onOpenChange, open: controlledOpen }: MenuProps) {\n const triggerRef = useRef<HTMLElement>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [openedWith, setOpenedWith] = useState<'first' | 'last'>('first');\n const open = controlledOpen ?? internalOpen;\n\n function setOpen(proximo: boolean) {\n setInternalOpen(proximo);\n onOpenChange?.(proximo);\n }\n\n function abrir(from: 'first' | 'last') {\n setOpenedWith(from);\n setOpen(true);\n }\n\n // O foco volta na hora, antes de o `onSelect` montar o que vem depois, como um campo com `autoFocus` ou\n // um Dialog, que guarda o elemento em foco para devolver. Clique fora nao devolve: o foco e de quem foi clicado.\n function fechar(devolverFoco: boolean) {\n setOpen(false);\n\n if (devolverFoco) {\n triggerRef.current?.focus();\n }\n }\n\n const dono = children.props;\n const mergedTriggerRef = useMergedRefs(triggerRef, dono.ref as Ref<HTMLElement> | undefined);\n const trigger = cloneElement(children, {\n ref: mergedTriggerRef,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n onClick: encadear(dono.onClick as (evento: unknown) => void, () =>\n open ? fechar(true) : abrir('first'),\n ),\n onKeyDown: encadear(dono.onKeyDown as (evento: KeyboardEvent) => void, (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n abrir(event.key === 'ArrowDown' ? 'first' : 'last');\n }\n }),\n });\n\n return (\n <>\n {trigger}\n {open &&\n typeof document !== 'undefined' &&\n createPortal(\n // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.\n // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.\n <FocusScope>\n <MenuList\n items={items}\n label={label}\n openedWith={openedWith}\n onClose={fechar}\n triggerRef={triggerRef}\n />\n </FocusScope>,\n document.body,\n )}\n </>\n );\n}\n\nfunction MenuList({\n items,\n label,\n onClose,\n openedWith,\n triggerRef,\n}: {\n items: readonly MenuItem[];\n label: string;\n onClose: (devolverFoco: boolean) => void;\n openedWith: 'first' | 'last';\n triggerRef: React.RefObject<HTMLElement | null>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const nodes = useRef(new Map<string, HTMLElement>());\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({ items: collection, mode: 'none' });\n const { focusedKey, focusFirst, focusLast, focusNext, focusPrevious, search } = selection;\n\n // useOverlayPosition entrega toda a altura disponivel; limitamos para que\n // uma lista longa nao ocupe a tela inteira.\n // Sem isto o gatilho conta como \"fora\": o ponteiro fecha o menu e o clique\n // dele reabre em seguida, e o menu pisca sem abrir.\n const { overlayProps } = useOverlay(\n {\n isOpen: true,\n onClose: () => onClose(false),\n isDismissable: true,\n shouldCloseOnBlur: false,\n shouldCloseOnInteractOutside: (elemento) => !triggerRef.current?.contains(elemento),\n },\n ref,\n );\n const { overlayProps: positionProps } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: ref,\n placement: 'bottom start',\n offset: 6,\n containerPadding: 8,\n isOpen: true,\n });\n\n const alturaMaxima = Math.min(Number(positionProps.style?.maxHeight) || 360, 360);\n\n useEffect(() => {\n if (openedWith === 'last') {\n focusLast();\n } else {\n focusFirst();\n }\n // Posicao inicial depende apenas de como o menu foi aberto.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (focusedKey) {\n nodes.current.get(focusedKey)?.focus();\n }\n }, [focusedKey]);\n\n function acionar(item: MenuItem) {\n if (item.disabled) {\n return;\n }\n\n onClose(true);\n item.onSelect?.();\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPrevious();\n } else if (event.key === 'Home') {\n event.preventDefault();\n focusFirst();\n } else if (event.key === 'End') {\n event.preventDefault();\n focusLast();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n onClose(true);\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey) {\n search(event.key);\n }\n }\n\n return (\n <div\n {...overlayProps}\n data-react-aria-top-layer=\"true\"\n ref={ref}\n className={styles.menu}\n style={{ ...positionProps.style, maxHeight: alturaMaxima }}\n role=\"menu\"\n aria-label={label}\n onKeyDown={(event) => {\n // Espalhar overlayProps antes nao basta: este onKeyDown o substituiria.\n handleKeyDown(event);\n overlayProps.onKeyDown?.(event);\n }}\n >\n {items.map((item) => (\n <button\n key={item.key}\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n className={styles.item}\n type=\"button\"\n role=\"menuitem\"\n disabled={item.disabled}\n tabIndex={focusedKey === item.key ? 0 : -1}\n onClick={() => acionar(item)}\n >\n {item.label}\n </button>\n ))}\n </div>\n );\n}\n"],"names":["encadear","proprio","seguinte","evento","Menu","children","defaultOpen","items","label","onOpenChange","controlledOpen","triggerRef","useRef","internalOpen","setInternalOpen","useState","openedWith","setOpenedWith","open","setOpen","proximo","abrir","from","fechar","devolverFoco","_a","dono","mergedTriggerRef","useMergedRefs","trigger","cloneElement","event","jsxs","Fragment","createPortal","FocusScope","jsx","MenuList","onClose","ref","nodes","collection","useMemo","item","selection","useSelection","focusedKey","focusFirst","focusLast","focusNext","focusPrevious","search","overlayProps","useOverlay","elemento","positionProps","useOverlayPosition","alturaMaxima","useEffect","acionar","handleKeyDown","styles","node"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.js","sources":["../../../../src/components/overlays/Menu/Menu.tsx"],"sourcesContent":["import {\n cloneElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay, useOverlayPosition } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport { IconCheck } from '../../icons';\nimport styles from './Menu.module.css';\n\nexport interface MenuItem {\n /** Com ele, o item e de marcar e mostra o visto quando marcado, como o tipo atual de um bloco. */\n checked?: boolean;\n disabled?: boolean;\n /** Icone decorativo antes do texto. */\n icon?: ReactNode;\n key: string;\n label: string;\n onSelect?: () => void;\n /** Atalho escrito a direita, como `Ctrl+D`, e anunciado em `aria-keyshortcuts`. */\n shortcut?: string;\n /** `danger` para a acao que destroi, como remover. */\n tone?: 'danger';\n}\n\n/** Grupo de itens, com titulo opcional; entre dois grupos, o menu desenha o divisor. */\nexport interface MenuSection {\n items: readonly MenuItem[];\n key: string;\n title?: string;\n}\n\nexport interface MenuProps {\n children: ReactElement<Record<string, unknown>>;\n /** Abertura inicial no modo nao controlado. */\n defaultOpen?: boolean;\n items: readonly (MenuItem | MenuSection)[];\n label: string;\n /** Avisa cada abertura e fechamento pedidos pelo gatilho, pelo teclado, pela opcao ou pelo clique fora. */\n onOpenChange?: (open: boolean) => void;\n /** Controla a abertura; sem ele, o menu guarda o proprio estado. */\n open?: boolean;\n}\n\n/** Encadeia o manipulador do gatilho ao do menu, em vez de substitui-lo. */\nfunction encadear<E>(proprio: ((evento: E) => void) | undefined, seguinte: (evento: E) => void) {\n return (evento: E) => {\n proprio?.(evento);\n seguinte(evento);\n };\n}\n\nexport function Menu({ children, defaultOpen = false, items, label, onOpenChange, open: controlledOpen }: MenuProps) {\n const triggerRef = useRef<HTMLElement>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [openedWith, setOpenedWith] = useState<'first' | 'last'>('first');\n const open = controlledOpen ?? internalOpen;\n\n function setOpen(proximo: boolean) {\n setInternalOpen(proximo);\n onOpenChange?.(proximo);\n }\n\n function abrir(from: 'first' | 'last') {\n setOpenedWith(from);\n setOpen(true);\n }\n\n // O foco volta na hora, antes de o `onSelect` montar o que vem depois, como um campo com `autoFocus` ou\n // um Dialog, que guarda o elemento em foco para devolver. Clique fora nao devolve: o foco e de quem foi clicado.\n function fechar(devolverFoco: boolean) {\n setOpen(false);\n\n if (devolverFoco) {\n triggerRef.current?.focus();\n }\n }\n\n const dono = children.props;\n const mergedTriggerRef = useMergedRefs(triggerRef, dono.ref as Ref<HTMLElement> | undefined);\n const trigger = cloneElement(children, {\n ref: mergedTriggerRef,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n onClick: encadear(dono.onClick as (evento: unknown) => void, () =>\n open ? fechar(true) : abrir('first'),\n ),\n onKeyDown: encadear(dono.onKeyDown as (evento: KeyboardEvent) => void, (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n abrir(event.key === 'ArrowDown' ? 'first' : 'last');\n }\n }),\n });\n\n return (\n <>\n {trigger}\n {open &&\n typeof document !== 'undefined' &&\n createPortal(\n // O escopo proprio poe o menu na arvore de escopos do Dialog, cujo `contain` puxaria o foco de volta.\n // Sem `contain` aqui: ele disputaria o foco com o gatilho quando o menu fecha.\n <FocusScope>\n <MenuList\n items={items}\n label={label}\n openedWith={openedWith}\n onClose={fechar}\n triggerRef={triggerRef}\n />\n </FocusScope>,\n document.body,\n )}\n </>\n );\n}\n\nfunction ehSecao(entrada: MenuItem | MenuSection): entrada is MenuSection {\n return 'items' in entrada;\n}\n\nfunction MenuList({\n items: entradas,\n label,\n onClose,\n openedWith,\n triggerRef,\n}: {\n items: readonly (MenuItem | MenuSection)[];\n label: string;\n onClose: (devolverFoco: boolean) => void;\n openedWith: 'first' | 'last';\n triggerRef: React.RefObject<HTMLElement | null>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const nodes = useRef(new Map<string, HTMLElement>());\n // O teclado percorre os itens de todos os grupos como uma lista so.\n const items = useMemo(() => entradas.flatMap((entrada) => (ehSecao(entrada) ? entrada.items : [entrada])), [entradas]);\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({ items: collection, mode: 'none' });\n const { focusedKey, focusFirst, focusLast, focusNext, focusPrevious, search } = selection;\n\n // useOverlayPosition entrega toda a altura disponivel; limitamos para que\n // uma lista longa nao ocupe a tela inteira.\n // Sem isto o gatilho conta como \"fora\": o ponteiro fecha o menu e o clique\n // dele reabre em seguida, e o menu pisca sem abrir.\n const { overlayProps } = useOverlay(\n {\n isOpen: true,\n onClose: () => onClose(false),\n isDismissable: true,\n shouldCloseOnBlur: false,\n shouldCloseOnInteractOutside: (elemento) => !triggerRef.current?.contains(elemento),\n },\n ref,\n );\n const { overlayProps: positionProps } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: ref,\n placement: 'bottom start',\n offset: 6,\n containerPadding: 8,\n isOpen: true,\n });\n\n const alturaMaxima = Math.min(Number(positionProps.style?.maxHeight) || 360, 360);\n\n useEffect(() => {\n if (openedWith === 'last') {\n focusLast();\n } else {\n focusFirst();\n }\n // Posicao inicial depende apenas de como o menu foi aberto.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (focusedKey) {\n nodes.current.get(focusedKey)?.focus();\n }\n }, [focusedKey]);\n\n function acionar(item: MenuItem) {\n if (item.disabled) {\n return;\n }\n\n onClose(true);\n item.onSelect?.();\n }\n\n function renderizarItem(item: MenuItem) {\n const marcavel = item.checked !== undefined;\n\n return (\n <button\n aria-checked={marcavel ? item.checked : undefined}\n aria-keyshortcuts={item.shortcut}\n className={[styles.item, item.tone === 'danger' && styles.danger].filter(Boolean).join(' ')}\n disabled={item.disabled}\n key={item.key}\n onClick={() => acionar(item)}\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n role={marcavel ? 'menuitemcheckbox' : 'menuitem'}\n tabIndex={focusedKey === item.key ? 0 : -1}\n type=\"button\"\n >\n {item.icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {item.icon}\n </span>\n )}\n <span className={styles.label}>{item.label}</span>\n {item.shortcut && (\n <kbd aria-hidden=\"true\" className={styles.shortcut}>\n {item.shortcut}\n </kbd>\n )}\n {marcavel && <IconCheck className={[styles.check, item.checked && styles.checkOn].filter(Boolean).join(' ')} />}\n </button>\n );\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPrevious();\n } else if (event.key === 'Home') {\n event.preventDefault();\n focusFirst();\n } else if (event.key === 'End') {\n event.preventDefault();\n focusLast();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n onClose(true);\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey) {\n search(event.key);\n }\n }\n\n return (\n <div\n {...overlayProps}\n data-react-aria-top-layer=\"true\"\n ref={ref}\n className={styles.menu}\n style={{ ...positionProps.style, maxHeight: alturaMaxima }}\n role=\"menu\"\n aria-label={label}\n onKeyDown={(event) => {\n // Espalhar overlayProps antes nao basta: este onKeyDown o substituiria.\n handleKeyDown(event);\n overlayProps.onKeyDown?.(event);\n }}\n >\n {entradas.map((entrada, indice) => {\n if (!ehSecao(entrada)) {\n return renderizarItem(entrada);\n }\n\n return (\n <div aria-label={entrada.title} className={styles.section} key={entrada.key} role=\"group\">\n {indice > 0 && <div aria-hidden=\"true\" className={styles.divider} />}\n {entrada.title && (\n <div aria-hidden=\"true\" className={styles.sectionTitle}>\n {entrada.title}\n </div>\n )}\n {entrada.items.map(renderizarItem)}\n </div>\n );\n })}\n </div>\n );\n}\n"],"names":["encadear","proprio","seguinte","evento","Menu","children","defaultOpen","items","label","onOpenChange","controlledOpen","triggerRef","useRef","internalOpen","setInternalOpen","useState","openedWith","setOpenedWith","open","setOpen","proximo","abrir","from","fechar","devolverFoco","_a","dono","mergedTriggerRef","useMergedRefs","trigger","cloneElement","event","jsxs","Fragment","createPortal","FocusScope","jsx","MenuList","ehSecao","entrada","entradas","onClose","ref","nodes","useMemo","collection","item","selection","useSelection","focusedKey","focusFirst","focusLast","focusNext","focusPrevious","search","overlayProps","useOverlay","elemento","positionProps","useOverlayPosition","alturaMaxima","useEffect","acionar","renderizarItem","marcavel","styles","node","IconCheck","handleKeyDown","indice"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_menu_opb5f_1",t="_item_opb5f_20",u={menu:e,item:t};exports.default=u;exports.item=t;exports.menu=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_menu_ssmgq_1",s="_item_ssmgq_20",c="_icon_ssmgq_53",t="_label_ssmgq_60",n="_shortcut_ssmgq_66",_="_check_ssmgq_75",o="_checkOn_ssmgq_81",i="_danger_ssmgq_85",m="_section_ssmgq_101",l="_divider_ssmgq_107",g="_sectionTitle_ssmgq_113",r={menu:e,item:s,icon:c,label:t,shortcut:n,check:_,checkOn:o,danger:i,section:m,divider:l,sectionTitle:g};exports.check=_;exports.checkOn=o;exports.danger=i;exports.default=r;exports.divider=l;exports.icon=c;exports.item=s;exports.label=t;exports.menu=e;exports.section=m;exports.sectionTitle=g;exports.shortcut=n;
2
2
  //# sourceMappingURL=Menu.module.css.cjs.map
@@ -1,10 +1,28 @@
1
- const e = "_menu_opb5f_1", t = "_item_opb5f_20", m = {
2
- menu: e,
3
- item: t
1
+ const s = "_menu_ssmgq_1", c = "_item_ssmgq_20", e = "_icon_ssmgq_53", t = "_label_ssmgq_60", _ = "_shortcut_ssmgq_66", n = "_check_ssmgq_75", o = "_checkOn_ssmgq_81", i = "_danger_ssmgq_85", m = "_section_ssmgq_101", g = "_divider_ssmgq_107", l = "_sectionTitle_ssmgq_113", q = {
2
+ menu: s,
3
+ item: c,
4
+ icon: e,
5
+ label: t,
6
+ shortcut: _,
7
+ check: n,
8
+ checkOn: o,
9
+ danger: i,
10
+ section: m,
11
+ divider: g,
12
+ sectionTitle: l
4
13
  };
5
14
  export {
6
- m as default,
7
- t as item,
8
- e as menu
15
+ n as check,
16
+ o as checkOn,
17
+ i as danger,
18
+ q as default,
19
+ g as divider,
20
+ e as icon,
21
+ c as item,
22
+ t as label,
23
+ s as menu,
24
+ m as section,
25
+ l as sectionTitle,
26
+ _ as shortcut
9
27
  };
10
28
  //# sourceMappingURL=Menu.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"Menu.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}