@12-apps/ui 6.81.0 → 6.83.0

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 (621) hide show
  1. package/components-catalog.md +10 -3
  2. package/components-guidelines.md +38 -0
  3. package/dist/_internal/components/data-display/Alert/Alert.js +3 -3
  4. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +3 -3
  5. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.parts.js +2 -2
  6. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +6 -6
  7. package/dist/_internal/components/data-display/Avatar/Avatar.js +4 -4
  8. package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
  9. package/dist/_internal/components/data-display/CardKit/CardKebab.js +3 -3
  10. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +4 -4
  11. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +14 -14
  12. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +10 -10
  13. package/dist/_internal/components/data-display/Carousel/Carousel.js +4 -4
  14. package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
  15. package/dist/_internal/components/data-display/Chart/SpecChart.js +7 -7
  16. package/dist/_internal/components/data-display/Chart/chart-renderers.js +2 -2
  17. package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
  18. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  19. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +49 -49
  20. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +68 -68
  21. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +6 -6
  22. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +12 -12
  23. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +6 -6
  24. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +3 -3
  25. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +3 -3
  26. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
  27. package/dist/_internal/components/data-display/DataViews/base-list-card.js +6 -6
  28. package/dist/_internal/components/data-display/DataViews/data-views-card-body.js +4 -4
  29. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +7 -7
  30. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +4 -4
  31. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +5 -5
  32. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +3 -3
  33. package/dist/_internal/components/data-display/DataViews/data-views-export.js +3 -3
  34. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +14 -14
  35. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +10 -10
  36. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +3 -3
  37. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +43 -43
  38. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +18 -18
  39. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +13 -13
  40. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +16 -16
  41. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +4 -4
  42. package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +2 -2
  43. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +3 -3
  44. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +15 -15
  45. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +22 -22
  46. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +14 -14
  47. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +3 -3
  48. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
  49. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +7 -7
  50. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +3 -3
  51. package/dist/_internal/components/data-display/ErrorState/ErrorState.js +2 -2
  52. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +10 -10
  53. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +7 -7
  54. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +14 -14
  55. package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +2 -2
  56. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +2 -2
  57. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +2 -2
  58. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +6 -6
  59. package/dist/_internal/components/data-display/LoadingState/LoadingState.js +2 -2
  60. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
  61. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +6 -6
  62. package/dist/_internal/components/data-display/Progress/Progress.js +2 -2
  63. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +5 -5
  64. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +3 -3
  65. package/dist/_internal/components/data-display/Sheet/Sheet.js +6 -6
  66. package/dist/_internal/components/data-display/Sheet/Sheet.parts.js +2 -2
  67. package/dist/_internal/components/data-display/Stepper/Stepper.js +2 -2
  68. package/dist/_internal/components/data-display/Table/Table.js +5 -5
  69. package/dist/_internal/components/data-display/Table/TableParts.hooks.js +2 -2
  70. package/dist/_internal/components/data-display/Table/TableParts.js +2 -2
  71. package/dist/_internal/components/data-display/Timeline/Timeline.js +2 -2
  72. package/dist/_internal/components/data-display/index.js +71 -71
  73. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +5 -5
  74. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +4 -4
  75. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +8 -8
  76. package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +5 -5
  77. package/dist/_internal/components/feedback/Dialog/Dialog.js +3 -3
  78. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +6 -6
  79. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +14 -14
  80. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +8 -8
  81. package/dist/_internal/components/feedback/Sonner/Sonner.js +2 -2
  82. package/dist/_internal/components/feedback/StackedModal/StackedModal.js +7 -7
  83. package/dist/_internal/components/feedback/StackedModal/StackedModal.parts.js +2 -2
  84. package/dist/_internal/components/feedback/Toast/Toast.js +2 -2
  85. package/dist/_internal/components/feedback/index.js +31 -31
  86. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +6 -6
  87. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +4 -4
  88. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
  89. package/dist/_internal/components/form/Button/Button.js +2 -2
  90. package/dist/_internal/components/form/Calendar/Calendar.dates.js +3 -1
  91. package/dist/_internal/components/form/Calendar/Calendar.helpers.js +1 -1
  92. package/dist/_internal/components/form/Calendar/Calendar.hooks.js +4 -4
  93. package/dist/_internal/components/form/Calendar/Calendar.js +15 -8
  94. package/dist/_internal/components/form/Calendar/Calendar.keyboard.js +2 -2
  95. package/dist/_internal/components/form/Calendar/Calendar.picker.js +10 -0
  96. package/dist/_internal/components/form/Calendar/Calendar.picker.js.map +1 -0
  97. package/dist/_internal/components/form/Calendar/Calendar.selection.js +2 -2
  98. package/dist/_internal/components/form/Calendar/Calendar.views.js +27 -0
  99. package/dist/_internal/components/form/Calendar/Calendar.views.js.map +1 -0
  100. package/dist/_internal/components/form/Calendar/CalendarDayCell.js +3 -3
  101. package/dist/_internal/components/form/Calendar/CalendarMonth.js +10 -6
  102. package/dist/_internal/components/form/Calendar/CalendarPickerGrid.js +11 -0
  103. package/dist/_internal/components/form/Calendar/CalendarPickerGrid.js.map +1 -0
  104. package/dist/_internal/components/form/Calendar/CalendarSelectorsCaption.js +9 -0
  105. package/dist/_internal/components/form/Calendar/CalendarSelectorsCaption.js.map +1 -0
  106. package/dist/_internal/components/form/Calendar/CalendarSelectorsMonth.js +17 -0
  107. package/dist/_internal/components/form/Calendar/CalendarSelectorsMonth.js.map +1 -0
  108. package/dist/_internal/components/form/CepField/CepField.js +1 -1
  109. package/dist/_internal/components/form/Command/Command.hooks.js +2 -2
  110. package/dist/_internal/components/form/Command/Command.js +4 -4
  111. package/dist/_internal/components/form/Command/Command.parts.js +2 -2
  112. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.dates.js +2 -2
  113. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +5 -5
  114. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +21 -15
  115. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.quick.js +3 -3
  116. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +4 -4
  117. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +5 -5
  118. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.dom.js +2 -2
  119. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.format.js +3 -3
  120. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.hooks.js +4 -4
  121. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +5 -5
  122. package/dist/_internal/components/form/index.js +38 -33
  123. package/dist/_internal/components/form/total-form/Fields/CepField.js +2 -2
  124. package/dist/_internal/components/form/total-form/Fields/index.js +3 -3
  125. package/dist/_internal/components/form/total-form/FormErrorSnackbar.js +3 -3
  126. package/dist/_internal/components/form/total-form/SubmitButton.js +3 -3
  127. package/dist/_internal/components/index.js +160 -155
  128. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +2 -2
  129. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +3 -3
  130. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +2 -2
  131. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +2 -2
  132. package/dist/_internal/components/layout/Dashboard/Dashboard.js +2 -2
  133. package/dist/_internal/components/layout/Drawer/Drawer.js +2 -2
  134. package/dist/_internal/components/layout/SettingCard/SettingCard.js +7 -7
  135. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +3 -3
  136. package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +6 -6
  137. package/dist/_internal/components/layout/SettingCard/SettingGrid.js +4 -4
  138. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +8 -8
  139. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +7 -7
  140. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +8 -8
  141. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +2 -2
  142. package/dist/_internal/components/layout/TableFilter/TableFilter.js +2 -2
  143. package/dist/_internal/components/layout/index.js +20 -20
  144. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +9 -9
  145. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +2 -2
  146. package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.js +2 -2
  147. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +3 -3
  148. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +2 -2
  149. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +4 -4
  150. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +5 -5
  151. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +3 -3
  152. package/dist/_internal/components/navigation/index.js +18 -18
  153. package/dist/_internal/components/typography/Code/Code.js +2 -2
  154. package/dist/_internal/components/typography/index.js +2 -2
  155. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.js +2 -2
  156. package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.js +3 -3
  157. package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.parts.js +2 -2
  158. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +2 -2
  159. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +5 -5
  160. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +3 -3
  161. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +4 -4
  162. package/dist/_internal/components/utility/index.js +8 -8
  163. package/dist/_internal/en-US.labels.js +1 -1
  164. package/dist/_internal/pt-BR.labels.js +1 -1
  165. package/dist/_internal/social-login-button/social-login-button.js +4 -4
  166. package/dist/_internal/user-avatar/user-avatar.js +7 -7
  167. package/dist/charts.js +17 -17
  168. package/dist/{chunk-5JDY5W7O.js → chunk-2SBQ47RI.js} +3 -3
  169. package/dist/{chunk-Y3YZBB74.js → chunk-2ZMR3TZU.js} +2 -2
  170. package/dist/{chunk-RIDCGFGM.js → chunk-34FX3NRZ.js} +2 -2
  171. package/dist/{chunk-7H5BIZ33.js → chunk-37G7M2GJ.js} +4 -4
  172. package/dist/{chunk-VAGGIRLA.js → chunk-3RHU2Y2N.js} +3 -3
  173. package/dist/{chunk-QYX4567K.js → chunk-3S352ZSG.js} +2 -2
  174. package/dist/{chunk-L4FWEI2P.js → chunk-3V3Z4EML.js} +5 -5
  175. package/dist/{chunk-W3EVATBS.js → chunk-3YFDGFEK.js} +5 -5
  176. package/dist/{chunk-VJG43WKU.js → chunk-45AON4CS.js} +2 -2
  177. package/dist/{chunk-GX2LIB4T.js → chunk-4IG73U2X.js} +2 -2
  178. package/dist/{chunk-DD3VFDB2.js → chunk-4IVEBBF6.js} +3 -3
  179. package/dist/{chunk-DE2GWZ6X.js → chunk-4J62V5OE.js} +3 -3
  180. package/dist/{chunk-V65YK5DC.js → chunk-4QGMUHAU.js} +2 -2
  181. package/dist/{chunk-6IVR5HFI.js → chunk-4UCXJYOO.js} +6 -6
  182. package/dist/{chunk-UK3DSFMK.js → chunk-54F7QIV2.js} +2 -2
  183. package/dist/{chunk-ZDBG7QG2.js → chunk-54OJAOXC.js} +8 -8
  184. package/dist/{chunk-634Z7HGN.js → chunk-5CP6VW5H.js} +6 -6
  185. package/dist/{chunk-52UVUVYQ.js → chunk-5RPT32EL.js} +2 -2
  186. package/dist/chunk-66TCKXOB.js +102 -0
  187. package/dist/chunk-66TCKXOB.js.map +1 -0
  188. package/dist/{chunk-QADTI63U.js → chunk-6ATXOJVQ.js} +4 -4
  189. package/dist/{chunk-GMU5AA3R.js → chunk-6OYB3MRF.js} +5 -5
  190. package/dist/{chunk-OCLEKMBP.js → chunk-73BMQ3VC.js} +2 -2
  191. package/dist/{chunk-4NVEUJXK.js → chunk-76IHYINM.js} +5 -5
  192. package/dist/{chunk-OOCD2QR3.js → chunk-7QKFMMWK.js} +2 -2
  193. package/dist/{chunk-Z52W7FEU.js → chunk-7W5X3KQ2.js} +2 -2
  194. package/dist/{chunk-EOQ6EKTS.js → chunk-7XSCEHGA.js} +7 -7
  195. package/dist/{chunk-OTION43A.js → chunk-A5U7HEBI.js} +12 -12
  196. package/dist/{chunk-XF47LPCF.js → chunk-ABVIMFSD.js} +2 -2
  197. package/dist/{chunk-ABJOW7EK.js → chunk-ALOEOGQV.js} +4 -4
  198. package/dist/{chunk-HI7JPDD6.js → chunk-AMLHEKSV.js} +5 -5
  199. package/dist/{chunk-BLHSLB5D.js → chunk-APBIQH4G.js} +3 -3
  200. package/dist/{chunk-RMZQHJEP.js → chunk-ATJTGQYE.js} +2 -2
  201. package/dist/{chunk-URAX2JPM.js → chunk-B32XH7NK.js} +3 -3
  202. package/dist/{chunk-BX6CF2UG.js → chunk-BLNFOP2O.js} +4 -4
  203. package/dist/{chunk-NGXDOWUP.js → chunk-BNBWUXT3.js} +4 -4
  204. package/dist/{chunk-LHRAHDJF.js → chunk-BO6IMK5P.js} +3 -3
  205. package/dist/{chunk-7UDQJOZZ.js → chunk-C347NNZJ.js} +2 -2
  206. package/dist/{chunk-NWNHSASQ.js → chunk-CAOL4AIB.js} +2 -2
  207. package/dist/{chunk-TLZR6UPJ.js → chunk-COK65GX2.js} +2 -2
  208. package/dist/{chunk-BMVLTTTC.js → chunk-CY4XIZNW.js} +2 -2
  209. package/dist/{chunk-UF4JFRLE.js → chunk-D22FGMGU.js} +5 -5
  210. package/dist/{chunk-LDPN55AA.js → chunk-D3W5A4N6.js} +2 -2
  211. package/dist/{chunk-B67KUCWU.js → chunk-D5Y4PNC5.js} +2 -2
  212. package/dist/{chunk-775LIZXS.js → chunk-D72GD4XC.js} +5 -5
  213. package/dist/{chunk-TLVKJBPM.js → chunk-DAFFZED3.js} +6 -6
  214. package/dist/{chunk-BLZDSCIZ.js → chunk-DYHOBKPU.js} +6 -6
  215. package/dist/{chunk-FB4GLQQO.js → chunk-E3E4L7MH.js} +7 -7
  216. package/dist/{chunk-HWKBCLKD.js → chunk-E5OBAS3U.js} +2 -2
  217. package/dist/{chunk-WWIYYXY3.js → chunk-E72INDBL.js} +2 -2
  218. package/dist/{chunk-THD3N4BJ.js → chunk-EBEMNKTK.js} +19 -3
  219. package/dist/chunk-EBEMNKTK.js.map +1 -0
  220. package/dist/{chunk-UYNJ3FYE.js → chunk-EOIRU62W.js} +3 -3
  221. package/dist/{chunk-G3SWMBZS.js → chunk-EWFBDAB7.js} +2 -2
  222. package/dist/{chunk-NSS3X7FK.js → chunk-EYFDIUVR.js} +2 -2
  223. package/dist/{chunk-UCQRJTCI.js → chunk-GANJRIT3.js} +2 -2
  224. package/dist/{chunk-SMANO5OD.js → chunk-GJOU26UW.js} +2 -2
  225. package/dist/{chunk-H3NXDKFH.js → chunk-GM7BG3SD.js} +2 -2
  226. package/dist/chunk-GVSRBFP3.js +118 -0
  227. package/dist/chunk-GVSRBFP3.js.map +1 -0
  228. package/dist/{chunk-SM2O6D5F.js → chunk-GYFKIPR2.js} +2 -2
  229. package/dist/{chunk-4PREA2R5.js → chunk-HBH7V3IP.js} +2 -2
  230. package/dist/{chunk-LUNN5GTB.js → chunk-HF2WLLGH.js} +2 -2
  231. package/dist/{chunk-U67CX4FL.js → chunk-HKQQ2NED.js} +2 -2
  232. package/dist/{chunk-JVOEVTCZ.js → chunk-HQCZT6TO.js} +5 -5
  233. package/dist/{chunk-SUALMVL7.js → chunk-I4K5JMS4.js} +4 -2
  234. package/dist/chunk-I4K5JMS4.js.map +1 -0
  235. package/dist/{chunk-C7LHIDVB.js → chunk-ICKR3QTG.js} +3 -3
  236. package/dist/{chunk-3B7EJIG7.js → chunk-IMYKJTVX.js} +2 -2
  237. package/dist/{chunk-J7CIRTWQ.js → chunk-J34VGMA5.js} +3 -3
  238. package/dist/chunk-J6LIZXSF.js +124 -0
  239. package/dist/chunk-J6LIZXSF.js.map +1 -0
  240. package/dist/{chunk-DWLSYFQW.js → chunk-JK3QB7MO.js} +3 -3
  241. package/dist/{chunk-6B7VZFAO.js → chunk-JMDT3GQ3.js} +3 -3
  242. package/dist/{chunk-E2Y7G4MP.js → chunk-JV2JIUDT.js} +2 -2
  243. package/dist/{chunk-BTDY2NYV.js → chunk-JXK53XJW.js} +11 -11
  244. package/dist/{chunk-K3PMMW23.js → chunk-K6VEN5VN.js} +4 -4
  245. package/dist/{chunk-YOQAK2RN.js → chunk-KES3HNSU.js} +2 -2
  246. package/dist/{chunk-BFBCTF2Y.js → chunk-KF3Q3C3P.js} +2 -2
  247. package/dist/{chunk-MKRJUT5O.js → chunk-KSJBFT4G.js} +6 -6
  248. package/dist/{chunk-AISCD6W6.js → chunk-L5KPBMMF.js} +2 -2
  249. package/dist/{chunk-ZT73ACK3.js → chunk-LCGK22QQ.js} +7 -7
  250. package/dist/{chunk-B2RNNJRO.js → chunk-LNIK7FJO.js} +2 -2
  251. package/dist/{chunk-B25SHVWP.js → chunk-LODYTVOO.js} +4 -4
  252. package/dist/{chunk-763AHWKU.js → chunk-LOHQLARB.js} +2 -2
  253. package/dist/{chunk-7HYLXERK.js → chunk-LRIPJ2D5.js} +4 -4
  254. package/dist/{chunk-F5SUBK42.js → chunk-LXIPBHNJ.js} +6 -6
  255. package/dist/{chunk-CFDYQSN6.js → chunk-LZ5PGB7U.js} +7 -7
  256. package/dist/{chunk-FFQ4NOJT.js → chunk-LZOCNAUA.js} +2 -2
  257. package/dist/{chunk-BLVFHVDM.js → chunk-MLGAGZJ3.js} +19 -19
  258. package/dist/{chunk-QVEJGFRP.js → chunk-MNNIOQTQ.js} +3 -3
  259. package/dist/{chunk-AFSXC5FU.js → chunk-MSJP2AEN.js} +2 -2
  260. package/dist/{chunk-KSOIFQJ6.js → chunk-MT74NRLY.js} +7 -7
  261. package/dist/{chunk-PAKLYZ6G.js → chunk-N557OEZR.js} +4 -4
  262. package/dist/{chunk-DKRMOIX2.js → chunk-NASLJO2R.js} +2 -2
  263. package/dist/{chunk-QVDEGBME.js → chunk-NQCTANF3.js} +7 -7
  264. package/dist/{chunk-AOBQ3KYY.js → chunk-NZDIO5UG.js} +4 -4
  265. package/dist/{chunk-5USHYSCO.js → chunk-OKDAHCYE.js} +4 -4
  266. package/dist/{chunk-ZIHSCBMN.js → chunk-OUI5IPS6.js} +10 -10
  267. package/dist/{chunk-PGBIUO2A.js → chunk-PEMXXFXL.js} +3 -3
  268. package/dist/{chunk-FCCOUOP7.js → chunk-PEVBSNCD.js} +2 -2
  269. package/dist/{chunk-UHQZ5XPW.js → chunk-POUNFTG3.js} +24 -11
  270. package/dist/chunk-POUNFTG3.js.map +1 -0
  271. package/dist/{chunk-HTGK7QCX.js → chunk-Q7QQXNL7.js} +2 -2
  272. package/dist/{chunk-A7LBWRRW.js → chunk-QCYQL3ST.js} +2 -2
  273. package/dist/{chunk-XDDKRACZ.js → chunk-QHFAKEZZ.js} +3 -3
  274. package/dist/{chunk-6EERXU6R.js → chunk-QTLM2YY2.js} +2 -2
  275. package/dist/{chunk-TERT6TIS.js → chunk-QWOI5BZV.js} +9 -4
  276. package/dist/chunk-QWOI5BZV.js.map +1 -0
  277. package/dist/{chunk-QKLSHNOH.js → chunk-R26WP22N.js} +2 -2
  278. package/dist/{chunk-7S3NG2AO.js → chunk-RB3R6BJL.js} +7 -7
  279. package/dist/{chunk-SXNGH56D.js → chunk-RBW5QQXW.js} +12 -12
  280. package/dist/{chunk-PJNIJIE6.js → chunk-RCTHCXS6.js} +2 -2
  281. package/dist/{chunk-DT22MDC3.js → chunk-RDRXTH47.js} +7 -7
  282. package/dist/{chunk-JMUZ5JZA.js → chunk-RWCQ6TEM.js} +2 -2
  283. package/dist/{chunk-TIM4PXWN.js → chunk-SB2SEGR6.js} +3 -3
  284. package/dist/chunk-SUCVFEPT.js +138 -0
  285. package/dist/chunk-SUCVFEPT.js.map +1 -0
  286. package/dist/{chunk-FRAVVI4A.js → chunk-SUTOAW7I.js} +2 -2
  287. package/dist/{chunk-RQ3IS5NQ.js → chunk-SYERREN5.js} +6 -6
  288. package/dist/{chunk-TAR5LSGT.js → chunk-T77OVQEO.js} +2 -2
  289. package/dist/{chunk-VRKNVZZQ.js → chunk-TJUWSQYQ.js} +9 -1
  290. package/dist/{chunk-VRKNVZZQ.js.map → chunk-TJUWSQYQ.js.map} +1 -1
  291. package/dist/{chunk-V6DMNSW6.js → chunk-TPAMLIN7.js} +3 -3
  292. package/dist/{chunk-ISW5K72V.js → chunk-TPMT3J32.js} +16 -8
  293. package/dist/chunk-TPMT3J32.js.map +1 -0
  294. package/dist/{chunk-7DODMQRK.js → chunk-UBVKMM3V.js} +2 -2
  295. package/dist/{chunk-5463SZOH.js → chunk-UERGWYGY.js} +2 -2
  296. package/dist/{chunk-G6ET2DRL.js → chunk-UJACXYC2.js} +3 -3
  297. package/dist/{chunk-SYZVXWEQ.js → chunk-UQ5GJPVZ.js} +3 -3
  298. package/dist/{chunk-KW2KCPZF.js → chunk-UQ6SAIX7.js} +4 -4
  299. package/dist/{chunk-GHTVBYFA.js → chunk-UWVVKUCG.js} +4 -4
  300. package/dist/{chunk-EXKK73UN.js → chunk-UYKIUUWP.js} +2 -2
  301. package/dist/{chunk-HWUFOII2.js → chunk-VQ6V5TO7.js} +2 -2
  302. package/dist/{chunk-OT4HIG7S.js → chunk-VUBFCHXL.js} +4 -4
  303. package/dist/{chunk-A4B27HYU.js → chunk-WPFVQVQC.js} +4 -4
  304. package/dist/chunk-WQEGPSGD.js +61 -0
  305. package/dist/chunk-WQEGPSGD.js.map +1 -0
  306. package/dist/{chunk-DB7OJM6X.js → chunk-WWB43LWU.js} +2 -2
  307. package/dist/{chunk-HFZE2PGM.js → chunk-X4J576GR.js} +2 -2
  308. package/dist/{chunk-NF5TATKP.js → chunk-XATRYJ4Q.js} +5 -5
  309. package/dist/{chunk-6KCJNERH.js → chunk-XCUHGPPZ.js} +2 -2
  310. package/dist/{chunk-3LQLLL2J.js → chunk-XE7QBHXN.js} +2 -2
  311. package/dist/{chunk-YMKSPW4T.js → chunk-XKPV52CG.js} +3 -3
  312. package/dist/{chunk-QCNUMOTL.js → chunk-XNLJ2Z7T.js} +7 -3
  313. package/dist/chunk-XNLJ2Z7T.js.map +1 -0
  314. package/dist/{native/chunks/chunk-DUELD4HY.js → chunk-XOXXG7Q5.js} +9 -1
  315. package/dist/{chunk-O2RXSXSF.js.map → chunk-XOXXG7Q5.js.map} +1 -1
  316. package/dist/{chunk-I4NDZFTB.js → chunk-XXUTD74L.js} +3 -3
  317. package/dist/{chunk-PF2A2IM7.js → chunk-YGLAGY74.js} +2 -2
  318. package/dist/{chunk-4JV46KXS.js → chunk-YHKHHSZH.js} +4 -4
  319. package/dist/{chunk-6S7CFH6V.js → chunk-YJPBNIEM.js} +3 -3
  320. package/dist/{chunk-DWCH6GH5.js → chunk-YQIT3ET7.js} +2 -2
  321. package/dist/{chunk-G3JFESKD.js → chunk-Z5WUSI47.js} +6 -6
  322. package/dist/{chunk-SCQARHMU.js → chunk-ZANWHTXH.js} +2 -2
  323. package/dist/{chunk-A3Z7ZXLM.js → chunk-ZGAOA7LN.js} +8 -8
  324. package/dist/{chunk-72GJRV5J.js → chunk-ZNJGEDCE.js} +2 -2
  325. package/dist/{chunk-TGZ6GPYQ.js → chunk-ZYZPSBNQ.js} +3 -3
  326. package/dist/chunk-ZZGG6AUD.js +54 -0
  327. package/dist/chunk-ZZGG6AUD.js.map +1 -0
  328. package/dist/data-display/Alert.js +3 -3
  329. package/dist/data-display/AlertDialog.js +3 -3
  330. package/dist/data-display/AsyncStateContainer.js +6 -6
  331. package/dist/data-display/Avatar.js +4 -4
  332. package/dist/data-display/CardKit.js +21 -21
  333. package/dist/data-display/Carousel.js +4 -4
  334. package/dist/data-display/Chart.js +17 -17
  335. package/dist/data-display/DataGrid.js +2 -2
  336. package/dist/data-display/DataViews.js +86 -86
  337. package/dist/data-display/EmptyState.js +3 -3
  338. package/dist/data-display/ErrorState.js +2 -2
  339. package/dist/data-display/FleetMap.js +14 -14
  340. package/dist/data-display/InteractiveTooltip.js +2 -2
  341. package/dist/data-display/LazyImage.js +2 -2
  342. package/dist/data-display/Lightbox.js +6 -6
  343. package/dist/data-display/LoadingState.js +2 -2
  344. package/dist/data-display/MapPreview.js +6 -6
  345. package/dist/data-display/Progress.js +2 -2
  346. package/dist/data-display/SectionOnboarding.js +5 -5
  347. package/dist/data-display/Sheet.js +6 -6
  348. package/dist/data-display/Stepper.js +2 -2
  349. package/dist/data-display/Table.js +5 -5
  350. package/dist/data-display/Timeline.js +2 -2
  351. package/dist/en-US.js +1 -1
  352. package/dist/feedback/ConfirmAction.js +11 -11
  353. package/dist/feedback/Dialog.js +3 -3
  354. package/dist/feedback/NotificationStatusNotice.js +6 -6
  355. package/dist/feedback/SequenceResolver.js +14 -14
  356. package/dist/feedback/Sonner.js +2 -2
  357. package/dist/feedback/StackedModal.js +7 -7
  358. package/dist/feedback/Toast.js +2 -2
  359. package/dist/form/AddressAutocomplete.js +6 -6
  360. package/dist/form/Autocomplete.js +2 -2
  361. package/dist/form/Button.js +2 -2
  362. package/dist/form/Calendar.js +15 -8
  363. package/dist/form/CepField.js +1 -1
  364. package/dist/form/Command.js +4 -4
  365. package/dist/form/DateRangePicker.js +21 -15
  366. package/dist/form/RichTextEditor.js +5 -5
  367. package/dist/form/total-form.js +9 -9
  368. package/dist/layout/ContentToolbar.js +6 -6
  369. package/dist/layout/Dashboard.js +2 -2
  370. package/dist/layout/Drawer.js +2 -2
  371. package/dist/layout/SettingCard.js +11 -11
  372. package/dist/layout/SettingsLayout.js +2 -2
  373. package/dist/layout/TableFilter.js +2 -2
  374. package/dist/locales.js +2 -2
  375. package/dist/native/chunks/{chunk-7AVFQB6A.js → chunk-FXA5DLKR.js} +3 -3
  376. package/dist/native/chunks/{chunk-67CYDCHZ.js → chunk-IN3XZ7EK.js} +2 -2
  377. package/dist/{chunk-O2RXSXSF.js → native/chunks/chunk-QHW7JEPZ.js} +9 -1
  378. package/dist/native/chunks/{chunk-DUELD4HY.js.map → chunk-QHW7JEPZ.js.map} +1 -1
  379. package/dist/native/data-display/Avatar.js +1 -1
  380. package/dist/native/data-display/Badge.js +1 -1
  381. package/dist/native/data-display/Chip.js +1 -1
  382. package/dist/native/data-display/EmptyState.js +3 -3
  383. package/dist/native/data-display/ErrorState.js +2 -2
  384. package/dist/native/data-display/FleetMap.js +3 -3
  385. package/dist/native/data-display/LoadingState.js +1 -1
  386. package/dist/native/feedback/Dialog.js +1 -1
  387. package/dist/native/form/Button.js +2 -2
  388. package/dist/native/form/Checkbox.js +1 -1
  389. package/dist/native/form/Input.js +1 -1
  390. package/dist/native/form/Switch.js +1 -1
  391. package/dist/navigation/AppHeader.js +11 -11
  392. package/dist/navigation/Breadcrumbs.js +2 -2
  393. package/dist/navigation/NavigationMenu.js +3 -3
  394. package/dist/navigation/SectionNav.js +5 -5
  395. package/dist/pt-BR.js +1 -1
  396. package/dist/social-login-button.js +4 -4
  397. package/dist/types/components/form/Calendar/Calendar.d.ts.map +1 -1
  398. package/dist/types/components/form/Calendar/Calendar.dates.d.ts +11 -1
  399. package/dist/types/components/form/Calendar/Calendar.dates.d.ts.map +1 -1
  400. package/dist/types/components/form/Calendar/Calendar.helpers.d.ts.map +1 -1
  401. package/dist/types/components/form/Calendar/Calendar.hooks.d.ts +3 -0
  402. package/dist/types/components/form/Calendar/Calendar.hooks.d.ts.map +1 -1
  403. package/dist/types/components/form/Calendar/Calendar.picker.d.ts +29 -0
  404. package/dist/types/components/form/Calendar/Calendar.picker.d.ts.map +1 -0
  405. package/dist/types/components/form/Calendar/Calendar.types.d.ts +22 -1
  406. package/dist/types/components/form/Calendar/Calendar.types.d.ts.map +1 -1
  407. package/dist/types/components/form/Calendar/Calendar.views.d.ts +41 -0
  408. package/dist/types/components/form/Calendar/Calendar.views.d.ts.map +1 -0
  409. package/dist/types/components/form/Calendar/CalendarMonth.d.ts +17 -0
  410. package/dist/types/components/form/Calendar/CalendarMonth.d.ts.map +1 -1
  411. package/dist/types/components/form/Calendar/CalendarPickerGrid.d.ts +28 -0
  412. package/dist/types/components/form/Calendar/CalendarPickerGrid.d.ts.map +1 -0
  413. package/dist/types/components/form/Calendar/CalendarSelectorsCaption.d.ts +29 -0
  414. package/dist/types/components/form/Calendar/CalendarSelectorsCaption.d.ts.map +1 -0
  415. package/dist/types/components/form/Calendar/CalendarSelectorsMonth.d.ts +23 -0
  416. package/dist/types/components/form/Calendar/CalendarSelectorsMonth.d.ts.map +1 -0
  417. package/dist/types/components/form/Calendar/index.d.ts +1 -1
  418. package/dist/types/components/form/Calendar/index.d.ts.map +1 -1
  419. package/dist/types/components/form/CepField/CepField.d.ts +2 -1
  420. package/dist/types/components/form/CepField/CepField.d.ts.map +1 -1
  421. package/dist/types/components/form/CepField/CepField.types.d.ts +16 -0
  422. package/dist/types/components/form/CepField/CepField.types.d.ts.map +1 -1
  423. package/dist/types/components/form/total-form/Fields/CepField.d.ts +6 -1
  424. package/dist/types/components/form/total-form/Fields/CepField.d.ts.map +1 -1
  425. package/dist/types/copy/labels.d.ts +18 -0
  426. package/dist/types/copy/labels.d.ts.map +1 -1
  427. package/dist/types/en-US.labels.d.ts.map +1 -1
  428. package/dist/types/pt-BR.labels.d.ts.map +1 -1
  429. package/dist/types-native/copy/labels.d.ts +18 -0
  430. package/dist/types-native/copy/labels.d.ts.map +1 -1
  431. package/dist/types-native/en-US.labels.d.ts.map +1 -1
  432. package/dist/typography/Code.js +2 -2
  433. package/dist/user-avatar.js +7 -7
  434. package/dist/utility/AnimatedIcon.js +2 -2
  435. package/dist/utility/InfiniteScroll.js +3 -3
  436. package/dist/utility/WorkflowStep.js +5 -5
  437. package/package.json +1 -1
  438. package/src/components/data-display/AlertDialog/AlertDialog.md +1 -0
  439. package/src/components/data-display/Badge/Badge.md +1 -0
  440. package/src/components/data-display/Carousel/Carousel.md +6 -0
  441. package/src/components/data-display/Chip/chip.md +1 -0
  442. package/src/components/data-display/LazyImage/LazyImage.md +2 -0
  443. package/src/components/data-display/Stepper/Stepper.md +5 -0
  444. package/src/components/data-display/Table/Table.md +1 -0
  445. package/src/components/data-display/Timeline/Timeline.md +1 -0
  446. package/src/components/feedback/Dialog/Dialog.md +2 -0
  447. package/src/components/feedback/StackedModal/StackedModal.md +1 -0
  448. package/src/components/feedback/Toast/Toast.md +2 -0
  449. package/src/components/form/Button/Button.md +1 -0
  450. package/src/components/form/Calendar/Calendar.dates.ts +16 -1
  451. package/src/components/form/Calendar/Calendar.helpers.ts +4 -0
  452. package/src/components/form/Calendar/Calendar.hooks.ts +13 -3
  453. package/src/components/form/Calendar/Calendar.md +121 -0
  454. package/src/components/form/Calendar/Calendar.picker.ts +89 -0
  455. package/src/components/form/Calendar/Calendar.tsx +78 -30
  456. package/src/components/form/Calendar/Calendar.types.ts +25 -1
  457. package/src/components/form/Calendar/Calendar.views.ts +101 -0
  458. package/src/components/form/Calendar/CalendarMonth.tsx +30 -13
  459. package/src/components/form/Calendar/CalendarPickerGrid.tsx +139 -0
  460. package/src/components/form/Calendar/CalendarSelectorsCaption.tsx +163 -0
  461. package/src/components/form/Calendar/CalendarSelectorsMonth.tsx +137 -0
  462. package/src/components/form/Calendar/index.ts +1 -0
  463. package/src/components/form/CepField/CepField.md +22 -0
  464. package/src/components/form/CepField/CepField.tsx +31 -5
  465. package/src/components/form/CepField/CepField.types.ts +16 -0
  466. package/src/components/form/Checkbox/Checkbox.md +1 -0
  467. package/src/components/form/Input/Input.md +1 -0
  468. package/src/components/form/RichTextEditor/RichTextEditor.md +3 -2
  469. package/src/components/form/Switch/Switch.md +1 -0
  470. package/src/components/form/total-form/Fields/CepField.tsx +9 -0
  471. package/src/components/layout/ContentToolbar/ContentToolbar.md +12 -0
  472. package/src/components/layout/Dashboard/Dashboard.md +3 -0
  473. package/src/components/navigation/NavigationMenu/NavigationMenu.md +2 -0
  474. package/src/components/typography/Code/Code.md +10 -0
  475. package/src/components/utility/InfiniteScroll/InfiniteScroll.md +1 -0
  476. package/src/components/utility/WorkflowStep/WorkflowStep.md +1 -0
  477. package/src/copy/labels.ts +19 -0
  478. package/src/en-US.labels.ts +8 -0
  479. package/src/pt-BR.labels.ts +8 -0
  480. package/dist/chunk-ISW5K72V.js.map +0 -1
  481. package/dist/chunk-QCNUMOTL.js.map +0 -1
  482. package/dist/chunk-SUALMVL7.js.map +0 -1
  483. package/dist/chunk-TERT6TIS.js.map +0 -1
  484. package/dist/chunk-TGMMUKOF.js +0 -90
  485. package/dist/chunk-TGMMUKOF.js.map +0 -1
  486. package/dist/chunk-THD3N4BJ.js.map +0 -1
  487. package/dist/chunk-UHQZ5XPW.js.map +0 -1
  488. /package/dist/{chunk-5JDY5W7O.js.map → chunk-2SBQ47RI.js.map} +0 -0
  489. /package/dist/{chunk-Y3YZBB74.js.map → chunk-2ZMR3TZU.js.map} +0 -0
  490. /package/dist/{chunk-RIDCGFGM.js.map → chunk-34FX3NRZ.js.map} +0 -0
  491. /package/dist/{chunk-7H5BIZ33.js.map → chunk-37G7M2GJ.js.map} +0 -0
  492. /package/dist/{chunk-VAGGIRLA.js.map → chunk-3RHU2Y2N.js.map} +0 -0
  493. /package/dist/{chunk-QYX4567K.js.map → chunk-3S352ZSG.js.map} +0 -0
  494. /package/dist/{chunk-L4FWEI2P.js.map → chunk-3V3Z4EML.js.map} +0 -0
  495. /package/dist/{chunk-W3EVATBS.js.map → chunk-3YFDGFEK.js.map} +0 -0
  496. /package/dist/{chunk-VJG43WKU.js.map → chunk-45AON4CS.js.map} +0 -0
  497. /package/dist/{chunk-GX2LIB4T.js.map → chunk-4IG73U2X.js.map} +0 -0
  498. /package/dist/{chunk-DD3VFDB2.js.map → chunk-4IVEBBF6.js.map} +0 -0
  499. /package/dist/{chunk-DE2GWZ6X.js.map → chunk-4J62V5OE.js.map} +0 -0
  500. /package/dist/{chunk-V65YK5DC.js.map → chunk-4QGMUHAU.js.map} +0 -0
  501. /package/dist/{chunk-6IVR5HFI.js.map → chunk-4UCXJYOO.js.map} +0 -0
  502. /package/dist/{chunk-UK3DSFMK.js.map → chunk-54F7QIV2.js.map} +0 -0
  503. /package/dist/{chunk-ZDBG7QG2.js.map → chunk-54OJAOXC.js.map} +0 -0
  504. /package/dist/{chunk-634Z7HGN.js.map → chunk-5CP6VW5H.js.map} +0 -0
  505. /package/dist/{chunk-52UVUVYQ.js.map → chunk-5RPT32EL.js.map} +0 -0
  506. /package/dist/{chunk-QADTI63U.js.map → chunk-6ATXOJVQ.js.map} +0 -0
  507. /package/dist/{chunk-GMU5AA3R.js.map → chunk-6OYB3MRF.js.map} +0 -0
  508. /package/dist/{chunk-OCLEKMBP.js.map → chunk-73BMQ3VC.js.map} +0 -0
  509. /package/dist/{chunk-4NVEUJXK.js.map → chunk-76IHYINM.js.map} +0 -0
  510. /package/dist/{chunk-OOCD2QR3.js.map → chunk-7QKFMMWK.js.map} +0 -0
  511. /package/dist/{chunk-Z52W7FEU.js.map → chunk-7W5X3KQ2.js.map} +0 -0
  512. /package/dist/{chunk-EOQ6EKTS.js.map → chunk-7XSCEHGA.js.map} +0 -0
  513. /package/dist/{chunk-OTION43A.js.map → chunk-A5U7HEBI.js.map} +0 -0
  514. /package/dist/{chunk-XF47LPCF.js.map → chunk-ABVIMFSD.js.map} +0 -0
  515. /package/dist/{chunk-ABJOW7EK.js.map → chunk-ALOEOGQV.js.map} +0 -0
  516. /package/dist/{chunk-HI7JPDD6.js.map → chunk-AMLHEKSV.js.map} +0 -0
  517. /package/dist/{chunk-BLHSLB5D.js.map → chunk-APBIQH4G.js.map} +0 -0
  518. /package/dist/{chunk-RMZQHJEP.js.map → chunk-ATJTGQYE.js.map} +0 -0
  519. /package/dist/{chunk-URAX2JPM.js.map → chunk-B32XH7NK.js.map} +0 -0
  520. /package/dist/{chunk-BX6CF2UG.js.map → chunk-BLNFOP2O.js.map} +0 -0
  521. /package/dist/{chunk-NGXDOWUP.js.map → chunk-BNBWUXT3.js.map} +0 -0
  522. /package/dist/{chunk-LHRAHDJF.js.map → chunk-BO6IMK5P.js.map} +0 -0
  523. /package/dist/{chunk-7UDQJOZZ.js.map → chunk-C347NNZJ.js.map} +0 -0
  524. /package/dist/{chunk-NWNHSASQ.js.map → chunk-CAOL4AIB.js.map} +0 -0
  525. /package/dist/{chunk-TLZR6UPJ.js.map → chunk-COK65GX2.js.map} +0 -0
  526. /package/dist/{chunk-BMVLTTTC.js.map → chunk-CY4XIZNW.js.map} +0 -0
  527. /package/dist/{chunk-UF4JFRLE.js.map → chunk-D22FGMGU.js.map} +0 -0
  528. /package/dist/{chunk-LDPN55AA.js.map → chunk-D3W5A4N6.js.map} +0 -0
  529. /package/dist/{chunk-B67KUCWU.js.map → chunk-D5Y4PNC5.js.map} +0 -0
  530. /package/dist/{chunk-775LIZXS.js.map → chunk-D72GD4XC.js.map} +0 -0
  531. /package/dist/{chunk-TLVKJBPM.js.map → chunk-DAFFZED3.js.map} +0 -0
  532. /package/dist/{chunk-BLZDSCIZ.js.map → chunk-DYHOBKPU.js.map} +0 -0
  533. /package/dist/{chunk-FB4GLQQO.js.map → chunk-E3E4L7MH.js.map} +0 -0
  534. /package/dist/{chunk-HWKBCLKD.js.map → chunk-E5OBAS3U.js.map} +0 -0
  535. /package/dist/{chunk-WWIYYXY3.js.map → chunk-E72INDBL.js.map} +0 -0
  536. /package/dist/{chunk-UYNJ3FYE.js.map → chunk-EOIRU62W.js.map} +0 -0
  537. /package/dist/{chunk-G3SWMBZS.js.map → chunk-EWFBDAB7.js.map} +0 -0
  538. /package/dist/{chunk-NSS3X7FK.js.map → chunk-EYFDIUVR.js.map} +0 -0
  539. /package/dist/{chunk-UCQRJTCI.js.map → chunk-GANJRIT3.js.map} +0 -0
  540. /package/dist/{chunk-SMANO5OD.js.map → chunk-GJOU26UW.js.map} +0 -0
  541. /package/dist/{chunk-H3NXDKFH.js.map → chunk-GM7BG3SD.js.map} +0 -0
  542. /package/dist/{chunk-SM2O6D5F.js.map → chunk-GYFKIPR2.js.map} +0 -0
  543. /package/dist/{chunk-4PREA2R5.js.map → chunk-HBH7V3IP.js.map} +0 -0
  544. /package/dist/{chunk-LUNN5GTB.js.map → chunk-HF2WLLGH.js.map} +0 -0
  545. /package/dist/{chunk-U67CX4FL.js.map → chunk-HKQQ2NED.js.map} +0 -0
  546. /package/dist/{chunk-JVOEVTCZ.js.map → chunk-HQCZT6TO.js.map} +0 -0
  547. /package/dist/{chunk-C7LHIDVB.js.map → chunk-ICKR3QTG.js.map} +0 -0
  548. /package/dist/{chunk-3B7EJIG7.js.map → chunk-IMYKJTVX.js.map} +0 -0
  549. /package/dist/{chunk-J7CIRTWQ.js.map → chunk-J34VGMA5.js.map} +0 -0
  550. /package/dist/{chunk-DWLSYFQW.js.map → chunk-JK3QB7MO.js.map} +0 -0
  551. /package/dist/{chunk-6B7VZFAO.js.map → chunk-JMDT3GQ3.js.map} +0 -0
  552. /package/dist/{chunk-E2Y7G4MP.js.map → chunk-JV2JIUDT.js.map} +0 -0
  553. /package/dist/{chunk-BTDY2NYV.js.map → chunk-JXK53XJW.js.map} +0 -0
  554. /package/dist/{chunk-K3PMMW23.js.map → chunk-K6VEN5VN.js.map} +0 -0
  555. /package/dist/{chunk-YOQAK2RN.js.map → chunk-KES3HNSU.js.map} +0 -0
  556. /package/dist/{chunk-BFBCTF2Y.js.map → chunk-KF3Q3C3P.js.map} +0 -0
  557. /package/dist/{chunk-MKRJUT5O.js.map → chunk-KSJBFT4G.js.map} +0 -0
  558. /package/dist/{chunk-AISCD6W6.js.map → chunk-L5KPBMMF.js.map} +0 -0
  559. /package/dist/{chunk-ZT73ACK3.js.map → chunk-LCGK22QQ.js.map} +0 -0
  560. /package/dist/{chunk-B2RNNJRO.js.map → chunk-LNIK7FJO.js.map} +0 -0
  561. /package/dist/{chunk-B25SHVWP.js.map → chunk-LODYTVOO.js.map} +0 -0
  562. /package/dist/{chunk-763AHWKU.js.map → chunk-LOHQLARB.js.map} +0 -0
  563. /package/dist/{chunk-7HYLXERK.js.map → chunk-LRIPJ2D5.js.map} +0 -0
  564. /package/dist/{chunk-F5SUBK42.js.map → chunk-LXIPBHNJ.js.map} +0 -0
  565. /package/dist/{chunk-CFDYQSN6.js.map → chunk-LZ5PGB7U.js.map} +0 -0
  566. /package/dist/{chunk-FFQ4NOJT.js.map → chunk-LZOCNAUA.js.map} +0 -0
  567. /package/dist/{chunk-BLVFHVDM.js.map → chunk-MLGAGZJ3.js.map} +0 -0
  568. /package/dist/{chunk-QVEJGFRP.js.map → chunk-MNNIOQTQ.js.map} +0 -0
  569. /package/dist/{chunk-AFSXC5FU.js.map → chunk-MSJP2AEN.js.map} +0 -0
  570. /package/dist/{chunk-KSOIFQJ6.js.map → chunk-MT74NRLY.js.map} +0 -0
  571. /package/dist/{chunk-PAKLYZ6G.js.map → chunk-N557OEZR.js.map} +0 -0
  572. /package/dist/{chunk-DKRMOIX2.js.map → chunk-NASLJO2R.js.map} +0 -0
  573. /package/dist/{chunk-QVDEGBME.js.map → chunk-NQCTANF3.js.map} +0 -0
  574. /package/dist/{chunk-AOBQ3KYY.js.map → chunk-NZDIO5UG.js.map} +0 -0
  575. /package/dist/{chunk-5USHYSCO.js.map → chunk-OKDAHCYE.js.map} +0 -0
  576. /package/dist/{chunk-ZIHSCBMN.js.map → chunk-OUI5IPS6.js.map} +0 -0
  577. /package/dist/{chunk-PGBIUO2A.js.map → chunk-PEMXXFXL.js.map} +0 -0
  578. /package/dist/{chunk-FCCOUOP7.js.map → chunk-PEVBSNCD.js.map} +0 -0
  579. /package/dist/{chunk-HTGK7QCX.js.map → chunk-Q7QQXNL7.js.map} +0 -0
  580. /package/dist/{chunk-A7LBWRRW.js.map → chunk-QCYQL3ST.js.map} +0 -0
  581. /package/dist/{chunk-XDDKRACZ.js.map → chunk-QHFAKEZZ.js.map} +0 -0
  582. /package/dist/{chunk-6EERXU6R.js.map → chunk-QTLM2YY2.js.map} +0 -0
  583. /package/dist/{chunk-QKLSHNOH.js.map → chunk-R26WP22N.js.map} +0 -0
  584. /package/dist/{chunk-7S3NG2AO.js.map → chunk-RB3R6BJL.js.map} +0 -0
  585. /package/dist/{chunk-SXNGH56D.js.map → chunk-RBW5QQXW.js.map} +0 -0
  586. /package/dist/{chunk-PJNIJIE6.js.map → chunk-RCTHCXS6.js.map} +0 -0
  587. /package/dist/{chunk-DT22MDC3.js.map → chunk-RDRXTH47.js.map} +0 -0
  588. /package/dist/{chunk-JMUZ5JZA.js.map → chunk-RWCQ6TEM.js.map} +0 -0
  589. /package/dist/{chunk-TIM4PXWN.js.map → chunk-SB2SEGR6.js.map} +0 -0
  590. /package/dist/{chunk-FRAVVI4A.js.map → chunk-SUTOAW7I.js.map} +0 -0
  591. /package/dist/{chunk-RQ3IS5NQ.js.map → chunk-SYERREN5.js.map} +0 -0
  592. /package/dist/{chunk-TAR5LSGT.js.map → chunk-T77OVQEO.js.map} +0 -0
  593. /package/dist/{chunk-V6DMNSW6.js.map → chunk-TPAMLIN7.js.map} +0 -0
  594. /package/dist/{chunk-7DODMQRK.js.map → chunk-UBVKMM3V.js.map} +0 -0
  595. /package/dist/{chunk-5463SZOH.js.map → chunk-UERGWYGY.js.map} +0 -0
  596. /package/dist/{chunk-G6ET2DRL.js.map → chunk-UJACXYC2.js.map} +0 -0
  597. /package/dist/{chunk-SYZVXWEQ.js.map → chunk-UQ5GJPVZ.js.map} +0 -0
  598. /package/dist/{chunk-KW2KCPZF.js.map → chunk-UQ6SAIX7.js.map} +0 -0
  599. /package/dist/{chunk-GHTVBYFA.js.map → chunk-UWVVKUCG.js.map} +0 -0
  600. /package/dist/{chunk-EXKK73UN.js.map → chunk-UYKIUUWP.js.map} +0 -0
  601. /package/dist/{chunk-HWUFOII2.js.map → chunk-VQ6V5TO7.js.map} +0 -0
  602. /package/dist/{chunk-OT4HIG7S.js.map → chunk-VUBFCHXL.js.map} +0 -0
  603. /package/dist/{chunk-A4B27HYU.js.map → chunk-WPFVQVQC.js.map} +0 -0
  604. /package/dist/{chunk-DB7OJM6X.js.map → chunk-WWB43LWU.js.map} +0 -0
  605. /package/dist/{chunk-HFZE2PGM.js.map → chunk-X4J576GR.js.map} +0 -0
  606. /package/dist/{chunk-NF5TATKP.js.map → chunk-XATRYJ4Q.js.map} +0 -0
  607. /package/dist/{chunk-6KCJNERH.js.map → chunk-XCUHGPPZ.js.map} +0 -0
  608. /package/dist/{chunk-3LQLLL2J.js.map → chunk-XE7QBHXN.js.map} +0 -0
  609. /package/dist/{chunk-YMKSPW4T.js.map → chunk-XKPV52CG.js.map} +0 -0
  610. /package/dist/{chunk-I4NDZFTB.js.map → chunk-XXUTD74L.js.map} +0 -0
  611. /package/dist/{chunk-PF2A2IM7.js.map → chunk-YGLAGY74.js.map} +0 -0
  612. /package/dist/{chunk-4JV46KXS.js.map → chunk-YHKHHSZH.js.map} +0 -0
  613. /package/dist/{chunk-6S7CFH6V.js.map → chunk-YJPBNIEM.js.map} +0 -0
  614. /package/dist/{chunk-DWCH6GH5.js.map → chunk-YQIT3ET7.js.map} +0 -0
  615. /package/dist/{chunk-G3JFESKD.js.map → chunk-Z5WUSI47.js.map} +0 -0
  616. /package/dist/{chunk-SCQARHMU.js.map → chunk-ZANWHTXH.js.map} +0 -0
  617. /package/dist/{chunk-A3Z7ZXLM.js.map → chunk-ZGAOA7LN.js.map} +0 -0
  618. /package/dist/{chunk-72GJRV5J.js.map → chunk-ZNJGEDCE.js.map} +0 -0
  619. /package/dist/{chunk-TGZ6GPYQ.js.map → chunk-ZYZPSBNQ.js.map} +0 -0
  620. /package/dist/native/chunks/{chunk-7AVFQB6A.js.map → chunk-FXA5DLKR.js.map} +0 -0
  621. /package/dist/native/chunks/{chunk-67CYDCHZ.js.map → chunk-IN3XZ7EK.js.map} +0 -0
