@12-apps/ui 6.80.0 → 6.82.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 (599) hide show
  1. package/components-catalog.md +3 -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/Command/Command.hooks.js +2 -2
  109. package/dist/_internal/components/form/Command/Command.js +4 -4
  110. package/dist/_internal/components/form/Command/Command.parts.js +2 -2
  111. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.dates.js +2 -2
  112. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +5 -5
  113. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +21 -15
  114. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.quick.js +3 -3
  115. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +4 -4
  116. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +5 -5
  117. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.dom.js +2 -2
  118. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.format.js +3 -3
  119. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.hooks.js +4 -4
  120. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +5 -5
  121. package/dist/_internal/components/form/index.js +37 -32
  122. package/dist/_internal/components/form/total-form/FormErrorSnackbar.js +3 -3
  123. package/dist/_internal/components/form/total-form/SubmitButton.js +3 -3
  124. package/dist/_internal/components/index.js +159 -154
  125. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +2 -2
  126. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +3 -3
  127. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +2 -2
  128. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +2 -2
  129. package/dist/_internal/components/layout/Dashboard/Dashboard.js +2 -2
  130. package/dist/_internal/components/layout/Drawer/Drawer.js +2 -2
  131. package/dist/_internal/components/layout/SettingCard/SettingCard.js +7 -7
  132. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +3 -3
  133. package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +6 -6
  134. package/dist/_internal/components/layout/SettingCard/SettingGrid.js +4 -4
  135. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +8 -8
  136. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +7 -7
  137. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +8 -8
  138. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +2 -2
  139. package/dist/_internal/components/layout/TableFilter/TableFilter.js +2 -2
  140. package/dist/_internal/components/layout/index.js +20 -20
  141. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +9 -9
  142. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +2 -2
  143. package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.js +2 -2
  144. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +3 -3
  145. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +2 -2
  146. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +4 -4
  147. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +5 -5
  148. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +3 -3
  149. package/dist/_internal/components/navigation/index.js +18 -18
  150. package/dist/_internal/components/typography/Code/Code.js +2 -2
  151. package/dist/_internal/components/typography/index.js +2 -2
  152. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.js +2 -2
  153. package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.js +3 -3
  154. package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.parts.js +2 -2
  155. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +2 -2
  156. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +5 -5
  157. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +3 -3
  158. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +4 -4
  159. package/dist/_internal/components/utility/index.js +8 -8
  160. package/dist/_internal/en-US.labels.js +1 -1
  161. package/dist/_internal/pt-BR.labels.js +1 -1
  162. package/dist/_internal/social-login-button/social-login-button.js +4 -4
  163. package/dist/_internal/user-avatar/user-avatar.js +7 -7
  164. package/dist/charts.js +17 -17
  165. package/dist/{chunk-5JDY5W7O.js → chunk-2SBQ47RI.js} +3 -3
  166. package/dist/{chunk-Y3YZBB74.js → chunk-2ZMR3TZU.js} +2 -2
  167. package/dist/{chunk-RIDCGFGM.js → chunk-34FX3NRZ.js} +2 -2
  168. package/dist/{chunk-7H5BIZ33.js → chunk-37G7M2GJ.js} +4 -4
  169. package/dist/{chunk-VAGGIRLA.js → chunk-3RHU2Y2N.js} +3 -3
  170. package/dist/{chunk-QYX4567K.js → chunk-3S352ZSG.js} +2 -2
  171. package/dist/{chunk-L4FWEI2P.js → chunk-3V3Z4EML.js} +5 -5
  172. package/dist/{chunk-W3EVATBS.js → chunk-3YFDGFEK.js} +5 -5
  173. package/dist/{chunk-VJG43WKU.js → chunk-45AON4CS.js} +2 -2
  174. package/dist/{chunk-GX2LIB4T.js → chunk-4IG73U2X.js} +2 -2
  175. package/dist/{chunk-DD3VFDB2.js → chunk-4IVEBBF6.js} +3 -3
  176. package/dist/{chunk-DE2GWZ6X.js → chunk-4J62V5OE.js} +3 -3
  177. package/dist/{chunk-V65YK5DC.js → chunk-4QGMUHAU.js} +2 -2
  178. package/dist/{chunk-6IVR5HFI.js → chunk-4UCXJYOO.js} +6 -6
  179. package/dist/{chunk-UK3DSFMK.js → chunk-54F7QIV2.js} +2 -2
  180. package/dist/{chunk-ZDBG7QG2.js → chunk-54OJAOXC.js} +8 -8
  181. package/dist/{chunk-634Z7HGN.js → chunk-5CP6VW5H.js} +6 -6
  182. package/dist/{chunk-52UVUVYQ.js → chunk-5RPT32EL.js} +2 -2
  183. package/dist/chunk-66TCKXOB.js +102 -0
  184. package/dist/chunk-66TCKXOB.js.map +1 -0
  185. package/dist/{chunk-QADTI63U.js → chunk-6ATXOJVQ.js} +4 -4
  186. package/dist/{chunk-GMU5AA3R.js → chunk-6OYB3MRF.js} +5 -5
  187. package/dist/{chunk-OCLEKMBP.js → chunk-73BMQ3VC.js} +2 -2
  188. package/dist/{chunk-4NVEUJXK.js → chunk-76IHYINM.js} +5 -5
  189. package/dist/{chunk-OOCD2QR3.js → chunk-7QKFMMWK.js} +2 -2
  190. package/dist/{chunk-Z52W7FEU.js → chunk-7W5X3KQ2.js} +2 -2
  191. package/dist/{chunk-EOQ6EKTS.js → chunk-7XSCEHGA.js} +7 -7
  192. package/dist/{chunk-OTION43A.js → chunk-A5U7HEBI.js} +12 -12
  193. package/dist/{chunk-XF47LPCF.js → chunk-ABVIMFSD.js} +2 -2
  194. package/dist/{chunk-ABJOW7EK.js → chunk-ALOEOGQV.js} +4 -4
  195. package/dist/{chunk-HI7JPDD6.js → chunk-AMLHEKSV.js} +5 -5
  196. package/dist/{chunk-BLHSLB5D.js → chunk-APBIQH4G.js} +3 -3
  197. package/dist/{chunk-RMZQHJEP.js → chunk-ATJTGQYE.js} +2 -2
  198. package/dist/{chunk-URAX2JPM.js → chunk-B32XH7NK.js} +3 -3
  199. package/dist/{chunk-BX6CF2UG.js → chunk-BLNFOP2O.js} +4 -4
  200. package/dist/{chunk-NGXDOWUP.js → chunk-BNBWUXT3.js} +4 -4
  201. package/dist/{chunk-LHRAHDJF.js → chunk-BO6IMK5P.js} +3 -3
  202. package/dist/{chunk-7UDQJOZZ.js → chunk-C347NNZJ.js} +2 -2
  203. package/dist/{chunk-NWNHSASQ.js → chunk-CAOL4AIB.js} +2 -2
  204. package/dist/{chunk-TLZR6UPJ.js → chunk-COK65GX2.js} +2 -2
  205. package/dist/{chunk-BMVLTTTC.js → chunk-CY4XIZNW.js} +2 -2
  206. package/dist/{chunk-UF4JFRLE.js → chunk-D22FGMGU.js} +5 -5
  207. package/dist/{chunk-LDPN55AA.js → chunk-D3W5A4N6.js} +2 -2
  208. package/dist/{chunk-B67KUCWU.js → chunk-D5Y4PNC5.js} +2 -2
  209. package/dist/{chunk-775LIZXS.js → chunk-D72GD4XC.js} +5 -5
  210. package/dist/{chunk-TLVKJBPM.js → chunk-DAFFZED3.js} +6 -6
  211. package/dist/{chunk-BLZDSCIZ.js → chunk-DYHOBKPU.js} +6 -6
  212. package/dist/{chunk-FB4GLQQO.js → chunk-E3E4L7MH.js} +7 -7
  213. package/dist/{chunk-HWKBCLKD.js → chunk-E5OBAS3U.js} +2 -2
  214. package/dist/{chunk-WWIYYXY3.js → chunk-E72INDBL.js} +2 -2
  215. package/dist/{chunk-UYNJ3FYE.js → chunk-EOIRU62W.js} +3 -3
  216. package/dist/{chunk-G3SWMBZS.js → chunk-EWFBDAB7.js} +2 -2
  217. package/dist/{chunk-NSS3X7FK.js → chunk-EYFDIUVR.js} +2 -2
  218. package/dist/{chunk-UCQRJTCI.js → chunk-GANJRIT3.js} +2 -2
  219. package/dist/{chunk-H3NXDKFH.js → chunk-GM7BG3SD.js} +2 -2
  220. package/dist/chunk-GVSRBFP3.js +118 -0
  221. package/dist/chunk-GVSRBFP3.js.map +1 -0
  222. package/dist/{chunk-SM2O6D5F.js → chunk-GYFKIPR2.js} +2 -2
  223. package/dist/{chunk-4PREA2R5.js → chunk-HBH7V3IP.js} +2 -2
  224. package/dist/{chunk-LUNN5GTB.js → chunk-HF2WLLGH.js} +2 -2
  225. package/dist/{chunk-U67CX4FL.js → chunk-HKQQ2NED.js} +2 -2
  226. package/dist/{chunk-JVOEVTCZ.js → chunk-HQCZT6TO.js} +5 -5
  227. package/dist/{chunk-SUALMVL7.js → chunk-I4K5JMS4.js} +4 -2
  228. package/dist/chunk-I4K5JMS4.js.map +1 -0
  229. package/dist/{chunk-C7LHIDVB.js → chunk-ICKR3QTG.js} +3 -3
  230. package/dist/{chunk-3B7EJIG7.js → chunk-IMYKJTVX.js} +2 -2
  231. package/dist/{chunk-J7CIRTWQ.js → chunk-J34VGMA5.js} +3 -3
  232. package/dist/chunk-J6LIZXSF.js +124 -0
  233. package/dist/chunk-J6LIZXSF.js.map +1 -0
  234. package/dist/{chunk-DWLSYFQW.js → chunk-JK3QB7MO.js} +3 -3
  235. package/dist/{chunk-6B7VZFAO.js → chunk-JMDT3GQ3.js} +3 -3
  236. package/dist/{chunk-E2Y7G4MP.js → chunk-JV2JIUDT.js} +2 -2
  237. package/dist/{chunk-BTDY2NYV.js → chunk-JXK53XJW.js} +11 -11
  238. package/dist/{chunk-K3PMMW23.js → chunk-K6VEN5VN.js} +4 -4
  239. package/dist/{chunk-YOQAK2RN.js → chunk-KES3HNSU.js} +2 -2
  240. package/dist/{chunk-BFBCTF2Y.js → chunk-KF3Q3C3P.js} +2 -2
  241. package/dist/{chunk-MKRJUT5O.js → chunk-KSJBFT4G.js} +6 -6
  242. package/dist/{chunk-AISCD6W6.js → chunk-L5KPBMMF.js} +2 -2
  243. package/dist/{chunk-ZT73ACK3.js → chunk-LCGK22QQ.js} +7 -7
  244. package/dist/{chunk-B2RNNJRO.js → chunk-LNIK7FJO.js} +2 -2
  245. package/dist/{chunk-B25SHVWP.js → chunk-LODYTVOO.js} +4 -4
  246. package/dist/{chunk-763AHWKU.js → chunk-LOHQLARB.js} +2 -2
  247. package/dist/{chunk-7HYLXERK.js → chunk-LRIPJ2D5.js} +4 -4
  248. package/dist/{chunk-F5SUBK42.js → chunk-LXIPBHNJ.js} +6 -6
  249. package/dist/{chunk-CFDYQSN6.js → chunk-LZ5PGB7U.js} +7 -7
  250. package/dist/{chunk-FFQ4NOJT.js → chunk-LZOCNAUA.js} +2 -2
  251. package/dist/{chunk-BLVFHVDM.js → chunk-MLGAGZJ3.js} +19 -19
  252. package/dist/{chunk-QVEJGFRP.js → chunk-MNNIOQTQ.js} +3 -3
  253. package/dist/{chunk-AFSXC5FU.js → chunk-MSJP2AEN.js} +2 -2
  254. package/dist/{chunk-KSOIFQJ6.js → chunk-MT74NRLY.js} +7 -7
  255. package/dist/{chunk-PAKLYZ6G.js → chunk-N557OEZR.js} +4 -4
  256. package/dist/{chunk-DKRMOIX2.js → chunk-NASLJO2R.js} +2 -2
  257. package/dist/{chunk-QVDEGBME.js → chunk-NQCTANF3.js} +7 -7
  258. package/dist/{chunk-AOBQ3KYY.js → chunk-NZDIO5UG.js} +4 -4
  259. package/dist/{chunk-5USHYSCO.js → chunk-OKDAHCYE.js} +4 -4
  260. package/dist/{chunk-ZIHSCBMN.js → chunk-OUI5IPS6.js} +10 -10
  261. package/dist/{chunk-PGBIUO2A.js → chunk-PEMXXFXL.js} +3 -3
  262. package/dist/{chunk-FCCOUOP7.js → chunk-PEVBSNCD.js} +2 -2
  263. package/dist/{chunk-UHQZ5XPW.js → chunk-POUNFTG3.js} +24 -11
  264. package/dist/chunk-POUNFTG3.js.map +1 -0
  265. package/dist/{chunk-HTGK7QCX.js → chunk-Q7QQXNL7.js} +2 -2
  266. package/dist/{chunk-A7LBWRRW.js → chunk-QCYQL3ST.js} +2 -2
  267. package/dist/{chunk-XDDKRACZ.js → chunk-QHFAKEZZ.js} +3 -3
  268. package/dist/{chunk-6EERXU6R.js → chunk-QTLM2YY2.js} +2 -2
  269. package/dist/{chunk-TERT6TIS.js → chunk-QWOI5BZV.js} +9 -4
  270. package/dist/chunk-QWOI5BZV.js.map +1 -0
  271. package/dist/{chunk-QKLSHNOH.js → chunk-R26WP22N.js} +2 -2
  272. package/dist/{chunk-7S3NG2AO.js → chunk-RB3R6BJL.js} +7 -7
  273. package/dist/{chunk-SXNGH56D.js → chunk-RBW5QQXW.js} +12 -12
  274. package/dist/{chunk-PJNIJIE6.js → chunk-RCTHCXS6.js} +2 -2
  275. package/dist/{chunk-DT22MDC3.js → chunk-RDRXTH47.js} +7 -7
  276. package/dist/{chunk-JMUZ5JZA.js → chunk-RWCQ6TEM.js} +2 -2
  277. package/dist/{chunk-TIM4PXWN.js → chunk-SB2SEGR6.js} +3 -3
  278. package/dist/chunk-SUCVFEPT.js +138 -0
  279. package/dist/chunk-SUCVFEPT.js.map +1 -0
  280. package/dist/{chunk-FRAVVI4A.js → chunk-SUTOAW7I.js} +2 -2
  281. package/dist/{chunk-RQ3IS5NQ.js → chunk-SYERREN5.js} +6 -6
  282. package/dist/{chunk-TAR5LSGT.js → chunk-T77OVQEO.js} +2 -2
  283. package/dist/{chunk-VRKNVZZQ.js → chunk-TJUWSQYQ.js} +9 -1
  284. package/dist/{chunk-VRKNVZZQ.js.map → chunk-TJUWSQYQ.js.map} +1 -1
  285. package/dist/{chunk-V6DMNSW6.js → chunk-TPAMLIN7.js} +3 -3
  286. package/dist/{chunk-ISW5K72V.js → chunk-TPMT3J32.js} +16 -8
  287. package/dist/chunk-TPMT3J32.js.map +1 -0
  288. package/dist/{chunk-7DODMQRK.js → chunk-UBVKMM3V.js} +2 -2
  289. package/dist/{chunk-5463SZOH.js → chunk-UERGWYGY.js} +2 -2
  290. package/dist/{chunk-G6ET2DRL.js → chunk-UJACXYC2.js} +3 -3
  291. package/dist/{chunk-SYZVXWEQ.js → chunk-UQ5GJPVZ.js} +3 -3
  292. package/dist/{chunk-KW2KCPZF.js → chunk-UQ6SAIX7.js} +4 -4
  293. package/dist/{chunk-GHTVBYFA.js → chunk-UWVVKUCG.js} +4 -4
  294. package/dist/{chunk-EXKK73UN.js → chunk-UYKIUUWP.js} +2 -2
  295. package/dist/{chunk-HWUFOII2.js → chunk-VQ6V5TO7.js} +2 -2
  296. package/dist/{chunk-OT4HIG7S.js → chunk-VUBFCHXL.js} +4 -4
  297. package/dist/{chunk-A4B27HYU.js → chunk-WPFVQVQC.js} +4 -4
  298. package/dist/chunk-WQEGPSGD.js +61 -0
  299. package/dist/chunk-WQEGPSGD.js.map +1 -0
  300. package/dist/{chunk-DB7OJM6X.js → chunk-WWB43LWU.js} +2 -2
  301. package/dist/{chunk-HFZE2PGM.js → chunk-X4J576GR.js} +2 -2
  302. package/dist/{chunk-NF5TATKP.js → chunk-XATRYJ4Q.js} +5 -5
  303. package/dist/{chunk-6KCJNERH.js → chunk-XCUHGPPZ.js} +2 -2
  304. package/dist/{chunk-3LQLLL2J.js → chunk-XE7QBHXN.js} +2 -2
  305. package/dist/{chunk-YMKSPW4T.js → chunk-XKPV52CG.js} +3 -3
  306. package/dist/{native/chunks/chunk-DUELD4HY.js → chunk-XOXXG7Q5.js} +9 -1
  307. package/dist/{chunk-O2RXSXSF.js.map → chunk-XOXXG7Q5.js.map} +1 -1
  308. package/dist/{chunk-I4NDZFTB.js → chunk-XXUTD74L.js} +3 -3
  309. package/dist/{chunk-PF2A2IM7.js → chunk-YGLAGY74.js} +2 -2
  310. package/dist/{chunk-4JV46KXS.js → chunk-YHKHHSZH.js} +4 -4
  311. package/dist/{chunk-6S7CFH6V.js → chunk-YJPBNIEM.js} +3 -3
  312. package/dist/{chunk-DWCH6GH5.js → chunk-YQIT3ET7.js} +2 -2
  313. package/dist/{chunk-G3JFESKD.js → chunk-Z5WUSI47.js} +6 -6
  314. package/dist/{chunk-SCQARHMU.js → chunk-ZANWHTXH.js} +2 -2
  315. package/dist/{chunk-A3Z7ZXLM.js → chunk-ZGAOA7LN.js} +8 -8
  316. package/dist/{chunk-72GJRV5J.js → chunk-ZNJGEDCE.js} +2 -2
  317. package/dist/{chunk-TGZ6GPYQ.js → chunk-ZYZPSBNQ.js} +3 -3
  318. package/dist/chunk-ZZGG6AUD.js +54 -0
  319. package/dist/chunk-ZZGG6AUD.js.map +1 -0
  320. package/dist/data-display/Alert.js +3 -3
  321. package/dist/data-display/AlertDialog.js +3 -3
  322. package/dist/data-display/AsyncStateContainer.js +6 -6
  323. package/dist/data-display/Avatar.js +4 -4
  324. package/dist/data-display/CardKit.js +21 -21
  325. package/dist/data-display/Carousel.js +4 -4
  326. package/dist/data-display/Chart.js +17 -17
  327. package/dist/data-display/DataGrid.js +2 -2
  328. package/dist/data-display/DataViews.js +86 -86
  329. package/dist/data-display/EmptyState.js +3 -3
  330. package/dist/data-display/ErrorState.js +2 -2
  331. package/dist/data-display/FleetMap.js +14 -14
  332. package/dist/data-display/InteractiveTooltip.js +2 -2
  333. package/dist/data-display/LazyImage.js +2 -2
  334. package/dist/data-display/Lightbox.js +6 -6
  335. package/dist/data-display/LoadingState.js +2 -2
  336. package/dist/data-display/MapPreview.js +6 -6
  337. package/dist/data-display/Progress.js +2 -2
  338. package/dist/data-display/SectionOnboarding.js +5 -5
  339. package/dist/data-display/Sheet.js +6 -6
  340. package/dist/data-display/Stepper.js +2 -2
  341. package/dist/data-display/Table.js +5 -5
  342. package/dist/data-display/Timeline.js +2 -2
  343. package/dist/en-US.js +1 -1
  344. package/dist/feedback/ConfirmAction.js +11 -11
  345. package/dist/feedback/Dialog.js +3 -3
  346. package/dist/feedback/NotificationStatusNotice.js +6 -6
  347. package/dist/feedback/SequenceResolver.js +14 -14
  348. package/dist/feedback/Sonner.js +2 -2
  349. package/dist/feedback/StackedModal.js +7 -7
  350. package/dist/feedback/Toast.js +2 -2
  351. package/dist/form/AddressAutocomplete.js +6 -6
  352. package/dist/form/Autocomplete.js +2 -2
  353. package/dist/form/Button.js +2 -2
  354. package/dist/form/Calendar.js +15 -8
  355. package/dist/form/Command.js +4 -4
  356. package/dist/form/DateRangePicker.js +21 -15
  357. package/dist/form/RichTextEditor.js +5 -5
  358. package/dist/form/total-form.js +6 -6
  359. package/dist/layout/ContentToolbar.js +6 -6
  360. package/dist/layout/Dashboard.js +2 -2
  361. package/dist/layout/Drawer.js +2 -2
  362. package/dist/layout/SettingCard.js +11 -11
  363. package/dist/layout/SettingsLayout.js +2 -2
  364. package/dist/layout/TableFilter.js +2 -2
  365. package/dist/locales.js +2 -2
  366. package/dist/native/chunks/{chunk-7AVFQB6A.js → chunk-FXA5DLKR.js} +3 -3
  367. package/dist/native/chunks/{chunk-67CYDCHZ.js → chunk-IN3XZ7EK.js} +2 -2
  368. package/dist/{chunk-O2RXSXSF.js → native/chunks/chunk-QHW7JEPZ.js} +9 -1
  369. package/dist/native/chunks/{chunk-DUELD4HY.js.map → chunk-QHW7JEPZ.js.map} +1 -1
  370. package/dist/native/data-display/Avatar.js +1 -1
  371. package/dist/native/data-display/Badge.js +1 -1
  372. package/dist/native/data-display/Chip.js +1 -1
  373. package/dist/native/data-display/EmptyState.js +3 -3
  374. package/dist/native/data-display/ErrorState.js +2 -2
  375. package/dist/native/data-display/FleetMap.js +3 -3
  376. package/dist/native/data-display/LoadingState.js +1 -1
  377. package/dist/native/feedback/Dialog.js +1 -1
  378. package/dist/native/form/Button.js +2 -2
  379. package/dist/native/form/Checkbox.js +1 -1
  380. package/dist/native/form/Input.js +1 -1
  381. package/dist/native/form/Switch.js +1 -1
  382. package/dist/navigation/AppHeader.js +11 -11
  383. package/dist/navigation/Breadcrumbs.js +2 -2
  384. package/dist/navigation/NavigationMenu.js +3 -3
  385. package/dist/navigation/SectionNav.js +5 -5
  386. package/dist/pt-BR.js +1 -1
  387. package/dist/social-login-button.js +4 -4
  388. package/dist/types/components/form/Calendar/Calendar.d.ts.map +1 -1
  389. package/dist/types/components/form/Calendar/Calendar.dates.d.ts +11 -1
  390. package/dist/types/components/form/Calendar/Calendar.dates.d.ts.map +1 -1
  391. package/dist/types/components/form/Calendar/Calendar.helpers.d.ts.map +1 -1
  392. package/dist/types/components/form/Calendar/Calendar.hooks.d.ts +3 -0
  393. package/dist/types/components/form/Calendar/Calendar.hooks.d.ts.map +1 -1
  394. package/dist/types/components/form/Calendar/Calendar.picker.d.ts +29 -0
  395. package/dist/types/components/form/Calendar/Calendar.picker.d.ts.map +1 -0
  396. package/dist/types/components/form/Calendar/Calendar.types.d.ts +22 -1
  397. package/dist/types/components/form/Calendar/Calendar.types.d.ts.map +1 -1
  398. package/dist/types/components/form/Calendar/Calendar.views.d.ts +41 -0
  399. package/dist/types/components/form/Calendar/Calendar.views.d.ts.map +1 -0
  400. package/dist/types/components/form/Calendar/CalendarMonth.d.ts +17 -0
  401. package/dist/types/components/form/Calendar/CalendarMonth.d.ts.map +1 -1
  402. package/dist/types/components/form/Calendar/CalendarPickerGrid.d.ts +28 -0
  403. package/dist/types/components/form/Calendar/CalendarPickerGrid.d.ts.map +1 -0
  404. package/dist/types/components/form/Calendar/CalendarSelectorsCaption.d.ts +29 -0
  405. package/dist/types/components/form/Calendar/CalendarSelectorsCaption.d.ts.map +1 -0
  406. package/dist/types/components/form/Calendar/CalendarSelectorsMonth.d.ts +23 -0
  407. package/dist/types/components/form/Calendar/CalendarSelectorsMonth.d.ts.map +1 -0
  408. package/dist/types/components/form/Calendar/index.d.ts +1 -1
  409. package/dist/types/components/form/Calendar/index.d.ts.map +1 -1
  410. package/dist/types/copy/labels.d.ts +18 -0
  411. package/dist/types/copy/labels.d.ts.map +1 -1
  412. package/dist/types/en-US.labels.d.ts.map +1 -1
  413. package/dist/types/pt-BR.labels.d.ts.map +1 -1
  414. package/dist/types-native/copy/labels.d.ts +18 -0
  415. package/dist/types-native/copy/labels.d.ts.map +1 -1
  416. package/dist/types-native/en-US.labels.d.ts.map +1 -1
  417. package/dist/typography/Code.js +2 -2
  418. package/dist/user-avatar.js +7 -7
  419. package/dist/utility/AnimatedIcon.js +2 -2
  420. package/dist/utility/InfiniteScroll.js +3 -3
  421. package/dist/utility/WorkflowStep.js +5 -5
  422. package/package.json +1 -1
  423. package/src/components/data-display/AlertDialog/AlertDialog.md +1 -0
  424. package/src/components/data-display/Badge/Badge.md +1 -0
  425. package/src/components/data-display/Carousel/Carousel.md +6 -0
  426. package/src/components/data-display/Chip/chip.md +1 -0
  427. package/src/components/data-display/LazyImage/LazyImage.md +2 -0
  428. package/src/components/data-display/Stepper/Stepper.md +5 -0
  429. package/src/components/data-display/Table/Table.md +1 -0
  430. package/src/components/data-display/Timeline/Timeline.md +1 -0
  431. package/src/components/feedback/Dialog/Dialog.md +2 -0
  432. package/src/components/feedback/StackedModal/StackedModal.md +1 -0
  433. package/src/components/feedback/Toast/Toast.md +2 -0
  434. package/src/components/form/Button/Button.md +1 -0
  435. package/src/components/form/Calendar/Calendar.dates.ts +16 -1
  436. package/src/components/form/Calendar/Calendar.helpers.ts +4 -0
  437. package/src/components/form/Calendar/Calendar.hooks.ts +13 -3
  438. package/src/components/form/Calendar/Calendar.md +121 -0
  439. package/src/components/form/Calendar/Calendar.picker.ts +89 -0
  440. package/src/components/form/Calendar/Calendar.tsx +78 -30
  441. package/src/components/form/Calendar/Calendar.types.ts +25 -1
  442. package/src/components/form/Calendar/Calendar.views.ts +101 -0
  443. package/src/components/form/Calendar/CalendarMonth.tsx +30 -13
  444. package/src/components/form/Calendar/CalendarPickerGrid.tsx +139 -0
  445. package/src/components/form/Calendar/CalendarSelectorsCaption.tsx +163 -0
  446. package/src/components/form/Calendar/CalendarSelectorsMonth.tsx +137 -0
  447. package/src/components/form/Calendar/index.ts +1 -0
  448. package/src/components/form/Checkbox/Checkbox.md +1 -0
  449. package/src/components/form/Input/Input.md +1 -0
  450. package/src/components/form/RichTextEditor/RichTextEditor.md +3 -2
  451. package/src/components/form/Switch/Switch.md +1 -0
  452. package/src/components/layout/ContentToolbar/ContentToolbar.md +12 -0
  453. package/src/components/layout/Dashboard/Dashboard.md +3 -0
  454. package/src/components/navigation/NavigationMenu/NavigationMenu.md +2 -0
  455. package/src/components/typography/Code/Code.md +10 -0
  456. package/src/components/utility/InfiniteScroll/InfiniteScroll.md +1 -0
  457. package/src/components/utility/WorkflowStep/WorkflowStep.md +1 -0
  458. package/src/copy/labels.ts +19 -0
  459. package/src/en-US.labels.ts +8 -0
  460. package/src/pt-BR.labels.ts +8 -0
  461. package/dist/chunk-ISW5K72V.js.map +0 -1
  462. package/dist/chunk-SUALMVL7.js.map +0 -1
  463. package/dist/chunk-TERT6TIS.js.map +0 -1
  464. package/dist/chunk-TGMMUKOF.js +0 -90
  465. package/dist/chunk-TGMMUKOF.js.map +0 -1
  466. package/dist/chunk-UHQZ5XPW.js.map +0 -1
  467. /package/dist/{chunk-5JDY5W7O.js.map → chunk-2SBQ47RI.js.map} +0 -0
  468. /package/dist/{chunk-Y3YZBB74.js.map → chunk-2ZMR3TZU.js.map} +0 -0
  469. /package/dist/{chunk-RIDCGFGM.js.map → chunk-34FX3NRZ.js.map} +0 -0
  470. /package/dist/{chunk-7H5BIZ33.js.map → chunk-37G7M2GJ.js.map} +0 -0
  471. /package/dist/{chunk-VAGGIRLA.js.map → chunk-3RHU2Y2N.js.map} +0 -0
  472. /package/dist/{chunk-QYX4567K.js.map → chunk-3S352ZSG.js.map} +0 -0
  473. /package/dist/{chunk-L4FWEI2P.js.map → chunk-3V3Z4EML.js.map} +0 -0
  474. /package/dist/{chunk-W3EVATBS.js.map → chunk-3YFDGFEK.js.map} +0 -0
  475. /package/dist/{chunk-VJG43WKU.js.map → chunk-45AON4CS.js.map} +0 -0
  476. /package/dist/{chunk-GX2LIB4T.js.map → chunk-4IG73U2X.js.map} +0 -0
  477. /package/dist/{chunk-DD3VFDB2.js.map → chunk-4IVEBBF6.js.map} +0 -0
  478. /package/dist/{chunk-DE2GWZ6X.js.map → chunk-4J62V5OE.js.map} +0 -0
  479. /package/dist/{chunk-V65YK5DC.js.map → chunk-4QGMUHAU.js.map} +0 -0
  480. /package/dist/{chunk-6IVR5HFI.js.map → chunk-4UCXJYOO.js.map} +0 -0
  481. /package/dist/{chunk-UK3DSFMK.js.map → chunk-54F7QIV2.js.map} +0 -0
  482. /package/dist/{chunk-ZDBG7QG2.js.map → chunk-54OJAOXC.js.map} +0 -0
  483. /package/dist/{chunk-634Z7HGN.js.map → chunk-5CP6VW5H.js.map} +0 -0
  484. /package/dist/{chunk-52UVUVYQ.js.map → chunk-5RPT32EL.js.map} +0 -0
  485. /package/dist/{chunk-QADTI63U.js.map → chunk-6ATXOJVQ.js.map} +0 -0
  486. /package/dist/{chunk-GMU5AA3R.js.map → chunk-6OYB3MRF.js.map} +0 -0
  487. /package/dist/{chunk-OCLEKMBP.js.map → chunk-73BMQ3VC.js.map} +0 -0
  488. /package/dist/{chunk-4NVEUJXK.js.map → chunk-76IHYINM.js.map} +0 -0
  489. /package/dist/{chunk-OOCD2QR3.js.map → chunk-7QKFMMWK.js.map} +0 -0
  490. /package/dist/{chunk-Z52W7FEU.js.map → chunk-7W5X3KQ2.js.map} +0 -0
  491. /package/dist/{chunk-EOQ6EKTS.js.map → chunk-7XSCEHGA.js.map} +0 -0
  492. /package/dist/{chunk-OTION43A.js.map → chunk-A5U7HEBI.js.map} +0 -0
  493. /package/dist/{chunk-XF47LPCF.js.map → chunk-ABVIMFSD.js.map} +0 -0
  494. /package/dist/{chunk-ABJOW7EK.js.map → chunk-ALOEOGQV.js.map} +0 -0
  495. /package/dist/{chunk-HI7JPDD6.js.map → chunk-AMLHEKSV.js.map} +0 -0
  496. /package/dist/{chunk-BLHSLB5D.js.map → chunk-APBIQH4G.js.map} +0 -0
  497. /package/dist/{chunk-RMZQHJEP.js.map → chunk-ATJTGQYE.js.map} +0 -0
  498. /package/dist/{chunk-URAX2JPM.js.map → chunk-B32XH7NK.js.map} +0 -0
  499. /package/dist/{chunk-BX6CF2UG.js.map → chunk-BLNFOP2O.js.map} +0 -0
  500. /package/dist/{chunk-NGXDOWUP.js.map → chunk-BNBWUXT3.js.map} +0 -0
  501. /package/dist/{chunk-LHRAHDJF.js.map → chunk-BO6IMK5P.js.map} +0 -0
  502. /package/dist/{chunk-7UDQJOZZ.js.map → chunk-C347NNZJ.js.map} +0 -0
  503. /package/dist/{chunk-NWNHSASQ.js.map → chunk-CAOL4AIB.js.map} +0 -0
  504. /package/dist/{chunk-TLZR6UPJ.js.map → chunk-COK65GX2.js.map} +0 -0
  505. /package/dist/{chunk-BMVLTTTC.js.map → chunk-CY4XIZNW.js.map} +0 -0
  506. /package/dist/{chunk-UF4JFRLE.js.map → chunk-D22FGMGU.js.map} +0 -0
  507. /package/dist/{chunk-LDPN55AA.js.map → chunk-D3W5A4N6.js.map} +0 -0
  508. /package/dist/{chunk-B67KUCWU.js.map → chunk-D5Y4PNC5.js.map} +0 -0
  509. /package/dist/{chunk-775LIZXS.js.map → chunk-D72GD4XC.js.map} +0 -0
  510. /package/dist/{chunk-TLVKJBPM.js.map → chunk-DAFFZED3.js.map} +0 -0
  511. /package/dist/{chunk-BLZDSCIZ.js.map → chunk-DYHOBKPU.js.map} +0 -0
  512. /package/dist/{chunk-FB4GLQQO.js.map → chunk-E3E4L7MH.js.map} +0 -0
  513. /package/dist/{chunk-HWKBCLKD.js.map → chunk-E5OBAS3U.js.map} +0 -0
  514. /package/dist/{chunk-WWIYYXY3.js.map → chunk-E72INDBL.js.map} +0 -0
  515. /package/dist/{chunk-UYNJ3FYE.js.map → chunk-EOIRU62W.js.map} +0 -0
  516. /package/dist/{chunk-G3SWMBZS.js.map → chunk-EWFBDAB7.js.map} +0 -0
  517. /package/dist/{chunk-NSS3X7FK.js.map → chunk-EYFDIUVR.js.map} +0 -0
  518. /package/dist/{chunk-UCQRJTCI.js.map → chunk-GANJRIT3.js.map} +0 -0
  519. /package/dist/{chunk-H3NXDKFH.js.map → chunk-GM7BG3SD.js.map} +0 -0
  520. /package/dist/{chunk-SM2O6D5F.js.map → chunk-GYFKIPR2.js.map} +0 -0
  521. /package/dist/{chunk-4PREA2R5.js.map → chunk-HBH7V3IP.js.map} +0 -0
  522. /package/dist/{chunk-LUNN5GTB.js.map → chunk-HF2WLLGH.js.map} +0 -0
  523. /package/dist/{chunk-U67CX4FL.js.map → chunk-HKQQ2NED.js.map} +0 -0
  524. /package/dist/{chunk-JVOEVTCZ.js.map → chunk-HQCZT6TO.js.map} +0 -0
  525. /package/dist/{chunk-C7LHIDVB.js.map → chunk-ICKR3QTG.js.map} +0 -0
  526. /package/dist/{chunk-3B7EJIG7.js.map → chunk-IMYKJTVX.js.map} +0 -0
  527. /package/dist/{chunk-J7CIRTWQ.js.map → chunk-J34VGMA5.js.map} +0 -0
  528. /package/dist/{chunk-DWLSYFQW.js.map → chunk-JK3QB7MO.js.map} +0 -0
  529. /package/dist/{chunk-6B7VZFAO.js.map → chunk-JMDT3GQ3.js.map} +0 -0
  530. /package/dist/{chunk-E2Y7G4MP.js.map → chunk-JV2JIUDT.js.map} +0 -0
  531. /package/dist/{chunk-BTDY2NYV.js.map → chunk-JXK53XJW.js.map} +0 -0
  532. /package/dist/{chunk-K3PMMW23.js.map → chunk-K6VEN5VN.js.map} +0 -0
  533. /package/dist/{chunk-YOQAK2RN.js.map → chunk-KES3HNSU.js.map} +0 -0
  534. /package/dist/{chunk-BFBCTF2Y.js.map → chunk-KF3Q3C3P.js.map} +0 -0
  535. /package/dist/{chunk-MKRJUT5O.js.map → chunk-KSJBFT4G.js.map} +0 -0
  536. /package/dist/{chunk-AISCD6W6.js.map → chunk-L5KPBMMF.js.map} +0 -0
  537. /package/dist/{chunk-ZT73ACK3.js.map → chunk-LCGK22QQ.js.map} +0 -0
  538. /package/dist/{chunk-B2RNNJRO.js.map → chunk-LNIK7FJO.js.map} +0 -0
  539. /package/dist/{chunk-B25SHVWP.js.map → chunk-LODYTVOO.js.map} +0 -0
  540. /package/dist/{chunk-763AHWKU.js.map → chunk-LOHQLARB.js.map} +0 -0
  541. /package/dist/{chunk-7HYLXERK.js.map → chunk-LRIPJ2D5.js.map} +0 -0
  542. /package/dist/{chunk-F5SUBK42.js.map → chunk-LXIPBHNJ.js.map} +0 -0
  543. /package/dist/{chunk-CFDYQSN6.js.map → chunk-LZ5PGB7U.js.map} +0 -0
  544. /package/dist/{chunk-FFQ4NOJT.js.map → chunk-LZOCNAUA.js.map} +0 -0
  545. /package/dist/{chunk-BLVFHVDM.js.map → chunk-MLGAGZJ3.js.map} +0 -0
  546. /package/dist/{chunk-QVEJGFRP.js.map → chunk-MNNIOQTQ.js.map} +0 -0
  547. /package/dist/{chunk-AFSXC5FU.js.map → chunk-MSJP2AEN.js.map} +0 -0
  548. /package/dist/{chunk-KSOIFQJ6.js.map → chunk-MT74NRLY.js.map} +0 -0
  549. /package/dist/{chunk-PAKLYZ6G.js.map → chunk-N557OEZR.js.map} +0 -0
  550. /package/dist/{chunk-DKRMOIX2.js.map → chunk-NASLJO2R.js.map} +0 -0
  551. /package/dist/{chunk-QVDEGBME.js.map → chunk-NQCTANF3.js.map} +0 -0
  552. /package/dist/{chunk-AOBQ3KYY.js.map → chunk-NZDIO5UG.js.map} +0 -0
  553. /package/dist/{chunk-5USHYSCO.js.map → chunk-OKDAHCYE.js.map} +0 -0
  554. /package/dist/{chunk-ZIHSCBMN.js.map → chunk-OUI5IPS6.js.map} +0 -0
  555. /package/dist/{chunk-PGBIUO2A.js.map → chunk-PEMXXFXL.js.map} +0 -0
  556. /package/dist/{chunk-FCCOUOP7.js.map → chunk-PEVBSNCD.js.map} +0 -0
  557. /package/dist/{chunk-HTGK7QCX.js.map → chunk-Q7QQXNL7.js.map} +0 -0
  558. /package/dist/{chunk-A7LBWRRW.js.map → chunk-QCYQL3ST.js.map} +0 -0
  559. /package/dist/{chunk-XDDKRACZ.js.map → chunk-QHFAKEZZ.js.map} +0 -0
  560. /package/dist/{chunk-6EERXU6R.js.map → chunk-QTLM2YY2.js.map} +0 -0
  561. /package/dist/{chunk-QKLSHNOH.js.map → chunk-R26WP22N.js.map} +0 -0
  562. /package/dist/{chunk-7S3NG2AO.js.map → chunk-RB3R6BJL.js.map} +0 -0
  563. /package/dist/{chunk-SXNGH56D.js.map → chunk-RBW5QQXW.js.map} +0 -0
  564. /package/dist/{chunk-PJNIJIE6.js.map → chunk-RCTHCXS6.js.map} +0 -0
  565. /package/dist/{chunk-DT22MDC3.js.map → chunk-RDRXTH47.js.map} +0 -0
  566. /package/dist/{chunk-JMUZ5JZA.js.map → chunk-RWCQ6TEM.js.map} +0 -0
  567. /package/dist/{chunk-TIM4PXWN.js.map → chunk-SB2SEGR6.js.map} +0 -0
  568. /package/dist/{chunk-FRAVVI4A.js.map → chunk-SUTOAW7I.js.map} +0 -0
  569. /package/dist/{chunk-RQ3IS5NQ.js.map → chunk-SYERREN5.js.map} +0 -0
  570. /package/dist/{chunk-TAR5LSGT.js.map → chunk-T77OVQEO.js.map} +0 -0
  571. /package/dist/{chunk-V6DMNSW6.js.map → chunk-TPAMLIN7.js.map} +0 -0
  572. /package/dist/{chunk-7DODMQRK.js.map → chunk-UBVKMM3V.js.map} +0 -0
  573. /package/dist/{chunk-5463SZOH.js.map → chunk-UERGWYGY.js.map} +0 -0
  574. /package/dist/{chunk-G6ET2DRL.js.map → chunk-UJACXYC2.js.map} +0 -0
  575. /package/dist/{chunk-SYZVXWEQ.js.map → chunk-UQ5GJPVZ.js.map} +0 -0
  576. /package/dist/{chunk-KW2KCPZF.js.map → chunk-UQ6SAIX7.js.map} +0 -0
  577. /package/dist/{chunk-GHTVBYFA.js.map → chunk-UWVVKUCG.js.map} +0 -0
  578. /package/dist/{chunk-EXKK73UN.js.map → chunk-UYKIUUWP.js.map} +0 -0
  579. /package/dist/{chunk-HWUFOII2.js.map → chunk-VQ6V5TO7.js.map} +0 -0
  580. /package/dist/{chunk-OT4HIG7S.js.map → chunk-VUBFCHXL.js.map} +0 -0
  581. /package/dist/{chunk-A4B27HYU.js.map → chunk-WPFVQVQC.js.map} +0 -0
  582. /package/dist/{chunk-DB7OJM6X.js.map → chunk-WWB43LWU.js.map} +0 -0
  583. /package/dist/{chunk-HFZE2PGM.js.map → chunk-X4J576GR.js.map} +0 -0
  584. /package/dist/{chunk-NF5TATKP.js.map → chunk-XATRYJ4Q.js.map} +0 -0
  585. /package/dist/{chunk-6KCJNERH.js.map → chunk-XCUHGPPZ.js.map} +0 -0
  586. /package/dist/{chunk-3LQLLL2J.js.map → chunk-XE7QBHXN.js.map} +0 -0
  587. /package/dist/{chunk-YMKSPW4T.js.map → chunk-XKPV52CG.js.map} +0 -0
  588. /package/dist/{chunk-I4NDZFTB.js.map → chunk-XXUTD74L.js.map} +0 -0
  589. /package/dist/{chunk-PF2A2IM7.js.map → chunk-YGLAGY74.js.map} +0 -0
  590. /package/dist/{chunk-4JV46KXS.js.map → chunk-YHKHHSZH.js.map} +0 -0
  591. /package/dist/{chunk-6S7CFH6V.js.map → chunk-YJPBNIEM.js.map} +0 -0
  592. /package/dist/{chunk-DWCH6GH5.js.map → chunk-YQIT3ET7.js.map} +0 -0
  593. /package/dist/{chunk-G3JFESKD.js.map → chunk-Z5WUSI47.js.map} +0 -0
  594. /package/dist/{chunk-SCQARHMU.js.map → chunk-ZANWHTXH.js.map} +0 -0
  595. /package/dist/{chunk-A3Z7ZXLM.js.map → chunk-ZGAOA7LN.js.map} +0 -0
  596. /package/dist/{chunk-72GJRV5J.js.map → chunk-ZNJGEDCE.js.map} +0 -0
  597. /package/dist/{chunk-TGZ6GPYQ.js.map → chunk-ZYZPSBNQ.js.map} +0 -0
  598. /package/dist/native/chunks/{chunk-7AVFQB6A.js.map → chunk-FXA5DLKR.js.map} +0 -0
  599. /package/dist/native/chunks/{chunk-67CYDCHZ.js.map → chunk-IN3XZ7EK.js.map} +0 -0
