@12-apps/ui 6.97.1 → 6.98.1

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 (665) hide show
  1. package/components-catalog.md +1 -1
  2. package/dist/_internal/components/data-display/Alert/Alert.content.js +4 -2
  3. package/dist/_internal/components/data-display/Alert/Alert.ink.js +27 -0
  4. package/dist/_internal/components/data-display/Alert/Alert.js +5 -4
  5. package/dist/_internal/components/data-display/Alert/Alert.metrics.js +5 -1
  6. package/dist/_internal/components/data-display/Alert/Alert.styles.js +2 -2
  7. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +3 -3
  8. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.parts.js +2 -2
  9. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +5 -5
  10. package/dist/_internal/components/data-display/Avatar/Avatar.js +5 -5
  11. package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
  12. package/dist/_internal/components/data-display/Banner/Banner.js +3 -3
  13. package/dist/_internal/components/data-display/Banner/Banner.styles.js +2 -2
  14. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +7 -6
  15. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +15 -14
  16. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +8 -8
  17. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +4 -4
  18. package/dist/_internal/components/data-display/Carousel/Carousel.js +6 -6
  19. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +3 -3
  20. package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
  21. package/dist/_internal/components/data-display/Chart/SpecChart.js +7 -7
  22. package/dist/_internal/components/data-display/Chart/chart-renderers.js +2 -2
  23. package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
  24. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  25. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +51 -51
  26. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +72 -71
  27. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +3 -3
  28. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +9 -9
  29. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +3 -3
  30. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +2 -2
  31. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +2 -2
  32. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
  33. package/dist/_internal/components/data-display/DataViews/base-list-card.js +4 -4
  34. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +11 -11
  35. package/dist/_internal/components/data-display/DataViews/data-views-day-input.js +1 -1
  36. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +1 -1
  37. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +32 -32
  38. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +6 -6
  39. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +48 -48
  40. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +31 -31
  41. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +29 -29
  42. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +30 -30
  43. package/dist/_internal/components/data-display/DataViews/data-views-preset-chips.js +3 -3
  44. package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js +15 -15
  45. package/dist/_internal/components/data-display/DataViews/data-views-range-calendar.js +12 -12
  46. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +18 -18
  47. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +10 -10
  48. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +22 -21
  49. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +9 -9
  50. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
  51. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
  52. package/dist/_internal/components/data-display/DayRuler/DayRuler.js +7 -7
  53. package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +2 -2
  54. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +2 -2
  55. package/dist/_internal/components/data-display/ErrorState/ErrorState.js +2 -2
  56. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +10 -10
  57. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +9 -9
  58. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +2 -2
  59. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +12 -12
  60. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +3 -3
  61. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +2 -2
  62. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +3 -3
  63. package/dist/_internal/components/data-display/LoadingState/LoadingState.js +2 -2
  64. package/dist/_internal/components/data-display/MapPreview/MapControlBar.js +4 -4
  65. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +6 -6
  66. package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +4 -4
  67. package/dist/_internal/components/data-display/MapPreview/MapPreview.helpers.js +3 -3
  68. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +8 -8
  69. package/dist/_internal/components/data-display/RegionMap/RegionMap.js +5 -5
  70. package/dist/_internal/components/data-display/RegionMap/RegionMapDrawing.js +2 -2
  71. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +6 -6
  72. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.labels.js +2 -2
  73. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +4 -4
  74. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +3 -3
  75. package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
  76. package/dist/_internal/components/data-display/Sheet/Sheet.js +6 -6
  77. package/dist/_internal/components/data-display/Sheet/Sheet.parts.js +2 -2
  78. package/dist/_internal/components/data-display/Stepper/Stepper.js +2 -2
  79. package/dist/_internal/components/data-display/Table/Table.js +4 -4
  80. package/dist/_internal/components/data-display/Table/TableParts.hooks.js +2 -2
  81. package/dist/_internal/components/data-display/Table/TableParts.js +2 -2
  82. package/dist/_internal/components/data-display/Timeline/Timeline.js +2 -2
  83. package/dist/_internal/components/data-display/index.js +97 -93
  84. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +5 -5
  85. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +4 -4
  86. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +6 -6
  87. package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +5 -5
  88. package/dist/_internal/components/feedback/Dialog/Dialog.js +2 -2
  89. package/dist/_internal/components/feedback/Modal/Modal.js +2 -2
  90. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +6 -5
  91. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.frame.js +3 -3
  92. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +12 -11
  93. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +8 -7
  94. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +7 -6
  95. package/dist/_internal/components/feedback/Sonner/Sonner.js +2 -2
  96. package/dist/_internal/components/feedback/StackedModal/StackedModal.js +4 -4
  97. package/dist/_internal/components/feedback/StackedModal/StackedModal.parts.js +2 -2
  98. package/dist/_internal/components/feedback/Toast/Toast.js +2 -2
  99. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
  100. package/dist/_internal/components/feedback/UsableModal/UsableModal.js +1 -1
  101. package/dist/_internal/components/feedback/UsableModal/UsableModal.modal.js +4 -4
  102. package/dist/_internal/components/feedback/UsableModal/UsableModal.sheet.js +6 -6
  103. package/dist/_internal/components/feedback/index.js +30 -29
  104. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +4 -4
  105. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +7 -7
  106. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
  107. package/dist/_internal/components/form/Calendar/Calendar.band.js +1 -1
  108. package/dist/_internal/components/form/Calendar/Calendar.helpers.js +1 -1
  109. package/dist/_internal/components/form/Calendar/Calendar.hooks.js +1 -1
  110. package/dist/_internal/components/form/Calendar/Calendar.js +10 -10
  111. package/dist/_internal/components/form/Calendar/CalendarDay.js +2 -2
  112. package/dist/_internal/components/form/Calendar/CalendarDayCell.js +3 -3
  113. package/dist/_internal/components/form/Calendar/CalendarMonth.js +10 -6
  114. package/dist/_internal/components/form/Calendar/CalendarSelectorsMonth.js +6 -6
  115. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +2 -2
  116. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +4 -4
  117. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +3 -3
  118. package/dist/_internal/components/form/Command/Command.hooks.js +2 -2
  119. package/dist/_internal/components/form/Command/Command.js +4 -4
  120. package/dist/_internal/components/form/Command/Command.parts.js +2 -2
  121. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.frame.js +22 -0
  122. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.frame.js.map +1 -0
  123. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +4 -4
  124. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +20 -15
  125. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.layout.js +13 -0
  126. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.layout.js.map +1 -0
  127. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +3 -3
  128. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +4 -4
  129. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.dom.js +2 -2
  130. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.format.js +3 -3
  131. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.hooks.js +4 -4
  132. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +5 -5
  133. package/dist/_internal/components/form/index.js +37 -34
  134. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +5 -5
  135. package/dist/_internal/components/form/total-form/Fields/index.js +6 -6
  136. package/dist/_internal/components/form/total-form/FormErrorSnackbar.js +3 -3
  137. package/dist/_internal/components/index.js +178 -172
  138. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +2 -2
  139. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +3 -3
  140. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +2 -2
  141. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +2 -2
  142. package/dist/_internal/components/layout/Dashboard/Dashboard.js +2 -2
  143. package/dist/_internal/components/layout/Drawer/Drawer.js +2 -2
  144. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +2 -2
  145. package/dist/_internal/components/layout/TableFilter/TableFilter.js +2 -2
  146. package/dist/_internal/components/layout/index.js +9 -9
  147. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +8 -8
  148. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +2 -2
  149. package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.js +2 -2
  150. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +3 -3
  151. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +2 -2
  152. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +4 -4
  153. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +5 -5
  154. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +3 -3
  155. package/dist/_internal/components/navigation/Tabs/Tabs.js +1 -1
  156. package/dist/_internal/components/navigation/index.js +18 -18
  157. package/dist/_internal/components/typography/Code/Code.js +2 -2
  158. package/dist/_internal/components/typography/index.js +2 -2
  159. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.js +2 -2
  160. package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.js +3 -3
  161. package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.parts.js +2 -2
  162. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +2 -2
  163. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +5 -5
  164. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +3 -3
  165. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +4 -4
  166. package/dist/_internal/components/utility/index.js +8 -8
  167. package/dist/_internal/en-US.data-display.js +2 -2
  168. package/dist/_internal/en-US.labels.js +1 -1
  169. package/dist/_internal/pt-BR.data-display.js +2 -2
  170. package/dist/_internal/pt-BR.labels.js +1 -1
  171. package/dist/_internal/social-login-button/social-login-button.js +2 -2
  172. package/dist/_internal/user-avatar/user-avatar.js +6 -6
  173. package/dist/charts.js +17 -17
  174. package/dist/{chunk-UBVKMM3V.js → chunk-2A5GHOL3.js} +2 -2
  175. package/dist/{chunk-QIP37Y2C.js → chunk-2RC6EAGD.js} +2 -2
  176. package/dist/{chunk-YGLAGY74.js → chunk-332KWE5H.js} +2 -2
  177. package/dist/{chunk-HNEZWVDR.js → chunk-364NT46L.js} +3 -3
  178. package/dist/{chunk-RLTGD5WJ.js → chunk-3AKQHYTM.js} +4 -4
  179. package/dist/{chunk-5I75WRXT.js → chunk-3CXRHRGE.js} +7 -7
  180. package/dist/{chunk-G6NMSBSQ.js → chunk-3LD42RNV.js} +2 -2
  181. package/dist/{chunk-3BMG6VMB.js → chunk-3N2HWNKT.js} +2 -2
  182. package/dist/{chunk-MSJP2AEN.js → chunk-3N3W4TID.js} +2 -2
  183. package/dist/{chunk-H2UUMZQR.js → chunk-3PWDVJWD.js} +2 -1
  184. package/dist/chunk-3PWDVJWD.js.map +1 -0
  185. package/dist/{chunk-ZBUMGMWP.js → chunk-3R5MCSYO.js} +6 -6
  186. package/dist/{chunk-YNVTUQ5B.js → chunk-3V7OTBUZ.js} +2 -2
  187. package/dist/{chunk-LZNUBQ5I.js → chunk-4A454JZN.js} +2 -2
  188. package/dist/{chunk-TPMT3J32.js → chunk-4I2SDWSF.js} +2 -1
  189. package/dist/chunk-4I2SDWSF.js.map +1 -0
  190. package/dist/{chunk-RCTHCXS6.js → chunk-4N4M237A.js} +2 -2
  191. package/dist/{chunk-SW7JCF4Z.js → chunk-4P63RSSY.js} +2 -2
  192. package/dist/{chunk-7QKFMMWK.js → chunk-4W4C4Q46.js} +2 -2
  193. package/dist/{chunk-B32XH7NK.js → chunk-4WVUX7IU.js} +3 -3
  194. package/dist/{chunk-Z6QFIRD7.js → chunk-4X2TOMK6.js} +7 -7
  195. package/dist/{chunk-MYTV353T.js → chunk-4Y3QLISA.js} +2 -2
  196. package/dist/{chunk-IMYKJTVX.js → chunk-5J6LN2O7.js} +2 -2
  197. package/dist/{chunk-QWI7IPYJ.js → chunk-5V7IZBRY.js} +4 -4
  198. package/dist/{chunk-Y7BOP7VZ.js → chunk-67GTAPK6.js} +3 -3
  199. package/dist/{chunk-T77OVQEO.js → chunk-6D7CASMK.js} +2 -2
  200. package/dist/{chunk-YNZUYZ2O.js → chunk-6FGP7RMV.js} +2 -2
  201. package/dist/{chunk-YVDNCV2D.js → chunk-6RYSSNOO.js} +3 -3
  202. package/dist/{chunk-CPQJFHNZ.js → chunk-74IH3ZGD.js} +2 -2
  203. package/dist/{chunk-UQ5GJPVZ.js → chunk-76GAXLNC.js} +3 -3
  204. package/dist/{chunk-X4J576GR.js → chunk-7LFST3PW.js} +2 -2
  205. package/dist/{chunk-XCUHGPPZ.js → chunk-7MLT66DE.js} +2 -2
  206. package/dist/{chunk-EOIRU62W.js → chunk-7P544IWT.js} +3 -3
  207. package/dist/{chunk-XTYBJAZG.js → chunk-7TENMQNQ.js} +7 -7
  208. package/dist/{chunk-EB25XITI.js → chunk-A27J4CIZ.js} +10 -10
  209. package/dist/{chunk-2KSFBZ2H.js → chunk-ABZJNKR6.js} +2 -2
  210. package/dist/{chunk-GTE4TW3W.js → chunk-AESKKFA5.js} +6 -6
  211. package/dist/chunk-AG4F6NVT.js +1 -0
  212. package/dist/chunk-AG4F6NVT.js.map +1 -0
  213. package/dist/{chunk-6LOWZCH7.js → chunk-AHXQN4VL.js} +2 -2
  214. package/dist/{chunk-U2SAW6DH.js → chunk-B4OZU7J4.js} +7 -7
  215. package/dist/{chunk-DDGYTY4E.js → chunk-BIHZXB5P.js} +4 -4
  216. package/dist/{chunk-4QGMUHAU.js → chunk-BWNZVMBT.js} +2 -2
  217. package/dist/{chunk-CY4XIZNW.js → chunk-CAH5XNHT.js} +2 -2
  218. package/dist/{chunk-KILA7LCC.js → chunk-CFDWKQZT.js} +4 -4
  219. package/dist/{chunk-USHVG4UQ.js → chunk-CGLMWS7K.js} +4 -4
  220. package/dist/{chunk-EWFBDAB7.js → chunk-CKGRSCRT.js} +2 -2
  221. package/dist/{chunk-YOLLISEY.js → chunk-CRD2WCU7.js} +9 -9
  222. package/dist/{chunk-L5KPBMMF.js → chunk-CXL3TT3K.js} +2 -2
  223. package/dist/{chunk-KOGJBAFI.js → chunk-D3KLIC5N.js} +2 -2
  224. package/dist/{chunk-2SBQ47RI.js → chunk-D4JL5725.js} +3 -3
  225. package/dist/{chunk-NI3MC742.js → chunk-DBJLYURK.js} +2 -2
  226. package/dist/{chunk-75GAQL2Q.js → chunk-DKPELKGL.js} +12 -12
  227. package/dist/{chunk-NGXL4R54.js → chunk-E4MJA52O.js} +4 -4
  228. package/dist/{chunk-QSOCOXVL.js → chunk-EASEJDBQ.js} +13 -8
  229. package/dist/chunk-EASEJDBQ.js.map +1 -0
  230. package/dist/{chunk-5HXVXW22.js → chunk-EGBQR5GH.js} +5 -5
  231. package/dist/{chunk-FTYOCFTV.js → chunk-EGYJUJMR.js} +2 -2
  232. package/dist/{chunk-7XSCEHGA.js → chunk-EOQ6EKTS.js} +7 -7
  233. package/dist/{chunk-6AKDAQSS.js → chunk-ERAMSYPR.js} +2 -2
  234. package/dist/{chunk-WYRH6OSN.js → chunk-F5EH5BJN.js} +2 -2
  235. package/dist/{chunk-HBRBIPNF.js → chunk-F7JRQ2EI.js} +6 -6
  236. package/dist/chunk-F7JRQ2EI.js.map +1 -0
  237. package/dist/{chunk-QCYQL3ST.js → chunk-FJLPVPRG.js} +2 -2
  238. package/dist/{chunk-MAHY7PK3.js → chunk-FQMLTCXT.js} +4 -4
  239. package/dist/{chunk-TMINUTQQ.js → chunk-FRQGZIYU.js} +2 -2
  240. package/dist/{chunk-LV6AD6XC.js → chunk-FT3LJZWZ.js} +2 -2
  241. package/dist/{chunk-IS3L67TF.js → chunk-FW5GTAUY.js} +6 -6
  242. package/dist/{chunk-VMTOLAZ5.js → chunk-FZZMNKVF.js} +5 -5
  243. package/dist/{chunk-FGZIEZEP.js → chunk-G6TKWNF2.js} +4 -4
  244. package/dist/{chunk-I6IFUFLW.js → chunk-G7MHDZTL.js} +2 -2
  245. package/dist/{chunk-KES3HNSU.js → chunk-GB2DQOZ7.js} +2 -2
  246. package/dist/{chunk-7HZ36QDH.js → chunk-GDWU7WF4.js} +9 -3
  247. package/dist/chunk-GDWU7WF4.js.map +1 -0
  248. package/dist/{chunk-W3IFJA35.js → chunk-GFYDOH7D.js} +3 -3
  249. package/dist/{chunk-M2M4IDFU.js → chunk-GXYOBTOY.js} +2 -2
  250. package/dist/{chunk-OLHAUGVQ.js → chunk-GZQQSTKR.js} +2 -2
  251. package/dist/{chunk-N2J24TJ3.js → chunk-HAWOS4SF.js} +2 -2
  252. package/dist/{chunk-S2VZUBM7.js → chunk-HCTHY66U.js} +6 -6
  253. package/dist/{chunk-ABVIMFSD.js → chunk-HG52QQ2L.js} +2 -2
  254. package/dist/{chunk-AMLHEKSV.js → chunk-HI7JPDD6.js} +5 -5
  255. package/dist/{chunk-F5OERPU4.js → chunk-HOWAMSUY.js} +6 -6
  256. package/dist/{chunk-3TZUZXY5.js → chunk-HTXYBKLK.js} +2 -2
  257. package/dist/{chunk-WW3F7DCX.js → chunk-IFOHCY4O.js} +2 -2
  258. package/dist/{chunk-S46LGAQ2.js → chunk-IJVBLU25.js} +2 -2
  259. package/dist/{chunk-ARGVUTTL.js → chunk-IPVGWENM.js} +2 -2
  260. package/dist/{chunk-MPWA55CF.js → chunk-IXXB7CTR.js} +9 -5
  261. package/dist/chunk-IXXB7CTR.js.map +1 -0
  262. package/dist/{chunk-MWXZXCVX.js → chunk-J43PARXM.js} +6 -6
  263. package/dist/{chunk-UYKIUUWP.js → chunk-JJTJ7DCV.js} +2 -2
  264. package/dist/{chunk-HQCZT6TO.js → chunk-JVOEVTCZ.js} +5 -5
  265. package/dist/{chunk-RZ3P4X2I.js → chunk-K62L5JFC.js} +25 -4
  266. package/dist/chunk-K62L5JFC.js.map +1 -0
  267. package/dist/{chunk-2365CQJU.js → chunk-KAQDWEG6.js} +2 -2
  268. package/dist/{chunk-TB5CRHTF.js → chunk-KEPLO2AB.js} +2 -2
  269. package/dist/chunk-KNW63H63.js +263 -0
  270. package/dist/chunk-KNW63H63.js.map +1 -0
  271. package/dist/{chunk-PVIQDBUN.js → chunk-KUQ4XHVV.js} +2 -2
  272. package/dist/{chunk-DAFFZED3.js → chunk-KWBMM6MJ.js} +2 -2
  273. package/dist/{chunk-QPCHABOZ.js → chunk-L5YGVLPH.js} +8 -4
  274. package/dist/chunk-L5YGVLPH.js.map +1 -0
  275. package/dist/{chunk-JJYECKEL.js → chunk-LFECE4R7.js} +2 -2
  276. package/dist/{chunk-LXIPBHNJ.js → chunk-LKTJ26ST.js} +2 -2
  277. package/dist/chunk-LNZJJFZQ.js +41 -0
  278. package/dist/chunk-LNZJJFZQ.js.map +1 -0
  279. package/dist/{chunk-56JF5PZK.js → chunk-LYVTJLCF.js} +4 -4
  280. package/dist/{chunk-EYFDIUVR.js → chunk-M4G4LRQK.js} +2 -2
  281. package/dist/{chunk-TJUWSQYQ.js → chunk-MDU5Q2HW.js} +3 -2
  282. package/dist/{chunk-TJUWSQYQ.js.map → chunk-MDU5Q2HW.js.map} +1 -1
  283. package/dist/{chunk-KMMFN24G.js → chunk-MKHNLRVX.js} +4 -4
  284. package/dist/{chunk-4IG73U2X.js → chunk-MSPLIRBH.js} +2 -2
  285. package/dist/{chunk-55MYYWOV.js → chunk-O4UXH7BM.js} +7 -7
  286. package/dist/{chunk-DYHOBKPU.js → chunk-OA6T2ME3.js} +5 -5
  287. package/dist/{chunk-VNMD6BA4.js → chunk-OFRQMFWD.js} +3 -3
  288. package/dist/{chunk-LTJC7TGB.js → chunk-OHA2PAAA.js} +2 -2
  289. package/dist/{chunk-6D5AMANO.js → chunk-OV5NM4FY.js} +2 -2
  290. package/dist/{chunk-ZANWHTXH.js → chunk-OVJV2ZN7.js} +2 -2
  291. package/dist/{chunk-SKQPUAMK.js → chunk-PDWQJFMK.js} +6 -6
  292. package/dist/{chunk-6EZQLNPK.js → chunk-PGJIWCQR.js} +4 -4
  293. package/dist/{chunk-FRAFGRRD.js → chunk-PIELY4BJ.js} +1 -1
  294. package/dist/{chunk-BQBEN44R.js → chunk-PNAKRHRT.js} +2 -2
  295. package/dist/{chunk-3Z6JX7UN.js → chunk-PZJEF232.js} +2 -2
  296. package/dist/{chunk-6ATXOJVQ.js → chunk-QADTI63U.js} +4 -4
  297. package/dist/chunk-QAF76E6U.js +43 -0
  298. package/dist/chunk-QAF76E6U.js.map +1 -0
  299. package/dist/{chunk-4RF4BALN.js → chunk-R775ISK6.js} +4 -4
  300. package/dist/{chunk-YBAK2WN5.js → chunk-RFMQBIE6.js} +4 -4
  301. package/dist/{chunk-NQCTANF3.js → chunk-RKAX37F4.js} +14 -7
  302. package/dist/chunk-RKAX37F4.js.map +1 -0
  303. package/dist/{chunk-43EFQ3DU.js → chunk-RVBLOR32.js} +2 -2
  304. package/dist/{chunk-XNAI7QGU.js → chunk-SA3KLZDZ.js} +5 -5
  305. package/dist/{chunk-CAOL4AIB.js → chunk-SARK3GHS.js} +2 -2
  306. package/dist/chunk-SIY64A6O.js +60 -0
  307. package/dist/chunk-SIY64A6O.js.map +1 -0
  308. package/dist/{chunk-CQOJUYTT.js → chunk-SOXO2VN3.js} +3 -3
  309. package/dist/{chunk-Z4ZFJ565.js → chunk-SRAIV6U6.js} +3 -3
  310. package/dist/{chunk-5ZY3IIIG.js → chunk-TBQR5VCN.js} +11 -1
  311. package/dist/chunk-TBQR5VCN.js.map +1 -0
  312. package/dist/{chunk-6PU5P7QT.js → chunk-TDXEWGY2.js} +2 -2
  313. package/dist/{chunk-SB2SEGR6.js → chunk-TIM4PXWN.js} +3 -3
  314. package/dist/{chunk-OGSTMHT6.js → chunk-TTBLQZVT.js} +3 -3
  315. package/dist/{chunk-VHE7UEG5.js → chunk-UC7DLGMP.js} +2 -2
  316. package/dist/{chunk-TI4FGQYV.js → chunk-UHLGJHTD.js} +2 -2
  317. package/dist/{chunk-TAHO2LCU.js → chunk-UIZIEU4X.js} +3 -3
  318. package/dist/{chunk-F7LBTMCA.js → chunk-ULC4SCFC.js} +2 -2
  319. package/dist/{chunk-FORQEHRQ.js → chunk-UXVWGNPG.js} +2 -2
  320. package/dist/{chunk-3ZRK3BRN.js → chunk-UXYCBPCE.js} +12 -6
  321. package/dist/chunk-UXYCBPCE.js.map +1 -0
  322. package/dist/{chunk-L6YTVXGN.js → chunk-VCYYL23C.js} +4 -2
  323. package/dist/{chunk-L6YTVXGN.js.map → chunk-VCYYL23C.js.map} +1 -1
  324. package/dist/{chunk-KF3Q3C3P.js → chunk-VGIBWJ72.js} +2 -2
  325. package/dist/{chunk-I54YFYBS.js → chunk-VMACQT3T.js} +3 -3
  326. package/dist/{chunk-XOXXG7Q5.js → chunk-VWKMN3ZZ.js} +3 -2
  327. package/dist/{chunk-XOXXG7Q5.js.map → chunk-VWKMN3ZZ.js.map} +1 -1
  328. package/dist/{chunk-EXEBN5ZP.js → chunk-W56KN53D.js} +8 -8
  329. package/dist/{chunk-KURE5R7Z.js → chunk-WGK7VNCO.js} +2 -2
  330. package/dist/{chunk-UIS3E72B.js → chunk-WK577LQL.js} +3 -3
  331. package/dist/{chunk-G3WG77QY.js → chunk-WN6LR4HX.js} +21 -6
  332. package/dist/chunk-WN6LR4HX.js.map +1 -0
  333. package/dist/{chunk-LLPPIO3K.js → chunk-WNTXHLVJ.js} +2 -2
  334. package/dist/{chunk-PEVBSNCD.js → chunk-WPRQPKLV.js} +2 -2
  335. package/dist/{chunk-C347NNZJ.js → chunk-WVCHMTPG.js} +2 -2
  336. package/dist/{chunk-CSD6SWBZ.js → chunk-WYNGH2WL.js} +6 -6
  337. package/dist/{chunk-4L54KUZV.js → chunk-X5GCAXZS.js} +38 -16
  338. package/dist/chunk-X5GCAXZS.js.map +1 -0
  339. package/dist/{chunk-PJDAZG65.js → chunk-XA5ES25V.js} +3 -3
  340. package/dist/{chunk-L5RS6QAT.js → chunk-YBF2WUGQ.js} +2 -2
  341. package/dist/{chunk-FWTVIRZZ.js → chunk-YLZXIR6B.js} +4 -4
  342. package/dist/{chunk-STOZ6JB5.js → chunk-YQMJJ7AL.js} +33 -16
  343. package/dist/chunk-YQMJJ7AL.js.map +1 -0
  344. package/dist/{chunk-JOQGKXR5.js → chunk-Z2J4MRTF.js} +4 -4
  345. package/dist/{chunk-I4K5JMS4.js → chunk-ZDLC4BN4.js} +4 -2
  346. package/dist/chunk-ZDLC4BN4.js.map +1 -0
  347. package/dist/{chunk-TE6HAWDM.js → chunk-ZP2GPRNQ.js} +2 -2
  348. package/dist/{chunk-3PQL2EN5.js → chunk-ZW7Q3IRL.js} +6 -6
  349. package/dist/{chunk-M5Y42AZ4.js → chunk-ZX4ORMBC.js} +2 -2
  350. package/dist/data-display/Alert.js +9 -5
  351. package/dist/data-display/AlertDialog.js +3 -3
  352. package/dist/data-display/AsyncStateContainer.js +5 -5
  353. package/dist/data-display/Avatar.js +5 -5
  354. package/dist/data-display/Banner.js +3 -3
  355. package/dist/data-display/CardKit.js +19 -18
  356. package/dist/data-display/Carousel.js +6 -6
  357. package/dist/data-display/Chart.js +17 -17
  358. package/dist/data-display/DataGrid.js +2 -2
  359. package/dist/data-display/DataViews.js +78 -77
  360. package/dist/data-display/DayRuler.js +11 -11
  361. package/dist/data-display/EmptyState.js +2 -2
  362. package/dist/data-display/ErrorState.js +2 -2
  363. package/dist/data-display/FleetMap.js +12 -12
  364. package/dist/data-display/HoverCard.js +3 -3
  365. package/dist/data-display/LazyImage.js +2 -2
  366. package/dist/data-display/Lightbox.js +3 -3
  367. package/dist/data-display/LoadingState.js +2 -2
  368. package/dist/data-display/MapPreview.js +8 -8
  369. package/dist/data-display/RegionMap.js +5 -5
  370. package/dist/data-display/ScheduleGrid.js +10 -10
  371. package/dist/data-display/SectionOnboarding.js +4 -4
  372. package/dist/data-display/Sheet.js +6 -6
  373. package/dist/data-display/Stepper.js +2 -2
  374. package/dist/data-display/Table.js +4 -4
  375. package/dist/data-display/Timeline.js +2 -2
  376. package/dist/en-US.js +2 -2
  377. package/dist/feedback/ConfirmAction.js +9 -9
  378. package/dist/feedback/Dialog.js +2 -2
  379. package/dist/feedback/Modal.js +2 -2
  380. package/dist/feedback/NotificationStatusNotice.js +6 -5
  381. package/dist/feedback/SequenceResolver.js +12 -11
  382. package/dist/feedback/Sonner.js +2 -2
  383. package/dist/feedback/StackedModal.js +4 -4
  384. package/dist/feedback/Toast.js +2 -2
  385. package/dist/feedback/TutorialOverlay.js +2 -2
  386. package/dist/feedback/UsableModal.js +1 -1
  387. package/dist/form/AddressAutocomplete.js +7 -7
  388. package/dist/form/Autocomplete.js +2 -2
  389. package/dist/form/Calendar.js +10 -10
  390. package/dist/form/CategorySelect.js +4 -4
  391. package/dist/form/CodeEditor.js +3 -3
  392. package/dist/form/Command.js +4 -4
  393. package/dist/form/DateRangePicker.js +20 -15
  394. package/dist/form/RichTextEditor.js +5 -5
  395. package/dist/form/total-form.js +9 -9
  396. package/dist/layout/ContentToolbar.js +6 -6
  397. package/dist/layout/Dashboard.js +2 -2
  398. package/dist/layout/Drawer.js +2 -2
  399. package/dist/layout/SettingsLayout.js +2 -2
  400. package/dist/layout/TableFilter.js +2 -2
  401. package/dist/locales.js +4 -4
  402. package/dist/native/chunks/{chunk-QHW7JEPZ.js → chunk-O76COY56.js} +3 -2
  403. package/dist/native/chunks/{chunk-QHW7JEPZ.js.map → chunk-O76COY56.js.map} +1 -1
  404. package/dist/native/chunks/{chunk-FXA5DLKR.js → chunk-UQ272RI2.js} +3 -3
  405. package/dist/native/chunks/{chunk-IN3XZ7EK.js → chunk-X65TVC3B.js} +2 -2
  406. package/dist/native/data-display/Alert.js +10 -0
  407. package/dist/native/data-display/Alert.js.map +1 -1
  408. package/dist/native/data-display/Avatar.js +1 -1
  409. package/dist/native/data-display/Badge.js +1 -1
  410. package/dist/native/data-display/Chip.js +1 -1
  411. package/dist/native/data-display/EmptyState.js +3 -3
  412. package/dist/native/data-display/ErrorState.js +2 -2
  413. package/dist/native/data-display/FleetMap.js +3 -3
  414. package/dist/native/data-display/LoadingState.js +1 -1
  415. package/dist/native/feedback/Dialog.js +1 -1
  416. package/dist/native/form/Button.js +2 -2
  417. package/dist/native/form/Checkbox.js +1 -1
  418. package/dist/native/form/Input.js +1 -1
  419. package/dist/native/form/Switch.js +1 -1
  420. package/dist/navigation/AppHeader.js +10 -10
  421. package/dist/navigation/Breadcrumbs.js +2 -2
  422. package/dist/navigation/NavigationMenu.js +3 -3
  423. package/dist/navigation/SectionNav.js +5 -5
  424. package/dist/navigation/Tabs.js +1 -1
  425. package/dist/pt-BR.js +2 -2
  426. package/dist/social-login-button.js +2 -2
  427. package/dist/types/components/data-display/Alert/Alert.content.d.ts.map +1 -1
  428. package/dist/types/components/data-display/Alert/Alert.d.ts.map +1 -1
  429. package/dist/types/components/data-display/Alert/Alert.ink.d.ts +65 -0
  430. package/dist/types/components/data-display/Alert/Alert.ink.d.ts.map +1 -0
  431. package/dist/types/components/data-display/Alert/Alert.metrics.d.ts +73 -5
  432. package/dist/types/components/data-display/Alert/Alert.metrics.d.ts.map +1 -1
  433. package/dist/types/components/data-display/Alert/index.d.ts +1 -0
  434. package/dist/types/components/data-display/Alert/index.d.ts.map +1 -1
  435. package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts +3 -1
  436. package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts.map +1 -1
  437. package/dist/types/components/form/Calendar/Calendar.band.d.ts.map +1 -1
  438. package/dist/types/components/form/Calendar/Calendar.d.ts.map +1 -1
  439. package/dist/types/components/form/Calendar/Calendar.helpers.d.ts.map +1 -1
  440. package/dist/types/components/form/Calendar/Calendar.hooks.d.ts.map +1 -1
  441. package/dist/types/components/form/Calendar/Calendar.types.d.ts +24 -1
  442. package/dist/types/components/form/Calendar/Calendar.types.d.ts.map +1 -1
  443. package/dist/types/components/form/Calendar/CalendarDay.d.ts +6 -0
  444. package/dist/types/components/form/Calendar/CalendarDay.d.ts.map +1 -1
  445. package/dist/types/components/form/Calendar/CalendarDayCell.d.ts +11 -1
  446. package/dist/types/components/form/Calendar/CalendarDayCell.d.ts.map +1 -1
  447. package/dist/types/components/form/Calendar/CalendarMonth.d.ts +22 -0
  448. package/dist/types/components/form/Calendar/CalendarMonth.d.ts.map +1 -1
  449. package/dist/types/components/form/Calendar/index.d.ts +1 -1
  450. package/dist/types/components/form/Calendar/index.d.ts.map +1 -1
  451. package/dist/types/components/form/DateRangePicker/DateRangePicker.d.ts +1 -1
  452. package/dist/types/components/form/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  453. package/dist/types/components/form/DateRangePicker/DateRangePicker.frame.d.ts +93 -0
  454. package/dist/types/components/form/DateRangePicker/DateRangePicker.frame.d.ts.map +1 -0
  455. package/dist/types/components/form/DateRangePicker/DateRangePicker.hooks.d.ts +1 -1
  456. package/dist/types/components/form/DateRangePicker/DateRangePicker.hooks.d.ts.map +1 -1
  457. package/dist/types/components/form/DateRangePicker/DateRangePicker.layout.d.ts +27 -0
  458. package/dist/types/components/form/DateRangePicker/DateRangePicker.layout.d.ts.map +1 -0
  459. package/dist/types/components/form/DateRangePicker/DateRangePicker.range.d.ts +8 -2
  460. package/dist/types/components/form/DateRangePicker/DateRangePicker.range.d.ts.map +1 -1
  461. package/dist/types/components/form/DateRangePicker/DateRangePicker.types.d.ts +90 -1
  462. package/dist/types/components/form/DateRangePicker/DateRangePicker.types.d.ts.map +1 -1
  463. package/dist/types/components/form/DateRangePicker/DateRangePickerFields.d.ts +7 -1
  464. package/dist/types/components/form/DateRangePicker/DateRangePickerFields.d.ts.map +1 -1
  465. package/dist/types/components/navigation/Tabs/Tabs.d.ts.map +1 -1
  466. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +18 -3
  467. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts.map +1 -1
  468. package/dist/types/copy/labels.d.ts +6 -0
  469. package/dist/types/copy/labels.d.ts.map +1 -1
  470. package/dist/types/en-US.labels.d.ts.map +1 -1
  471. package/dist/types/pt-BR.labels.d.ts.map +1 -1
  472. package/dist/types-native/components/data-display/Alert/Alert.metrics.d.ts +73 -5
  473. package/dist/types-native/components/data-display/Alert/Alert.metrics.d.ts.map +1 -1
  474. package/dist/types-native/copy/labels.d.ts +6 -0
  475. package/dist/types-native/copy/labels.d.ts.map +1 -1
  476. package/dist/types-native/en-US.labels.d.ts.map +1 -1
  477. package/dist/typography/Code.js +2 -2
  478. package/dist/user-avatar.js +6 -6
  479. package/dist/utility/AnimatedIcon.js +2 -2
  480. package/dist/utility/InfiniteScroll.js +3 -3
  481. package/dist/utility/WorkflowStep.js +5 -5
  482. package/package.json +1 -1
  483. package/src/components/data-display/Alert/Alert.content.tsx +16 -1
  484. package/src/components/data-display/Alert/Alert.ink.ts +106 -0
  485. package/src/components/data-display/Alert/Alert.md +40 -0
  486. package/src/components/data-display/Alert/Alert.metrics.ts +57 -5
  487. package/src/components/data-display/Alert/Alert.tsx +18 -7
  488. package/src/components/data-display/Alert/index.ts +1 -0
  489. package/src/components/data-display/DataViews/data-views-day-input.tsx +4 -0
  490. package/src/components/form/Calendar/Calendar.band.ts +3 -0
  491. package/src/components/form/Calendar/Calendar.helpers.ts +2 -0
  492. package/src/components/form/Calendar/Calendar.hooks.ts +4 -2
  493. package/src/components/form/Calendar/Calendar.md +12 -1
  494. package/src/components/form/Calendar/Calendar.tsx +30 -10
  495. package/src/components/form/Calendar/Calendar.types.ts +27 -1
  496. package/src/components/form/Calendar/CalendarDay.tsx +85 -13
  497. package/src/components/form/Calendar/CalendarDayCell.tsx +17 -1
  498. package/src/components/form/Calendar/CalendarMonth.tsx +40 -4
  499. package/src/components/form/Calendar/CalendarSelectorsMonth.tsx +2 -2
  500. package/src/components/form/Calendar/index.ts +1 -0
  501. package/src/components/form/DateRangePicker/DateRangePicker.frame.ts +92 -0
  502. package/src/components/form/DateRangePicker/DateRangePicker.hooks.ts +43 -1
  503. package/src/components/form/DateRangePicker/DateRangePicker.layout.ts +69 -0
  504. package/src/components/form/DateRangePicker/DateRangePicker.md +77 -2
  505. package/src/components/form/DateRangePicker/DateRangePicker.range.ts +10 -2
  506. package/src/components/form/DateRangePicker/DateRangePicker.tsx +177 -57
  507. package/src/components/form/DateRangePicker/DateRangePicker.types.ts +88 -1
  508. package/src/components/form/DateRangePicker/DateRangePickerFields.tsx +13 -2
  509. package/src/components/navigation/Tabs/Tabs.md +22 -1
  510. package/src/components/navigation/Tabs/Tabs.tsx +25 -9
  511. package/src/components/navigation/Tabs/Tabs.types.ts +18 -2
  512. package/src/copy/labels.ts +6 -0
  513. package/src/en-US.labels.ts +1 -0
  514. package/src/pt-BR.labels.ts +1 -0
  515. package/dist/chunk-3CSKB57B.js +0 -184
  516. package/dist/chunk-3CSKB57B.js.map +0 -1
  517. package/dist/chunk-3ZRK3BRN.js.map +0 -1
  518. package/dist/chunk-4L54KUZV.js.map +0 -1
  519. package/dist/chunk-5ZY3IIIG.js.map +0 -1
  520. package/dist/chunk-7HZ36QDH.js.map +0 -1
  521. package/dist/chunk-G3WG77QY.js.map +0 -1
  522. package/dist/chunk-H2UUMZQR.js.map +0 -1
  523. package/dist/chunk-HBRBIPNF.js.map +0 -1
  524. package/dist/chunk-I4K5JMS4.js.map +0 -1
  525. package/dist/chunk-MPWA55CF.js.map +0 -1
  526. package/dist/chunk-NQCTANF3.js.map +0 -1
  527. package/dist/chunk-NUGT7LMR.js +0 -1
  528. package/dist/chunk-QPCHABOZ.js.map +0 -1
  529. package/dist/chunk-QSOCOXVL.js.map +0 -1
  530. package/dist/chunk-RZ3P4X2I.js.map +0 -1
  531. package/dist/chunk-STOZ6JB5.js.map +0 -1
  532. package/dist/chunk-TPMT3J32.js.map +0 -1
  533. /package/dist/{chunk-NUGT7LMR.js.map → _internal/components/data-display/Alert/Alert.ink.js.map} +0 -0
  534. /package/dist/{chunk-UBVKMM3V.js.map → chunk-2A5GHOL3.js.map} +0 -0
  535. /package/dist/{chunk-QIP37Y2C.js.map → chunk-2RC6EAGD.js.map} +0 -0
  536. /package/dist/{chunk-YGLAGY74.js.map → chunk-332KWE5H.js.map} +0 -0
  537. /package/dist/{chunk-HNEZWVDR.js.map → chunk-364NT46L.js.map} +0 -0
  538. /package/dist/{chunk-RLTGD5WJ.js.map → chunk-3AKQHYTM.js.map} +0 -0
  539. /package/dist/{chunk-5I75WRXT.js.map → chunk-3CXRHRGE.js.map} +0 -0
  540. /package/dist/{chunk-G6NMSBSQ.js.map → chunk-3LD42RNV.js.map} +0 -0
  541. /package/dist/{chunk-3BMG6VMB.js.map → chunk-3N2HWNKT.js.map} +0 -0
  542. /package/dist/{chunk-MSJP2AEN.js.map → chunk-3N3W4TID.js.map} +0 -0
  543. /package/dist/{chunk-ZBUMGMWP.js.map → chunk-3R5MCSYO.js.map} +0 -0
  544. /package/dist/{chunk-YNVTUQ5B.js.map → chunk-3V7OTBUZ.js.map} +0 -0
  545. /package/dist/{chunk-LZNUBQ5I.js.map → chunk-4A454JZN.js.map} +0 -0
  546. /package/dist/{chunk-RCTHCXS6.js.map → chunk-4N4M237A.js.map} +0 -0
  547. /package/dist/{chunk-SW7JCF4Z.js.map → chunk-4P63RSSY.js.map} +0 -0
  548. /package/dist/{chunk-7QKFMMWK.js.map → chunk-4W4C4Q46.js.map} +0 -0
  549. /package/dist/{chunk-B32XH7NK.js.map → chunk-4WVUX7IU.js.map} +0 -0
  550. /package/dist/{chunk-Z6QFIRD7.js.map → chunk-4X2TOMK6.js.map} +0 -0
  551. /package/dist/{chunk-MYTV353T.js.map → chunk-4Y3QLISA.js.map} +0 -0
  552. /package/dist/{chunk-IMYKJTVX.js.map → chunk-5J6LN2O7.js.map} +0 -0
  553. /package/dist/{chunk-QWI7IPYJ.js.map → chunk-5V7IZBRY.js.map} +0 -0
  554. /package/dist/{chunk-Y7BOP7VZ.js.map → chunk-67GTAPK6.js.map} +0 -0
  555. /package/dist/{chunk-T77OVQEO.js.map → chunk-6D7CASMK.js.map} +0 -0
  556. /package/dist/{chunk-YNZUYZ2O.js.map → chunk-6FGP7RMV.js.map} +0 -0
  557. /package/dist/{chunk-YVDNCV2D.js.map → chunk-6RYSSNOO.js.map} +0 -0
  558. /package/dist/{chunk-CPQJFHNZ.js.map → chunk-74IH3ZGD.js.map} +0 -0
  559. /package/dist/{chunk-UQ5GJPVZ.js.map → chunk-76GAXLNC.js.map} +0 -0
  560. /package/dist/{chunk-X4J576GR.js.map → chunk-7LFST3PW.js.map} +0 -0
  561. /package/dist/{chunk-XCUHGPPZ.js.map → chunk-7MLT66DE.js.map} +0 -0
  562. /package/dist/{chunk-EOIRU62W.js.map → chunk-7P544IWT.js.map} +0 -0
  563. /package/dist/{chunk-XTYBJAZG.js.map → chunk-7TENMQNQ.js.map} +0 -0
  564. /package/dist/{chunk-EB25XITI.js.map → chunk-A27J4CIZ.js.map} +0 -0
  565. /package/dist/{chunk-2KSFBZ2H.js.map → chunk-ABZJNKR6.js.map} +0 -0
  566. /package/dist/{chunk-GTE4TW3W.js.map → chunk-AESKKFA5.js.map} +0 -0
  567. /package/dist/{chunk-6LOWZCH7.js.map → chunk-AHXQN4VL.js.map} +0 -0
  568. /package/dist/{chunk-U2SAW6DH.js.map → chunk-B4OZU7J4.js.map} +0 -0
  569. /package/dist/{chunk-DDGYTY4E.js.map → chunk-BIHZXB5P.js.map} +0 -0
  570. /package/dist/{chunk-4QGMUHAU.js.map → chunk-BWNZVMBT.js.map} +0 -0
  571. /package/dist/{chunk-CY4XIZNW.js.map → chunk-CAH5XNHT.js.map} +0 -0
  572. /package/dist/{chunk-KILA7LCC.js.map → chunk-CFDWKQZT.js.map} +0 -0
  573. /package/dist/{chunk-USHVG4UQ.js.map → chunk-CGLMWS7K.js.map} +0 -0
  574. /package/dist/{chunk-EWFBDAB7.js.map → chunk-CKGRSCRT.js.map} +0 -0
  575. /package/dist/{chunk-YOLLISEY.js.map → chunk-CRD2WCU7.js.map} +0 -0
  576. /package/dist/{chunk-L5KPBMMF.js.map → chunk-CXL3TT3K.js.map} +0 -0
  577. /package/dist/{chunk-KOGJBAFI.js.map → chunk-D3KLIC5N.js.map} +0 -0
  578. /package/dist/{chunk-2SBQ47RI.js.map → chunk-D4JL5725.js.map} +0 -0
  579. /package/dist/{chunk-NI3MC742.js.map → chunk-DBJLYURK.js.map} +0 -0
  580. /package/dist/{chunk-75GAQL2Q.js.map → chunk-DKPELKGL.js.map} +0 -0
  581. /package/dist/{chunk-NGXL4R54.js.map → chunk-E4MJA52O.js.map} +0 -0
  582. /package/dist/{chunk-5HXVXW22.js.map → chunk-EGBQR5GH.js.map} +0 -0
  583. /package/dist/{chunk-FTYOCFTV.js.map → chunk-EGYJUJMR.js.map} +0 -0
  584. /package/dist/{chunk-7XSCEHGA.js.map → chunk-EOQ6EKTS.js.map} +0 -0
  585. /package/dist/{chunk-6AKDAQSS.js.map → chunk-ERAMSYPR.js.map} +0 -0
  586. /package/dist/{chunk-WYRH6OSN.js.map → chunk-F5EH5BJN.js.map} +0 -0
  587. /package/dist/{chunk-QCYQL3ST.js.map → chunk-FJLPVPRG.js.map} +0 -0
  588. /package/dist/{chunk-MAHY7PK3.js.map → chunk-FQMLTCXT.js.map} +0 -0
  589. /package/dist/{chunk-TMINUTQQ.js.map → chunk-FRQGZIYU.js.map} +0 -0
  590. /package/dist/{chunk-LV6AD6XC.js.map → chunk-FT3LJZWZ.js.map} +0 -0
  591. /package/dist/{chunk-IS3L67TF.js.map → chunk-FW5GTAUY.js.map} +0 -0
  592. /package/dist/{chunk-VMTOLAZ5.js.map → chunk-FZZMNKVF.js.map} +0 -0
  593. /package/dist/{chunk-FGZIEZEP.js.map → chunk-G6TKWNF2.js.map} +0 -0
  594. /package/dist/{chunk-I6IFUFLW.js.map → chunk-G7MHDZTL.js.map} +0 -0
  595. /package/dist/{chunk-KES3HNSU.js.map → chunk-GB2DQOZ7.js.map} +0 -0
  596. /package/dist/{chunk-W3IFJA35.js.map → chunk-GFYDOH7D.js.map} +0 -0
  597. /package/dist/{chunk-M2M4IDFU.js.map → chunk-GXYOBTOY.js.map} +0 -0
  598. /package/dist/{chunk-OLHAUGVQ.js.map → chunk-GZQQSTKR.js.map} +0 -0
  599. /package/dist/{chunk-N2J24TJ3.js.map → chunk-HAWOS4SF.js.map} +0 -0
  600. /package/dist/{chunk-S2VZUBM7.js.map → chunk-HCTHY66U.js.map} +0 -0
  601. /package/dist/{chunk-ABVIMFSD.js.map → chunk-HG52QQ2L.js.map} +0 -0
  602. /package/dist/{chunk-AMLHEKSV.js.map → chunk-HI7JPDD6.js.map} +0 -0
  603. /package/dist/{chunk-F5OERPU4.js.map → chunk-HOWAMSUY.js.map} +0 -0
  604. /package/dist/{chunk-3TZUZXY5.js.map → chunk-HTXYBKLK.js.map} +0 -0
  605. /package/dist/{chunk-WW3F7DCX.js.map → chunk-IFOHCY4O.js.map} +0 -0
  606. /package/dist/{chunk-S46LGAQ2.js.map → chunk-IJVBLU25.js.map} +0 -0
  607. /package/dist/{chunk-ARGVUTTL.js.map → chunk-IPVGWENM.js.map} +0 -0
  608. /package/dist/{chunk-MWXZXCVX.js.map → chunk-J43PARXM.js.map} +0 -0
  609. /package/dist/{chunk-UYKIUUWP.js.map → chunk-JJTJ7DCV.js.map} +0 -0
  610. /package/dist/{chunk-HQCZT6TO.js.map → chunk-JVOEVTCZ.js.map} +0 -0
  611. /package/dist/{chunk-2365CQJU.js.map → chunk-KAQDWEG6.js.map} +0 -0
  612. /package/dist/{chunk-TB5CRHTF.js.map → chunk-KEPLO2AB.js.map} +0 -0
  613. /package/dist/{chunk-PVIQDBUN.js.map → chunk-KUQ4XHVV.js.map} +0 -0
  614. /package/dist/{chunk-DAFFZED3.js.map → chunk-KWBMM6MJ.js.map} +0 -0
  615. /package/dist/{chunk-JJYECKEL.js.map → chunk-LFECE4R7.js.map} +0 -0
  616. /package/dist/{chunk-LXIPBHNJ.js.map → chunk-LKTJ26ST.js.map} +0 -0
  617. /package/dist/{chunk-56JF5PZK.js.map → chunk-LYVTJLCF.js.map} +0 -0
  618. /package/dist/{chunk-EYFDIUVR.js.map → chunk-M4G4LRQK.js.map} +0 -0
  619. /package/dist/{chunk-KMMFN24G.js.map → chunk-MKHNLRVX.js.map} +0 -0
  620. /package/dist/{chunk-4IG73U2X.js.map → chunk-MSPLIRBH.js.map} +0 -0
  621. /package/dist/{chunk-55MYYWOV.js.map → chunk-O4UXH7BM.js.map} +0 -0
  622. /package/dist/{chunk-DYHOBKPU.js.map → chunk-OA6T2ME3.js.map} +0 -0
  623. /package/dist/{chunk-VNMD6BA4.js.map → chunk-OFRQMFWD.js.map} +0 -0
  624. /package/dist/{chunk-LTJC7TGB.js.map → chunk-OHA2PAAA.js.map} +0 -0
  625. /package/dist/{chunk-6D5AMANO.js.map → chunk-OV5NM4FY.js.map} +0 -0
  626. /package/dist/{chunk-ZANWHTXH.js.map → chunk-OVJV2ZN7.js.map} +0 -0
  627. /package/dist/{chunk-SKQPUAMK.js.map → chunk-PDWQJFMK.js.map} +0 -0
  628. /package/dist/{chunk-6EZQLNPK.js.map → chunk-PGJIWCQR.js.map} +0 -0
  629. /package/dist/{chunk-FRAFGRRD.js.map → chunk-PIELY4BJ.js.map} +0 -0
  630. /package/dist/{chunk-BQBEN44R.js.map → chunk-PNAKRHRT.js.map} +0 -0
  631. /package/dist/{chunk-3Z6JX7UN.js.map → chunk-PZJEF232.js.map} +0 -0
  632. /package/dist/{chunk-6ATXOJVQ.js.map → chunk-QADTI63U.js.map} +0 -0
  633. /package/dist/{chunk-4RF4BALN.js.map → chunk-R775ISK6.js.map} +0 -0
  634. /package/dist/{chunk-YBAK2WN5.js.map → chunk-RFMQBIE6.js.map} +0 -0
  635. /package/dist/{chunk-43EFQ3DU.js.map → chunk-RVBLOR32.js.map} +0 -0
  636. /package/dist/{chunk-XNAI7QGU.js.map → chunk-SA3KLZDZ.js.map} +0 -0
  637. /package/dist/{chunk-CAOL4AIB.js.map → chunk-SARK3GHS.js.map} +0 -0
  638. /package/dist/{chunk-CQOJUYTT.js.map → chunk-SOXO2VN3.js.map} +0 -0
  639. /package/dist/{chunk-Z4ZFJ565.js.map → chunk-SRAIV6U6.js.map} +0 -0
  640. /package/dist/{chunk-6PU5P7QT.js.map → chunk-TDXEWGY2.js.map} +0 -0
  641. /package/dist/{chunk-SB2SEGR6.js.map → chunk-TIM4PXWN.js.map} +0 -0
  642. /package/dist/{chunk-OGSTMHT6.js.map → chunk-TTBLQZVT.js.map} +0 -0
  643. /package/dist/{chunk-VHE7UEG5.js.map → chunk-UC7DLGMP.js.map} +0 -0
  644. /package/dist/{chunk-TI4FGQYV.js.map → chunk-UHLGJHTD.js.map} +0 -0
  645. /package/dist/{chunk-TAHO2LCU.js.map → chunk-UIZIEU4X.js.map} +0 -0
  646. /package/dist/{chunk-F7LBTMCA.js.map → chunk-ULC4SCFC.js.map} +0 -0
  647. /package/dist/{chunk-FORQEHRQ.js.map → chunk-UXVWGNPG.js.map} +0 -0
  648. /package/dist/{chunk-KF3Q3C3P.js.map → chunk-VGIBWJ72.js.map} +0 -0
  649. /package/dist/{chunk-I54YFYBS.js.map → chunk-VMACQT3T.js.map} +0 -0
  650. /package/dist/{chunk-EXEBN5ZP.js.map → chunk-W56KN53D.js.map} +0 -0
  651. /package/dist/{chunk-KURE5R7Z.js.map → chunk-WGK7VNCO.js.map} +0 -0
  652. /package/dist/{chunk-UIS3E72B.js.map → chunk-WK577LQL.js.map} +0 -0
  653. /package/dist/{chunk-LLPPIO3K.js.map → chunk-WNTXHLVJ.js.map} +0 -0
  654. /package/dist/{chunk-PEVBSNCD.js.map → chunk-WPRQPKLV.js.map} +0 -0
  655. /package/dist/{chunk-C347NNZJ.js.map → chunk-WVCHMTPG.js.map} +0 -0
  656. /package/dist/{chunk-CSD6SWBZ.js.map → chunk-WYNGH2WL.js.map} +0 -0
  657. /package/dist/{chunk-PJDAZG65.js.map → chunk-XA5ES25V.js.map} +0 -0
  658. /package/dist/{chunk-L5RS6QAT.js.map → chunk-YBF2WUGQ.js.map} +0 -0
  659. /package/dist/{chunk-FWTVIRZZ.js.map → chunk-YLZXIR6B.js.map} +0 -0
  660. /package/dist/{chunk-JOQGKXR5.js.map → chunk-Z2J4MRTF.js.map} +0 -0
  661. /package/dist/{chunk-TE6HAWDM.js.map → chunk-ZP2GPRNQ.js.map} +0 -0
  662. /package/dist/{chunk-3PQL2EN5.js.map → chunk-ZW7Q3IRL.js.map} +0 -0
  663. /package/dist/{chunk-M5Y42AZ4.js.map → chunk-ZX4ORMBC.js.map} +0 -0
  664. /package/dist/native/chunks/{chunk-FXA5DLKR.js.map → chunk-UQ272RI2.js.map} +0 -0
  665. /package/dist/native/chunks/{chunk-IN3XZ7EK.js.map → chunk-X65TVC3B.js.map} +0 -0