@@ -20,6 +20,7 @@ serves a supplier form, a store-location form or a delivery checkout.
20
20
  - Race-safe: a slow response for a since-edited CEP can never overwrite a newer one
21
21
  - Degrades to a plain masked input when the lookup fails, throws, or is absent
22
22
  - Accessible status via `role="status"` / `aria-live="polite"` and `aria-busy`
23
+ - Takes `Input`'s `size`, and can float its label inside the box like `Input`
23
24
  - Works uncontrolled-by-a-form (props) or bound to `total-form` (`Fields.CepField`)
24
25
 
25
26
  ## Props Documentation
@@ -42,6 +43,11 @@ serves a supplier form, a store-location form or a delivery checkout.
42
43
  - `placeholder`: Placeholder text (default `00000-000`)
43
44
  - `name`: Field name / input id (default `postalCode`)
44
45
  - `dataTestId`: Test id for the input (default `cep-field-<name>`)
46
+ - `size`: A step of the `Input` size scale (`xs` | `sm` | `md` | `lg` | `xl`, default
47
+ `md`). Same values and same box heights as `Input`, so a `CepField` at `size="sm"`
48
+ stands level with `sm` `Input`s
49
+ - `labelPlacement`: `above` (default) stacks the label over the box; `inside` draws it
50
+ in the box and floats it up on focus or a value, exactly as `Input`'s label does
45
51
 
