@plenustech/design-system 0.2.3 → 0.2.5

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 (233) hide show
  1. package/README.md +8 -0
  2. package/dist/components/actions/ButtonTile/ButtonTile.module.css.cjs +1 -1
  3. package/dist/components/actions/ButtonTile/ButtonTile.module.css.js +10 -10
  4. package/dist/components/actions/Toolbar/Toolbar.cjs +1 -1
  5. package/dist/components/actions/Toolbar/Toolbar.cjs.map +1 -1
  6. package/dist/components/actions/Toolbar/Toolbar.js +64 -53
  7. package/dist/components/actions/Toolbar/Toolbar.js.map +1 -1
  8. package/dist/components/charts/ChartGauge/ChartGauge.cjs +2 -0
  9. package/dist/components/charts/ChartGauge/ChartGauge.cjs.map +1 -0
  10. package/dist/components/charts/ChartGauge/ChartGauge.js +307 -0
  11. package/dist/components/charts/ChartGauge/ChartGauge.js.map +1 -0
  12. package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs +2 -0
  13. package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs.map +1 -0
  14. package/dist/components/charts/ChartGauge/ChartGauge.module.css.js +76 -0
  15. package/dist/components/charts/ChartGauge/ChartGauge.module.css.js.map +1 -0
  16. package/dist/components/charts/ChartGauge/gaugeLayout.cjs +2 -0
  17. package/dist/components/charts/ChartGauge/gaugeLayout.cjs.map +1 -0
  18. package/dist/components/charts/ChartGauge/gaugeLayout.js +107 -0
  19. package/dist/components/charts/ChartGauge/gaugeLayout.js.map +1 -0
  20. package/dist/components/charts/ChartGauge/gaugeReading.cjs +2 -0
  21. package/dist/components/charts/ChartGauge/gaugeReading.cjs.map +1 -0
  22. package/dist/components/charts/ChartGauge/gaugeReading.js +112 -0
  23. package/dist/components/charts/ChartGauge/gaugeReading.js.map +1 -0
  24. package/dist/components/charts/ChartGauge/gaugeScale.cjs +2 -0
  25. package/dist/components/charts/ChartGauge/gaugeScale.cjs.map +1 -0
  26. package/dist/components/charts/ChartGauge/gaugeScale.js +57 -0
  27. package/dist/components/charts/ChartGauge/gaugeScale.js.map +1 -0
  28. package/dist/components/charts/ChartMap/ChartMap.cjs +2 -0
  29. package/dist/components/charts/ChartMap/ChartMap.cjs.map +1 -0
  30. package/dist/components/charts/ChartMap/ChartMap.js +523 -0
  31. package/dist/components/charts/ChartMap/ChartMap.js.map +1 -0
  32. package/dist/components/charts/ChartMap/ChartMap.module.css.cjs +2 -0
  33. package/dist/components/charts/ChartMap/ChartMap.module.css.cjs.map +1 -0
  34. package/dist/components/charts/ChartMap/ChartMap.module.css.js +124 -0
  35. package/dist/components/charts/ChartMap/ChartMap.module.css.js.map +1 -0
  36. package/dist/components/charts/ChartMap/ChartMapLegend.cjs +2 -0
  37. package/dist/components/charts/ChartMap/ChartMapLegend.cjs.map +1 -0
  38. package/dist/components/charts/ChartMap/ChartMapLegend.js +102 -0
  39. package/dist/components/charts/ChartMap/ChartMapLegend.js.map +1 -0
  40. package/dist/components/charts/ChartMap/ChartMapTable.cjs +2 -0
  41. package/dist/components/charts/ChartMap/ChartMapTable.cjs.map +1 -0
  42. package/dist/components/charts/ChartMap/ChartMapTable.js +118 -0
  43. package/dist/components/charts/ChartMap/ChartMapTable.js.map +1 -0
  44. package/dist/components/charts/ChartMap/mapGeometry.cjs +2 -0
  45. package/dist/components/charts/ChartMap/mapGeometry.cjs.map +1 -0
  46. package/dist/components/charts/ChartMap/mapGeometry.js +113 -0
  47. package/dist/components/charts/ChartMap/mapGeometry.js.map +1 -0
  48. package/dist/components/charts/ChartMap/mapLabels.cjs +2 -0
  49. package/dist/components/charts/ChartMap/mapLabels.cjs.map +1 -0
  50. package/dist/components/charts/ChartMap/mapLabels.js +80 -0
  51. package/dist/components/charts/ChartMap/mapLabels.js.map +1 -0
  52. package/dist/components/charts/ChartMap/mapScales.cjs +2 -0
  53. package/dist/components/charts/ChartMap/mapScales.cjs.map +1 -0
  54. package/dist/components/charts/ChartMap/mapScales.js +131 -0
  55. package/dist/components/charts/ChartMap/mapScales.js.map +1 -0
  56. package/dist/components/charts/ChartMap/polylabel.cjs +2 -0
  57. package/dist/components/charts/ChartMap/polylabel.cjs.map +1 -0
  58. package/dist/components/charts/ChartMap/polylabel.js +50 -0
  59. package/dist/components/charts/ChartMap/polylabel.js.map +1 -0
  60. package/dist/components/charts/ChartTimeline/ChartTimeline.cjs +2 -0
  61. package/dist/components/charts/ChartTimeline/ChartTimeline.cjs.map +1 -0
  62. package/dist/components/charts/ChartTimeline/ChartTimeline.js +703 -0
  63. package/dist/components/charts/ChartTimeline/ChartTimeline.js.map +1 -0
  64. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs +2 -0
  65. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs.map +1 -0
  66. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js +124 -0
  67. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js.map +1 -0
  68. package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs +2 -0
  69. package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs.map +1 -0
  70. package/dist/components/charts/ChartTimeline/ChartTimelineTable.js +42 -0
  71. package/dist/components/charts/ChartTimeline/ChartTimelineTable.js.map +1 -0
  72. package/dist/components/charts/ChartTimeline/timelineLayout.cjs +2 -0
  73. package/dist/components/charts/ChartTimeline/timelineLayout.cjs.map +1 -0
  74. package/dist/components/charts/ChartTimeline/timelineLayout.js +109 -0
  75. package/dist/components/charts/ChartTimeline/timelineLayout.js.map +1 -0
  76. package/dist/components/charts/ChartTimeline/timelineTime.cjs +2 -0
  77. package/dist/components/charts/ChartTimeline/timelineTime.cjs.map +1 -0
  78. package/dist/components/charts/ChartTimeline/timelineTime.js +91 -0
  79. package/dist/components/charts/ChartTimeline/timelineTime.js.map +1 -0
  80. package/dist/components/charts/ChartTimeline/timelineTooltip.cjs +2 -0
  81. package/dist/components/charts/ChartTimeline/timelineTooltip.cjs.map +1 -0
  82. package/dist/components/charts/ChartTimeline/timelineTooltip.js +77 -0
  83. package/dist/components/charts/ChartTimeline/timelineTooltip.js.map +1 -0
  84. package/dist/components/charts/core/ChartLegend.cjs +1 -1
  85. package/dist/components/charts/core/ChartLegend.cjs.map +1 -1
  86. package/dist/components/charts/core/ChartLegend.js +37 -25
  87. package/dist/components/charts/core/ChartLegend.js.map +1 -1
  88. package/dist/components/charts/core/useChartMetrics.cjs +1 -1
  89. package/dist/components/charts/core/useChartMetrics.cjs.map +1 -1
  90. package/dist/components/charts/core/useChartMetrics.js +20 -25
  91. package/dist/components/charts/core/useChartMetrics.js.map +1 -1
  92. package/dist/components/data-display/CodeBlock/syntax.cjs +10 -3
  93. package/dist/components/data-display/CodeBlock/syntax.cjs.map +1 -1
  94. package/dist/components/data-display/CodeBlock/syntax.js +68 -48
  95. package/dist/components/data-display/CodeBlock/syntax.js.map +1 -1
  96. package/dist/components/data-display/List/List.cjs.map +1 -1
  97. package/dist/components/data-display/List/List.js.map +1 -1
  98. package/dist/components/data-display/List/List.module.css.cjs +1 -1
  99. package/dist/components/data-display/List/List.module.css.js +34 -24
  100. package/dist/components/data-display/List/List.module.css.js.map +1 -1
  101. package/dist/components/data-display/List/ListingOptions.cjs +1 -1
  102. package/dist/components/data-display/List/ListingOptions.cjs.map +1 -1
  103. package/dist/components/data-display/List/ListingOptions.js +98 -74
  104. package/dist/components/data-display/List/ListingOptions.js.map +1 -1
  105. package/dist/components/data-display/List/useListing.cjs.map +1 -1
  106. package/dist/components/data-display/List/useListing.js.map +1 -1
  107. package/dist/components/data-display/Timeline/Timeline.cjs +1 -1
  108. package/dist/components/data-display/Timeline/Timeline.cjs.map +1 -1
  109. package/dist/components/data-display/Timeline/Timeline.js +6 -6
  110. package/dist/components/data-display/Timeline/Timeline.js.map +1 -1
  111. package/dist/components/data-display/Timeline/Timeline.module.css.cjs +1 -1
  112. package/dist/components/data-display/Timeline/Timeline.module.css.js +18 -16
  113. package/dist/components/data-display/Timeline/Timeline.module.css.js.map +1 -1
  114. package/dist/components/forms/Checkbox/Checkbox.module.css.cjs +1 -1
  115. package/dist/components/forms/Checkbox/Checkbox.module.css.js +5 -5
  116. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs +1 -1
  117. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js +1 -1
  118. package/dist/components/forms/ComboBox/ComboBox.cjs.map +1 -1
  119. package/dist/components/forms/ComboBox/ComboBox.js.map +1 -1
  120. package/dist/components/forms/Field/Field.cjs +1 -1
  121. package/dist/components/forms/Field/Field.cjs.map +1 -1
  122. package/dist/components/forms/Field/Field.js +22 -22
  123. package/dist/components/forms/Field/Field.js.map +1 -1
  124. package/dist/components/forms/Field/Field.module.css.cjs +1 -1
  125. package/dist/components/forms/Field/Field.module.css.js +19 -17
  126. package/dist/components/forms/Field/Field.module.css.js.map +1 -1
  127. package/dist/components/forms/InputText/InputText.cjs +1 -1
  128. package/dist/components/forms/InputText/InputText.cjs.map +1 -1
  129. package/dist/components/forms/InputText/InputText.js +24 -24
  130. package/dist/components/forms/InputText/InputText.js.map +1 -1
  131. package/dist/components/forms/InputText/InputText.module.css.cjs +1 -1
  132. package/dist/components/forms/InputText/InputText.module.css.js +9 -7
  133. package/dist/components/forms/InputText/InputText.module.css.js.map +1 -1
  134. package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs +1 -1
  135. package/dist/components/forms/RadioGroup/RadioGroup.module.css.js +4 -4
  136. package/dist/components/forms/Select/Select.cjs.map +1 -1
  137. package/dist/components/forms/Select/Select.js.map +1 -1
  138. package/dist/components/forms/Switch/Switch.module.css.cjs +1 -1
  139. package/dist/components/forms/Switch/Switch.module.css.js +6 -6
  140. package/dist/components/icons/suite.cjs +1 -0
  141. package/dist/components/icons/suite.js +10894 -0
  142. package/dist/components/navigation/Pagination/Pagination.cjs +1 -1
  143. package/dist/components/navigation/Pagination/Pagination.cjs.map +1 -1
  144. package/dist/components/navigation/Pagination/Pagination.js +71 -44
  145. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  146. package/dist/components/navigation/Pagination/Pagination.module.css.cjs +1 -1
  147. package/dist/components/navigation/Pagination/Pagination.module.css.js +18 -14
  148. package/dist/components/navigation/Pagination/Pagination.module.css.js.map +1 -1
  149. package/dist/components/navigation/TabsNav/TabsNav.cjs +2 -0
  150. package/dist/components/navigation/TabsNav/TabsNav.cjs.map +1 -0
  151. package/dist/components/navigation/TabsNav/TabsNav.js +21 -0
  152. package/dist/components/navigation/TabsNav/TabsNav.js.map +1 -0
  153. package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs +2 -0
  154. package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs.map +1 -0
  155. package/dist/components/navigation/TabsNav/TabsNav.module.css.js +18 -0
  156. package/dist/components/navigation/TabsNav/TabsNav.module.css.js.map +1 -0
  157. package/dist/components/overlays/Dialog/Dialog.cjs.map +1 -1
  158. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  159. package/dist/components/overlays/Dialog/DialogFrame.cjs +1 -1
  160. package/dist/components/overlays/Dialog/DialogFrame.cjs.map +1 -1
  161. package/dist/components/overlays/Dialog/DialogFrame.js +30 -30
  162. package/dist/components/overlays/Dialog/DialogFrame.js.map +1 -1
  163. package/dist/components/overlays/Drawer/Drawer.cjs.map +1 -1
  164. package/dist/components/overlays/Drawer/Drawer.js.map +1 -1
  165. package/dist/components/overlays/Menu/Menu.cjs +1 -1
  166. package/dist/components/overlays/Menu/Menu.cjs.map +1 -1
  167. package/dist/components/overlays/Menu/Menu.js +37 -36
  168. package/dist/components/overlays/Menu/Menu.js.map +1 -1
  169. package/dist/components/overlays/Menu/keyShortcuts.cjs +2 -0
  170. package/dist/components/overlays/Menu/keyShortcuts.cjs.map +1 -0
  171. package/dist/components/overlays/Menu/keyShortcuts.js +55 -0
  172. package/dist/components/overlays/Menu/keyShortcuts.js.map +1 -0
  173. package/dist/components/overlays/Tooltip/Tooltip.cjs +1 -1
  174. package/dist/components/overlays/Tooltip/Tooltip.cjs.map +1 -1
  175. package/dist/components/overlays/Tooltip/Tooltip.js +81 -56
  176. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  177. package/dist/design-system.css +1 -1
  178. package/dist/icons.cjs +2 -0
  179. package/dist/icons.cjs.map +1 -0
  180. package/dist/icons.js +2054 -0
  181. package/dist/icons.js.map +1 -0
  182. package/dist/index.cjs +1 -1
  183. package/dist/index.js +184 -174
  184. package/dist/index.js.map +1 -1
  185. package/dist/types/components/charts/ChartGauge/ChartGauge.d.ts +83 -0
  186. package/dist/types/components/charts/ChartGauge/gaugeLayout.d.ts +64 -0
  187. package/dist/types/components/charts/ChartGauge/gaugeReading.d.ts +97 -0
  188. package/dist/types/components/charts/ChartGauge/gaugeScale.d.ts +38 -0
  189. package/dist/types/components/charts/ChartGauge/index.d.ts +2 -0
  190. package/dist/types/components/charts/ChartMap/ChartMap.d.ts +104 -0
  191. package/dist/types/components/charts/ChartMap/ChartMapLegend.d.ts +44 -0
  192. package/dist/types/components/charts/ChartMap/ChartMapTable.d.ts +38 -0
  193. package/dist/types/components/charts/ChartMap/index.d.ts +4 -0
  194. package/dist/types/components/charts/ChartMap/mapGeometry.d.ts +56 -0
  195. package/dist/types/components/charts/ChartMap/mapLabels.d.ts +51 -0
  196. package/dist/types/components/charts/ChartMap/mapScales.d.ts +76 -0
  197. package/dist/types/components/charts/ChartMap/polylabel.d.ts +9 -0
  198. package/dist/types/components/charts/ChartTimeline/ChartTimeline.d.ts +137 -0
  199. package/dist/types/components/charts/ChartTimeline/ChartTimelineTable.d.ts +25 -0
  200. package/dist/types/components/charts/ChartTimeline/index.d.ts +2 -0
  201. package/dist/types/components/charts/ChartTimeline/timelineLayout.d.ts +70 -0
  202. package/dist/types/components/charts/ChartTimeline/timelineTime.d.ts +16 -0
  203. package/dist/types/components/charts/ChartTimeline/timelineTooltip.d.ts +45 -0
  204. package/dist/types/components/charts/core/ChartLegend.d.ts +3 -1
  205. package/dist/types/components/data-display/CodeBlock/syntax.d.ts +1 -1
  206. package/dist/types/components/data-display/List/List.d.ts +1 -1
  207. package/dist/types/components/data-display/List/useListing.d.ts +7 -1
  208. package/dist/types/components/data-display/Timeline/Timeline.d.ts +4 -1
  209. package/dist/types/components/data-display/Timeline/index.d.ts +1 -1
  210. package/dist/types/components/forms/ComboBox/ComboBox.d.ts +7 -1
  211. package/dist/types/components/forms/Field/Field.d.ts +1 -1
  212. package/dist/types/components/forms/InputText/InputText.d.ts +1 -1
  213. package/dist/types/components/forms/Select/Select.d.ts +5 -1
  214. package/dist/types/components/icons/suite.d.ts +2051 -0
  215. package/dist/types/components/navigation/Pagination/Pagination.d.ts +13 -1
  216. package/dist/types/components/navigation/Pagination/index.d.ts +1 -1
  217. package/dist/types/components/navigation/TabsNav/TabsNav.d.ts +20 -0
  218. package/dist/types/components/navigation/TabsNav/index.d.ts +2 -0
  219. package/dist/types/components/overlays/Dialog/Dialog.d.ts +19 -7
  220. package/dist/types/components/overlays/Dialog/DialogFrame.d.ts +8 -2
  221. package/dist/types/components/overlays/Drawer/Drawer.d.ts +2 -2
  222. package/dist/types/components/overlays/Menu/Menu.d.ts +3 -1
  223. package/dist/types/components/overlays/Menu/keyShortcuts.d.ts +2 -0
  224. package/dist/types/components/overlays/Tooltip/Tooltip.d.ts +26 -5
  225. package/dist/types/icons.d.ts +6 -0
  226. package/dist/types/index.d.ts +11 -3
  227. package/dist/types/utils/formatters/formatarDuracao.d.ts +5 -0
  228. package/dist/types/utils/formatters/index.d.ts +1 -0
  229. package/dist/utils/formatters/formatarDuracao.cjs +2 -0
  230. package/dist/utils/formatters/formatarDuracao.cjs.map +1 -0
  231. package/dist/utils/formatters/formatarDuracao.js +10 -0
  232. package/dist/utils/formatters/formatarDuracao.js.map +1 -0
  233. package/package.json +10 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("./Pagination.module.css.cjs"),m=require("../../icons/icons.cjs");function j({className:c,disabled:i=!1,label:r="Paginação",onPageChange:o,page:s,pageCount:t,siblings:u=1,...d}){if(t<=1)return null;const a=Math.min(Math.max(s,1),t),g=x(a,t,u);function f(n){i||o(n)}return e.jsxs("nav",{...d,"aria-label":r,className:[l.default.pagination,c].filter(Boolean).join(" "),children:[e.jsx("button",{className:l.default.step,type:"button","aria-label":"Página anterior","aria-disabled":i||a===1||void 0,onClick:()=>a>1&&f(a-1),children:e.jsx(m.IconChevronLeft,{size:14})}),e.jsx("ol",{className:l.default.list,children:g.map((n,h)=>n===null?e.jsx("li",{className:l.default.gap,"aria-hidden":"true",children:"…"},`gap-${h}`):e.jsx("li",{children:e.jsx("button",{className:[l.default.page,n===a&&l.default.current].filter(Boolean).join(" "),type:"button","aria-label":`Página ${n}`,"aria-current":n===a?"page":void 0,"aria-disabled":i||void 0,onClick:()=>f(n),children:n})},n))}),e.jsx("button",{className:l.default.step,type:"button","aria-label":"Próxima página","aria-disabled":i||a===t||void 0,onClick:()=>a<t&&f(a+1),children:e.jsx(m.IconChevronRight,{size:14})})]})}function x(c,i,r){const o=r*2+5;if(i<=o)return Array.from({length:i},(d,a)=>a+1);const s=Math.max(Math.min(c-r,i-r*2-2),3),t=Math.min(Math.max(c+r,r*2+3),i-2),u=Array.from({length:t-s+1},(d,a)=>s+a);return[1,s>3?null:2,...u,t<i-2?null:i-1,i]}exports.Pagination=j;exports.montarFaixa=x;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),t=require("./Pagination.module.css.cjs"),h=require("../../icons/icons.cjs"),N=require("../../../utils/formatters/formatarNumero.cjs");function P({className:s,disabled:a=!1,formatRange:e,label:o="Paginação",onPageChange:l,page:d,pageCount:c,pageSize:u,siblings:f=1,totalItems:m,...g}){if(c<=1)return null;const i=Math.min(Math.max(d,1),c),p=j(i,c,f);function x(r){a||l(r)}return n.jsxs("nav",{...g,"aria-label":o,className:[t.default.pagination,s].filter(Boolean).join(" "),children:[m!==void 0&&u!==void 0&&n.jsx(M,{formatRange:e,range:{start:(i-1)*u+1,end:Math.min(i*u,m),total:m}}),n.jsx("button",{className:t.default.step,type:"button","aria-label":"Página anterior","aria-disabled":a||i===1||void 0,onClick:()=>i>1&&x(i-1),children:n.jsx(h.IconChevronLeft,{size:14})}),n.jsx("ol",{className:t.default.list,children:p.map((r,b)=>r===null?n.jsx("li",{className:t.default.gap,"aria-hidden":"true",children:"…"},`gap-${b}`):n.jsx("li",{children:n.jsx("button",{className:[t.default.page,r===i&&t.default.current].filter(Boolean).join(" "),type:"button","aria-label":`Página ${r}`,"aria-current":r===i?"page":void 0,"aria-disabled":a||void 0,onClick:()=>x(r),children:r})},r))}),n.jsx("button",{className:t.default.step,type:"button","aria-label":"Próxima página","aria-disabled":a||i===c||void 0,onClick:()=>i<c&&x(i+1),children:n.jsx(h.IconChevronRight,{size:14})})]})}function M({formatRange:s,range:a}){if(s)return n.jsx("span",{className:t.default.range,role:"status",children:s(a)});const[e,o,l]=[a.start,a.end,a.total].map(d=>N.formatarNumero(d));return n.jsxs("span",{className:t.default.range,role:"status",children:[n.jsx("span",{"aria-hidden":"true",children:`${e}–${o} de ${l}`}),n.jsx("span",{className:t.default.hiddenText,children:`Itens ${e} a ${o} de ${l}`})]})}function j(s,a,e){const o=e*2+5;if(a<=o)return Array.from({length:a},(u,f)=>f+1);const l=Math.max(Math.min(s-e,a-e*2-2),3),d=Math.min(Math.max(s+e,e*2+3),a-2),c=Array.from({length:d-l+1},(u,f)=>l+f);return[1,l>3?null:2,...c,d<a-2?null:a-1,a]}exports.Pagination=P;exports.montarFaixa=j;