@@ -45,6 +45,13 @@ interface DateRangePickerProps {
45
45
  messages?: Partial<DateRangePickerMessages>;
46
46
  dataTestId?: string; // default 'date-range-picker'
47
47
  className?: string;
48
+ // Opt-in, for a picker laid out IN a page (all off by default):
49
+ fieldsPlacement?: 'below' | 'beside'; // default 'below'
50
+ renderFields?: (args: { placement: 'beside' | 'below'; disabled: boolean }) => ReactNode;
51
+ openEnd?: boolean; // a start with no end is an answer
52
+ disabled?: boolean; // shown, not changeable (default false)
53
+ label?: string; // the disabled group's name (default: calendarLabel)
54
+ calendarLabels?: Partial<CalendarLabels>; // names for the month arrows
48
55
  }
49
56
  ```
50
57
 
@@ -144,8 +151,14 @@ mounts. The picker remounts it when a **quick pick** or a **typed date** moves
144
151
  the range, and never when a day inside the grid is clicked — a calendar that
145
152
  jumped under the pointer picking in it would be unusable.
146
153
 
147
- So the grid follows the range's **start**. Picking "This year" in August moves
148
- it to January, because that is where the range now begins.
154
+ So the grid follows the range's **start** — or its **end** when only the end is
155
+ chosen. Picking "This year" in August moves it to January, because that is
156
+ where the range now begins.
157
+
158
+ A consumer that owns the draft may complete a tap into a different draft than
159
+ the one the picker handed it (keeping an end the tap would have dropped). That
160
+ is still the tap's own result: the grid stays on its month and focus stays on
161
+ the tapped day. Only a change that drops a bound the tap chose moves the grid.
149
162
 
150
163
  ## Layout
151
164
 
@@ -158,6 +171,68 @@ There is no `size` prop. The day grid has a fixed metric that a size scale would
158
171
  not change, and a prop that only altered the padding of the quick entries would
159
172
  be a scale in name only.
160
173
 
174
+ ## A picker laid out in a page
175
+
176
+ The defaults above are a popover's: one framed block, fields underneath, a
177
+ summary line. A form that shows the range ALWAYS OPEN among its other fields
178
+ needs four more things, each opt-in so no existing screen changes:
179
+
180
+ - **`fieldsPlacement="beside"`** — the months get their own outlined frame and
181
+ the typed half sits on the page: in a column BESIDE the frame when the
182
+ picker's own width holds both, under it when it does not, and with one month
183
+ instead of two when two would not fit either. Measured on the picker
184
+ (`ResizeObserver`), never the viewport: a form column beside a preview is
185
+ narrow on the widest screen. The root carries `data-fields-placement`.
186
+ - **`renderFields({ placement, disabled })`** — the consumer's OWN fields instead of the
187
+ built-in pair, for a form whose fields carry rules this picker does not (a
188
+ half-typed date kept until submit, its own messages). The summary line goes
189
+ with the built-in pair: beside fields that say their own refusals it would
190
+ only repeat them. The calendar follows the value whenever the consumer moves
191
+ it, as it follows a typed date — never on a click in the grid.
192
+ - **`openEnd`** — a start with no end is a finished answer ("from this day
193
+ on"), and the summary says `messages.openEnded` (default `No end date.`)
194
+ instead of asking for the end. It does not repeat the date: the field beside
195
+ it shows it. `resolveDayRange` is unchanged; what an open end means is the
196
+ caller's.
197
+ - **`calendarLabels`** — names for the calendar's month arrows
198
+ (`PT_BR_UI_LABELS.calendar` in Portuguese); without them they stay unnamed,
199
+ as before. `PT_BR_UI_LABELS.dateRangePicker.openEnded` is the Portuguese
200
+ `openEnded`.
201
+ - **`disabled`** — the period is shown but cannot be changed now (a consumer
202
+ that cannot place its days, FUT-4482). Every day is disabled and a tap
203
+ writes nothing, the quick ranges are not offered, the built-in boxes are
204
+ disabled, `renderFields` receives `disabled: true` so the consumer's fields
205
+ follow, and the root is a `group` named by `label` (default: the calendar
206
+ label) carrying `aria-disabled`. The month arrows are disabled and today's
207
+ ring takes the disabled ink. The days INSIDE a shown range keep the
208
+ secondary ink (`text.secondary`), so the period stays legible on the band
209
+ (the disabled ink there was 1.56:1). That is the locked picker only: on a
210
+ live one, a day `isDateDisabled` blocks inside the range keeps the disabled
211
+ ink. The control cannot say why: say it beside the
212
+ picker, and make that sentence your fields' `aria-describedby`. **In a
213
+ popover the consumer disables its own trigger** — the button or field that
214
+ opens the popover is the consumer's, and this prop cannot reach it.
215
+ - **`showOutsideDays`, `todayIndicator`, `allowSameDayRange`** — `Calendar`'s
216
+ own options, passed through: hide the neighbouring months' days, ring today
217
+ (`'ring'`), or refuse one day as a whole range (a second tap on the start day
218
+ then does nothing). Defaults unchanged: drawn, bold, allowed.
219
+
220
+ Under the fields' row (`placement="below"`) the frame is as wide as its months
221
+ and centred, never stretched across the page around one month.
222
+
223
+ - **`fullWidth`** (with `fieldsPlacement="beside"`) — the frame's edges are the
224
+ picker's: under the fields it spans the picker, beside them it takes what the
225
+ fields' column leaves (never less than its months at full size), and that
226
+ column stops at 320 design px. The calendar's seven columns spread across the
227
+ frame; the day faces keep their 40 design px, and the rows stay 40 tall. Under
228
+ the fields the frame trims its side padding before a column drops under 40
229
+ design px (a phone's tap target). For a picker laid into a form section whose
230
+ heading and fields the frame must line up with. Ignored in the default
231
+ (popover) layout. Default off.
232
+ - **The in-page frame** is a card on the page: the raised surface role
233
+ (`surfaces(theme).raised`, `background.paper` unless the host states one) and the
234
+ default `Card`'s radius.
235
+
161
236
  ## Accessibility
162
237
 
163
238
  - The quick entries are native `<button>`s with `aria-pressed`; the active one
@@ -64,6 +64,7 @@ export function defaultMessages(): DateRangePickerMessages {
64
64
  to: 'End date',
65
65
  quickRanges: 'Quick ranges',
66
66
  incomplete: 'Choose both dates.',
67
+ openEnded: EN_US_UI_LABELS.dateRangePicker.openEnded,
67
68
  reversed: 'The end date must be on or after the start date.',
68
69
  overMax: ({ maxRangeDays }) => `Choose a range of at most ${maxRangeDays} days.`,
69
70
  summary: ({ from, to }) => `${isoToMasked(from, dayMask)} – ${isoToMasked(to, dayMask)}`,
@@ -72,14 +73,21 @@ export function defaultMessages(): DateRangePickerMessages {
72
73
  };
73
74
  }
74
75
 
75
- /** The line under the fields: the chosen window, or why there isn't one. */
76
+ /**
77
+ * The line under the fields: the chosen window, or why there isn't one. With
78
+ * `openEnd`, a start with no end is an answer of its own and is said as one.
79
+ */
76
80
  export function statusMessage(
77
81
  status: DateRangeStatus,
78
82
  messages: DateRangePickerMessages,
79
83
  maxRangeDays: number | undefined,
84
+ openEnd: { enabled: boolean; draft: DateRangeDraft } = { enabled: false, draft: { from: null, to: null } },
80
85
  ): string {
81
86
  if (status.ok) return messages.summary(status.window);
82
- if (status.problem === 'incomplete') return messages.incomplete;
87
+ if (status.problem === 'incomplete') {
88
+ const openEnded = openEnd.enabled && openEnd.draft.from !== null && openEnd.draft.to === null;
89
+ return openEnded ? (messages.openEnded ?? messages.incomplete) : messages.incomplete;
90
+ }
83
91
  if (status.problem === 'reversed') return messages.reversed;
84
92
  return messages.overMax({ maxRangeDays: maxRangeDays ?? status.days, days: status.days });
85
93
  }
@@ -27,34 +27,27 @@ import Paper from '@mui/material/Paper/index.js';
27
27
  import useMediaQuery from '@mui/material/useMediaQuery/index.js';
28
28
  import { useTheme } from '@mui/material/styles/index.js';
29
29
  import type { SxProps, Theme } from '@mui/material/styles/index.js';
30
- import React from 'react';
30
+ import React, { useRef } from 'react';
31
31
 
32
+ import type { CalendarLabels } from '../../../copy/labels';
32
33
  import { Calendar } from '../Calendar';
33
34
 
34
35
  import { toLocalDay } from './DateRangePicker.dates';
35
36
  import { useDateRangePicker } from './DateRangePicker.hooks';
37
+ import { CALENDAR_CLASS, FLAT_CALENDAR, fieldsColumnSx, frameSx } from './DateRangePicker.frame';
38
+ import { besideLayout, useMeasuredWidth, type FieldsPlacement } from './DateRangePicker.layout';
36
39
  import { DEFAULT_QUICK_RANGES } from './DateRangePicker.quick';
37
40
  import type { DateRangeDraft, DateRangePickerProps, WeekStart } from './DateRangePicker.types';
38
41
  import { DateRangeFields } from './DateRangePickerFields';
39
42
  import { DateRangeQuickList } from './DateRangePickerQuickList';
40
43
 
41
- const CALENDAR_CLASS = 'date-range-picker__calendar';
42
-
43
44
  const ROOT_SX: SxProps<Theme> = {
44
45
  display: 'inline-flex',
45
46
  flexDirection: 'column',
46
47
  gap: 2,
47
48
  p: 2,
48
49
  maxWidth: '100%',
49
- // `Calendar` renders its own `Paper` with 24px of padding. Nested in this one
50
- // that reads as a box inside a box, so the inner frame is flattened here
51
- // through the className hook the component exposes for exactly this.
52
- [`& .${CALENDAR_CLASS}`]: {
53
- p: 0,
54
- boxShadow: 'none',
55
- backgroundColor: 'transparent',
56
- backgroundImage: 'none',
57
- },
50
+ ...FLAT_CALENDAR,
58
51
  };
59
52
 
60
53
  const BODY_SX: SxProps<Theme> = {
@@ -132,6 +125,15 @@ function useMonthCount(requested: number | undefined): number | undefined {
132
125
  }
133
126
 
134
127
  /** The grid, in range mode — `Calendar`, never a second implementation of one. */
128
+ /** The calendar options a picker passes through untouched. */
129
+ type CalendarDisplay = Pick<
130
+ DateRangePickerProps,
131
+ 'showOutsideDays' | 'todayIndicator' | 'allowSameDayRange' | 'fullWidth' | 'disabled'
132
+ >;
133
+
134
+ /** Every day, for a picker that is `disabled`. */
135
+ const EVERY_DAY = (): boolean => true;
136
+
135
137
  function RangeCalendar({
136
138
  calendarLabel,
137
139
  picker,
@@ -140,7 +142,11 @@ function RangeCalendar({
140
142
  weekStartsOn,
141
143
  months,
142
144
  maxRangeDays,
145
+ labels,
146
+ display,
143
147
  }: {
148
+ labels: Partial<CalendarLabels> | undefined;
149
+ display: CalendarDisplay;
144
150
  picker: Picker;
145
151
  value: DateRangeDraft;
146
152
  locale: string;
@@ -169,6 +175,12 @@ function RangeCalendar({
169
175
  // The same ceiling the quick list is judged against, so the calendar
170
176
  // cannot hand back a window the control has just called too long.
171
177
  maxRangeLength={maxRangeDays}
178
+ {...(labels ? { labels } : {})}
179
+ showOutsideDays={display.showOutsideDays}
180
+ todayIndicator={display.todayIndicator}
181
+ allowSameDayRange={display.allowSameDayRange}
182
+ fullWidth={display.fullWidth}
183
+ {...(display.disabled === true ? { isDateDisabled: EVERY_DAY, navigationDisabled: true } : {})}
172
184
  />
173
185
  );
174
186
  }
@@ -200,59 +212,167 @@ function QuickColumn({
200
212
  );
201
213
  }
202
214
 
203
- export function DateRangePicker({
204
- value,
205
- onChange,
206
- timeZone,
207
- now,
208
- maxRangeDays,
209
- weekStartsOn = 0,
210
- quickRanges = DEFAULT_QUICK_RANGES,
211
- locale = 'en-US',
212
- numberOfMonths,
213
- messages,
214
- dataTestId = 'date-range-picker',
215
- className,
216
- }: DateRangePickerProps): React.JSX.Element {
215
+ /** The typed half: the consumer's own fields, or the built-in pair and its line. */
216
+ function TypedHalf({
217
+ props,
218
+ picker,
219
+ placement,
220
+ }: {
221
+ props: DateRangePickerProps;
222
+ picker: Picker;
223
+ placement: FieldsPlacement;
224
+ }): React.JSX.Element {
225
+ const disabled = props.disabled === true;
226
+ if (props.renderFields) return <>{props.renderFields({ placement, disabled })}</>;
227
+ return (
228
+ <DateRangeFields
229
+ value={props.value}
230
+ status={picker.status}
231
+ messages={picker.copy}
232
+ maxRangeDays={props.maxRangeDays}
233
+ onEdit={picker.editBound}
234
+ statusId={picker.statusId}
235
+ dataTestId={props.dataTestId ?? 'date-range-picker'}
236
+ openEnd={props.openEnd ?? false}
237
+ stacked={placement === 'beside'}
238
+ disabled={disabled}
239
+ />
240
+ );
241
+ }
242
+
243
+ /**
244
+ * How many months, and where the typed half goes. The default layout counts
245
+ * months by the viewport, as it always did; `beside` measures the picker.
246
+ */
247
+ function usePickerLayout(props: DateRangePickerProps): {
248
+ root: React.RefObject<HTMLDivElement | null>;
249
+ months: number | undefined;
250
+ placement: FieldsPlacement;
251
+ } {
252
+ const theme = useTheme();
253
+ const viewportMonths = useMonthCount(props.numberOfMonths);
254
+ const root = useRef<HTMLDivElement>(null);
255
+ const beside = props.fieldsPlacement === 'beside';
256
+ const width = useMeasuredWidth(root, beside);
257
+ if (!beside || width === null) return { root, months: viewportMonths, placement: 'below' };
258
+ const layout = besideLayout(width, props.numberOfMonths ?? 2, theme);
259
+ return { root, months: layout.months, placement: layout.placement };
260
+ }
261
+
262
+ /** The `beside` layout: the months in their own frame, the fields on the page. */
263
+ function InPageLayout({
264
+ props,
265
+ picker,
266
+ layout,
267
+ body,
268
+ }: {
269
+ props: DateRangePickerProps;
270
+ picker: Picker;
271
+ layout: ReturnType<typeof usePickerLayout>;
272
+ body: React.ReactNode;
273
+ }): React.JSX.Element {
274
+ const sideBySide = layout.placement === 'beside';
275
+ return (
276
+ <Box
277
+ ref={layout.root}
278
+ className={props.className}
279
+ data-testid={props.dataTestId ?? 'date-range-picker'}
280
+ data-fields-placement={layout.placement}
281
+ {...disabledGroup(props, picker)}
282
+ sx={{
283
+ display: 'flex',
284
+ flexDirection: sideBySide ? 'row' : 'column',
285
+ alignItems: sideBySide ? 'flex-start' : 'stretch',
286
+ gap: sideBySide ? 4 : 2,
287
+ width: '100%',
288
+ minWidth: 0,
289
+ }}
290
+ >
291
+ <Paper variant="outlined" sx={frameSx(sideBySide, props.fullWidth === true, layout.months ?? 1)}>
292
+ {body}
293
+ </Paper>
294
+ <Box sx={fieldsColumnSx(sideBySide, props.fullWidth === true)}>
295
+ <TypedHalf props={props} picker={picker} placement={layout.placement} />
296
+ </Box>
297
+ </Box>
298
+ );
299
+ }
300
+
301
+ /**
302
+ * A disabled picker's root is a named GROUP (review round 6): `aria-disabled`
303
+ * is only valid on an element with a role, and the name says what is off.
304
+ * Enabled, the root carries neither, as it always did.
305
+ */
306
+ function disabledGroup(props: DateRangePickerProps, picker: Picker) {
307
+ if (props.disabled !== true) return {};
308
+ return { role: 'group', 'aria-label': props.label ?? picker.copy.calendarLabel, 'aria-disabled': true } as const;
309
+ }
310
+
311
+ /** The default layout: one framed block, the typed half under the months. */
312
+ function PopoverLayout({
313
+ props,
314
+ picker,
315
+ body,
316
+ }: {
317
+ props: DateRangePickerProps;
318
+ picker: Picker;
319
+ body: React.ReactNode;
320
+ }): React.JSX.Element {
321
+ const typed = <TypedHalf props={props} picker={picker} placement="below" />;
322
+ return (
323
+ <Paper
324
+ className={props.className}
325
+ data-testid={props.dataTestId ?? 'date-range-picker'}
326
+ {...disabledGroup(props, picker)}
327
+ sx={ROOT_SX}
328
+ >
329
+ {body}
330
+ {props.renderFields ? typed : <Box sx={FIELDS_DIVIDER_SX}>{typed}</Box>}
331
+ </Paper>
332
+ );
333
+ }
334
+
335
+ export function DateRangePicker(props: DateRangePickerProps): React.JSX.Element {
336
+ const { value, maxRangeDays, weekStartsOn = 0, locale = 'en-US', dataTestId = 'date-range-picker' } = props;
217
337
  const picker = useDateRangePicker({
218
338
  value,
219
- onChange,
220
- timeZone,
221
- now,
339
+ onChange: props.onChange,
340
+ timeZone: props.timeZone,
341
+ now: props.now,
222
342
  maxRangeDays,
223
343
  weekStartsOn,
224
- quickRanges,
225
- messages,
344
+ quickRanges: props.quickRanges ?? DEFAULT_QUICK_RANGES,
345
+ messages: props.messages,
346
+ followValue: props.renderFields !== undefined,
226
347
  });
227
- const months = useMonthCount(numberOfMonths);
348
+ const layout = usePickerLayout(props);
228
349
 
229
- return (
230
- <Paper className={className} data-testid={dataTestId} sx={ROOT_SX}>
231
- <Box sx={BODY_SX}>
232
- <RangeCalendar
233
- calendarLabel={picker.copy.calendarLabel}
234
- picker={picker}
235
- value={value}
236
- locale={locale}
237
- weekStartsOn={weekStartsOn}
238
- months={months}
239
- maxRangeDays={maxRangeDays}
240
- />
350
+ const body = (
351
+ <Box sx={BODY_SX}>
352
+ <RangeCalendar
353
+ calendarLabel={picker.copy.calendarLabel}
354
+ picker={picker}
355
+ value={value}
356
+ locale={locale}
357
+ weekStartsOn={weekStartsOn}
358
+ months={layout.months}
359
+ maxRangeDays={maxRangeDays}
360
+ labels={props.calendarLabels}
361
+ // `fullWidth` fills the in-page frame; the popover's frame is as wide
362
+ // as its months, and a filling calendar in it spread past the quick
363
+ // column and the typed pair (FUT-4156, round 3).
364
+ display={{ ...props, fullWidth: props.fieldsPlacement === 'beside' && props.fullWidth === true }}
365
+ />
366
+ {props.disabled === true ? null : (
241
367
  <QuickColumn picker={picker} maxRangeDays={maxRangeDays} dataTestId={dataTestId} />
242
- </Box>
243
- <Box sx={FIELDS_DIVIDER_SX}>
244
- <DateRangeFields
245
- value={value}
246
- status={picker.status}
247
- messages={picker.copy}
248
- maxRangeDays={maxRangeDays}
249
- onEdit={picker.editBound}
250
- statusId={picker.statusId}
251
- dataTestId={dataTestId}
252
- />
253
- </Box>
254
- </Paper>
368
+ )}
369
+ </Box>
255
370
  );
371
+
372
+ if (props.fieldsPlacement === 'beside') {
373
+ return <InPageLayout props={props} picker={picker} layout={layout} body={body} />;
374
+ }
375
+ return <PopoverLayout props={props} picker={picker} body={body} />;
256
376
  }
257
377
 
258
378
  export default DateRangePicker;
@@ -4,7 +4,10 @@
4
4
  * "1 August" is the same day in every zone, and only the question "which day is
5
5
  * TODAY" needs a zone to answer.
6
6
  */
7
- import type { DateRange } from '../Calendar';
7
+ import type React from 'react';
8
+
9
+ import type { CalendarLabels } from '../../../copy/labels';
10
+ import type { CalendarTodayIndicator, DateRange } from '../Calendar';
8
11
 
9
12
  /** One inclusive calendar day as `AAAA-MM-DD`. Sorts lexicographically. */
10
13
  export type DayString = string;
@@ -90,6 +93,12 @@ export interface DateRangePickerMessages {
90
93
  quickRanges: string;
91
94
  /** Shown while only one end is chosen. */
92
95
  incomplete: string;
96
+ /**
97
+ * Shown, with `openEnd`, for a start with no end: a finished answer ("no end
98
+ * date"), worded WITHOUT the date, which the field beside it already shows.
99
+ * Optional so a full messages object written before it still type-checks.
100
+ */
101
+ openEnded?: string;
93
102
  /** Shown when the start is after the end. */
94
103
  reversed: string;
95
104
  /** Shown when the range — typed or quick-picked — exceeds the cap. */
@@ -164,6 +173,78 @@ export interface DateRangePickerProps {
164
173
  numberOfMonths?: number;
165
174
  /** Copy overrides, merged over the English defaults. */
166
175
  messages?: Partial<DateRangePickerMessages>;
176
+ /**
177
+ * Where the typed half sits. `below` (default) is the layout this picker
178
+ * always had. `beside` is for a picker laid out in a page rather than a
179
+ * popover: the months sit in their own frame and the fields in a column
180
+ * beside them when the PICKER's own width has room for both, under them when
181
+ * it has not — and one month instead of two when two would not fit either.
182
+ * Decided by measuring the picker, not the viewport, because a form column
183
+ * beside a preview is narrow on the widest screen.
184
+ */
185
+ fieldsPlacement?: 'below' | 'beside';
186
+ /**
187
+ * With `fieldsPlacement="beside"`: the months' frame meets the picker's own
188
+ * edges instead of hugging its months. Under the fields' row the frame spans
189
+ * the picker; beside them it takes what the fields' column leaves, and that
190
+ * column stops at 320 design px — a `dd/mm/aaaa` date and its message need
191
+ * no more. The calendar's seven columns spread across the frame and the day
192
+ * faces keep their size (`Calendar` `fullWidth`). For a picker laid into a
193
+ * form section whose edges the frame must line up with. Under the fields the
194
+ * frame trims its side padding before a column drops under 40 design px.
195
+ * Ignored without `fieldsPlacement="beside"`: the popover's frame is as wide
196
+ * as its months. Default: false — the frame as wide as its months, centred
197
+ * under the fields.
198
+ */
199
+ fullWidth?: boolean;
200
+ /**
201
+ * The consumer's OWN typed fields, in place of the built-in pair and the
202
+ * summary line under it — for a form whose fields carry its own rules (a
203
+ * half-typed date kept until submit, its own messages), which a second line
204
+ * would only repeat. Told where it sits, so it can lay its fields out for it.
205
+ * The calendar follows the value when the consumer changes it, as it follows
206
+ * a typed date.
207
+ */
208
+ renderFields?: (args: { placement: 'beside' | 'below'; disabled: boolean }) => React.ReactNode;
209
+ /**
210
+ * The period is shown but cannot be changed now — its consumer cannot place
211
+ * its days (FUT-4482). Every day of the grid is disabled and a tap writes
212
+ * nothing, the quick ranges are not offered, the built-in boxes are
213
+ * disabled, `renderFields` is told (`disabled`) so the consumer's own fields
214
+ * follow, and the root is a `group` named by `label` that carries
215
+ * `aria-disabled`. The month arrows are disabled too and today's ring takes
216
+ * the disabled ink (review round 6). Say WHY next to the picker; the control
217
+ * cannot — and describe the consumer's own fields with that sentence.
218
+ *
219
+ * In a popover, the picker is only what opens: the consumer disables its OWN
220
+ * trigger (the button or field that opens the popover); this prop cannot
221
+ * reach it. Default: false.
222
+ */
223
+ disabled?: boolean;
224
+ /**
225
+ * The picker's accessible name while it is `disabled` and its root is a
226
+ * group. Default: `messages.calendarLabel`.
227
+ */
228
+ label?: string;
229
+ /**
230
+ * A start with no end is a finished answer — "from this day on" — rather
231
+ * than half a range: the summary says `messages.openEnded` instead of asking
232
+ * for the end. `resolveDayRange` is unchanged; the caller decides what an
233
+ * open end means to it.
234
+ */
235
+ openEnd?: boolean;
236
+ /**
237
+ * The calendar's display options, passed through (`Calendar`'s own):
238
+ * whether a month shows its neighbours' days (default true), how today is
239
+ * marked (default `'bold'`), and whether one day may be the whole range
240
+ * (default true). With `allowSameDayRange={false}` a second tap on the start
241
+ * day does nothing.
242
+ */
243
+ showOutsideDays?: boolean;
244
+ todayIndicator?: CalendarTodayIndicator;
245
+ allowSameDayRange?: boolean;
246
+ /** Names for the calendar's own controls (the month arrows), in the host's language. */
247
+ calendarLabels?: Partial<CalendarLabels>;
167
248
  /** Root test id; every part derives from it (`-from`, `-quick-today`, …). */
168
249
  dataTestId?: string;
169
250
  className?: string;
@@ -182,6 +263,12 @@ export interface UseDateRangePickerArgs {
182
263
  weekStartsOn: WeekStart;
183
264
  quickRanges: QuickRange[];
184
265
  messages: Partial<DateRangePickerMessages> | undefined;
266
+ /**
267
+ * Remount the calendar onto the range whenever the CONSUMER moves it, not
268
+ * only when a typed field or a quick pick does — true when the consumer owns
269
+ * the fields (`renderFields`), whose edits never pass through the picker.
270
+ */
271
+ followValue?: boolean;
185
272
  }
186
273
 
187
274
  /** Everything the component renders from, and every way the range can move. */
@@ -38,6 +38,12 @@ export interface DateRangeFieldsProps {
38
38
  /** Id of the status line, so both fields can point at it. */
39
39
  statusId: string;
40
40
  dataTestId: string;
41
+ /** A start with no end is an answer (`openEnd`), not a half-chosen range. */
42
+ openEnd?: boolean;
43
+ /** Beside the months the pair stacks; under them it sits side by side. */
44
+ stacked?: boolean;
45
+ /** The picker is `disabled`: both boxes are. */
46
+ disabled?: boolean;
41
47
  }
42
48
 
43
49
  export function DateRangeFields({
@@ -48,6 +54,9 @@ export function DateRangeFields({
48
54
  onEdit,
49
55
  statusId,
50
56
  dataTestId,
57
+ openEnd = false,
58
+ stacked = false,
59
+ disabled = false,
51
60
  }: DateRangeFieldsProps): React.JSX.Element {
52
61
  // "Incomplete" is not an error — it is a range that is not finished yet, and
53
62
  // painting it red would make the first click on a two-click control look like
@@ -56,7 +65,7 @@ export function DateRangeFields({
56
65
 
57
66
  return (
58
67
  <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>
59
- <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 2 }}>
68
+ <Box sx={{ display: 'flex', flexDirection: stacked ? 'column' : 'row', flexWrap: 'wrap', gap: 2 }}>
60
69
  <DayBoundInput
61
70
  mask={messages.dayMask}
62
71
  label={messages.from}
@@ -65,6 +74,7 @@ export function DateRangeFields({
65
74
  testId={`${dataTestId}-from`}
66
75
  error={rejected}
67
76
  describedBy={statusId}
77
+ disabled={disabled}
68
78
  />
69
79
  <DayBoundInput
70
80
  mask={messages.dayMask}
@@ -74,6 +84,7 @@ export function DateRangeFields({
74
84
  testId={`${dataTestId}-to`}
75
85
  error={rejected}
76
86
  describedBy={statusId}
87
+ disabled={disabled}
77
88
  />
78
89
  </Box>
79
90
  <Typography
@@ -86,7 +97,7 @@ export function DateRangeFields({
86
97
  color={rejected ? 'error.main' : 'text.secondary'}
87
98
  data-testid={`${dataTestId}-status`}
88
99
  >
89
- {statusMessage(status, messages, maxRangeDays)}
100
+ {statusMessage(status, messages, maxRangeDays, { enabled: openEnd, draft: value })}
90
101
  </Typography>
91
102
  </Box>
92
103
  );
@@ -78,7 +78,8 @@ The Tabs component provides an intuitive way to organize related content into se
78
78
  | Prop | Type | Default | Description |
79
79
  | ---------------- | --------------------------------------- | -------- | ------------------------------ |
80
80
  | `scrollable` | `boolean` | `false` | Enable scrolling for many tabs |
81
- | `scrollButtons` | `'auto' \| 'desktop' \| 'on' \| 'off'` | `'auto'` | Scroll button behavior |
81
+ | `scrollButtons` | `boolean \| 'auto' \| 'desktop' \| 'on' \| 'off'` | `'auto'` | The ‹ › buttons of a `scrollable` strip: `'auto'` while it overflows, `true` always, `false` never (swipe/wheel/keyboard still scroll). `'desktop'`, `'on'`, `'off'` are deprecated and behave as `'auto'` |
82
+ | `allowScrollButtonsMobile` | `boolean` | `scrollable` | Show the scroll buttons on phone widths too; `false` keeps MUI's hide-below-`sm` rule |
82
83
  | `sticky` | `boolean` | `false` | Pin the tab list while panels scroll beneath it |
83
84
  | `stickyOffset` | `number` | `0` | Top offset (px) when `sticky` — e.g. a fixed header height |
84
85
 
@@ -270,6 +271,26 @@ function ScrollableTabsExample() {
270
271
  }
271
272
  ```
272
273
 
274
+ ### Scrollable Tabs Without Scroll Buttons
275
+
276
+ `scrollButtons={false}` keeps the strip scrollable (swipe, wheel, keyboard) but
277
+ renders no ‹ › buttons, so the tabs run edge to edge and nothing shifts when the
278
+ strip leaves its start. A host that wants arrows draws its own, for example
279
+ overlaid on a fade at the side with more tabs.
280
+
281
+ ```tsx
282
+ <Tabs
283
+ items={items}
284
+ value={activeTab}
285
+ onChange={handleChange}
286
+ scrollable
287
+ scrollButtons={false}
288
+ />
289
+ ```
290
+
291
+ Note that `scrollButtons="off"` does **not** do this: the legacy strings
292
+ `'desktop'`, `'on'` and `'off'` all behave as `'auto'`, as they always have.
293
+
273
294
  ### Sticky, Scrollable Tabs
274
295
 
275
296
  Pin the tab list under a fixed header while the panels scroll, and let the row