46
52
  ### State Props
47
53
 
@@ -83,6 +89,20 @@ const [cep, setCep] = useState('');
83
89
  />
84
90
  ```
85
91
 
92
+ ### Beside compact `Input`s
93
+
94
+ An address form made of `Input`s draws every label inside its box. Opt the CEP in to
95
+ the same treatment, and give it the form's `size`, so the CEP block is no taller than
96
+ its neighbours:
97
+
98
+ ```tsx
99
+ <CepField size="sm" labelPlacement="inside" value={cep} onChange={setCep} copy={copy} />
100
+ <Input size="sm" label="Rua" />
101
+ ```
102
+
103
+ `labelPlacement` defaults to `above` so a form that never asked keeps the stacked label
104
+ it has always had. `Fields.CepField` takes the same two props.
105
+
86
106
  ### Bound to `total-form`
87
107
 
88
108
  `Fields.CepField` wires the field to the surrounding `FormContainer` and writes
@@ -135,4 +155,6 @@ the lookup. The pure helpers (`formatCep`, `isValidCep`) live in
135
155
  - `aria-busy` reflects the in-flight lookup
136
156
  - `aria-describedby` links the input to its status region
137
157
  - `inputMode="numeric"` brings up the numeric keypad on mobile
158
+ - With `labelPlacement="inside"` the label is the `Input`'s own, associated to the input
159
+ by `for`/`id`, so `getByLabelText` and screen readers name the field the same way
138
160
  - `autoComplete="postal-code"` lets the browser's own autofill participate
@@ -118,6 +118,29 @@ function CepStatus({
118
118
  );
119
119
  }
120
120
 
121
+ /** The stacked label over the box (`labelPlacement="above"`), or nothing when there is no label. */
122
+ function AboveLabel({
123
+ name,
124
+ label,
125
+ error,
126
+ }: {
127
+ name: string;
128
+ label?: string;
129
+ error?: string;
130
+ }): React.ReactElement | null {
131
+ if (!label) return null;
132
+ return (
133
+ <FormLabel htmlFor={name} error={Boolean(error)}>
134
+ {label}
135
+ </FormLabel>
136
+ );
137
+ }
138
+
139
+ /** The label handed to the `Input`, which draws it in the box: only for `inside`. */
140
+ function insideLabel(label: string | undefined, placement: 'above' | 'inside'): string | undefined {
141
+ return placement === 'inside' ? label : undefined;
142
+ }
143
+
121
144
  /**
122
145
  * A CEP input that fills the rest of the address in.
123
146
  *
@@ -156,6 +179,8 @@ export function CepField({
156
179
  name = 'postalCode',
157
180
  dataTestId,
158
181
  copy,
182
+ size, // undefined reaches `Input`, whose own default is `md`
183
+ labelPlacement = 'above',
159
184
  }: CepFieldProps): React.ReactElement {
160
185
  const testId = dataTestId ?? `cep-field-${name}`;
161
186
 
@@ -176,17 +201,18 @@ export function CepField({
176
201
 
177
202
  return (
178
203
  <FormControl fullWidth>
179
- {label && (
180
- <FormLabel htmlFor={name} error={Boolean(error)}>
181
- {label}
182
- </FormLabel>
183
- )}
204
+ {labelPlacement === 'above' && <AboveLabel name={name} label={label} error={error} />}
184
205
  <Input
185
206
  id={name}
186
207
  name={name}
187
208
  type="text"
188
209
  inputMode="numeric"
189
210
  autoComplete="postal-code"
211
+ size={size}
212
+ // `inside`: the label is the Input's own, drawn in the box and floating
213
+ // up on focus or a value — what every other `Input` in the form does.
214
+ // `above` keeps the stacked `FormLabel`, for callers that never opted in.
215
+ label={insideLabel(label, labelPlacement)}
190
216
  placeholder={placeholder}
191
217
  value={value}
192
218
  error={Boolean(error)}
@@ -1,4 +1,5 @@
1
1
  import type { CepFieldCopy } from "../../../copy";
2
+ import type { InputSize } from "../Input/Input.base";
2
3
  /**
3
4
  * Types for {@link CepField} — the reusable CEP auto-completer.
4
5
  */
@@ -73,4 +74,19 @@ export interface CepFieldProps {
73
74
  name?: string;
74
75
  /** Test id for the input. Defaults to `cep-field-<name>`. */
75
76
  dataTestId?: string;
77
+ /**
78
+ * A step of the house size scale — the same values, and the same box
79
+ * heights, as {@link Input}'s `size`. Defaults to `md`.
80
+ */
81
+ size?: InputSize;
82
+ /**
83
+ * Where the label is drawn.
84
+ *
85
+ * - `above` (default): a stacked label over the box, as the field has always
86
+ * rendered. Every existing caller keeps it.
87
+ * - `inside`: the label sits in the box and floats up on focus or a value,
88
+ * exactly as `Input`'s label does. Use it beside `Input`s so the CEP block
89
+ * is the same height as its neighbours.
90
+ */
91
+ labelPlacement?: 'above' | 'inside';
76
92
  }
@@ -51,6 +51,7 @@ import { Checkbox } from '@/components/form/Checkbox';
51
51
  | error | `boolean` | `false` | Error state flag |
52
52
  | helperText | `string` | - | Helper or error text displayed below |
53
53
  | loading | `boolean` | `false` | Shows loading spinner and disables checkbox |
54
+ | loadingLabel | `string` | `loading` | React Native only: the busy spinner's accessible name (`UI_LABELS[locale].common.loading`) |
54
55
  | ripple | `boolean` | `true` | Enable/disable ripple effect on click |
55
56
  | glow | `boolean` | `false` | Enable glow animation |
56
57
  | pulse | `boolean` | `false` | Enable pulse animation |
@@ -34,6 +34,7 @@ The Input component provides a flexible text input field with comprehensive vali
34
34
  - `error`: Error state flag
35
35
  - `helperText`: Helper or error text displayed below input
36
36
  - `loading`: Shows loading spinner and disables input
37
+ - `loadingLabel`: React Native only — the busy spinner's accessible name (`string`, default `loading`; `UI_LABELS[locale].common.loading`)
37
38
 
38
39
  ### Visual Props
39
40
  - `fullWidth`: Makes input take full container width (default: true)
@@ -79,7 +79,8 @@ function App() {
79
79
  |------|------|---------|-------------|
80
80
  | `value` | `string` | `''` | The current value of the rich text editor content |
81
81
  | `onChange` | `(value: string) => void` | - | Callback when the content changes |
82
- | `placeholder` | `string` | `'Start typing...'` | Placeholder text when empty |
82
+ | `placeholder` | `string` | `'Start typing...'` | Placeholder text when empty; defaults to `labels.placeholder` |
83
+ | `labels` | `Partial<RichTextEditorLabels>` | English pack | The toolbar's tooltips (`bold`, `italic`, `underline`, `strikethrough`, `numberedList`, `bulletedList`, `insertLink`, `insertImage`, `codeBlock`, `quote`), the link and image prompts (`linkPrompt`, `imagePrompt`), the new list item's text (`listItem`), the default `placeholder` and the default `ariaLabel`. Any key left out reads in English (`Bold`, `Enter URL:`, `Start typing...`, `Rich text editor`, …); a pt-BR host passes `UI_LABELS['pt-BR'].richTextEditor` |
83
84
  | `disabled` | `boolean` | `false` | Whether the editor is disabled |
84
85
  | `readOnly` | `boolean` | `false` | Whether the editor is read-only |
85
86
  | `toolbar` | `ToolbarConfig` | Default config | Configuration for toolbar buttons and features |
@@ -89,7 +90,7 @@ function App() {
89
90
  | `onBlur` | `() => void` | - | Callback when editor loses focus |
90
91
  | `className` | `string` | - | Additional CSS classes |
91
92
  | `data-testid` | `string` | - | Test ID for testing purposes |
92
- | `aria-label` | `string` | `'Rich text editor'` | ARIA label for accessibility |
93
+ | `aria-label` | `string` | `'Rich text editor'` | ARIA label for accessibility; defaults to `labels.ariaLabel` |
93
94
  | `aria-describedby` | `string` | - | ARIA described by for accessibility |
94
95
 
95
96
  ## ToolbarConfig
@@ -86,6 +86,7 @@ import { Switch } from '@procurement/ui';
86
86
  | `onChange` | `(event, checked) => void` | - | Change event handler |
87
87
  | `animated` | `boolean` | `true` | Enable/disable animations |
88
88
  | `loading` | `boolean` | `false` | Shows loading spinner and disables switch |
89
+ | `loadingLabel` | `string` | `loading` | React Native only: the busy spinner's accessible name (`UI_LABELS[locale].common.loading`) |
89
90
  | `ripple` | `boolean` | `false` | Enable ripple effect on interaction |
90
91
  | `pulse` | `boolean` | `false` | Enable pulse animation on thumb |
91
92
  | `disabled` | `boolean` | `false` | Disables switch interaction |
@@ -3,6 +3,7 @@
3
3
  import type { CepFieldCopy } from "../../../../copy";
4
4
  import React, { useCallback, useMemo, useRef } from 'react';
5
5
 
6
+ import type { InputSize } from '../../Input/Input.base';
6
7
  import { CepField as BaseCepField, type CepAddress } from '../../CepField';
7
8
  import { useFormContext } from '../FormContext';
8
9
 
@@ -29,6 +30,10 @@ export interface CepFieldProps {
29
30
  fills?: CepFills;
30
31
  /** Milliseconds to wait after the last keystroke before looking up. */
31
32
  debounceMs?: number;
33
+ /** The input's size — the same scale, and box heights, as `Input`. Defaults to `md`. */
34
+ size?: InputSize;
35
+ /** `above` (default) stacks the label over the box; `inside` floats it in the box like `Input`. */
36
+ labelPlacement?: 'above' | 'inside';
32
37
  }
33
38
 
34
39
  const PARTS: readonly CepPart[] = ['street', 'neighborhood', 'city', 'state'];
@@ -107,6 +112,8 @@ export function CepField({
107
112
  fills,
108
113
  debounceMs,
109
114
  copy,
115
+ size,
116
+ labelPlacement,
110
117
  }: CepFieldProps): React.ReactElement {
111
118
  const { values, errors, setFieldValue } = useFormContext();
112
119
  const { write, clearOwned } = useOwnedAutofill();
@@ -142,6 +149,8 @@ export function CepField({
142
149
  onResolved={handleResolved}
143
150
  onNotFound={clearOwned}
144
151
  debounceMs={debounceMs}
152
+ size={size}
153
+ labelPlacement={labelPlacement}
145
154
  dataTestId={`total-form-field-${name}`}
146
155
  />
147
156
  );
@@ -36,6 +36,18 @@ pages and projects.
36
36
  | `MultiSelectDropdown` | Checkbox multi-select with counts, an optional "Options" section, and a Clear action (e.g. "Content Type"). |
37
37
  | `FilterTrigger` | Funnel toggle button with an active-filters indicator dot. |
38
38
 
39
+ ### Label props
40
+
41
+ Optional; each omitted one reads in English. A host passes
42
+ `UI_LABELS[locale].contentToolbar` from `@12-apps/ui/locales`.
43
+
44
+ | Prop | On | Type | Default | Description |
45
+ | --- | --- | --- | --- | --- |
46
+ | `gridViewLabel` | `ViewSelector` | `string` | `"Grid View"` | The grid option's name, in the menu and on the trigger while it is active (`contentToolbar.gridView`) |
47
+ | `listViewLabel` | `ViewSelector` | `string` | `"List View"` | The list option's name (`contentToolbar.listView`) |
48
+ | `openFiltersLabel` | `FilterTrigger` | `string` | `"Open filters"` | The button's accessible name while the panel is closed (`contentToolbar.openFilters`) |
49
+ | `closeFiltersLabel` | `FilterTrigger` | `string` | `"Close filters"` | The button's accessible name while the panel is open (`contentToolbar.closeFilters`) |
50
+
39
51
  ## Usage
40
52
 
41
53
  ```tsx