2
2
  //# sourceMappingURL=Pagination.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.cjs","sources":["../../../../src/components/navigation/Pagination/Pagination.tsx"],"sourcesContent":["import { type ComponentPropsWithRef } from 'react';\nimport styles from './Pagination.module.css';\nimport { IconChevronLeft, IconChevronRight } from '../../icons';\n\nexport interface PaginationProps extends ComponentPropsWithRef<'nav'> {\n /** Suspende a troca de pagina, como enquanto a pagina pedida carrega. Os botoes continuam focaveis. */\n disabled?: boolean;\n label?: string;\n onPageChange: (page: number) => void;\n page: number;\n pageCount: number;\n /** Quantidade de paginas mostradas de cada lado da atual. */\n siblings?: number;\n}\n\nexport function Pagination({\n className,\n disabled = false,\n label = 'Paginação',\n onPageChange,\n page,\n pageCount,\n siblings = 1,\n ...props\n}: PaginationProps) {\n if (pageCount <= 1) {\n return null;\n }\n\n const atual = Math.min(Math.max(page, 1), pageCount);\n const paginas = montarFaixa(atual, pageCount, siblings);\n\n function irPara(pagina: number) {\n if (!disabled) {\n onPageChange(pagina);\n }\n }\n\n return (\n <nav {...props} aria-label={label} className={[styles.pagination, className].filter(Boolean).join(' ')}>\n {/* `aria-disabled`, e nao `disabled`: desabilitado na borda, o botao perdia o foco de quem acabou de usa-lo. */}\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Página anterior\"\n aria-disabled={disabled || atual === 1 || undefined}\n onClick={() => atual > 1 && irPara(atual - 1)}\n >\n <IconChevronLeft size={14} />\n </button>\n <ol className={styles.list}>\n {paginas.map((numero, indice) =>\n numero === null ? (\n <li className={styles.gap} key={`gap-${indice}`} aria-hidden=\"true\">\n &hellip;\n </li>\n ) : (\n <li key={numero}>\n <button\n className={[styles.page, numero === atual && styles.current].filter(Boolean).join(' ')}\n type=\"button\"\n aria-label={`Página ${numero}`}\n aria-current={numero === atual ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={() => irPara(numero)}\n >\n {numero}\n </button>\n </li>\n ),\n )}\n </ol>\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Próxima página\"\n aria-disabled={disabled || atual === pageCount || undefined}\n onClick={() => atual < pageCount && irPara(atual + 1)}\n >\n <IconChevronRight size={14} />\n </button>\n </nav>\n );\n}\n\n/**\n * Primeira e ultima pagina sempre visiveis; null representa a reticencia. A faixa tem sempre as mesmas vagas: perto\n * da ponta a janela encosta nela em vez de encolher, e reticencia nunca esconde uma pagina so.\n */\nexport function montarFaixa(atual: number, total: number, vizinhos: number): (number | null)[] {\n const vagas = vizinhos * 2 + 5;\n\n if (total <= vagas) {\n return Array.from({ length: total }, (_, indice) => indice + 1);\n }\n\n const inicio = Math.max(Math.min(atual - vizinhos, total - vizinhos * 2 - 2), 3);\n const fim = Math.min(Math.max(atual + vizinhos, vizinhos * 2 + 3), total - 2);\n const janela = Array.from({ length: fim - inicio + 1 }, (_, indice) => inicio + indice);\n\n return [1, inicio > 3 ? null : 2, ...janela, fim < total - 2 ? null : total - 1, total];\n}\n"],"names":["Pagination","className","disabled","label","onPageChange","page","pageCount","siblings","props","atual","paginas","montarFaixa","irPara","pagina","styles","jsx","IconChevronLeft","numero","indice","IconChevronRight","total","vizinhos","vagas","_","inicio","fim","janela"],"mappings":"iMAeO,SAASA,EAAW,CACzB,UAAAC,EACA,SAAAC,EAAW,GACX,MAAAC,EAAQ,YACR,aAAAC,EACA,KAAAC,EACA,UAAAC,EACA,SAAAC,EAAW,EACX,GAAGC,CACL,EAAoB,CAClB,GAAIF,GAAa,EACf,OAAO,KAGT,MAAMG,EAAQ,KAAK,IAAI,KAAK,IAAIJ,EAAM,CAAC,EAAGC,CAAS,EAC7CI,EAAUC,EAAYF,EAAOH,EAAWC,CAAQ,EAEtD,SAASK,EAAOC,EAAgB,CACzBX,GACHE,EAAaS,CAAM,CAEvB,CAEA,cACG,MAAA,CAAK,GAAGL,EAAO,aAAYL,EAAO,UAAW,CAACW,EAAAA,QAAO,WAAYb,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAEnG,SAAA,CAAAc,EAAAA,IAAC,SAAA,CACC,UAAWD,EAAAA,QAAO,KAClB,KAAK,SACL,aAAW,kBACX,gBAAeZ,GAAYO,IAAU,GAAK,OAC1C,QAAS,IAAMA,EAAQ,GAAKG,EAAOH,EAAQ,CAAC,EAE5C,SAAAM,EAAAA,IAACC,EAAAA,gBAAA,CAAgB,KAAM,EAAA,CAAI,CAAA,CAAA,EAE7BD,EAAAA,IAAC,KAAA,CAAG,UAAWD,EAAAA,QAAO,KACnB,SAAAJ,EAAQ,IAAI,CAACO,EAAQC,IACpBD,IAAW,KACTF,EAAAA,IAAC,MAAG,UAAWD,UAAO,IAA2B,cAAY,OAAO,SAAA,GAAA,EAApC,OAAOI,CAAM,EAE7C,QAEC,KAAA,CACC,SAAAH,EAAAA,IAAC,SAAA,CACC,UAAW,CAACD,EAAAA,QAAO,KAAMG,IAAWR,GAASK,EAAAA,QAAO,OAAO,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACrF,KAAK,SACL,aAAY,UAAUG,CAAM,GAC5B,eAAcA,IAAWR,EAAQ,OAAS,OAC1C,gBAAeP,GAAY,OAC3B,QAAS,IAAMU,EAAOK,CAAM,EAE3B,SAAAA,CAAA,CAAA,GATIA,CAWT,CAAA,EAGN,EACAF,EAAAA,IAAC,SAAA,CACC,UAAWD,EAAAA,QAAO,KAClB,KAAK,SACL,aAAW,iBACX,gBAAeZ,GAAYO,IAAUH,GAAa,OAClD,QAAS,IAAMG,EAAQH,GAAaM,EAAOH,EAAQ,CAAC,EAEpD,SAAAM,EAAAA,IAACI,EAAAA,iBAAA,CAAiB,KAAM,EAAA,CAAI,CAAA,CAAA,CAC9B,EACF,CAEJ,CAMO,SAASR,EAAYF,EAAeW,EAAeC,EAAqC,CAC7F,MAAMC,EAAQD,EAAW,EAAI,EAE7B,GAAID,GAASE,EACX,OAAO,MAAM,KAAK,CAAE,OAAQF,GAAS,CAACG,EAAGL,IAAWA,EAAS,CAAC,EAGhE,MAAMM,EAAS,KAAK,IAAI,KAAK,IAAIf,EAAQY,EAAUD,EAAQC,EAAW,EAAI,CAAC,EAAG,CAAC,EACzEI,EAAM,KAAK,IAAI,KAAK,IAAIhB,EAAQY,EAAUA,EAAW,EAAI,CAAC,EAAGD,EAAQ,CAAC,EACtEM,EAAS,MAAM,KAAK,CAAE,OAAQD,EAAMD,EAAS,CAAA,EAAK,CAACD,EAAGL,IAAWM,EAASN,CAAM,EAEtF,MAAO,CAAC,EAAGM,EAAS,EAAI,KAAO,EAAG,GAAGE,EAAQD,EAAML,EAAQ,EAAI,KAAOA,EAAQ,EAAGA,CAAK,CACxF"}