@@ -0,0 +1,139 @@
1
+ import type { SxProps, Theme } from '@mui/material/styles/index.js';
2
+ import Box from '@mui/material/Box/index.js';
3
+ import type { FC } from 'react';
4
+ import React, { useEffect, useRef, useState } from 'react';
5
+
6
+ import { rem, sxRem } from '../../../tokens/relative';
7
+
8
+ import { moveInGrid } from './Calendar.views';
9
+
10
+ /** A pick button's smallest edge: a touch target at any width (44 design px). */
11
+ const TARGET_SIZE = sxRem(44);
12
+
13
+ export interface PickerOption {
14
+ value: number;
15
+ label: string;
16
+ /** The accessible name, when the visible label is an abbreviation ("mar"). */
17
+ ariaLabel?: string;
18
+ disabled: boolean;
19
+ /** The month or year the calendar is showing. */
20
+ current: boolean;
21
+ }
22
+
23
+ const inkFor = ({ current, disabled }: PickerOption): string => {
24
+ if (current) return 'primary.contrastText';
25
+ return disabled ? 'text.disabled' : 'text.primary';
26
+ };
27
+
28
+ const optionSx = (option: PickerOption): SxProps<Theme> => ({
29
+ minHeight: TARGET_SIZE,
30
+ minWidth: 0,
31
+ boxSizing: 'border-box',
32
+ padding: 0,
33
+ font: 'inherit',
34
+ typography: 'body1',
35
+ border: 1,
36
+ borderColor: option.current ? 'primary.main' : 'divider',
37
+ borderRadius: 1,
38
+ backgroundColor: option.current ? 'primary.main' : 'transparent',
39
+ color: inkFor(option),
40
+ cursor: option.disabled ? 'not-allowed' : 'pointer',
41
+ '&:hover': { backgroundColor: option.current || option.disabled ? undefined : 'action.hover' },
42
+ '&:focus-visible': {
43
+ outline: (theme: Theme) => `${rem(theme, 2)} solid`,
44
+ outlineColor: 'primary.main',
45
+ outlineOffset: sxRem(1),
46
+ },
47
+ });
48
+
49
+ // The grid fills the box the day grid leaves (see CalendarSelectorsMonth), so
50
+ // opening it never resizes the calendar: a short grid's rows stretch to fill
51
+ // it, a long one scrolls inside it.
52
+ const gridSx = (columns: number, scrollable: boolean): SxProps<Theme> => ({
53
+ display: 'grid',
54
+ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`,
55
+ gap: 1,
56
+ boxSizing: 'border-box',
57
+ height: '100%',
58
+ // Room for the focus ring of the edge buttons inside the box.
59
+ p: 0.5,
60
+ ...(scrollable ? { alignContent: 'start', overflowY: 'auto' } : { gridAutoRows: '1fr' }),
61
+ });
62
+
63
+ export interface CalendarPickerGridProps {
64
+ id: string;
65
+ ariaLabel: string;
66
+ columns: number;
67
+ options: PickerOption[];
68
+ testId: string;
69
+ scrollable?: boolean;
70
+ onPick: (value: number) => void;
71
+ onDismiss: () => void;
72
+ }
73
+
74
+ /**
75
+ * The month or year grid that stands in for the days. One tab stop (roving
76
+ * `tabIndex`); arrows, Home and End move it, Enter/Space pick, Escape goes back
77
+ * to the days unchanged. Out-of-bounds options stay focusable and say
78
+ * `aria-disabled`, so the arrows never skip a hole a reader cannot explain.
79
+ */
80
+ export const CalendarPickerGrid: FC<CalendarPickerGridProps> = ({
81
+ id,
82
+ ariaLabel,
83
+ columns,
84
+ options,
85
+ testId,
86
+ scrollable = false,
87
+ onPick,
88
+ onDismiss,
89
+ }) => {
90
+ const [active, setActive] = useState(() => Math.max(options.findIndex((option) => option.current), 0));
91
+ const buttons = useRef<Array<HTMLButtonElement | null>>([]);
92
+
93
+ // Also runs on mount: opening the grid puts focus on the shown month/year,
94
+ // which scrolls a long year list to it.
95
+ useEffect(() => {
96
+ buttons.current[active]?.focus();
97
+ }, [active]);
98
+
99
+ const handleKeyDown = (event: React.KeyboardEvent) => {
100
+ // The calendar's own day keys must not move a day nobody can see.
101
+ event.stopPropagation();
102
+ if (event.key === 'Escape') {
103
+ event.preventDefault();
104
+ onDismiss();
105
+ return;
106
+ }
107
+ const next = moveInGrid(event.key, active, columns, options.length);
108
+ if (next === null) return;
109
+ event.preventDefault();
110
+ setActive(next);
111
+ };
112
+
113
+ return (
114
+ <Box id={id} role="group" aria-label={ariaLabel} data-testid={testId} onKeyDown={handleKeyDown} sx={gridSx(columns, scrollable)}>
115
+ {options.map((option, index) => (
116
+ <Box
117
+ key={option.value}
118
+ component="button"
119
+ type="button"
120
+ ref={(node: HTMLButtonElement | null) => {
121
+ buttons.current[index] = node;
122
+ }}
123
+ tabIndex={index === active ? 0 : -1}
124
+ aria-current={option.current ? 'true' : undefined}
125
+ aria-disabled={option.disabled || undefined}
126
+ aria-label={option.ariaLabel}
127
+ data-testid={`${testId}-${option.value}`}
128
+ onFocus={() => setActive(index)}
129
+ onClick={() => {
130
+ if (!option.disabled) onPick(option.value);
131
+ }}
132
+ sx={optionSx(option)}
133
+ >
134
+ {option.label}
135
+ </Box>
136
+ ))}
137
+ </Box>
138
+ );
139
+ };
@@ -0,0 +1,163 @@
1
+ import ArrowDropDown from '@mui/icons-material/ArrowDropDown';
2
+ import ChevronLeft from '@mui/icons-material/ChevronLeft';
3
+ import ChevronRight from '@mui/icons-material/ChevronRight';
4
+ import Box from '@mui/material/Box/index.js';
5
+ import Button from '@mui/material/Button/index.js';
6
+ import IconButton from '@mui/material/IconButton/index.js';
7
+ import type { FC } from 'react';
8
+ import React from 'react';
9
+
10
+ import type { CalendarLabels } from '../../../copy/labels';
11
+ import { sxRem } from '../../../tokens/relative';
12
+
13
+ import type { CalendarView } from './Calendar.views';
14
+
15
+ /** Every control in the caption is a touch target at any width (44 design px). */
16
+ const TARGET_SIZE = sxRem(44);
17
+
18
+ /**
19
+ * The shown month over every month name, hidden: the button keeps the width of
20
+ * the longest, so stepping from Agosto to Setembro moves nothing.
21
+ */
22
+ const MonthText: FC<{ text: string; names: string[] }> = ({ text, names }) => (
23
+ <Box component="span" sx={{ display: 'inline-grid', justifyItems: 'start' }}>
24
+ {names.map((name) => (
25
+ <Box key={name} component="span" aria-hidden sx={{ gridArea: '1 / 1', visibility: 'hidden' }}>
26
+ {name}
27
+ </Box>
28
+ ))}
29
+ <Box component="span" data-testid="calendar-month-select-text" sx={{ gridArea: '1 / 1' }}>
30
+ {text}
31
+ </Box>
32
+ </Box>
33
+ );
34
+
35
+ const SelectorButton: FC<{
36
+ testId: string;
37
+ text: React.ReactNode;
38
+ ariaLabel: string;
39
+ expanded: boolean;
40
+ controls: string;
41
+ onClick: () => void;
42
+ }> = ({ testId, text, ariaLabel, expanded, controls, onClick }) => (
43
+ <Button
44
+ type="button"
45
+ color="inherit"
46
+ data-testid={testId}
47
+ aria-label={ariaLabel}
48
+ aria-expanded={expanded}
49
+ aria-controls={expanded ? controls : undefined}
50
+ endIcon={<ArrowDropDown />}
51
+ onClick={onClick}
52
+ sx={{
53
+ minHeight: TARGET_SIZE,
54
+ px: 0.5,
55
+ whiteSpace: 'nowrap',
56
+ textTransform: 'none',
57
+ typography: 'subtitle1',
58
+ fontWeight: 'bold',
59
+ border: 1,
60
+ borderColor: 'divider',
61
+ backgroundColor: expanded ? 'action.selected' : 'transparent',
62
+ }}
63
+ >
64
+ {text}
65
+ </Button>
66
+ );
67
+
68
+ const ARROW_SX = { width: TARGET_SIZE, height: TARGET_SIZE } as const;
69
+
70
+ export interface CalendarSelectorsCaptionProps {
71
+ monthText: string;
72
+ /** Every month's name in the locale, which sizes the month button. */
73
+ monthNames: string[];
74
+ year: number;
75
+ view: CalendarView;
76
+ labels: CalendarLabels;
77
+ /** The id of the pick grid each button opens. */
78
+ monthsId: string;
79
+ yearsId: string;
80
+ canGoPrevious: boolean;
81
+ canGoNext: boolean;
82
+ onToggle: (view: Exclude<CalendarView, 'days'>) => void;
83
+ /** Escape on a caption control closes an open grid; with none open it is the host's. */
84
+ onEscape: () => void;
85
+ onPreviousMonth: () => void;
86
+ onNextMonth: () => void;
87
+ }
88
+
89
+ /**
90
+ * `<Month> ▾` and `<Year> ▾`, then the month arrows. Its keys are its own: the
91
+ * container's day keys would otherwise turn Enter on a button into a day pick.
92
+ * Escape is the exception while no grid is open, so the sheet or popover that
93
+ * holds the calendar still closes on it.
94
+ */
95
+ export const CalendarSelectorsCaption: FC<CalendarSelectorsCaptionProps> = ({
96
+ monthText,
97
+ monthNames,
98
+ year,
99
+ view,
100
+ labels,
101
+ monthsId,
102
+ yearsId,
103
+ canGoPrevious,
104
+ canGoNext,
105
+ onToggle,
106
+ onEscape,
107
+ onPreviousMonth,
108
+ onNextMonth,
109
+ }) => (
110
+ <Box
111
+ data-testid="calendar-header"
112
+ onKeyDown={(event) => {
113
+ if (event.key === 'Escape' && view === 'days') return;
114
+ event.stopPropagation();
115
+ if (event.key === 'Escape') onEscape();
116
+ }}
117
+ // Two groups that wrap rather than squeeze: in a 320 sheet the arrows take
118
+ // a second line, and no button shrinks below a touch target. The month
119
+ // button is as wide as the longest month name, so whether they wrap depends
120
+ // on the width only, never on the month shown.
121
+ sx={{ display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: 1, mb: 2 }}
122
+ >
123
+ <Box sx={{ display: 'flex', gap: 0.5 }}>
124
+ <SelectorButton
125
+ testId="calendar-month-select"
126
+ text={<MonthText text={monthText} names={monthNames} />}
127
+ ariaLabel={labels.chooseMonth(monthText)}
128
+ expanded={view === 'months'}
129
+ controls={monthsId}
130
+ onClick={() => onToggle('months')}
131
+ />
132
+ <SelectorButton
133
+ testId="calendar-year-select"
134
+ text={String(year)}
135
+ ariaLabel={labels.chooseYear(year)}
136
+ expanded={view === 'years'}
137
+ controls={yearsId}
138
+ onClick={() => onToggle('years')}
139
+ />
140
+ </Box>
141
+
142
+ <Box sx={{ display: 'flex', ml: 'auto' }}>
143
+ <IconButton
144
+ aria-label={labels.previousMonth}
145
+ disabled={!canGoPrevious}
146
+ onClick={onPreviousMonth}
147
+ data-testid="calendar-prev-month"
148
+ sx={ARROW_SX}
149
+ >
150
+ <ChevronLeft />
151
+ </IconButton>
152
+ <IconButton
153
+ aria-label={labels.nextMonth}
154
+ disabled={!canGoNext}
155
+ onClick={onNextMonth}
156
+ data-testid="calendar-next-month"
157
+ sx={ARROW_SX}
158
+ >
159
+ <ChevronRight />
160
+ </IconButton>
161
+ </Box>
162
+ </Box>
163
+ );
@@ -0,0 +1,137 @@
1
+ import Box from '@mui/material/Box/index.js';
2
+ import type { FC } from 'react';
3
+ import React, { useId } from 'react';
4
+
5
+ import type { CalendarLabels } from '../../../copy/labels';
6
+
7
+ import { getMonthLabel } from './Calendar.dates';
8
+ import type { CalendarPicker } from './Calendar.picker';
9
+ import type { MonthMatrix } from './Calendar.types';
10
+ import type { DateBounds } from './Calendar.views';
11
+ import { MONTH_INDEXES, canShiftMonth, isMonthOutOfBounds, isYearOutOfBounds, yearOptions } from './Calendar.views';
12
+ import type { DayCellContext } from './CalendarDayCell';
13
+ import { MONTH_SX, MonthDays } from './CalendarMonth';
14
+ import type { PickerOption } from './CalendarPickerGrid';
15
+ import { CalendarPickerGrid } from './CalendarPickerGrid';
16
+ import { CalendarSelectorsCaption } from './CalendarSelectorsCaption';
17
+
18
+ /** The days and the open grid share one cell, so opening a grid never resizes the calendar. */
19
+ const BODY_SX = { display: 'grid' } as const;
20
+
21
+ /** Adds no height of its own; a long year list scrolls inside the days' height. */
22
+ const PICKER_SLOT_SX = {
23
+ gridArea: '1 / 1',
24
+ height: 0,
25
+ minHeight: '100%',
26
+ } as const;
27
+
28
+ const YEAR_COLUMNS = 4;
29
+ const MONTH_COLUMNS = 3;
30
+
31
+ export interface CalendarSelectorsMonthProps {
32
+ matrix: MonthMatrix;
33
+ locale: string;
34
+ weekdayNames: string[];
35
+ dayContext: DayCellContext;
36
+ bounds: DateBounds;
37
+ labels: CalendarLabels;
38
+ picker: CalendarPicker;
39
+ onPreviousMonth: () => void;
40
+ onNextMonth: () => void;
41
+ }
42
+
43
+ const monthOptions = ({ year, month }: MonthMatrix, locale: string, bounds: DateBounds): PickerOption[] =>
44
+ MONTH_INDEXES.map((index) => ({
45
+ value: index,
46
+ label: getMonthLabel(index, locale, 'short'),
47
+ ariaLabel: getMonthLabel(index, locale, 'long'),
48
+ disabled: isMonthOutOfBounds(year, index, bounds),
49
+ current: index === month,
50
+ }));
51
+
52
+ // The list is cut at the bounds' years, so only a shown year outside them is
53
+ // disabled.
54
+ const yearPickerOptions = ({ year }: MonthMatrix, bounds: DateBounds): PickerOption[] =>
55
+ yearOptions(bounds, year).map((option) => ({
56
+ value: option,
57
+ label: String(option),
58
+ disabled: isYearOutOfBounds(option, bounds),
59
+ current: option === year,
60
+ }));
61
+
62
+ /**
63
+ * The one month of `captionLayout="selectors"`: the month/year caption over the
64
+ * days, or over the month or year grid that stands in for them.
65
+ */
66
+ export const CalendarSelectorsMonth: FC<CalendarSelectorsMonthProps> = ({
67
+ matrix,
68
+ locale,
69
+ weekdayNames,
70
+ dayContext,
71
+ bounds,
72
+ labels,
73
+ picker,
74
+ onPreviousMonth,
75
+ onNextMonth,
76
+ }) => {
77
+ const idPrefix = useId();
78
+ const monthsId = `${idPrefix}-months`;
79
+ const yearsId = `${idPrefix}-years`;
80
+ const shown = new Date(matrix.year, matrix.month, 1);
81
+
82
+ const picking = picker.view !== 'days';
83
+
84
+ return (
85
+ <Box sx={MONTH_SX} data-testid="calendar-month-0">
86
+ <CalendarSelectorsCaption
87
+ monthText={getMonthLabel(matrix.month, locale, 'long')}
88
+ monthNames={MONTH_INDEXES.map((index) => getMonthLabel(index, locale, 'long'))}
89
+ year={matrix.year}
90
+ view={picker.view}
91
+ labels={labels}
92
+ monthsId={monthsId}
93
+ yearsId={yearsId}
94
+ canGoPrevious={canShiftMonth(shown, -1, bounds)}
95
+ canGoNext={canShiftMonth(shown, 1, bounds)}
96
+ onToggle={picker.toggle}
97
+ onEscape={picker.dismiss}
98
+ onPreviousMonth={onPreviousMonth}
99
+ onNextMonth={onNextMonth}
100
+ />
101
+
102
+ <Box sx={BODY_SX}>
103
+ {/* The days keep their place while a grid is open, so the calendar keeps their size at every density. */}
104
+ <Box sx={{ gridArea: '1 / 1', visibility: picking ? 'hidden' : 'visible' }} data-testid="calendar-days">
105
+ <MonthDays matrix={matrix} monthIndex={0} weekdayNames={weekdayNames} dayContext={dayContext} />
106
+ </Box>
107
+ {picking && (
108
+ <Box sx={PICKER_SLOT_SX}>
109
+ {picker.view === 'months' && (
110
+ <CalendarPickerGrid
111
+ id={monthsId}
112
+ ariaLabel={labels.months}
113
+ columns={MONTH_COLUMNS}
114
+ options={monthOptions(matrix, locale, bounds)}
115
+ testId="calendar-months"
116
+ onPick={picker.pickMonth}
117
+ onDismiss={picker.dismiss}
118
+ />
119
+ )}
120
+ {picker.view === 'years' && (
121
+ <CalendarPickerGrid
122
+ id={yearsId}
123
+ ariaLabel={labels.years}
124
+ columns={YEAR_COLUMNS}
125
+ options={yearPickerOptions(matrix, bounds)}
126
+ testId="calendar-years"
127
+ scrollable
128
+ onPick={picker.pickYear}
129
+ onDismiss={picker.dismiss}
130
+ />
131
+ )}
132
+ </Box>
133
+ )}
134
+ </Box>
135
+ </Box>
136
+ );
137
+ };
@@ -1,5 +1,6 @@
1
1
  export { Calendar,Calendar as default } from './Calendar';
2
2
  export type {
3
+ CalendarCaptionLayout,
3
4
  CalendarInternalState,
4
5
  CalendarProps,
5
6
  DateRange,
@@ -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 |
@@ -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":[]}