@@ -63,6 +63,9 @@ import { Dashboard } from '@12-apps/ui/layout/Dashboard';
63
63
  | `Dashboard.MoreFilters` | (in filters) | Expandable advanced panel for ranges/dates. |
64
64
  | `Dashboard.Body` | body | Main content area (the table/grid). |
65
65
 
66
+ `Dashboard.Breadcrumb` takes `ariaLabel?: string`, the trail's landmark name
67
+ (default `"breadcrumb"`); a host passes `UI_LABELS[locale].dashboard.breadcrumb`.
68
+
66
69
  ## State
67
70
 
68
71
  `Dashboard` owns only **UI** state (which regions are open) through
@@ -26,6 +26,8 @@ A flexible and feature-rich navigation menu component that supports horizontal,
26
26
  | collapsible | `boolean` | false | Whether the vertical menu can be collapsed |
27
27
  | collapsed | `boolean` | undefined | Controlled collapsed state |
28
28
  | onCollapseChange | `(collapsed: boolean) => void` | undefined | Callback when collapse state changes |
29
+ | collapseLabel | `string` | 'Collapse' | The collapse control's text (vertical, `collapsible` only); `UI_LABELS[locale].navigationMenu.collapse` |
30
+ | expandLabel | `string` | 'Expand' | The collapse control's accessible name while collapsed to its icon (vertical, `collapsible` only); `UI_LABELS[locale].navigationMenu.expand` |
29
31
  | logo | `ReactNode` | undefined | Custom logo/brand element |