1
+ {"version":3,"file":"Pagination.cjs","sources":["../../../../src/components/navigation/Pagination/Pagination.tsx"],"sourcesContent":["import { type ComponentPropsWithRef } from 'react';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './Pagination.module.css';\nimport { IconChevronLeft, IconChevronRight } from '../../icons';\n\n/** Posições, contadas de 1, do primeiro e do último item da página, e o total de itens. */\nexport interface PaginationRange {\n end: number;\n start: number;\n total: number;\n}\n\nexport interface PaginationProps extends ComponentPropsWithRef<'nav'> {\n /** Suspende a troca de pagina, como enquanto a pagina pedida carrega. Os botoes continuam focaveis. */\n disabled?: boolean;\n /** Troca o texto do intervalo, que por padrão é `1.201–1.250 de 4.380`. */\n formatRange?: (range: PaginationRange) => string;\n label?: string;\n onPageChange: (page: number) => void;\n page: number;\n pageCount: number;\n /** Itens por página. Com `totalItems`, mostra o intervalo da página atual. */\n pageSize?: number;\n /** Quantidade de paginas mostradas de cada lado da atual. */\n siblings?: number;\n /** Total de itens. Com `pageSize`, mostra o intervalo da página atual. */\n totalItems?: number;\n}\n\nexport function Pagination({\n className,\n disabled = false,\n formatRange,\n label = 'Paginação',\n onPageChange,\n page,\n pageCount,\n pageSize,\n siblings = 1,\n totalItems,\n ...props\n}: PaginationProps) {\n if (pageCount <= 1) {\n return null;\n }\n\n const atual = Math.min(Math.max(page, 1), pageCount);\n const paginas = montarFaixa(atual, pageCount, siblings);\n\n function irPara(pagina: number) {\n if (!disabled) {\n onPageChange(pagina);\n }\n }\n\n return (\n <nav {...props} aria-label={label} className={[styles.pagination, className].filter(Boolean).join(' ')}>\n {totalItems !== undefined && pageSize !== undefined && (\n <PaginationRangeText\n formatRange={formatRange}\n range={{\n start: (atual - 1) * pageSize + 1,\n end: Math.min(atual * pageSize, totalItems),\n total: totalItems,\n }}\n />\n )}\n {/* `aria-disabled`, e nao `disabled`: desabilitado na borda, o botao perdia o foco de quem acabou de usa-lo. */}\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Página anterior\"\n aria-disabled={disabled || atual === 1 || undefined}\n onClick={() => atual > 1 && irPara(atual - 1)}\n >\n <IconChevronLeft size={14} />\n </button>\n <ol className={styles.list}>\n {paginas.map((numero, indice) =>\n numero === null ? (\n <li className={styles.gap} key={`gap-${indice}`} aria-hidden=\"true\">\n &hellip;\n </li>\n ) : (\n <li key={numero}>\n <button\n className={[styles.page, numero === atual && styles.current].filter(Boolean).join(' ')}\n type=\"button\"\n aria-label={`Página ${numero}`}\n aria-current={numero === atual ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={() => irPara(numero)}\n >\n {numero}\n </button>\n </li>\n ),\n )}\n </ol>\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Próxima página\"\n aria-disabled={disabled || atual === pageCount || undefined}\n onClick={() => atual < pageCount && irPara(atual + 1)}\n >\n <IconChevronRight size={14} />\n </button>\n </nav>\n );\n}\n\n/**\n * Região viva: ao trocar de página, o leitor de tela anuncia o novo intervalo, e só ele, pois os botões não mudam\n * de nome. O travessão some na fala de muitos leitores, e o texto padrão tem uma forma falada à parte.\n */\nfunction PaginationRangeText({\n formatRange,\n range,\n}: {\n formatRange?: (range: PaginationRange) => string;\n range: PaginationRange;\n}) {\n if (formatRange) {\n return (\n <span className={styles.range} role=\"status\">\n {formatRange(range)}\n </span>\n );\n }\n\n const [inicio, fim, total] = [range.start, range.end, range.total].map((numero) => formatarNumero(numero));\n\n return (\n <span className={styles.range} role=\"status\">\n <span aria-hidden=\"true\">{`${inicio}–${fim} de ${total}`}</span>\n <span className={styles.hiddenText}>{`Itens ${inicio} a ${fim} de ${total}`}</span>\n </span>\n );\n}\n\n/**\n * Primeira e ultima pagina sempre visiveis; null representa a reticencia. A faixa tem sempre as mesmas vagas: perto\n * da ponta a janela encosta nela em vez de encolher, e reticencia nunca esconde uma pagina so.\n */\nexport function montarFaixa(atual: number, total: number, vizinhos: number): (number | null)[] {\n const vagas = vizinhos * 2 + 5;\n\n if (total <= vagas) {\n return Array.from({ length: total }, (_, indice) => indice + 1);\n }\n\n const inicio = Math.max(Math.min(atual - vizinhos, total - vizinhos * 2 - 2), 3);\n const fim = Math.min(Math.max(atual + vizinhos, vizinhos * 2 + 3), total - 2);\n const janela = Array.from({ length: fim - inicio + 1 }, (_, indice) => inicio + indice);\n\n return [1, inicio > 3 ? null : 2, ...janela, fim < total - 2 ? null : total - 1, total];\n}\n"],"names":["Pagination","className","disabled","formatRange","label","onPageChange","page","pageCount","pageSize","siblings","totalItems","props","atual","paginas","montarFaixa","irPara","pagina","styles","jsx","PaginationRangeText","IconChevronLeft","numero","indice","IconChevronRight","range","inicio","fim","total","formatarNumero","vizinhos","vagas","_","janela"],"mappings":"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"}
@@ -1,70 +1,97 @@
1
- import { jsxs as g, jsx as l } from "react/jsx-runtime";
2
- import e from "./Pagination.module.css.js";
3
- import { IconChevronLeft as b, IconChevronRight as u } from "../../icons/icons.js";
4
- function P({
5
- className: o,
6
- disabled: i = !1,
7
- label: t = "Paginação",
8
- onPageChange: s,
9
- page: c,
10
- pageCount: r,
11
- siblings: m = 1,
12
- ...f
1
+ import { jsxs as u, jsx as n } from "react/jsx-runtime";
2
+ import t from "./Pagination.module.css.js";
3
+ import { IconChevronLeft as N, IconChevronRight as $ } from "../../icons/icons.js";
4
+ import { formatarNumero as M } from "../../../utils/formatters/formatarNumero.js";
5
+ function B({
6
+ className: s,
7
+ disabled: a = !1,
8
+ formatRange: r,
9
+ label: o = "Paginação",
10
+ onPageChange: l,
11
+ page: d,
12
+ pageCount: c,
13
+ pageSize: m,
14
+ siblings: h = 1,
15
+ totalItems: f,
16
+ ...b
13
17
  }) {
14
- if (r <= 1)
18
+ if (c <= 1)
15
19
  return null;
16
- const a = Math.min(Math.max(c, 1), r), d = x(a, r, m);
17
- function h(n) {
18
- i || s(n);
20
+ const i = Math.min(Math.max(d, 1), c), g = v(i, c, h);
21
+ function p(e) {
22
+ a || l(e);
19
23
  }
20
- return /* @__PURE__ */ g("nav", { ...f, "aria-label": t, className: [e.pagination, o].filter(Boolean).join(" "), children: [
21
- /* @__PURE__ */ l(
24
+ return /* @__PURE__ */ u("nav", { ...b, "aria-label": o, className: [t.pagination, s].filter(Boolean).join(" "), children: [
25
+ f !== void 0 && m !== void 0 && /* @__PURE__ */ n(
26
+ P,
27
+ {
28
+ formatRange: r,
29
+ range: {
30
+ start: (i - 1) * m + 1,
31
+ end: Math.min(i * m, f),
32
+ total: f
33
+ }
34
+ }
35
+ ),
36
+ /* @__PURE__ */ n(
22
37
  "button",
23
38
  {
24
- className: e.step,
39
+ className: t.step,
25
40
  type: "button",
26
41
  "aria-label": "Página anterior",
27
- "aria-disabled": i || a === 1 || void 0,
28
- onClick: () => a > 1 && h(a - 1),
29
- children: /* @__PURE__ */ l(b, { size: 14 })
42
+ "aria-disabled": a || i === 1 || void 0,
43
+ onClick: () => i > 1 && p(i - 1),
44
+ children: /* @__PURE__ */ n(N, { size: 14 })
30
45
  }
31
46
  ),
32
- /* @__PURE__ */ l("ol", { className: e.list, children: d.map(
33
- (n, p) => n === null ? /* @__PURE__ */ l("li", { className: e.gap, "aria-hidden": "true", children: "…" }, `gap-${p}`) : /* @__PURE__ */ l("li", { children: /* @__PURE__ */ l(
47
+ /* @__PURE__ */ n("ol", { className: t.list, children: g.map(
48
+ (e, x) => e === null ? /* @__PURE__ */ n("li", { className: t.gap, "aria-hidden": "true", children: "…" }, `gap-${x}`) : /* @__PURE__ */ n("li", { children: /* @__PURE__ */ n(
34
49
  "button",
35
50
  {
36
- className: [e.page, n === a && e.current].filter(Boolean).join(" "),
51
+ className: [t.page, e === i && t.current].filter(Boolean).join(" "),
37
52
  type: "button",
38
- "aria-label": `Página ${n}`,
39
- "aria-current": n === a ? "page" : void 0,
40
- "aria-disabled": i || void 0,
41
- onClick: () => h(n),
42
- children: n
53
+ "aria-label": `Página ${e}`,
54
+ "aria-current": e === i ? "page" : void 0,
55
+ "aria-disabled": a || void 0,
56
+ onClick: () => p(e),
57
+ children: e
43
58
  }
44
- ) }, n)
59
+ ) }, e)
45
60
  ) }),
46
- /* @__PURE__ */ l(
61
+ /* @__PURE__ */ n(
47
62
  "button",
48
63
  {
49
- className: e.step,
64
+ className: t.step,
50
65
  type: "button",
51
66
  "aria-label": "Próxima página",
52
- "aria-disabled": i || a === r || void 0,
53
- onClick: () => a < r && h(a + 1),
54
- children: /* @__PURE__ */ l(u, { size: 14 })
67
+ "aria-disabled": a || i === c || void 0,
68
+ onClick: () => i < c && p(i + 1),
69
+ children: /* @__PURE__ */ n($, { size: 14 })
55
70
  }
56
71
  )
57
72
  ] });
58
73
  }
59
- function x(o, i, t) {
60
- const s = t * 2 + 5;
61
- if (i <= s)
62
- return Array.from({ length: i }, (f, a) => a + 1);
63
- const c = Math.max(Math.min(o - t, i - t * 2 - 2), 3), r = Math.min(Math.max(o + t, t * 2 + 3), i - 2), m = Array.from({ length: r - c + 1 }, (f, a) => c + a);
64
- return [1, c > 3 ? null : 2, ...m, r < i - 2 ? null : i - 1, i];
74
+ function P({
75
+ formatRange: s,
76
+ range: a
77
+ }) {
78
+ if (s)
79
+ return /* @__PURE__ */ n("span", { className: t.range, role: "status", children: s(a) });
80
+ const [r, o, l] = [a.start, a.end, a.total].map((d) => M(d));
81
+ return /* @__PURE__ */ u("span", { className: t.range, role: "status", children: [
82
+ /* @__PURE__ */ n("span", { "aria-hidden": "true", children: `${r}–${o} de ${l}` }),
83
+ /* @__PURE__ */ n("span", { className: t.hiddenText, children: `Itens ${r} a ${o} de ${l}` })
84
+ ] });
85
+ }
86
+ function v(s, a, r) {
87
+ const o = r * 2 + 5;
88
+ if (a <= o)
89
+ return Array.from({ length: a }, (m, h) => h + 1);
90
+ const l = Math.max(Math.min(s - r, a - r * 2 - 2), 3), d = Math.min(Math.max(s + r, r * 2 + 3), a - 2), c = Array.from({ length: d - l + 1 }, (m, h) => l + h);
91
+ return [1, l > 3 ? null : 2, ...c, d < a - 2 ? null : a - 1, a];
65
92
  }
66
93
  export {
67
- P as Pagination,
68
- x as montarFaixa
94
+ B as Pagination,
95
+ v as montarFaixa
69
96
  };
70
97
  //# sourceMappingURL=Pagination.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sources":["../../../../src/components/navigation/Pagination/Pagination.tsx"],"sourcesContent":["import { type ComponentPropsWithRef } from 'react';\nimport styles from './Pagination.module.css';\nimport { IconChevronLeft, IconChevronRight } from '../../icons';\n\nexport interface PaginationProps extends ComponentPropsWithRef<'nav'> {\n /** Suspende a troca de pagina, como enquanto a pagina pedida carrega. Os botoes continuam focaveis. */\n disabled?: boolean;\n label?: string;\n onPageChange: (page: number) => void;\n page: number;\n pageCount: number;\n /** Quantidade de paginas mostradas de cada lado da atual. */\n siblings?: number;\n}\n\nexport function Pagination({\n className,\n disabled = false,\n label = 'Paginação',\n onPageChange,\n page,\n pageCount,\n siblings = 1,\n ...props\n}: PaginationProps) {\n if (pageCount <= 1) {\n return null;\n }\n\n const atual = Math.min(Math.max(page, 1), pageCount);\n const paginas = montarFaixa(atual, pageCount, siblings);\n\n function irPara(pagina: number) {\n if (!disabled) {\n onPageChange(pagina);\n }\n }\n\n return (\n <nav {...props} aria-label={label} className={[styles.pagination, className].filter(Boolean).join(' ')}>\n {/* `aria-disabled`, e nao `disabled`: desabilitado na borda, o botao perdia o foco de quem acabou de usa-lo. */}\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Página anterior\"\n aria-disabled={disabled || atual === 1 || undefined}\n onClick={() => atual > 1 && irPara(atual - 1)}\n >\n <IconChevronLeft size={14} />\n </button>\n <ol className={styles.list}>\n {paginas.map((numero, indice) =>\n numero === null ? (\n <li className={styles.gap} key={`gap-${indice}`} aria-hidden=\"true\">\n &hellip;\n </li>\n ) : (\n <li key={numero}>\n <button\n className={[styles.page, numero === atual && styles.current].filter(Boolean).join(' ')}\n type=\"button\"\n aria-label={`Página ${numero}`}\n aria-current={numero === atual ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={() => irPara(numero)}\n >\n {numero}\n </button>\n </li>\n ),\n )}\n </ol>\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Próxima página\"\n aria-disabled={disabled || atual === pageCount || undefined}\n onClick={() => atual < pageCount && irPara(atual + 1)}\n >\n <IconChevronRight size={14} />\n </button>\n </nav>\n );\n}\n\n/**\n * Primeira e ultima pagina sempre visiveis; null representa a reticencia. A faixa tem sempre as mesmas vagas: perto\n * da ponta a janela encosta nela em vez de encolher, e reticencia nunca esconde uma pagina so.\n */\nexport function montarFaixa(atual: number, total: number, vizinhos: number): (number | null)[] {\n const vagas = vizinhos * 2 + 5;\n\n if (total <= vagas) {\n return Array.from({ length: total }, (_, indice) => indice + 1);\n }\n\n const inicio = Math.max(Math.min(atual - vizinhos, total - vizinhos * 2 - 2), 3);\n const fim = Math.min(Math.max(atual + vizinhos, vizinhos * 2 + 3), total - 2);\n const janela = Array.from({ length: fim - inicio + 1 }, (_, indice) => inicio + indice);\n\n return [1, inicio > 3 ? null : 2, ...janela, fim < total - 2 ? null : total - 1, total];\n}\n"],"names":["Pagination","className","disabled","label","onPageChange","page","pageCount","siblings","props","atual","paginas","montarFaixa","irPara","pagina","styles","jsx","IconChevronLeft","numero","indice","IconChevronRight","total","vizinhos","vagas","_","inicio","fim","janela"],"mappings":";;;AAeO,SAASA,EAAW;AAAA,EACzB,WAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,OAAAC,IAAQ;AAAA,EACR,cAAAC;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,GAAGC;AACL,GAAoB;AAClB,MAAIF,KAAa;AACf,WAAO;AAGT,QAAMG,IAAQ,KAAK,IAAI,KAAK,IAAIJ,GAAM,CAAC,GAAGC,CAAS,GAC7CI,IAAUC,EAAYF,GAAOH,GAAWC,CAAQ;AAEtD,WAASK,EAAOC,GAAgB;AAC9B,IAAKX,KACHE,EAAaS,CAAM;AAAA,EAEvB;AAEA,2BACG,OAAA,EAAK,GAAGL,GAAO,cAAYL,GAAO,WAAW,CAACW,EAAO,YAAYb,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAEnG,UAAA;AAAA,IAAA,gBAAAc;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWD,EAAO;AAAA,QAClB,MAAK;AAAA,QACL,cAAW;AAAA,QACX,iBAAeZ,KAAYO,MAAU,KAAK;AAAA,QAC1C,SAAS,MAAMA,IAAQ,KAAKG,EAAOH,IAAQ,CAAC;AAAA,QAE5C,UAAA,gBAAAM,EAACC,GAAA,EAAgB,MAAM,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,IAE7B,gBAAAD,EAAC,MAAA,EAAG,WAAWD,EAAO,MACnB,UAAAJ,EAAQ;AAAA,MAAI,CAACO,GAAQC,MACpBD,MAAW,OACT,gBAAAF,EAAC,QAAG,WAAWD,EAAO,KAA2B,eAAY,QAAO,UAAA,IAAA,GAApC,OAAOI,CAAM,EAE7C,sBAEC,MAAA,EACC,UAAA,gBAAAH;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,CAACD,EAAO,MAAMG,MAAWR,KAASK,EAAO,OAAO,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,UACrF,MAAK;AAAA,UACL,cAAY,UAAUG,CAAM;AAAA,UAC5B,gBAAcA,MAAWR,IAAQ,SAAS;AAAA,UAC1C,iBAAeP,KAAY;AAAA,UAC3B,SAAS,MAAMU,EAAOK,CAAM;AAAA,UAE3B,UAAAA;AAAA,QAAA;AAAA,MAAA,KATIA,CAWT;AAAA,IAAA,GAGN;AAAA,IACA,gBAAAF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWD,EAAO;AAAA,QAClB,MAAK;AAAA,QACL,cAAW;AAAA,QACX,iBAAeZ,KAAYO,MAAUH,KAAa;AAAA,QAClD,SAAS,MAAMG,IAAQH,KAAaM,EAAOH,IAAQ,CAAC;AAAA,QAEpD,UAAA,gBAAAM,EAACI,GAAA,EAAiB,MAAM,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAC9B,GACF;AAEJ;AAMO,SAASR,EAAYF,GAAeW,GAAeC,GAAqC;AAC7F,QAAMC,IAAQD,IAAW,IAAI;AAE7B,MAAID,KAASE;AACX,WAAO,MAAM,KAAK,EAAE,QAAQF,KAAS,CAACG,GAAGL,MAAWA,IAAS,CAAC;AAGhE,QAAMM,IAAS,KAAK,IAAI,KAAK,IAAIf,IAAQY,GAAUD,IAAQC,IAAW,IAAI,CAAC,GAAG,CAAC,GACzEI,IAAM,KAAK,IAAI,KAAK,IAAIhB,IAAQY,GAAUA,IAAW,IAAI,CAAC,GAAGD,IAAQ,CAAC,GACtEM,IAAS,MAAM,KAAK,EAAE,QAAQD,IAAMD,IAAS,EAAA,GAAK,CAACD,GAAGL,MAAWM,IAASN,CAAM;AAEtF,SAAO,CAAC,GAAGM,IAAS,IAAI,OAAO,GAAG,GAAGE,GAAQD,IAAML,IAAQ,IAAI,OAAOA,IAAQ,GAAGA,CAAK;AACxF;"}
1
+ {"version":3,"file":"Pagination.js","sources":["../../../../src/components/navigation/Pagination/Pagination.tsx"],"sourcesContent":["import { type ComponentPropsWithRef } from 'react';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './Pagination.module.css';\nimport { IconChevronLeft, IconChevronRight } from '../../icons';\n\n/** Posições, contadas de 1, do primeiro e do último item da página, e o total de itens. */\nexport interface PaginationRange {\n end: number;\n start: number;\n total: number;\n}\n\nexport interface PaginationProps extends ComponentPropsWithRef<'nav'> {\n /** Suspende a troca de pagina, como enquanto a pagina pedida carrega. Os botoes continuam focaveis. */\n disabled?: boolean;\n /** Troca o texto do intervalo, que por padrão é `1.201–1.250 de 4.380`. */\n formatRange?: (range: PaginationRange) => string;\n label?: string;\n onPageChange: (page: number) => void;\n page: number;\n pageCount: number;\n /** Itens por página. Com `totalItems`, mostra o intervalo da página atual. */\n pageSize?: number;\n /** Quantidade de paginas mostradas de cada lado da atual. */\n siblings?: number;\n /** Total de itens. Com `pageSize`, mostra o intervalo da página atual. */\n totalItems?: number;\n}\n\nexport function Pagination({\n className,\n disabled = false,\n formatRange,\n label = 'Paginação',\n onPageChange,\n page,\n pageCount,\n pageSize,\n siblings = 1,\n totalItems,\n ...props\n}: PaginationProps) {\n if (pageCount <= 1) {\n return null;\n }\n\n const atual = Math.min(Math.max(page, 1), pageCount);\n const paginas = montarFaixa(atual, pageCount, siblings);\n\n function irPara(pagina: number) {\n if (!disabled) {\n onPageChange(pagina);\n }\n }\n\n return (\n <nav {...props} aria-label={label} className={[styles.pagination, className].filter(Boolean).join(' ')}>\n {totalItems !== undefined && pageSize !== undefined && (\n <PaginationRangeText\n formatRange={formatRange}\n range={{\n start: (atual - 1) * pageSize + 1,\n end: Math.min(atual * pageSize, totalItems),\n total: totalItems,\n }}\n />\n )}\n {/* `aria-disabled`, e nao `disabled`: desabilitado na borda, o botao perdia o foco de quem acabou de usa-lo. */}\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Página anterior\"\n aria-disabled={disabled || atual === 1 || undefined}\n onClick={() => atual > 1 && irPara(atual - 1)}\n >\n <IconChevronLeft size={14} />\n </button>\n <ol className={styles.list}>\n {paginas.map((numero, indice) =>\n numero === null ? (\n <li className={styles.gap} key={`gap-${indice}`} aria-hidden=\"true\">\n &hellip;\n </li>\n ) : (\n <li key={numero}>\n <button\n className={[styles.page, numero === atual && styles.current].filter(Boolean).join(' ')}\n type=\"button\"\n aria-label={`Página ${numero}`}\n aria-current={numero === atual ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={() => irPara(numero)}\n >\n {numero}\n </button>\n </li>\n ),\n )}\n </ol>\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Próxima página\"\n aria-disabled={disabled || atual === pageCount || undefined}\n onClick={() => atual < pageCount && irPara(atual + 1)}\n >\n <IconChevronRight size={14} />\n </button>\n </nav>\n );\n}\n\n/**\n * Região viva: ao trocar de página, o leitor de tela anuncia o novo intervalo, e só ele, pois os botões não mudam\n * de nome. O travessão some na fala de muitos leitores, e o texto padrão tem uma forma falada à parte.\n */\nfunction PaginationRangeText({\n formatRange,\n range,\n}: {\n formatRange?: (range: PaginationRange) => string;\n range: PaginationRange;\n}) {\n if (formatRange) {\n return (\n <span className={styles.range} role=\"status\">\n {formatRange(range)}\n </span>\n );\n }\n\n const [inicio, fim, total] = [range.start, range.end, range.total].map((numero) => formatarNumero(numero));\n\n return (\n <span className={styles.range} role=\"status\">\n <span aria-hidden=\"true\">{`${inicio}–${fim} de ${total}`}</span>\n <span className={styles.hiddenText}>{`Itens ${inicio} a ${fim} de ${total}`}</span>\n </span>\n );\n}\n\n/**\n * Primeira e ultima pagina sempre visiveis; null representa a reticencia. A faixa tem sempre as mesmas vagas: perto\n * da ponta a janela encosta nela em vez de encolher, e reticencia nunca esconde uma pagina so.\n */\nexport function montarFaixa(atual: number, total: number, vizinhos: number): (number | null)[] {\n const vagas = vizinhos * 2 + 5;\n\n if (total <= vagas) {\n return Array.from({ length: total }, (_, indice) => indice + 1);\n }\n\n const inicio = Math.max(Math.min(atual - vizinhos, total - vizinhos * 2 - 2), 3);\n const fim = Math.min(Math.max(atual + vizinhos, vizinhos * 2 + 3), total - 2);\n const janela = Array.from({ length: fim - inicio + 1 }, (_, indice) => inicio + indice);\n\n return [1, inicio > 3 ? null : 2, ...janela, fim < total - 2 ? null : total - 1, total];\n}\n"],"names":["Pagination","className","disabled","formatRange","label","onPageChange","page","pageCount","pageSize","siblings","totalItems","props","atual","paginas","montarFaixa","irPara","pagina","styles","jsx","PaginationRangeText","IconChevronLeft","numero","indice","IconChevronRight","range","inicio","fim","total","formatarNumero","vizinhos","vagas","_","janela"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t="_pagination_1ws2p_1",s="_list_1ws2p_7",e="_page_1ws2p_16",p="_step_1ws2p_17",n="_current_1ws2p_35",a="_gap_1ws2p_58",_={pagination:t,list:s,page:e,step:p,current:n,gap:a};exports.current=n;exports.default=_;exports.gap=a;exports.list=s;exports.page=e;exports.pagination=t;exports.step=p;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_pagination_156fv_1",t="_range_156fv_8",n="_hiddenText_156fv_19 _hiddenText_7tv83_113",_="_list_156fv_23",a="_page_156fv_32",s="_step_156fv_33",i="_current_156fv_51",g="_gap_156fv_74",o={pagination:e,range:t,hiddenText:n,list:_,page:a,step:s,current:i,gap:g};exports.current=i;exports.default=o;exports.gap=g;exports.hiddenText=n;exports.list=_;exports.page=a;exports.pagination=e;exports.range=t;exports.step=s;
2
2
  //# sourceMappingURL=Pagination.module.css.cjs.map
@@ -1,18 +1,22 @@
1
- const s = "_pagination_1ws2p_1", t = "_list_1ws2p_7", p = "_page_1ws2p_16", _ = "_step_1ws2p_17", n = "_current_1ws2p_35", a = "_gap_1ws2p_58", e = {
2
- pagination: s,
3
- list: t,
4
- page: p,
5
- step: _,
6
- current: n,
7
- gap: a
1
+ const t = "_pagination_156fv_1", _ = "_range_156fv_8", n = "_hiddenText_156fv_19 _hiddenText_7tv83_113", e = "_list_156fv_23", s = "_page_156fv_32", a = "_step_156fv_33", i = "_current_156fv_51", o = "_gap_156fv_74", p = {
2
+ pagination: t,
3
+ range: _,
4
+ hiddenText: n,
5
+ list: e,
6
+ page: s,
7
+ step: a,
8
+ current: i,
9
+ gap: o
8
10
  };
9
11
  export {
10
- n as current,
11
- e as default,
12
- a as gap,
13
- t as list,
14
- p as page,
15
- s as pagination,
16
- _ as step
12
+ i as current,
13
+ p as default,
14
+ o as gap,
15
+ n as hiddenText,
16
+ e as list,
17
+ s as page,
18
+ t as pagination,
19
+ _ as range,
20
+ a as step
17
21
  };
18
22
  //# sourceMappingURL=Pagination.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"Pagination.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),e=require("./TabsNav.module.css.cjs");function d({as:s="a",className:t,current:n,fitted:i=!1,items:u,label:o,...c}){return l.jsx("nav",{...c,"aria-label":o,className:[e.default.tabsNav,i&&e.default.fitted,t].filter(Boolean).join(" "),children:l.jsx("ul",{className:e.default.list,children:u.map(a=>{const r=a.key===n;return l.jsx("li",{className:e.default.item,children:l.jsx(s,{"aria-current":r?"page":void 0,className:[e.default.link,r&&e.default.current].filter(Boolean).join(" "),href:a.href,...a.linkProps,children:a.label})},a.key)})})})}exports.TabsNav=d;
2
+ //# sourceMappingURL=TabsNav.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabsNav.cjs","sources":["../../../../src/components/navigation/TabsNav/TabsNav.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ElementType } from 'react';\nimport styles from './TabsNav.module.css';\n\nexport interface TabsNavItem {\n href?: string;\n key: string;\n label: string;\n /** Propriedades entregues inteiras ao componente de link, para o roteador que não usa `href`. */\n linkProps?: Record<string, unknown>;\n}\n\nexport interface TabsNavProps extends Omit<ComponentPropsWithRef<'nav'>, 'aria-label'> {\n /** Componente de link da aplicação, para não acoplar o sistema a um roteador. */\n as?: ElementType;\n /** Chave da aba do endereço atual. */\n current: string;\n /** As abas dividem a largura em partes iguais, em vez de ficar do tamanho do rótulo. */\n fitted?: boolean;\n items: readonly TabsNavItem[];\n label: string;\n}\n\n/** Abas que são endereços: cada uma é um link, e a da página atual leva `aria-current=\"page\"`. */\nexport function TabsNav({ as: Link = 'a', className, current, fitted = false, items, label, ...props }: TabsNavProps) {\n return (\n <nav {...props} aria-label={label} className={[styles.tabsNav, fitted && styles.fitted, className].filter(Boolean).join(' ')}>\n <ul className={styles.list}>\n {items.map((item) => {\n const atual = item.key === current;\n\n return (\n <li className={styles.item} key={item.key}>\n <Link\n aria-current={atual ? 'page' : undefined}\n className={[styles.link, atual && styles.current].filter(Boolean).join(' ')}\n href={item.href}\n {...item.linkProps}\n >\n {item.label}\n </Link>\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n"],"names":["TabsNav","Link","className","current","fitted","items","label","props","jsx","styles","item","atual"],"mappings":"2JAuBO,SAASA,EAAQ,CAAE,GAAIC,EAAO,IAAK,UAAAC,EAAW,QAAAC,EAAS,OAAAC,EAAS,GAAO,MAAAC,EAAO,MAAAC,EAAO,GAAGC,GAAuB,CACpH,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EAAO,aAAYD,EAAO,UAAW,CAACG,EAAAA,QAAO,QAASL,GAAUK,EAAAA,QAAO,OAAQP,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACzH,SAAAM,EAAAA,IAAC,KAAA,CAAG,UAAWC,EAAAA,QAAO,KACnB,SAAAJ,EAAM,IAAKK,GAAS,CACnB,MAAMC,EAAQD,EAAK,MAAQP,EAE3B,OACEK,EAAAA,IAAC,KAAA,CAAG,UAAWC,EAAAA,QAAO,KACpB,SAAAD,EAAAA,IAACP,EAAA,CACC,eAAcU,EAAQ,OAAS,OAC/B,UAAW,CAACF,EAAAA,QAAO,KAAME,GAASF,EAAAA,QAAO,OAAO,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC1E,KAAMC,EAAK,KACV,GAAGA,EAAK,UAER,SAAAA,EAAK,KAAA,CAAA,CACR,EAR+BA,EAAK,GAStC,CAEJ,CAAC,EACH,EACF,CAEJ"}
@@ -0,0 +1,21 @@
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import a from "./TabsNav.module.css.js";
3
+ function h({ as: n = "a", className: s, current: i, fitted: o = !1, items: t, label: c, ...f }) {
4
+ return /* @__PURE__ */ l("nav", { ...f, "aria-label": c, className: [a.tabsNav, o && a.fitted, s].filter(Boolean).join(" "), children: /* @__PURE__ */ l("ul", { className: a.list, children: t.map((e) => {
5
+ const r = e.key === i;
6
+ return /* @__PURE__ */ l("li", { className: a.item, children: /* @__PURE__ */ l(
7
+ n,
8
+ {
9
+ "aria-current": r ? "page" : void 0,
10
+ className: [a.link, r && a.current].filter(Boolean).join(" "),
11
+ href: e.href,
12
+ ...e.linkProps,
13
+ children: e.label
14
+ }
15
+ ) }, e.key);
16
+ }) }) });
17
+ }
18
+ export {
19
+ h as TabsNav
20
+ };
21
+ //# sourceMappingURL=TabsNav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabsNav.js","sources":["../../../../src/components/navigation/TabsNav/TabsNav.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ElementType } from 'react';\nimport styles from './TabsNav.module.css';\n\nexport interface TabsNavItem {\n href?: string;\n key: string;\n label: string;\n /** Propriedades entregues inteiras ao componente de link, para o roteador que não usa `href`. */\n linkProps?: Record<string, unknown>;\n}\n\nexport interface TabsNavProps extends Omit<ComponentPropsWithRef<'nav'>, 'aria-label'> {\n /** Componente de link da aplicação, para não acoplar o sistema a um roteador. */\n as?: ElementType;\n /** Chave da aba do endereço atual. */\n current: string;\n /** As abas dividem a largura em partes iguais, em vez de ficar do tamanho do rótulo. */\n fitted?: boolean;\n items: readonly TabsNavItem[];\n label: string;\n}\n\n/** Abas que são endereços: cada uma é um link, e a da página atual leva `aria-current=\"page\"`. */\nexport function TabsNav({ as: Link = 'a', className, current, fitted = false, items, label, ...props }: TabsNavProps) {\n return (\n <nav {...props} aria-label={label} className={[styles.tabsNav, fitted && styles.fitted, className].filter(Boolean).join(' ')}>\n <ul className={styles.list}>\n {items.map((item) => {\n const atual = item.key === current;\n\n return (\n <li className={styles.item} key={item.key}>\n <Link\n aria-current={atual ? 'page' : undefined}\n className={[styles.link, atual && styles.current].filter(Boolean).join(' ')}\n href={item.href}\n {...item.linkProps}\n >\n {item.label}\n </Link>\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n"],"names":["TabsNav","Link","className","current","fitted","items","label","props","jsx","styles","item","atual"],"mappings":";;AAuBO,SAASA,EAAQ,EAAE,IAAIC,IAAO,KAAK,WAAAC,GAAW,SAAAC,GAAS,QAAAC,IAAS,IAAO,OAAAC,GAAO,OAAAC,GAAO,GAAGC,KAAuB;AACpH,SACE,gBAAAC,EAAC,OAAA,EAAK,GAAGD,GAAO,cAAYD,GAAO,WAAW,CAACG,EAAO,SAASL,KAAUK,EAAO,QAAQP,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GACzH,UAAA,gBAAAM,EAAC,MAAA,EAAG,WAAWC,EAAO,MACnB,UAAAJ,EAAM,IAAI,CAACK,MAAS;AACnB,UAAMC,IAAQD,EAAK,QAAQP;AAE3B,WACE,gBAAAK,EAAC,MAAA,EAAG,WAAWC,EAAO,MACpB,UAAA,gBAAAD;AAAA,MAACP;AAAA,MAAA;AAAA,QACC,gBAAcU,IAAQ,SAAS;AAAA,QAC/B,WAAW,CAACF,EAAO,MAAME,KAASF,EAAO,OAAO,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,QAC1E,MAAMC,EAAK;AAAA,QACV,GAAGA,EAAK;AAAA,QAER,UAAAA,EAAK;AAAA,MAAA;AAAA,IAAA,EACR,GAR+BA,EAAK,GAStC;AAAA,EAEJ,CAAC,GACH,GACF;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t="_tabsNav_13l4d_2",e="_list_13l4d_6",_="_item_13l4d_16",i="_link_13l4d_21 _tab_cf8v3_1",l="_current_13l4d_26 _active_cf8v3_17",s="_fitted_13l4d_31",n={tabsNav:t,list:e,item:_,link:i,current:l,fitted:s};exports.current=l;exports.default=n;exports.fitted=s;exports.item=_;exports.link=i;exports.list=e;exports.tabsNav=t;
2
+ //# sourceMappingURL=TabsNav.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabsNav.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ const t = "_tabsNav_13l4d_2", _ = "_list_13l4d_6", s = "_item_13l4d_16", l = "_link_13l4d_21 _tab_cf8v3_1", c = "_current_13l4d_26 _active_cf8v3_17", e = "_fitted_13l4d_31", i = {
2
+ tabsNav: t,
3
+ list: _,
4
+ item: s,
5
+ link: l,
6
+ current: c,
7
+ fitted: e
8
+ };
9
+ export {
10
+ c as current,
11
+ i as default,
12
+ e as fitted,
13
+ s as item,
14
+ l as link,
15
+ _ as list,
16
+ t as tabsNav
17
+ };
18
+ //# sourceMappingURL=TabsNav.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabsNav.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.cjs","sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { DialogFrame } from './DialogFrame';\nimport styles from './Dialog.module.css';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** As propriedades nativas vao ao elemento do dialogo; o `className` soma ao do sistema. */\nexport interface DialogProps extends Omit<ComponentPropsWithRef<'div'>, 'children' | 'role' | 'title'> {\n children?: ReactNode;\n description?: string;\n dismissable?: boolean;\n footer?: ReactNode;\n /** Opcional. Desenhado ao lado do titulo, fora da leitura: quem fala e o titulo. */\n icon?: ReactNode;\n onClose: () => void;\n open: boolean;\n /** `alertdialog` para a confirmacao que interrompe e exige resposta, como a de uma acao destrutiva. */\n role?: DialogRole;\n size?: DialogSize;\n title: string;\n}\n\nexport function Dialog({ size = 'md', ...props }: DialogProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.dialog, styles[size]].join(' ')}\n underlayClassName={styles.underlay}\n />\n );\n}\n"],"names":["Dialog","size","props","jsx","DialogFrame","styles"],"mappings":"yLAuBO,SAASA,EAAO,CAAE,KAAAC,EAAO,KAAM,GAAGC,GAAsB,CAC7D,OACEC,EAAAA,IAACC,EAAAA,YAAA,CACE,GAAGF,EACJ,iBAAkB,CAACG,EAAAA,QAAO,OAAQA,EAAAA,QAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG,EACxD,kBAAmBI,EAAAA,QAAO,QAAA,CAAA,CAGhC"}
1
+ {"version":3,"file":"Dialog.cjs","sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { DialogFrame } from './DialogFrame';\nimport styles from './Dialog.module.css';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** O que o `Dialog` e o `Drawer` compartilham. As propriedades nativas vao ao elemento do dialogo. */\nexport interface DialogBaseProps extends Omit<ComponentPropsWithRef<'div'>, 'aria-label' | 'children' | 'role' | 'title'> {\n children?: ReactNode;\n dismissable?: boolean;\n footer?: ReactNode;\n onClose: () => void;\n open: boolean;\n}\n\nexport interface DialogTitledProps {\n 'aria-label'?: never;\n description?: string;\n /** Opcional. Desenhado ao lado do titulo, fora da leitura: quem fala e o titulo. */\n icon?: ReactNode;\n title: string;\n}\n\n/** Sem titulo, sem cabecalho: o nome vem do `aria-label`, como na paleta de busca. Esc continua fechando. */\nexport interface DialogUntitledProps {\n 'aria-label': string;\n description?: never;\n icon?: never;\n title?: never;\n}\n\nexport type DialogProps = DialogBaseProps &\n (DialogTitledProps | DialogUntitledProps) & {\n /** `alertdialog` para a confirmacao que interrompe e exige resposta, como a de uma acao destrutiva. */\n role?: DialogRole;\n size?: DialogSize;\n };\n\nexport function Dialog({ size = 'md', ...props }: DialogProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.dialog, styles[size]].join(' ')}\n underlayClassName={styles.underlay}\n />\n );\n}\n"],"names":["Dialog","size","props","jsx","DialogFrame","styles"],"mappings":"yLAuCO,SAASA,EAAO,CAAE,KAAAC,EAAO,KAAM,GAAGC,GAAsB,CAC7D,OACEC,EAAAA,IAACC,EAAAA,YAAA,CACE,GAAGF,EACJ,iBAAkB,CAACG,EAAAA,QAAO,OAAQA,EAAAA,QAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG,EACxD,kBAAmBI,EAAAA,QAAO,QAAA,CAAA,CAGhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { DialogFrame } from './DialogFrame';\nimport styles from './Dialog.module.css';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** As propriedades nativas vao ao elemento do dialogo; o `className` soma ao do sistema. */\nexport interface DialogProps extends Omit<ComponentPropsWithRef<'div'>, 'children' | 'role' | 'title'> {\n children?: ReactNode;\n description?: string;\n dismissable?: boolean;\n footer?: ReactNode;\n /** Opcional. Desenhado ao lado do titulo, fora da leitura: quem fala e o titulo. */\n icon?: ReactNode;\n onClose: () => void;\n open: boolean;\n /** `alertdialog` para a confirmacao que interrompe e exige resposta, como a de uma acao destrutiva. */\n role?: DialogRole;\n size?: DialogSize;\n title: string;\n}\n\nexport function Dialog({ size = 'md', ...props }: DialogProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.dialog, styles[size]].join(' ')}\n underlayClassName={styles.underlay}\n />\n );\n}\n"],"names":["Dialog","size","props","jsx","DialogFrame","styles"],"mappings":";;;AAuBO,SAASA,EAAO,EAAE,MAAAC,IAAO,MAAM,GAAGC,KAAsB;AAC7D,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,kBAAkB,CAACG,EAAO,QAAQA,EAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG;AAAA,MACxD,mBAAmBI,EAAO;AAAA,IAAA;AAAA,EAAA;AAGhC;"}
1
+ {"version":3,"file":"Dialog.js","sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { DialogFrame } from './DialogFrame';\nimport styles from './Dialog.module.css';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** O que o `Dialog` e o `Drawer` compartilham. As propriedades nativas vao ao elemento do dialogo. */\nexport interface DialogBaseProps extends Omit<ComponentPropsWithRef<'div'>, 'aria-label' | 'children' | 'role' | 'title'> {\n children?: ReactNode;\n dismissable?: boolean;\n footer?: ReactNode;\n onClose: () => void;\n open: boolean;\n}\n\nexport interface DialogTitledProps {\n 'aria-label'?: never;\n description?: string;\n /** Opcional. Desenhado ao lado do titulo, fora da leitura: quem fala e o titulo. */\n icon?: ReactNode;\n title: string;\n}\n\n/** Sem titulo, sem cabecalho: o nome vem do `aria-label`, como na paleta de busca. Esc continua fechando. */\nexport interface DialogUntitledProps {\n 'aria-label': string;\n description?: never;\n icon?: never;\n title?: never;\n}\n\nexport type DialogProps = DialogBaseProps &\n (DialogTitledProps | DialogUntitledProps) & {\n /** `alertdialog` para a confirmacao que interrompe e exige resposta, como a de uma acao destrutiva. */\n role?: DialogRole;\n size?: DialogSize;\n };\n\nexport function Dialog({ size = 'md', ...props }: DialogProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.dialog, styles[size]].join(' ')}\n underlayClassName={styles.underlay}\n />\n );\n}\n"],"names":["Dialog","size","props","jsx","DialogFrame","styles"],"mappings":";;;AAuCO,SAASA,EAAO,EAAE,MAAAC,IAAO,MAAM,GAAGC,KAAsB;AAC7D,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,kBAAkB,CAACG,EAAO,QAAQA,EAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG;AAAA,MACxD,mBAAmBI,EAAO;AAAA,IAAA;AAAA,EAAA;AAGhC;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),q=require("react-dom"),F=require("@react-aria/focus"),d=require("@react-aria/overlays"),I=require("../../../hooks/useMergedRefs.cjs"),r=require("./Dialog.module.css.cjs"),P=require("../../icons/icons.cjs");function R({open:s,...t}){return!s||typeof document>"u"?null:q.createPortal(e.jsx(O,{...t}),document.body)}function O({children:s,className:t,description:i,dismissable:o=!0,footer:n,icon:c,onClose:u,ref:h,role:x="dialog",surfaceClassName:v,title:y,underlayClassName:b,...g}){const a=l.useRef(null),p=I.useMergedRefs(a,h),f=l.useId(),m=`${f}-title`,j=`${f}-description`,{overlayProps:N,underlayProps:D}=d.useOverlay({isOpen:!0,onClose:u,isDismissable:o,isKeyboardDismissDisabled:!o},a);return d.usePreventScroll(),l.useEffect(()=>a.current?d.ariaHideOutside([a.current]):void 0,[]),e.jsx("div",{...D,className:b,children:e.jsx(F.FocusScope,{contain:!0,restoreFocus:!0,autoFocus:!0,children:e.jsxs("div",{...g,...N,ref:p,className:[v,t].filter(Boolean).join(" "),role:x,"aria-modal":"true","aria-labelledby":m,"aria-describedby":i?j:void 0,children:[e.jsxs("header",{className:[r.default.header,s&&r.default.headerDivided].filter(Boolean).join(" "),children:[c&&e.jsx("span",{"aria-hidden":"true",className:r.default.icon,children:c}),e.jsxs("div",{className:r.default.heading,children:[e.jsx("h2",{className:r.default.title,id:m,children:y}),i&&e.jsx("p",{className:r.default.description,id:j,children:i})]}),o&&e.jsx("button",{className:r.default.close,type:"button","aria-label":"Fechar",onClick:u,children:e.jsx(P.IconClose,{size:20})})]}),s&&e.jsx("div",{className:r.default.body,children:s}),n&&e.jsx("div",{className:r.default.footer,children:n})]})})})}exports.DialogFrame=R;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),q=require("react-dom"),F=require("@react-aria/focus"),n=require("@react-aria/overlays"),I=require("../../../hooks/useMergedRefs.cjs"),r=require("./Dialog.module.css.cjs"),P=require("../../icons/icons.cjs");function R({open:s,...t}){return!s||typeof document>"u"?null:q.createPortal(e.jsx(O,{...t}),document.body)}function O({children:s,className:t,description:i,dismissable:o=!0,footer:c,icon:u,onClose:f,ref:v,role:x="dialog",surfaceClassName:y,title:d,underlayClassName:b,...g}){const a=l.useRef(null),p=I.useMergedRefs(a,v),m=l.useId(),j=`${m}-title`,h=`${m}-description`,{overlayProps:N,underlayProps:D}=n.useOverlay({isOpen:!0,onClose:f,isDismissable:o,isKeyboardDismissDisabled:!o},a);return n.usePreventScroll(),l.useEffect(()=>a.current?n.ariaHideOutside([a.current]):void 0,[]),e.jsx("div",{...D,className:b,children:e.jsx(F.FocusScope,{contain:!0,restoreFocus:!0,autoFocus:!0,children:e.jsxs("div",{...g,...N,ref:p,className:[y,t].filter(Boolean).join(" "),role:x,"aria-modal":"true","aria-labelledby":d?j:void 0,"aria-describedby":i?h:void 0,children:[d&&e.jsxs("header",{className:[r.default.header,s&&r.default.headerDivided].filter(Boolean).join(" "),children:[u&&e.jsx("span",{"aria-hidden":"true",className:r.default.icon,children:u}),e.jsxs("div",{className:r.default.heading,children:[e.jsx("h2",{className:r.default.title,id:j,children:d}),i&&e.jsx("p",{className:r.default.description,id:h,children:i})]}),o&&e.jsx("button",{className:r.default.close,type:"button","aria-label":"Fechar",onClick:f,children:e.jsx(P.IconClose,{size:20})})]}),s&&e.jsx("div",{className:r.default.body,children:s}),c&&e.jsx("div",{className:r.default.footer,children:c})]})})})}exports.DialogFrame=R;
2
2
  //# sourceMappingURL=DialogFrame.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialogFrame.cjs","sources":["../../../../src/components/overlays/Dialog/DialogFrame.tsx"],"sourcesContent":["import { useEffect, useId, useRef, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { ariaHideOutside, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { IconClose } from '../../icons';\nimport type { DialogProps } from './Dialog';\nimport styles from './Dialog.module.css';\n\nexport interface DialogFrameProps extends Omit<DialogProps, 'size'> {\n surfaceClassName: string;\n underlayClassName: string;\n}\n\n/** Mecanica modal do `Dialog` e do `Drawer`: portal, foco preso, rolagem travada, cabecalho, corpo e rodape. Interna. */\nexport function DialogFrame({ open, ...props }: DialogFrameProps) {\n // No servidor nao ha `document` para o portal; o modal nasce na hidratacao.\n if (!open || typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(<DialogFrameContent {...props} />, document.body);\n}\n\nfunction DialogFrameContent({\n children,\n className,\n description,\n dismissable = true,\n footer,\n icon,\n onClose,\n ref: refDoConsumidor,\n role = 'dialog',\n surfaceClassName,\n title,\n underlayClassName,\n ...props\n}: Omit<DialogFrameProps, 'open'>) {\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRefs(ref, refDoConsumidor);\n const generatedId = useId();\n const titleId = `${generatedId}-title`;\n const descriptionId = `${generatedId}-description`;\n\n const { overlayProps, underlayProps } = useOverlay(\n {\n isOpen: true,\n onClose,\n isDismissable: dismissable,\n isKeyboardDismissDisabled: !dismissable,\n },\n ref,\n );\n\n usePreventScroll();\n\n useEffect(() => (ref.current ? ariaHideOutside([ref.current]) : undefined), []);\n\n return (\n <div {...underlayProps} className={underlayClassName}>\n <FocusScope contain restoreFocus autoFocus>\n <div\n {...props}\n {...overlayProps}\n ref={mergedRef}\n className={[surfaceClassName, className].filter(Boolean).join(' ')}\n role={role}\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n >\n <header className={[styles.header, children && styles.headerDivided].filter(Boolean).join(' ')}>\n {icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {icon}\n </span>\n )}\n <div className={styles.heading}>\n <h2 className={styles.title} id={titleId}>{title}</h2>\n {description && <p className={styles.description} id={descriptionId}>{description}</p>}\n </div>\n {dismissable && (\n <button className={styles.close} type=\"button\" aria-label=\"Fechar\" onClick={onClose}>\n <IconClose size={20} />\n </button>\n )}\n </header>\n {children && <div className={styles.body}>{children}</div>}\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n </FocusScope>\n </div>\n );\n}\n"],"names":["DialogFrame","open","props","createPortal","jsx","DialogFrameContent","children","className","description","dismissable","footer","icon","onClose","refDoConsumidor","role","surfaceClassName","title","underlayClassName","ref","useRef","mergedRef","useMergedRefs","generatedId","useId","titleId","descriptionId","overlayProps","underlayProps","useOverlay","usePreventScroll","useEffect","ariaHideOutside","FocusScope","jsxs","styles","IconClose"],"mappings":"sVAeO,SAASA,EAAY,CAAE,KAAAC,EAAM,GAAGC,GAA2B,CAEhE,MAAI,CAACD,GAAQ,OAAO,SAAa,IACxB,KAGFE,EAAAA,aAAaC,EAAAA,IAACC,EAAA,CAAoB,GAAGH,EAAO,EAAI,SAAS,IAAI,CACtE,CAEA,SAASG,EAAmB,CAC1B,SAAAC,EACA,UAAAC,EACA,YAAAC,EACA,YAAAC,EAAc,GACd,OAAAC,EACA,KAAAC,EACA,QAAAC,EACA,IAAKC,EACL,KAAAC,EAAO,SACP,iBAAAC,EACA,MAAAC,EACA,kBAAAC,EACA,GAAGf,CACL,EAAmC,CACjC,MAAMgB,EAAMC,EAAAA,OAAuB,IAAI,EACjCC,EAAYC,EAAAA,cAAcH,EAAKL,CAAe,EAC9CS,EAAcC,EAAAA,MAAA,EACdC,EAAU,GAAGF,CAAW,SACxBG,EAAgB,GAAGH,CAAW,eAE9B,CAAE,aAAAI,EAAc,cAAAC,CAAA,EAAkBC,EAAAA,WACtC,CACE,OAAQ,GACR,QAAAhB,EACA,cAAeH,EACf,0BAA2B,CAACA,CAAA,EAE9BS,CAAA,EAGFW,OAAAA,mBAAA,EAEAC,YAAU,IAAOZ,EAAI,QAAUa,EAAAA,gBAAgB,CAACb,EAAI,OAAO,CAAC,EAAI,OAAY,EAAE,EAG5Ed,EAAAA,IAAC,MAAA,CAAK,GAAGuB,EAAe,UAAWV,EACjC,SAAAb,EAAAA,IAAC4B,EAAAA,WAAA,CAAW,QAAO,GAAC,aAAY,GAAC,UAAS,GACxC,SAAAC,EAAAA,KAAC,MAAA,CACE,GAAG/B,EACH,GAAGwB,EACJ,IAAKN,EACL,UAAW,CAACL,EAAkBR,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACjE,KAAAO,EACA,aAAW,OACX,kBAAiBU,EACjB,mBAAkBhB,EAAciB,EAAgB,OAEhD,SAAA,CAAAQ,EAAAA,KAAC,SAAA,CAAO,UAAW,CAACC,EAAAA,QAAO,OAAQ5B,GAAY4B,EAAAA,QAAO,aAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC1F,SAAA,CAAAvB,SACE,OAAA,CAAK,cAAY,OAAO,UAAWuB,UAAO,KACxC,SAAAvB,CAAA,CACH,EAEFsB,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,QACrB,SAAA,CAAA9B,MAAC,MAAG,UAAW8B,EAAAA,QAAO,MAAO,GAAIV,EAAU,SAAAR,EAAM,EAChDR,SAAgB,IAAA,CAAE,UAAW0B,EAAAA,QAAO,YAAa,GAAIT,EAAgB,SAAAjB,CAAA,CAAY,CAAA,EACpF,EACCC,GACCL,EAAAA,IAAC,SAAA,CAAO,UAAW8B,EAAAA,QAAO,MAAO,KAAK,SAAS,aAAW,SAAS,QAAStB,EAC1E,SAAAR,EAAAA,IAAC+B,EAAAA,UAAA,CAAU,KAAM,GAAI,CAAA,CACvB,CAAA,EAEJ,EACC7B,GAAYF,EAAAA,IAAC,MAAA,CAAI,UAAW8B,UAAO,KAAO,SAAA5B,EAAS,EACnDI,GAAUN,EAAAA,IAAC,MAAA,CAAI,UAAW8B,EAAAA,QAAO,OAAS,SAAAxB,CAAA,CAAO,CAAA,CAAA,CAAA,EAEtD,CAAA,CACF,CAEJ"}
1
+ {"version":3,"file":"DialogFrame.cjs","sources":["../../../../src/components/overlays/Dialog/DialogFrame.tsx"],"sourcesContent":["import { useEffect, useId, useRef, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { ariaHideOutside, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { IconClose } from '../../icons';\nimport type { 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":"sVAoBO,SAASA,EAAY,CAAE,KAAAC,EAAM,GAAGC,GAA2B,CAEhE,MAAI,CAACD,GAAQ,OAAO,SAAa,IACxB,KAGFE,EAAAA,aAAaC,EAAAA,IAACC,EAAA,CAAoB,GAAGH,EAAO,EAAI,SAAS,IAAI,CACtE,CAEA,SAASG,EAAmB,CAC1B,SAAAC,EACA,UAAAC,EACA,YAAAC,EACA,YAAAC,EAAc,GACd,OAAAC,EACA,KAAAC,EACA,QAAAC,EACA,IAAKC,EACL,KAAAC,EAAO,SACP,iBAAAC,EACA,MAAAC,EACA,kBAAAC,EACA,GAAGf,CACL,EAAmC,CACjC,MAAMgB,EAAMC,EAAAA,OAAuB,IAAI,EACjCC,EAAYC,EAAAA,cAAcH,EAAKL,CAAe,EAC9CS,EAAcC,EAAAA,MAAA,EACdC,EAAU,GAAGF,CAAW,SACxBG,EAAgB,GAAGH,CAAW,eAE9B,CAAE,aAAAI,EAAc,cAAAC,CAAA,EAAkBC,EAAAA,WACtC,CACE,OAAQ,GACR,QAAAhB,EACA,cAAeH,EACf,0BAA2B,CAACA,CAAA,EAE9BS,CAAA,EAGFW,OAAAA,mBAAA,EAEAC,YAAU,IAAOZ,EAAI,QAAUa,EAAAA,gBAAgB,CAACb,EAAI,OAAO,CAAC,EAAI,OAAY,EAAE,EAG5Ed,EAAAA,IAAC,MAAA,CAAK,GAAGuB,EAAe,UAAWV,EACjC,SAAAb,EAAAA,IAAC4B,EAAAA,WAAA,CAAW,QAAO,GAAC,aAAY,GAAC,UAAS,GACxC,SAAAC,EAAAA,KAAC,MAAA,CACE,GAAG/B,EACH,GAAGwB,EACJ,IAAKN,EACL,UAAW,CAACL,EAAkBR,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACjE,KAAAO,EACA,aAAW,OACX,kBAAiBE,EAAQQ,EAAU,OACnC,mBAAkBhB,EAAciB,EAAgB,OAE/C,SAAA,CAAAT,GACCiB,EAAAA,KAAC,SAAA,CAAO,UAAW,CAACC,EAAAA,QAAO,OAAQ5B,GAAY4B,EAAAA,QAAO,aAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC1F,SAAA,CAAAvB,SACE,OAAA,CAAK,cAAY,OAAO,UAAWuB,UAAO,KACxC,SAAAvB,CAAA,CACH,EAEFsB,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,QACrB,SAAA,CAAA9B,MAAC,MAAG,UAAW8B,EAAAA,QAAO,MAAO,GAAIV,EAAU,SAAAR,EAAM,EAChDR,SAAgB,IAAA,CAAE,UAAW0B,EAAAA,QAAO,YAAa,GAAIT,EAAgB,SAAAjB,CAAA,CAAY,CAAA,EACpF,EACCC,GACCL,EAAAA,IAAC,SAAA,CAAO,UAAW8B,EAAAA,QAAO,MAAO,KAAK,SAAS,aAAW,SAAS,QAAStB,EAC1E,SAAAR,EAAAA,IAAC+B,EAAAA,UAAA,CAAU,KAAM,GAAI,CAAA,CACvB,CAAA,EAEJ,EAED7B,GAAYF,EAAAA,IAAC,MAAA,CAAI,UAAW8B,UAAO,KAAO,SAAA5B,EAAS,EACnDI,GAAUN,EAAAA,IAAC,MAAA,CAAI,UAAW8B,EAAAA,QAAO,OAAS,SAAAxB,CAAA,CAAO,CAAA,CAAA,CAAA,EAEtD,CAAA,CACF,CAEJ"}
@@ -6,55 +6,55 @@ import { useOverlay as R, usePreventScroll as B, ariaHideOutside as C } from "@r
6
6
  import { useMergedRefs as S } from "../../../hooks/useMergedRefs.js";
7
7
  import r from "./Dialog.module.css.js";
8
8
  import { IconClose as $ } from "../../icons/icons.js";
9
- function G({ open: i, ...t }) {
10
- return !i || typeof document > "u" ? null : x(/* @__PURE__ */ e(k, { ...t }), document.body);
9
+ function G({ open: o, ...a }) {
10
+ return !o || typeof document > "u" ? null : x(/* @__PURE__ */ e(k, { ...a }), document.body);
11
11
  }
12
12
  function k({
13
- children: i,
14
- className: t,
15
- description: a,
16
- dismissable: s = !0,
17
- footer: d,
18
- icon: l,
19
- onClose: c,
20
- ref: p,
21
- role: h = "dialog",
22
- surfaceClassName: v,
23
- title: y,
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
24
  underlayClassName: b,
25
25
  ...N
26
26
  }) {
27
- const o = I(null), g = S(o, p), u = j(), m = `${u}-title`, f = `${u}-description`, { overlayProps: D, underlayProps: F } = R(
27
+ const i = I(null), g = S(i, h), m = j(), f = `${m}-title`, p = `${m}-description`, { overlayProps: D, underlayProps: F } = R(
28
28
  {
29
29
  isOpen: !0,
30
- onClose: c,
31
- isDismissable: s,
32
- isKeyboardDismissDisabled: !s
30
+ onClose: u,
31
+ isDismissable: t,
32
+ isKeyboardDismissDisabled: !t
33
33
  },
34
- o
34
+ i
35
35
  );
36
- return B(), P(() => o.current ? C([o.current]) : void 0, []), /* @__PURE__ */ e("div", { ...F, className: b, children: /* @__PURE__ */ e(O, { contain: !0, restoreFocus: !0, autoFocus: !0, children: /* @__PURE__ */ n(
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
37
  "div",
38
38
  {
39
39
  ...N,
40
40
  ...D,
41
41
  ref: g,
42
- className: [v, t].filter(Boolean).join(" "),
43
- role: h,
42
+ className: [y, a].filter(Boolean).join(" "),
43
+ role: v,
44
44
  "aria-modal": "true",
45
- "aria-labelledby": m,
46
- "aria-describedby": a ? f : void 0,
45
+ "aria-labelledby": d ? f : void 0,
46
+ "aria-describedby": s ? p : void 0,
47
47
  children: [
48
- /* @__PURE__ */ n("header", { className: [r.header, i && r.headerDivided].filter(Boolean).join(" "), children: [
49
- l && /* @__PURE__ */ e("span", { "aria-hidden": "true", className: r.icon, children: l }),
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
50
  /* @__PURE__ */ n("div", { className: r.heading, children: [
51
- /* @__PURE__ */ e("h2", { className: r.title, id: m, children: y }),
52
- a && /* @__PURE__ */ e("p", { className: r.description, id: f, children: a })
51
+ /* @__PURE__ */ e("h2", { className: r.title, id: f, children: d }),
52
+ s && /* @__PURE__ */ e("p", { className: r.description, id: p, children: s })
53
53
  ] }),
54
- s && /* @__PURE__ */ e("button", { className: r.close, type: "button", "aria-label": "Fechar", onClick: c, children: /* @__PURE__ */ e($, { size: 20 }) })
54
+ t && /* @__PURE__ */ e("button", { className: r.close, type: "button", "aria-label": "Fechar", onClick: u, children: /* @__PURE__ */ e($, { size: 20 }) })
55
55
  ] }),
56
- i && /* @__PURE__ */ e("div", { className: r.body, children: i }),
57
- d && /* @__PURE__ */ e("div", { className: r.footer, children: d })
56
+ o && /* @__PURE__ */ e("div", { className: r.body, children: o }),
57
+ l && /* @__PURE__ */ e("div", { className: r.footer, children: l })
58
58
  ]
59
59
  }
60
60
  ) }) });
@@ -1 +1 @@
1
- {"version":3,"file":"DialogFrame.js","sources":["../../../../src/components/overlays/Dialog/DialogFrame.tsx"],"sourcesContent":["import { useEffect, useId, useRef, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { ariaHideOutside, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { IconClose } from '../../icons';\nimport type { DialogProps } from './Dialog';\nimport styles from './Dialog.module.css';\n\nexport interface DialogFrameProps extends Omit<DialogProps, 'size'> {\n surfaceClassName: string;\n underlayClassName: string;\n}\n\n/** Mecanica modal do `Dialog` e do `Drawer`: portal, foco preso, rolagem travada, cabecalho, corpo e rodape. Interna. */\nexport function DialogFrame({ open, ...props }: DialogFrameProps) {\n // No servidor nao ha `document` para o portal; o modal nasce na hidratacao.\n if (!open || typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(<DialogFrameContent {...props} />, document.body);\n}\n\nfunction DialogFrameContent({\n children,\n className,\n description,\n dismissable = true,\n footer,\n icon,\n onClose,\n ref: refDoConsumidor,\n role = 'dialog',\n surfaceClassName,\n title,\n underlayClassName,\n ...props\n}: Omit<DialogFrameProps, 'open'>) {\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRefs(ref, refDoConsumidor);\n const generatedId = useId();\n const titleId = `${generatedId}-title`;\n const descriptionId = `${generatedId}-description`;\n\n const { overlayProps, underlayProps } = useOverlay(\n {\n isOpen: true,\n onClose,\n isDismissable: dismissable,\n isKeyboardDismissDisabled: !dismissable,\n },\n ref,\n );\n\n usePreventScroll();\n\n useEffect(() => (ref.current ? ariaHideOutside([ref.current]) : undefined), []);\n\n return (\n <div {...underlayProps} className={underlayClassName}>\n <FocusScope contain restoreFocus autoFocus>\n <div\n {...props}\n {...overlayProps}\n ref={mergedRef}\n className={[surfaceClassName, className].filter(Boolean).join(' ')}\n role={role}\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n >\n <header className={[styles.header, children && styles.headerDivided].filter(Boolean).join(' ')}>\n {icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {icon}\n </span>\n )}\n <div className={styles.heading}>\n <h2 className={styles.title} id={titleId}>{title}</h2>\n {description && <p className={styles.description} id={descriptionId}>{description}</p>}\n </div>\n {dismissable && (\n <button className={styles.close} type=\"button\" aria-label=\"Fechar\" onClick={onClose}>\n <IconClose size={20} />\n </button>\n )}\n </header>\n {children && <div className={styles.body}>{children}</div>}\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n </FocusScope>\n </div>\n );\n}\n"],"names":["DialogFrame","open","props","createPortal","jsx","DialogFrameContent","children","className","description","dismissable","footer","icon","onClose","refDoConsumidor","role","surfaceClassName","title","underlayClassName","ref","useRef","mergedRef","useMergedRefs","generatedId","useId","titleId","descriptionId","overlayProps","underlayProps","useOverlay","usePreventScroll","useEffect","ariaHideOutside","FocusScope","jsxs","styles","IconClose"],"mappings":";;;;;;;;AAeO,SAASA,EAAY,EAAE,MAAAC,GAAM,GAAGC,KAA2B;AAEhE,SAAI,CAACD,KAAQ,OAAO,WAAa,MACxB,OAGFE,EAAa,gBAAAC,EAACC,GAAA,EAAoB,GAAGH,GAAO,GAAI,SAAS,IAAI;AACtE;AAEA,SAASG,EAAmB;AAAA,EAC1B,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,KAAKC;AAAA,EACL,MAAAC,IAAO;AAAA,EACP,kBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,GAAGf;AACL,GAAmC;AACjC,QAAMgB,IAAMC,EAAuB,IAAI,GACjCC,IAAYC,EAAcH,GAAKL,CAAe,GAC9CS,IAAcC,EAAA,GACdC,IAAU,GAAGF,CAAW,UACxBG,IAAgB,GAAGH,CAAW,gBAE9B,EAAE,cAAAI,GAAc,eAAAC,EAAA,IAAkBC;AAAA,IACtC;AAAA,MACE,QAAQ;AAAA,MACR,SAAAhB;AAAA,MACA,eAAeH;AAAA,MACf,2BAA2B,CAACA;AAAA,IAAA;AAAA,IAE9BS;AAAA,EAAA;AAGF,SAAAW,EAAA,GAEAC,EAAU,MAAOZ,EAAI,UAAUa,EAAgB,CAACb,EAAI,OAAO,CAAC,IAAI,QAAY,EAAE,GAG5E,gBAAAd,EAAC,OAAA,EAAK,GAAGuB,GAAe,WAAWV,GACjC,UAAA,gBAAAb,EAAC4B,GAAA,EAAW,SAAO,IAAC,cAAY,IAAC,WAAS,IACxC,UAAA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG/B;AAAA,MACH,GAAGwB;AAAA,MACJ,KAAKN;AAAA,MACL,WAAW,CAACL,GAAkBR,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MACjE,MAAAO;AAAA,MACA,cAAW;AAAA,MACX,mBAAiBU;AAAA,MACjB,oBAAkBhB,IAAciB,IAAgB;AAAA,MAEhD,UAAA;AAAA,QAAA,gBAAAQ,EAAC,UAAA,EAAO,WAAW,CAACC,EAAO,QAAQ5B,KAAY4B,EAAO,aAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC1F,UAAA;AAAA,UAAAvB,uBACE,QAAA,EAAK,eAAY,QAAO,WAAWuB,EAAO,MACxC,UAAAvB,EAAA,CACH;AAAA,UAEF,gBAAAsB,EAAC,OAAA,EAAI,WAAWC,EAAO,SACrB,UAAA;AAAA,YAAA,gBAAA9B,EAAC,QAAG,WAAW8B,EAAO,OAAO,IAAIV,GAAU,UAAAR,GAAM;AAAA,YAChDR,uBAAgB,KAAA,EAAE,WAAW0B,EAAO,aAAa,IAAIT,GAAgB,UAAAjB,EAAA,CAAY;AAAA,UAAA,GACpF;AAAA,UACCC,KACC,gBAAAL,EAAC,UAAA,EAAO,WAAW8B,EAAO,OAAO,MAAK,UAAS,cAAW,UAAS,SAAStB,GAC1E,UAAA,gBAAAR,EAAC+B,GAAA,EAAU,MAAM,IAAI,EAAA,CACvB;AAAA,QAAA,GAEJ;AAAA,QACC7B,KAAY,gBAAAF,EAAC,OAAA,EAAI,WAAW8B,EAAO,MAAO,UAAA5B,GAAS;AAAA,QACnDI,KAAU,gBAAAN,EAAC,OAAA,EAAI,WAAW8B,EAAO,QAAS,UAAAxB,EAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEtD,EAAA,CACF;AAEJ;"}
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;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.cjs","sources":["../../../../src/components/overlays/Drawer/Drawer.tsx"],"sourcesContent":["import type { DialogProps } from '../Dialog';\nimport { DialogFrame } from '../Dialog/DialogFrame';\nimport styles from './Drawer.module.css';\n\nexport type DrawerSide = 'left' | 'right';\nexport type DrawerSize = 'sm' | 'md' | 'lg';\n\nexport interface DrawerProps extends Omit<DialogProps, 'icon' | 'role' | 'size'> {\n side?: DrawerSide;\n size?: DrawerSize;\n}\n\n/** Painel modal preso a lateral da tela, com a mesma mecanica do `Dialog`: foco preso, Esc fecha, a pagina nao rola. */\nexport function Drawer({ side = 'right', size = 'md', ...props }: DrawerProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.drawer, styles[size]].join(' ')}\n underlayClassName={[styles.underlay, styles[side]].join(' ')}\n />\n );\n}\n"],"names":["Drawer","side","size","props","jsx","DialogFrame","styles"],"mappings":"iMAaO,SAASA,EAAO,CAAE,KAAAC,EAAO,QAAS,KAAAC,EAAO,KAAM,GAAGC,GAAsB,CAC7E,OACEC,EAAAA,IAACC,EAAAA,YAAA,CACE,GAAGF,EACJ,iBAAkB,CAACG,EAAAA,QAAO,OAAQA,EAAAA,QAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG,EACxD,kBAAmB,CAACI,EAAAA,QAAO,SAAUA,EAAAA,QAAOL,CAAI,CAAC,EAAE,KAAK,GAAG,CAAA,CAAA,CAGjE"}
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"}