30
32
  | endContent | `ReactNode` | undefined | Additional content to render at the end |
31
33
  | maxWidth | `number \| string` | undefined | Maximum width for mega menu |
@@ -33,6 +33,16 @@ The Code component is a versatile typography element designed for displaying cod
33
33
  - **Default**: `false`
34
34
  - **Description**: Enables copy-to-clipboard functionality with visual feedback (block/highlight variants only)
35
35
 
36
+ ### copyLabel
37
+ - **Type**: `string`
38
+ - **Default**: `'Copy code'`
39
+ - **Description**: The copy button's tooltip and accessible name (`UI_LABELS[locale].code.copy`)
40
+
41
+ ### copiedLabel
42
+ - **Type**: `string`
43
+ - **Default**: `'Copied!'`
44
+ - **Description**: The same button right after a copy (`UI_LABELS[locale].code.copied`)
45
+
36
46
  ### lineNumbers
37
47
  - **Type**: `boolean`
38
48
  - **Default**: `false`
@@ -60,6 +60,7 @@ function MyComponent() {
60
60
  | `loader` | `ReactNode` | Default spinner | Custom loading indicator |
61
61
  | `endMessage` | `ReactNode` | Default message | Message when no more items |
62
62
  | `error` | `Error \| null` | - | Error object if load failed |
63
+ | `errorText` | `string` | `"An error occurred while loading more items"` | The error line when `error` carries no message of its own; a pt-BR host passes `UI_LABELS['pt-BR'].infiniteScroll.loadFailed` |
63
64
  | `errorComponent` | `ReactNode` | Default error UI | Custom error component |
64
65
  | `onError` | `(error: Error) => void` | - | Error callback |
65
66
  | `className` | `string` | - | CSS class name |
@@ -35,6 +35,7 @@ The WorkflowStep component is an advanced workflow visualization component that
35
35
  | `errorIcon` | `React.ReactNode` | - | Custom icon for error steps |
36
36
  | `onStepClick` | `(stepIndex: number) => void` | - | Callback when a step is clicked |
37
37
  | `disabled` | `boolean` | `false` | Disable all interactions |
38
+ | `labels` | `Partial<WorkflowStepLabels>` | English pack | The indicators' accessible names, `step(position, title)` (`` `Step ${position}: ${title}` ``), and the progressbar's value text, `progress(position, total)` (`` `Step ${position} of ${total}` ``). Any key left out keeps its English wording; a host passes `UI_LABELS[locale].workflowStep` |
38
39
  | `className` | `string` | - | Additional CSS classes |
39
40
  | `style` | `React.CSSProperties` | - | Inline styles |
40
41
 
@@ -214,6 +214,24 @@ export interface DateRangePickerLabels {
214
214
  calendar: string;
215
215
  }
216
216
 
217
+ /**
218
+ * `Calendar`'s month/year caption (`captionLayout="selectors"`): the two
219
+ * selector buttons, the month arrows and the two pick grids. The month and
220
+ * year themselves come from `Intl` in the calendar's `locale`.
221
+ */
222
+ export interface CalendarLabels {
223
+ /** The month button's accessible name, from the month it shows ("March"). */
224
+ chooseMonth(month: string): string;
225
+ /** The year button's accessible name, from the year it shows. */
226
+ chooseYear(year: number): string;
227
+ previousMonth: string;
228
+ nextMonth: string;
229
+ /** The month grid's accessible name. */
230
+ months: string;
231
+ /** The year grid's accessible name. */
232
+ years: string;
233
+ }
234
+
217
235
  /** Every family above, keyed by the component that renders it. */
218
236
  export interface UiLabels {
219
237
  common: CommonLabels;
@@ -246,4 +264,5 @@ export interface UiLabels {
246
264
  infiniteScroll: InfiniteScrollLabels;
247
265
  socialLogin: SocialLoginLabels;
248
266
  dateRangePicker: DateRangePickerLabels;
267
+ calendar: CalendarLabels;
249
268
  }
@@ -144,4 +144,12 @@ export const EN_US_UI_LABELS: UiLabels = {
144
144
  dateRangePicker: {
145
145
  calendar: "Calendar",
146
146
  },
147
+ calendar: {
148
+ chooseMonth: (month) => `${month}, choose month`,
149
+ chooseYear: (year) => `${year}, choose year`,
150
+ previousMonth: "Previous month",
151
+ nextMonth: "Next month",
152
+ months: "Months",
153
+ years: "Years",
154
+ },
147
155
  };
@@ -143,4 +143,12 @@ export const PT_BR_UI_LABELS: UiLabels = {
143
143
  dateRangePicker: {
144
144
  calendar: "Calendário",
145
145
  },
146
+ calendar: {
147
+ chooseMonth: (month) => `${month}, escolher mês`,
148
+ chooseYear: (year) => `${year}, escolher ano`,
149
+ previousMonth: "Mês anterior",
150
+ nextMonth: "Próximo mês",
151
+ months: "Meses",
152
+ years: "Anos",
153
+ },
146
154
  };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/Calendar/Calendar.hooks.ts"],"sourcesContent":["import type React from 'react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { addMonths, generateMonthMatrix, getWeekdayNames, normalizeDate } from './Calendar.dates';\nimport { ACTIVATION_KEYS, navigateFocus } from './Calendar.keyboard';\nimport { isDateDisabledBy, nextRangeStep } from './Calendar.selection';\nimport type { MonthMatrix, ResolvedCalendarProps } from './Calendar.types';\n\nconst startOfMonth = (date: Date): Date => new Date(date.getFullYear(), date.getMonth(), 1);\n\n// Which day the calendar opens on: whatever is already chosen, else today.\nconst initialFocus = (props: ResolvedCalendarProps, today: Date): Date => {\n if (props.selectionMode === 'single' && props.value) return normalizeDate(props.value);\n if (props.selectionMode === 'range' && props.range.start) return normalizeDate(props.range.start);\n return today;\n};\n\nconst useCalendarState = (props: ResolvedCalendarProps, today: Date) => {\n const [focusedDate, setFocusedDate] = useState<Date>(() => initialFocus(props, today));\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const [currentMonth, setCurrentMonth] = useState<Date>(() => startOfMonth(focusedDate));\n\n return {\n focusedDate,\n setFocusedDate,\n hoveredDate,\n setHoveredDate,\n currentMonth,\n setCurrentMonth,\n };\n};\n\nconst useAutoFocusGrid = (autoFocus: boolean) => {\n const gridRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (autoFocus && gridRef.current) gridRef.current.focus();\n }, [autoFocus]);\n\n return gridRef;\n};\n\nconst useVisibleMonths = ({\n currentMonth,\n monthsToShow,\n firstDayOfWeek,\n}: {\n currentMonth: Date;\n monthsToShow: number;\n firstDayOfWeek: number;\n}): MonthMatrix[] =>\n useMemo(() => {\n const matrices: MonthMatrix[] = [];\n let cursor = currentMonth;\n\n for (let i = 0; i < monthsToShow; i++) {\n matrices.push(generateMonthMatrix(cursor.getMonth(), cursor.getFullYear(), firstDayOfWeek));\n cursor = addMonths(cursor, 1);\n }\n\n return matrices;\n }, [currentMonth, monthsToShow, firstDayOfWeek]);\n\n// A click either sets a single date or advances the range by one step; the range\n// rules themselves live in nextRangeStep.\nconst useDateClick = ({\n props,\n isDisabled,\n setFocusedDate,\n}: {\n props: ResolvedCalendarProps;\n isDisabled: (date: Date) => boolean;\n setFocusedDate: (date: Date) => void;\n}) => {\n const {\n selectionMode,\n range,\n onChange,\n onRangeChange,\n onIntermediateRangeChange,\n allowSameDayRange,\n minRangeLength,\n maxRangeLength,\n } = props;\n\n return useCallback(\n (date: Date) => {\n if (isDisabled(date)) return;\n\n const candidate = normalizeDate(date);\n setFocusedDate(candidate);\n\n if (selectionMode === 'single') {\n onChange?.(candidate);\n return;\n }\n\n const step = nextRangeStep({\n start: range.start,\n end: range.end,\n candidate,\n allowSameDayRange,\n minRangeLength,\n maxRangeLength,\n });\n\n if (step.kind === 'rejected') return;\n\n if (step.kind === 'complete') onRangeChange?.(step.range);\n onIntermediateRangeChange?.(step.range);\n },\n [\n selectionMode,\n range,\n onChange,\n onRangeChange,\n onIntermediateRangeChange,\n isDisabled,\n allowSameDayRange,\n minRangeLength,\n maxRangeLength,\n setFocusedDate,\n ],\n );\n};\n\n// Hovering only means something while a range is half-chosen.\nconst useHoverHandlers = ({\n selectionMode,\n range,\n isDisabled,\n setHoveredDate,\n}: {\n selectionMode: ResolvedCalendarProps['selectionMode'];\n range: ResolvedCalendarProps['range'];\n isDisabled: (date: Date) => boolean;\n setHoveredDate: (date: Date | null) => void;\n}) => {\n const handleDateMouseEnter = useCallback(\n (date: Date) => {\n if (selectionMode === 'range' && range.start && !range.end && !isDisabled(date)) {\n setHoveredDate(normalizeDate(date));\n }\n },\n [selectionMode, range, isDisabled, setHoveredDate],\n );\n\n const handleDateMouseLeave = useCallback(() => setHoveredDate(null), [setHoveredDate]);\n\n return { handleDateMouseEnter, handleDateMouseLeave };\n};\n\nconst useKeyboardHandler = ({\n focusedDate,\n firstDayOfWeek,\n currentMonth,\n handleDateClick,\n setFocusedDate,\n setCurrentMonth,\n setHoveredDate,\n}: {\n focusedDate: Date;\n firstDayOfWeek: number;\n currentMonth: Date;\n handleDateClick: (date: Date) => void;\n setFocusedDate: (date: Date) => void;\n setCurrentMonth: (date: Date) => void;\n setHoveredDate: (date: Date | null) => void;\n}) =>\n useCallback(\n (event: React.KeyboardEvent) => {\n const { key } = event;\n const moved = navigateFocus(key, focusedDate, { firstDayOfWeek, shiftKey: event.shiftKey });\n\n if (moved) {\n event.preventDefault();\n setFocusedDate(normalizeDate(moved));\n\n // Follow focus into a month that is not on screen.\n const month = startOfMonth(moved);\n if (month.getTime() !== currentMonth.getTime()) setCurrentMonth(month);\n return;\n }\n\n if (ACTIVATION_KEYS.includes(key)) {\n event.preventDefault();\n handleDateClick(focusedDate);\n return;\n }\n\n if (key === 'Escape') {\n event.preventDefault();\n setHoveredDate(null);\n }\n },\n [\n focusedDate,\n firstDayOfWeek,\n currentMonth,\n handleDateClick,\n setFocusedDate,\n setCurrentMonth,\n setHoveredDate,\n ],\n );\n\nexport const useCalendar = (props: ResolvedCalendarProps) => {\n const { monthsToShow, firstDayOfWeek, locale, minDate, maxDate, isDateDisabled } = props;\n\n const today = useMemo(() => normalizeDate(new Date()), []);\n const state = useCalendarState(props, today);\n const gridRef = useAutoFocusGrid(props.autoFocus);\n\n const monthMatrices = useVisibleMonths({\n currentMonth: state.currentMonth,\n monthsToShow,\n firstDayOfWeek,\n });\n\n const weekdayNames = useMemo(\n () => getWeekdayNames(locale, firstDayOfWeek),\n [locale, firstDayOfWeek],\n );\n\n const isDisabled = useCallback(\n (date: Date) => isDateDisabledBy({ date, minDate, maxDate, isDateDisabled }),\n [minDate, maxDate, isDateDisabled],\n );\n\n const { setCurrentMonth } = state;\n const goToPreviousMonth = useCallback(\n () => setCurrentMonth((prev) => addMonths(prev, -1)),\n [setCurrentMonth],\n );\n const goToNextMonth = useCallback(\n () => setCurrentMonth((prev) => addMonths(prev, 1)),\n [setCurrentMonth],\n );\n\n const handleDateClick = useDateClick({\n props,\n isDisabled,\n setFocusedDate: state.setFocusedDate,\n });\n\n const { handleDateMouseEnter, handleDateMouseLeave } = useHoverHandlers({\n selectionMode: props.selectionMode,\n range: props.range,\n isDisabled,\n setHoveredDate: state.setHoveredDate,\n });\n\n const handleKeyDown = useKeyboardHandler({\n focusedDate: state.focusedDate,\n firstDayOfWeek,\n currentMonth: state.currentMonth,\n handleDateClick,\n setFocusedDate: state.setFocusedDate,\n setCurrentMonth: state.setCurrentMonth,\n setHoveredDate: state.setHoveredDate,\n });\n\n return {\n gridRef,\n today,\n focusedDate: state.focusedDate,\n hoveredDate: state.hoveredDate,\n monthMatrices,\n weekdayNames,\n isDisabled,\n goToPreviousMonth,\n goToNextMonth,\n handleDateClick,\n handleDateMouseEnter,\n handleDateMouseLeave,\n handleKeyDown,\n };\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/total-form/Fields/CepField.tsx"],"sourcesContent":["'use client';\n\nimport type { CepFieldCopy } from \"../../../../copy\";\nimport React, { useCallback, useMemo, useRef } from 'react';\n\nimport { CepField as BaseCepField, type CepAddress } from '../../CepField';\nimport { useFormContext } from '../FormContext';\n\n/** The resolved address parts a form can receive. */\ntype CepPart = 'street' | 'neighborhood' | 'city' | 'state';\n\n/**\n * Which form field receives each resolved part. Omit a part to leave it alone —\n * a form with no bairro column simply doesn't map `neighborhood`.\n */\nexport type CepFills = Partial<Record<CepPart, string>>;\n\n/** Props for the `total-form` {@link CepField}. */\nexport interface CepFieldProps {\n /** The lookup status wording. REQUIRED — no default copy. */\n copy: CepFieldCopy;\n /** Field name; also the key into the form's values/errors. */\n name: string;\n /** Optional visible label. Defaults to `CEP`. */\n label?: string;\n /** Resolve a complete CEP. Omit for a masked input with no lookup. */\n lookup?: (cep: string) => Promise<CepAddress | null>;\n /** Maps each resolved address part onto a field in THIS form. */\n fills?: CepFills;\n /** Milliseconds to wait after the last keystroke before looking up. */\n debounceMs?: number;\n}\n\nconst PARTS: readonly CepPart[] = ['street', 'neighborhood', 'city', 'state'];\n\n/** Ownership-aware writes into sibling form fields. */\ninterface OwnedAutofill {\n /** Write one field, where `''` means \"no value for this part\". */\n write: (field: string, value: string) => void;\n /** Blank every field this hook still owns. */\n clearOwned: () => void;\n}\n\n/**\n * The honesty rule, in one place: this hook remembers exactly what it wrote,\n * writes only into fields that are empty or still hold its own value, and drops\n * the ownership record when it blanks one. That single invariant is what lets\n * autofill replace itself freely while never touching the user's typing.\n */\nfunction useOwnedAutofill(): OwnedAutofill {\n const { values, setFieldValue } = useFormContext();\n // What we last auto-filled per target field, so a later lookup may replace\n // its own value while a manual edit is preserved.\n const autoFilledRef = useRef<Record<string, string>>({});\n // Read values at call time without making them a dependency of the callback.\n const valuesRef = useRef(values);\n valuesRef.current = values;\n\n const write = useCallback(\n (field: string, value: string) => {\n const current = (valuesRef.current[field] ?? '').trim();\n const ours = autoFilledRef.current[field] === current;\n if (current !== '' && !ours) return;\n setFieldValue(field, value);\n if (value) {\n autoFilledRef.current[field] = value;\n } else {\n delete autoFilledRef.current[field];\n }\n },\n [setFieldValue],\n );\n\n const clearOwned = useCallback(() => {\n // Object.keys snapshots, so `write` may delete entries as we iterate.\n for (const field of Object.keys(autoFilledRef.current)) {\n write(field, '');\n }\n }, [write]);\n\n return useMemo(() => ({ write, clearOwned }), [write, clearOwned]);\n}\n\n/**\n * CEP field bound to {@link useFormContext}: masks and validates the CEP, then\n * writes the resolved logradouro/bairro/cidade/UF straight into the sibling\n * fields named by `fills`.\n *\n * It will not overwrite work the user has done. A target field is only written\n * when it is empty, or when it still holds the exact value THIS component put\n * there — so correcting the CEP re-fills the address, but a hand-edited street\n * survives the next lookup.\n *\n * @example\n * ```tsx\n * <Fields.CepField\n * name=\"postalCode\"\n * lookup={lookupCep}\n * fills={{ street: 'addressLine1', neighborhood: 'neighborhood', city: 'city', state: 'state' }}\n * />\n * ```\n */\nexport function CepField({\n name,\n label,\n lookup,\n fills,\n debounceMs,\n copy,\n}: CepFieldProps): React.ReactElement {\n const { values, errors, setFieldValue } = useFormContext();\n const { write, clearOwned } = useOwnedAutofill();\n\n const handleResolved = useCallback(\n (address: CepAddress) => {\n if (!fills) return;\n // Every mapped part is written on EVERY resolve, absent ones as ''. A\n // \"CEP geral\" (a small município's catch-all) carries no logradouro, so\n // skipping absent parts would leave the previous CEP's street here.\n for (const part of PARTS) {\n const field = fills[part];\n if (field) write(field, address[part] ?? '');\n }\n },\n [fills, write],\n );\n\n const handleChange = useCallback(\n (masked: string) => setFieldValue(name, masked),\n [name, setFieldValue],\n );\n\n return (\n <BaseCepField\n copy={copy}\n name={name}\n label={label}\n value={values[name] ?? ''}\n error={errors[name]}\n onChange={handleChange}\n onLookup={lookup}\n onResolved={handleResolved}\n onNotFound={clearOwned}\n debounceMs={debounceMs}\n dataTestId={`total-form-field-${name}`}\n />\n );\n}\n"],"mappings":";;;;;;;;AAGA,SAAgB,aAAa,SAAS,cAAc;AAkIhD;AApGJ,IAAM,QAA4B,CAAC,UAAU,gBAAgB,QAAQ,OAAO;AAgB5E,SAAS,mBAAkC;AACzC,QAAM,EAAE,QAAQ,cAAc,IAAI,eAAe;AAGjD,QAAM,gBAAgB,OAA+B,CAAC,CAAC;AAEvD,QAAM,YAAY,OAAO,MAAM;AAC/B,YAAU,UAAU;AAEpB,QAAM,QAAQ;AAAA,IACZ,CAAC,OAAe,UAAkB;AAChC,YAAM,WAAW,UAAU,QAAQ,KAAK,KAAK,IAAI,KAAK;AACtD,YAAM,OAAO,cAAc,QAAQ,KAAK,MAAM;AAC9C,UAAI,YAAY,MAAM,CAAC,KAAM;AAC7B,oBAAc,OAAO,KAAK;AAC1B,UAAI,OAAO;AACT,sBAAc,QAAQ,KAAK,IAAI;AAAA,MACjC,OAAO;AACL,eAAO,cAAc,QAAQ,KAAK;AAAA,MACpC;AAAA,IACF;AAAA,IACA,CAAC,aAAa;AAAA,EAChB;AAEA,QAAM,aAAa,YAAY,MAAM;AAEnC,eAAW,SAAS,OAAO,KAAK,cAAc,OAAO,GAAG;AACtD,YAAM,OAAO,EAAE;AAAA,IACjB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO,QAAQ,OAAO,EAAE,OAAO,WAAW,IAAI,CAAC,OAAO,UAAU,CAAC;AACnE;AAqBO,SAASA,UAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsC;AACpC,QAAM,EAAE,QAAQ,QAAQ,cAAc,IAAI,eAAe;AACzD,QAAM,EAAE,OAAO,WAAW,IAAI,iBAAiB;AAE/C,QAAM,iBAAiB;AAAA,IACrB,CAAC,YAAwB;AACvB,UAAI,CAAC,MAAO;AAIZ,iBAAW,QAAQ,OAAO;AACxB,cAAM,QAAQ,MAAM,IAAI;AACxB,YAAI,MAAO,OAAM,OAAO,QAAQ,IAAI,KAAK,EAAE;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,CAAC,OAAO,KAAK;AAAA,EACf;AAEA,QAAM,eAAe;AAAA,IACnB,CAAC,WAAmB,cAAc,MAAM,MAAM;AAAA,IAC9C,CAAC,MAAM,aAAa;AAAA,EACtB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,OAAO,IAAI,KAAK;AAAA,MACvB,OAAO,OAAO,IAAI;AAAA,MAClB,UAAU;AAAA,MACV,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA,YAAY,oBAAoB,IAAI;AAAA;AAAA,EACtC;AAEJ;","names":["CepField"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/Calendar/Calendar.helpers.ts"],"sourcesContent":["import type { CalendarProps, ResolvedCalendarProps } from './Calendar.types';\n\nconst CALENDAR_DEFAULTS = {\n selectionMode: 'single',\n value: null,\n range: { start: null, end: null },\n firstDayOfWeek: 0,\n locale: 'en-US',\n showOutsideDays: true,\n minRangeLength: 1,\n allowSameDayRange: true,\n autoFocus: false,\n} as const satisfies Partial<CalendarProps>;\n\n// Strips explicitly-undefined props before the merge, so `prop={undefined}` still\n// falls back to the default exactly as a destructuring default would.\nconst definedProps = (props: CalendarProps): Partial<CalendarProps> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<CalendarProps>;\n\n// Applied as a merge rather than destructuring defaults, which would otherwise\n// put nine branches into the component's own complexity budget.\nexport const resolveCalendarProps = (props: CalendarProps): ResolvedCalendarProps => {\n const merged = { ...CALENDAR_DEFAULTS, ...definedProps(props) } as ResolvedCalendarProps;\n\n // A range needs two months side by side to be picked comfortably; a single\n // date does not.\n const defaultMonths = merged.selectionMode === 'range' ? 2 : 1;\n\n return { ...merged, monthsToShow: merged.numberOfMonths ?? defaultMonths };\n};\n"],"mappings":";AAEA,IAAM,oBAAoB;AAAA,EACxB,eAAe;AAAA,EACf,OAAO;AAAA,EACP,OAAO,EAAE,OAAO,MAAM,KAAK,KAAK;AAAA,EAChC,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,WAAW;AACb;AAIA,IAAM,eAAe,CAAC,UACpB,OAAO;AAAA,EACL,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AACjE;AAIK,IAAM,uBAAuB,CAAC,UAAgD;AACnF,QAAM,SAAS,EAAE,GAAG,mBAAmB,GAAG,aAAa,KAAK,EAAE;AAI9D,QAAM,gBAAgB,OAAO,kBAAkB,UAAU,IAAI;AAE7D,SAAO,EAAE,GAAG,QAAQ,cAAc,OAAO,kBAAkB,cAAc;AAC3E;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/Calendar/Calendar.dates.ts"],"sourcesContent":["import type { MonthMatrix, MonthMatrixDay } from './Calendar.types';\n\nconst DAYS_PER_WEEK = 7;\n// Six rows always cover a month, whichever weekday it starts on.\nconst MAX_CELLS = 42;\nconst NOON = 12;\n\n// Every comparison happens at noon so daylight-saving shifts can never move a\n// date across a day boundary.\nexport const normalizeDate = (date: Date): Date => {\n const normalized = new Date(date);\n normalized.setHours(NOON, 0, 0, 0);\n return normalized;\n};\n\nexport const isSameDay = (date1: Date, date2: Date): boolean =>\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate();\n\nexport const isBetween = (date: Date, start: Date, end: Date): boolean => {\n const normalized = normalizeDate(date);\n return normalized >= normalizeDate(start) && normalized <= normalizeDate(end);\n};\n\nexport const addDays = (date: Date, days: number): Date => {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n};\n\nexport const addMonths = (date: Date, months: number): Date => {\n const result = new Date(date);\n result.setMonth(result.getMonth() + months);\n return result;\n};\n\nexport const startOfWeek = (date: Date, firstDayOfWeek = 0): Date => {\n const result = new Date(date);\n const day = result.getDay();\n const diff = (day < firstDayOfWeek ? DAYS_PER_WEEK : 0) + day - firstDayOfWeek;\n result.setDate(result.getDate() - diff);\n return result;\n};\n\n// Day 0 of the next month is the last day of this one.\nconst endOfMonth = (date: Date): Date =>\n new Date(date.getFullYear(), date.getMonth() + 1, 0);\n\nconst dayKey = (date: Date): string =>\n `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\n\nexport const generateMonthMatrix = (\n month: number,\n year: number,\n firstDayOfWeek = 0,\n): MonthMatrix => {\n const firstDay = new Date(year, month, 1);\n const lastDay = endOfMonth(firstDay);\n const currentDate = startOfWeek(firstDay, firstDayOfWeek);\n\n const weeks: MonthMatrixDay[][] = [];\n let currentWeek: MonthMatrixDay[] = [];\n\n for (let i = 0; i < MAX_CELLS; i++) {\n currentWeek.push({\n date: new Date(currentDate),\n inCurrentMonth: currentDate.getMonth() === month,\n key: dayKey(currentDate),\n });\n\n if (currentWeek.length === DAYS_PER_WEEK) {\n weeks.push(currentWeek);\n currentWeek = [];\n }\n\n currentDate.setDate(currentDate.getDate() + 1);\n\n // Stop on a week boundary once the month is behind us, so a month that fits\n // in five rows does not get a trailing sixth.\n if (currentWeek.length === 0 && currentDate > lastDay) break;\n }\n\n return { weeks, month, year };\n};\n\nexport const getWeekdayNames = (locale = 'en-US', firstDayOfWeek = 0): string[] => {\n const baseDate = new Date(2025, 0, 5); // A Sunday\n const weekdays: string[] = [];\n\n for (let i = 0; i < DAYS_PER_WEEK; i++) {\n const date = addDays(baseDate, (i + firstDayOfWeek) % DAYS_PER_WEEK);\n weekdays.push(date.toLocaleDateString(locale, { weekday: 'narrow' }));\n }\n\n return weekdays;\n};\n\nexport const getMonthName = (month: number, year: number, locale = 'en-US'): string =>\n new Date(year, month, 1).toLocaleDateString(locale, { month: 'long', year: 'numeric' });\n"],"mappings":";AAEA,IAAM,gBAAgB;AAEtB,IAAM,YAAY;AAClB,IAAM,OAAO;AAIN,IAAM,gBAAgB,CAAC,SAAqB;AACjD,QAAM,aAAa,IAAI,KAAK,IAAI;AAChC,aAAW,SAAS,MAAM,GAAG,GAAG,CAAC;AACjC,SAAO;AACT;AAEO,IAAM,YAAY,CAAC,OAAa,UACrC,MAAM,YAAY,MAAM,MAAM,YAAY,KAC1C,MAAM,SAAS,MAAM,MAAM,SAAS,KACpC,MAAM,QAAQ,MAAM,MAAM,QAAQ;AAE7B,IAAM,YAAY,CAAC,MAAY,OAAa,QAAuB;AACxE,QAAM,aAAa,cAAc,IAAI;AACrC,SAAO,cAAc,cAAc,KAAK,KAAK,cAAc,cAAc,GAAG;AAC9E;AAEO,IAAM,UAAU,CAAC,MAAY,SAAuB;AACzD,QAAM,SAAS,IAAI,KAAK,IAAI;AAC5B,SAAO,QAAQ,OAAO,QAAQ,IAAI,IAAI;AACtC,SAAO;AACT;AAEO,IAAM,YAAY,CAAC,MAAY,WAAyB;AAC7D,QAAM,SAAS,IAAI,KAAK,IAAI;AAC5B,SAAO,SAAS,OAAO,SAAS,IAAI,MAAM;AAC1C,SAAO;AACT;AAEO,IAAM,cAAc,CAAC,MAAY,iBAAiB,MAAY;AACnE,QAAM,SAAS,IAAI,KAAK,IAAI;AAC5B,QAAM,MAAM,OAAO,OAAO;AAC1B,QAAM,QAAQ,MAAM,iBAAiB,gBAAgB,KAAK,MAAM;AAChE,SAAO,QAAQ,OAAO,QAAQ,IAAI,IAAI;AACtC,SAAO;AACT;AAGA,IAAM,aAAa,CAAC,SAClB,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC;AAErD,IAAM,SAAS,CAAC,SACd,GAAG,KAAK,YAAY,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC;AAErD,IAAM,sBAAsB,CACjC,OACA,MACA,iBAAiB,MACD;AAChB,QAAM,WAAW,IAAI,KAAK,MAAM,OAAO,CAAC;AACxC,QAAM,UAAU,WAAW,QAAQ;AACnC,QAAM,cAAc,YAAY,UAAU,cAAc;AAExD,QAAM,QAA4B,CAAC;AACnC,MAAI,cAAgC,CAAC;AAErC,WAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AAClC,gBAAY,KAAK;AAAA,MACf,MAAM,IAAI,KAAK,WAAW;AAAA,MAC1B,gBAAgB,YAAY,SAAS,MAAM;AAAA,MAC3C,KAAK,OAAO,WAAW;AAAA,IACzB,CAAC;AAED,QAAI,YAAY,WAAW,eAAe;AACxC,YAAM,KAAK,WAAW;AACtB,oBAAc,CAAC;AAAA,IACjB;AAEA,gBAAY,QAAQ,YAAY,QAAQ,IAAI,CAAC;AAI7C,QAAI,YAAY,WAAW,KAAK,cAAc,QAAS;AAAA,EACzD;AAEA,SAAO,EAAE,OAAO,OAAO,KAAK;AAC9B;AAEO,IAAM,kBAAkB,CAAC,SAAS,SAAS,iBAAiB,MAAgB;AACjF,QAAM,WAAW,IAAI,KAAK,MAAM,GAAG,CAAC;AACpC,QAAM,WAAqB,CAAC;AAE5B,WAAS,IAAI,GAAG,IAAI,eAAe,KAAK;AACtC,UAAM,OAAO,QAAQ,WAAW,IAAI,kBAAkB,aAAa;AACnE,aAAS,KAAK,KAAK,mBAAmB,QAAQ,EAAE,SAAS,SAAS,CAAC,CAAC;AAAA,EACtE;AAEA,SAAO;AACT;AAEO,IAAM,eAAe,CAAC,OAAe,MAAc,SAAS,YACjE,IAAI,KAAK,MAAM,OAAO,CAAC,EAAE,mBAAmB,QAAQ,EAAE,OAAO,QAAQ,MAAM,UAAU,CAAC;","names":[]}
@@ -1,90 +0,0 @@
1
- import {
2
- useCalendar
3
- } from "./chunk-ISW5K72V.js";
4
- import {
5
- resolveCalendarProps
6
- } from "./chunk-SUALMVL7.js";
7
- import {
8
- CalendarMonth
9
- } from "./chunk-UHQZ5XPW.js";
10
- import {
11
- rem,
12
- sxRem
13
- } from "./chunk-YKCAJ2TN.js";
14
-
15
- // src/components/form/Calendar/Calendar.tsx
16
- import Box from "@mui/material/Box/index.js";
17
- import Paper from "@mui/material/Paper/index.js";
18
- import React from "react";
19
- import { jsx, jsxs } from "react/jsx-runtime";
20
- var containerSx = (monthsToShow) => ({
21
- p: 3,
22
- display: "flex",
23
- flexDirection: monthsToShow > 1 ? "row" : "column",
24
- gap: 3,
25
- outline: "none",
26
- "&:focus-within": {
27
- outline: (theme) => `${rem(theme, 2)} solid`,
28
- outlineColor: "primary.main",
29
- outlineOffset: sxRem(2)
30
- }
31
- });
32
- var Calendar = React.forwardRef((componentProps, ref) => {
33
- const props = resolveCalendarProps(componentProps);
34
- const { monthsToShow, locale, renderHeader, renderFooter, className, ariaLabel } = props;
35
- const calendar = useCalendar(props);
36
- const dayContext = {
37
- selectionMode: props.selectionMode,
38
- value: props.value,
39
- range: props.range,
40
- showOutsideDays: props.showOutsideDays,
41
- renderDay: props.renderDay,
42
- dayClassName: props.dayClassName,
43
- hoveredDate: calendar.hoveredDate,
44
- focusedDate: calendar.focusedDate,
45
- today: calendar.today,
46
- isDisabled: calendar.isDisabled,
47
- onSelect: calendar.handleDateClick,
48
- onHover: calendar.handleDateMouseEnter,
49
- onHoverEnd: calendar.handleDateMouseLeave
50
- };
51
- return /* @__PURE__ */ jsxs(
52
- Paper,
53
- {
54
- ref,
55
- className,
56
- role: "application",
57
- "aria-label": ariaLabel,
58
- tabIndex: 0,
59
- onKeyDown: calendar.handleKeyDown,
60
- "data-testid": "calendar-container",
61
- sx: containerSx(monthsToShow),
62
- children: [
63
- /* @__PURE__ */ jsx(Box, { ref: calendar.gridRef, sx: { display: "flex", gap: 3, flexWrap: "wrap" }, children: calendar.monthMatrices.map((matrix, index) => /* @__PURE__ */ jsx(
64
- CalendarMonth,
65
- {
66
- matrix,
67
- monthIndex: index,
68
- monthsToShow,
69
- locale,
70
- weekdayNames: calendar.weekdayNames,
71
- renderHeader,
72
- onPreviousMonth: calendar.goToPreviousMonth,
73
- onNextMonth: calendar.goToNextMonth,
74
- dayContext
75
- },
76
- `month-${matrix.year}-${matrix.month}`
77
- )) }),
78
- renderFooter && /* @__PURE__ */ jsx(Box, { sx: { mt: 2, pt: 2, borderTop: 1, borderColor: "divider" }, children: renderFooter })
79
- ]
80
- }
81
- );
82
- });
83
- Calendar.displayName = "Calendar";
84
- var Calendar_default = Calendar;
85
-
86
- export {
87
- Calendar,
88
- Calendar_default
89
- };
90
- //# sourceMappingURL=chunk-TGMMUKOF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/Calendar/Calendar.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport Paper from '@mui/material/Paper/index.js';\nimport React from 'react';\n\nimport { rem, sxRem } from '../../../tokens/relative';\n\nimport { resolveCalendarProps } from './Calendar.helpers';\nimport { useCalendar } from './Calendar.hooks';\nimport type { CalendarProps } from './Calendar.types';\nimport type { DayCellContext } from './CalendarDayCell';\nimport { CalendarMonth } from './CalendarMonth';\n\nconst containerSx = (monthsToShow: number): SxProps<Theme> => ({\n p: 3,\n display: 'flex',\n flexDirection: monthsToShow > 1 ? 'row' : 'column',\n gap: 3,\n outline: 'none',\n '&:focus-within': {\n outline: (theme: Theme) => `${rem(theme, 2)} solid`,\n outlineColor: 'primary.main',\n outlineOffset: sxRem(2),\n },\n});\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>((componentProps, ref) => {\n const props = resolveCalendarProps(componentProps);\n const { monthsToShow, locale, renderHeader, renderFooter, className, ariaLabel } = props;\n\n const calendar = useCalendar(props);\n\n const dayContext: DayCellContext = {\n selectionMode: props.selectionMode,\n value: props.value,\n range: props.range,\n showOutsideDays: props.showOutsideDays,\n renderDay: props.renderDay,\n dayClassName: props.dayClassName,\n hoveredDate: calendar.hoveredDate,\n focusedDate: calendar.focusedDate,\n today: calendar.today,\n isDisabled: calendar.isDisabled,\n onSelect: calendar.handleDateClick,\n onHover: calendar.handleDateMouseEnter,\n onHoverEnd: calendar.handleDateMouseLeave,\n };\n\n return (\n <Paper\n ref={ref}\n className={className}\n role=\"application\"\n aria-label={ariaLabel}\n tabIndex={0}\n onKeyDown={calendar.handleKeyDown}\n data-testid=\"calendar-container\"\n sx={containerSx(monthsToShow)}\n >\n <Box ref={calendar.gridRef} sx={{ display: 'flex', gap: 3, flexWrap: 'wrap' }}>\n {calendar.monthMatrices.map((matrix, index) => (\n <CalendarMonth\n key={`month-${matrix.year}-${matrix.month}`}\n matrix={matrix}\n monthIndex={index}\n monthsToShow={monthsToShow}\n locale={locale}\n weekdayNames={calendar.weekdayNames}\n renderHeader={renderHeader}\n onPreviousMonth={calendar.goToPreviousMonth}\n onNextMonth={calendar.goToNextMonth}\n dayContext={dayContext}\n />\n ))}\n </Box>\n\n {renderFooter && (\n <Box sx={{ mt: 2, pt: 2, borderTop: 1, borderColor: 'divider' }}>{renderFooter}</Box>\n )}\n </Paper>\n );\n});\n\nCalendar.displayName = 'Calendar';\n\nexport default Calendar;\n"],"mappings":";;;;;;;;;;;;;;;AACA,OAAO,SAAS;AAChB,OAAO,WAAW;AAClB,OAAO,WAAW;AA8Cd,SAYM,KAZN;AApCJ,IAAM,cAAc,CAAC,kBAA0C;AAAA,EAC7D,GAAG;AAAA,EACH,SAAS;AAAA,EACT,eAAe,eAAe,IAAI,QAAQ;AAAA,EAC1C,KAAK;AAAA,EACL,SAAS;AAAA,EACT,kBAAkB;AAAA,IAChB,SAAS,CAAC,UAAiB,GAAG,IAAI,OAAO,CAAC,CAAC;AAAA,IAC3C,cAAc;AAAA,IACd,eAAe,MAAM,CAAC;AAAA,EACxB;AACF;AAEO,IAAM,WAAW,MAAM,WAA0C,CAAC,gBAAgB,QAAQ;AAC/F,QAAM,QAAQ,qBAAqB,cAAc;AACjD,QAAM,EAAE,cAAc,QAAQ,cAAc,cAAc,WAAW,UAAU,IAAI;AAEnF,QAAM,WAAW,YAAY,KAAK;AAElC,QAAM,aAA6B;AAAA,IACjC,eAAe,MAAM;AAAA,IACrB,OAAO,MAAM;AAAA,IACb,OAAO,MAAM;AAAA,IACb,iBAAiB,MAAM;AAAA,IACvB,WAAW,MAAM;AAAA,IACjB,cAAc,MAAM;AAAA,IACpB,aAAa,SAAS;AAAA,IACtB,aAAa,SAAS;AAAA,IACtB,OAAO,SAAS;AAAA,IAChB,YAAY,SAAS;AAAA,IACrB,UAAU,SAAS;AAAA,IACnB,SAAS,SAAS;AAAA,IAClB,YAAY,SAAS;AAAA,EACvB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,UAAU;AAAA,MACV,WAAW,SAAS;AAAA,MACpB,eAAY;AAAA,MACZ,IAAI,YAAY,YAAY;AAAA,MAE5B;AAAA,4BAAC,OAAI,KAAK,SAAS,SAAS,IAAI,EAAE,SAAS,QAAQ,KAAK,GAAG,UAAU,OAAO,GACzE,mBAAS,cAAc,IAAI,CAAC,QAAQ,UACnC;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA,YAAY;AAAA,YACZ;AAAA,YACA;AAAA,YACA,cAAc,SAAS;AAAA,YACvB;AAAA,YACA,iBAAiB,SAAS;AAAA,YAC1B,aAAa,SAAS;AAAA,YACtB;AAAA;AAAA,UATK,SAAS,OAAO,IAAI,IAAI,OAAO,KAAK;AAAA,QAU3C,CACD,GACH;AAAA,QAEC,gBACC,oBAAC,OAAI,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,WAAW,GAAG,aAAa,UAAU,GAAI,wBAAa;AAAA;AAAA;AAAA,EAEnF;AAEJ,CAAC;AAED,SAAS,cAAc;AAEvB,IAAO,mBAAQ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/CepField/CepField.tsx"],"sourcesContent":["'use client';\n\nimport type { CepFieldCopy } from \"../../../copy\";\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { cepDigits, formatCep, isValidCep } from '@12-apps/forms-core';\n\nimport { FormControl, FormLabel, FormMessage } from '../Form';\n// The outlined entry: CepField renders no variant, and the generic one would\n// ship MUI's FilledInput and Input to every screen with a CEP field (FUT-1054).\nimport { Input } from '../Input/outlined';\nimport type { CepAddress, CepFieldProps, CepLookupStatus } from './CepField.types';\n\n/** Everything {@link useCepLookup} needs, so the hook signature stays flat. */\ninterface LookupOptions {\n digits: string;\n complete: boolean;\n disabled: boolean;\n debounceMs: number;\n onLookup?: (cep: string) => Promise<CepAddress | null>;\n onResolved?: (address: CepAddress) => void;\n onNotFound?: () => void;\n}\n\n/**\n * Debounced, race-safe CEP resolution.\n *\n * Two guards earn their keep here: a monotonic sequence id, bumped\n * synchronously on every new query, so a slow response for a since-edited CEP\n * can never land; and a \"last queried\" marker, so re-rendering (or the caller\n * re-masking the same value) never re-hits the provider.\n */\nfunction useCepLookup({\n digits,\n complete,\n disabled,\n debounceMs,\n onLookup,\n onResolved,\n onNotFound,\n}: LookupOptions): CepLookupStatus {\n const [status, setStatus] = useState<CepLookupStatus>('idle');\n const lastQueriedRef = useRef('');\n const seqRef = useRef(0);\n // Latest callbacks, read at call time — keeps them out of the effect deps so\n // an inline arrow from the caller doesn't re-trigger the lookup every render.\n const lookupRef = useRef(onLookup);\n const resolvedRef = useRef(onResolved);\n const notFoundRef = useRef(onNotFound);\n lookupRef.current = onLookup;\n resolvedRef.current = onResolved;\n notFoundRef.current = onNotFound;\n\n useEffect(() => {\n if (!complete || disabled || !lookupRef.current) {\n // Editing away from a complete CEP drops any stale status and forgets the\n // last query, so re-typing the same CEP resolves again.\n seqRef.current += 1;\n setStatus('idle');\n lastQueriedRef.current = '';\n return;\n }\n if (lastQueriedRef.current === digits) return;\n\n const mySeq = (seqRef.current += 1);\n const handle = setTimeout(() => {\n lastQueriedRef.current = digits;\n setStatus('loading');\n void (async () => {\n // A failing lookup is treated exactly like \"not found\" — the user types\n // the address instead. Never surfaced as a crash. Going through\n // `Promise.resolve().then` rather than calling directly covers the two\n // failure modes an `await … .catch()` misses: a lookup that throws\n // SYNCHRONOUSLY, and one that returns something other than a promise.\n const address = await Promise.resolve()\n .then(() => lookupRef.current?.(digits))\n .catch(() => null);\n if (seqRef.current !== mySeq) return;\n setStatus(address ? 'found' : 'notfound');\n // A miss is reported too, so a caller that filled from a PREVIOUS CEP\n // can undo it rather than leaving that address under this CEP.\n if (address) resolvedRef.current?.(address);\n else notFoundRef.current?.();\n })();\n }, debounceMs);\n\n return () => clearTimeout(handle);\n }, [digits, complete, disabled, debounceMs]);\n\n return status;\n}\n\n/**\n * The lookup outcome as a live region, so screen readers announce it without\n * stealing focus. Silent while idle, and while the caller is showing its own\n * validation error (which would otherwise stack two messages).\n */\nfunction CepStatus({\n status,\n testId,\n suppressed,\n copy,\n}: {\n status: CepLookupStatus;\n testId: string;\n suppressed: boolean;\n copy: CepFieldCopy;\n}): React.ReactElement {\n const visible = !suppressed && status !== 'idle';\n return (\n <span id={`${testId}-status`} role=\"status\" aria-live=\"polite\">\n {visible && (\n <FormMessage error={status === 'notfound'} dataTestId={`${testId}-${status}`}>\n {copy[status as Exclude<CepLookupStatus, 'idle'>]}\n </FormMessage>\n )}\n </span>\n );\n}\n\n/**\n * A CEP input that fills the rest of the address in.\n *\n * The pattern every Brazilian form has used for twenty years: type eight\n * digits, and logradouro/bairro/cidade/UF arrive on their own. This is the\n * reusable half — masking, validation, debouncing, race-safety and status —\n * with the actual lookup injected via `onLookup`, so the same component serves\n * a supplier form, a store-location form or a delivery checkout without\n * knowing anything about providers or auth.\n *\n * Resolution is best-effort by design. A provider outage, an unknown CEP or a\n * timeout leaves the field exactly as usable as a plain text input — the user\n * types the address themselves. Autofill never blocks.\n *\n * @example\n * ```tsx\n * <CepField\n * value={cep}\n * onChange={setCep}\n * onLookup={(c) => fetch(`/api/…/lookup/cep/${c}`).then((r) => r.json()).then((b) => b.data)}\n * onResolved={(a) => { setStreet(a.street ?? ''); setCity(a.city ?? ''); }}\n * />\n * ```\n */\nexport function CepField({\n value,\n onChange,\n onLookup,\n onResolved,\n onNotFound,\n label = 'CEP',\n placeholder = '00000-000',\n error,\n disabled = false,\n debounceMs = 500,\n name = 'postalCode',\n dataTestId,\n copy,\n}: CepFieldProps): React.ReactElement {\n const testId = dataTestId ?? `cep-field-${name}`;\n\n const status = useCepLookup({\n digits: cepDigits(value),\n complete: isValidCep(value),\n disabled,\n debounceMs,\n onLookup,\n onResolved,\n onNotFound,\n });\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => onChange(formatCep(event.target.value)),\n [onChange],\n );\n\n return (\n <FormControl fullWidth>\n {label && (\n <FormLabel htmlFor={name} error={Boolean(error)}>\n {label}\n </FormLabel>\n )}\n <Input\n id={name}\n name={name}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"postal-code\"\n placeholder={placeholder}\n value={value}\n error={Boolean(error)}\n disabled={disabled}\n loading={status === 'loading'}\n onChange={handleChange}\n data-testid={testId}\n aria-describedby={`${testId}-status`}\n aria-busy={status === 'loading'}\n />\n {error && (\n <FormMessage error dataTestId={`${testId}-message`}>\n {error}\n </FormMessage>\n )}\n <CepStatus status={status} testId={testId} suppressed={Boolean(error)} copy={copy} />\n </FormControl>\n );\n}\n\nexport default CepField;\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/Calendar/CalendarMonth.tsx"],"sourcesContent":["import ChevronLeft from '@mui/icons-material/ChevronLeft';\nimport ChevronRight from '@mui/icons-material/ChevronRight';\nimport Box from '@mui/material/Box/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport { sxRem } from '../../../tokens/relative';\n\nimport { getMonthName } from './Calendar.dates';\nimport type { CalendarProps, MonthMatrix } from './Calendar.types';\nimport type { DayCellContext } from './CalendarDayCell';\nimport { CalendarDayCell } from './CalendarDayCell';\n\n/** The nav spacer's width and the weekday row's height, 32 design px through the type scale. */\nconst SPACER_WIDTH = sxRem(32);\n\n// `minmax(0, 1fr)`, not `1fr`: a bare `1fr` keeps each column at least its\n// content's width, which is what held the grid at 304px (FUT-3861).\nconst GRID_SX = { display: 'grid', gridTemplateColumns: 'repeat(7, minmax(0, 1fr))', gap: 0.5 } as const;\n\n/**\n * A month takes the room it is given, from nothing up to seven full cells and\n * their gaps (7 × 40 + 6 × 4 design px). Months side by side keep a 280 basis,\n * so a multi-month calendar still wraps rather than squeezing every month.\n */\nconst MONTH_SX = { flex: `1 1 ${sxRem(280)}`, minWidth: 0, maxWidth: sxRem(304) } as const;\n\n// Only the outermost months carry arrows; the ones between get a spacer so their\n// titles stay centred.\nconst MonthNavHeader: FC<{\n title: React.ReactNode;\n showPrevious: boolean;\n showNext: boolean;\n onPreviousMonth: () => void;\n onNextMonth: () => void;\n}> = ({ title, showPrevious, showNext, onPreviousMonth, onNextMonth }) => (\n <Box\n sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 2 }}\n data-testid=\"calendar-header\"\n >\n {showPrevious && (\n <IconButton onClick={onPreviousMonth} size=\"small\" data-testid=\"calendar-prev-month\">\n <ChevronLeft />\n </IconButton>\n )}\n\n <Typography\n variant=\"h6\"\n component=\"h2\"\n sx={{ fontWeight: 'bold', flex: 1, textAlign: 'center' }}\n >\n {title}\n </Typography>\n\n {showNext && (\n <IconButton onClick={onNextMonth} size=\"small\" data-testid=\"calendar-next-month\">\n <ChevronRight />\n </IconButton>\n )}\n\n {!showPrevious && !showNext && <Box sx={{ width: SPACER_WIDTH }} />}\n </Box>\n);\n\nconst WeekdayHeader: FC<{ weekdayNames: string[] }> = ({ weekdayNames }) => (\n <Box sx={{ ...GRID_SX, mb: 1 }}>\n {weekdayNames.map((weekday, index) => (\n <Box\n // Narrow weekday names repeat within a week ('S', 'T'), so position is\n // the only stable key here.\n key={`weekday-${index}`}\n role=\"columnheader\"\n data-testid={`calendar-weekday-${index}`}\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: SPACER_WIDTH,\n fontSize: sxRem(14),\n fontWeight: 'bold',\n color: 'text.secondary',\n }}\n >\n {weekday}\n </Box>\n ))}\n </Box>\n);\n\nexport interface CalendarMonthProps {\n matrix: MonthMatrix;\n monthIndex: number;\n monthsToShow: number;\n locale: string;\n weekdayNames: string[];\n renderHeader?: CalendarProps['renderHeader'];\n onPreviousMonth: () => void;\n onNextMonth: () => void;\n dayContext: DayCellContext;\n}\n\nexport const CalendarMonth: FC<CalendarMonthProps> = ({\n matrix,\n monthIndex,\n monthsToShow,\n locale,\n weekdayNames,\n renderHeader,\n onPreviousMonth,\n onNextMonth,\n dayContext,\n}) => {\n const monthName = getMonthName(matrix.month, matrix.year, locale);\n const title = renderHeader ? renderHeader({ month: matrix.month, year: matrix.year }) : monthName;\n\n return (\n /* The month is addressable by its position, because in a multi-month\n calendar every day number appears once PER MONTH — `calendar-date-5` is\n January's 5th and February's. Without a per-month hook a test can only\n reach a day positionally, which is exactly what the flakiness gate\n refuses. Additive: `calendar-grid` below is unchanged. */\n <Box sx={MONTH_SX} data-testid={`calendar-month-${monthIndex}`}>\n <MonthNavHeader\n title={title}\n showPrevious={monthIndex === 0}\n showNext={monthIndex === monthsToShow - 1}\n onPreviousMonth={onPreviousMonth}\n onNextMonth={onNextMonth}\n />\n\n <WeekdayHeader weekdayNames={weekdayNames} />\n\n <Box\n role=\"grid\"\n aria-labelledby={`month-${monthIndex}`}\n data-testid=\"calendar-grid\"\n sx={GRID_SX}\n >\n {matrix.weeks.flat().map((day) => (\n <CalendarDayCell key={day.key} day={day} {...dayContext} />\n ))}\n </Box>\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;;;AAAA,OAAO,iBAAiB;AACxB,OAAO,kBAAkB;AACzB,OAAO,SAAS;AAChB,OAAO,gBAAgB;AACvB,OAAO,gBAAgB;AAkCrB,SAMM,KANN;AAtBF,IAAM,eAAe,MAAM,EAAE;AAI7B,IAAM,UAAU,EAAE,SAAS,QAAQ,qBAAqB,6BAA6B,KAAK,IAAI;AAO9F,IAAM,WAAW,EAAE,MAAM,OAAO,MAAM,GAAG,CAAC,IAAI,UAAU,GAAG,UAAU,MAAM,GAAG,EAAE;AAIhF,IAAM,iBAMD,CAAC,EAAE,OAAO,cAAc,UAAU,iBAAiB,YAAY,MAClE;AAAA,EAAC;AAAA;AAAA,IACC,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,gBAAgB,iBAAiB,IAAI,EAAE;AAAA,IACpF,eAAY;AAAA,IAEX;AAAA,sBACC,oBAAC,cAAW,SAAS,iBAAiB,MAAK,SAAQ,eAAY,uBAC7D,8BAAC,eAAY,GACf;AAAA,MAGF;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,WAAU;AAAA,UACV,IAAI,EAAE,YAAY,QAAQ,MAAM,GAAG,WAAW,SAAS;AAAA,UAEtD;AAAA;AAAA,MACH;AAAA,MAEC,YACC,oBAAC,cAAW,SAAS,aAAa,MAAK,SAAQ,eAAY,uBACzD,8BAAC,gBAAa,GAChB;AAAA,MAGD,CAAC,gBAAgB,CAAC,YAAY,oBAAC,OAAI,IAAI,EAAE,OAAO,aAAa,GAAG;AAAA;AAAA;AACnE;AAGF,IAAM,gBAAgD,CAAC,EAAE,aAAa,MACpE,oBAAC,OAAI,IAAI,EAAE,GAAG,SAAS,IAAI,EAAE,GAC1B,uBAAa,IAAI,CAAC,SAAS,UAC1B;AAAA,EAAC;AAAA;AAAA,IAIC,MAAK;AAAA,IACL,eAAa,oBAAoB,KAAK;AAAA,IACtC,IAAI;AAAA,MACF,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,UAAU,MAAM,EAAE;AAAA,MAClB,YAAY;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,IAEC;AAAA;AAAA,EAbI,WAAW,KAAK;AAcvB,CACD,GACH;AAeK,IAAM,gBAAwC,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,YAAY,aAAa,OAAO,OAAO,OAAO,MAAM,MAAM;AAChE,QAAM,QAAQ,eAAe,aAAa,EAAE,OAAO,OAAO,OAAO,MAAM,OAAO,KAAK,CAAC,IAAI;AAExF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAME,qBAAC,OAAI,IAAI,UAAU,eAAa,kBAAkB,UAAU,IAC1D;AAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,cAAc,eAAe;AAAA,UAC7B,UAAU,eAAe,eAAe;AAAA,UACxC;AAAA,UACA;AAAA;AAAA,MACF;AAAA,MAEA,oBAAC,iBAAc,cAA4B;AAAA,MAE3C;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,mBAAiB,SAAS,UAAU;AAAA,UACpC,eAAY;AAAA,UACZ,IAAI;AAAA,UAEH,iBAAO,MAAM,KAAK,EAAE,IAAI,CAAC,QACxB,oBAAC,mBAA8B,KAAW,GAAG,cAAvB,IAAI,GAA+B,CAC1D;AAAA;AAAA,MACH;AAAA,OACF;AAAA;AAEJ;","names":[]}