@12-apps/ui 6.79.0 → 6.81.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 (543) hide show
  1. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +3 -3
  2. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.parts.js +2 -1
  3. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +6 -4
  4. package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -1
  5. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +8 -8
  6. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +8 -8
  7. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +3 -3
  8. package/dist/_internal/components/data-display/Carousel/Carousel.js +4 -4
  9. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +2 -2
  10. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +26 -25
  11. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +38 -37
  12. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +3 -3
  13. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +9 -9
  14. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +3 -3
  15. package/dist/_internal/components/data-display/DataViews/data-views-card-body.js +2 -2
  16. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +7 -6
  17. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +2 -2
  18. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +2 -2
  19. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +12 -11
  20. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +3 -3
  21. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +1 -1
  22. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +23 -22
  23. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +12 -11
  24. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +10 -9
  25. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +11 -10
  26. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +3 -2
  27. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +11 -10
  28. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +16 -15
  29. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +10 -9
  30. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +1 -1
  31. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +3 -3
  32. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +2 -1
  33. package/dist/_internal/components/data-display/ErrorState/ErrorState.js +2 -1
  34. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +8 -8
  35. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +7 -7
  36. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +1 -1
  37. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +11 -10
  38. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +2 -2
  39. package/dist/_internal/components/data-display/LoadingState/LoadingState.js +3 -1
  40. package/dist/_internal/components/data-display/MapPreview/MapControlBar.js +3 -3
  41. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +4 -4
  42. package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +3 -3
  43. package/dist/_internal/components/data-display/MapPreview/MapPreview.helpers.js +2 -2
  44. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +6 -6
  45. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +4 -4
  46. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +3 -2
  47. package/dist/_internal/components/data-display/Sheet/Sheet.js +4 -3
  48. package/dist/_internal/components/data-display/Sheet/Sheet.parts.js +2 -1
  49. package/dist/_internal/components/data-display/Stepper/Stepper.js +2 -2
  50. package/dist/_internal/components/data-display/Table/Table.js +3 -3
  51. package/dist/_internal/components/data-display/Table/TableParts.hooks.js +2 -2
  52. package/dist/_internal/components/data-display/Table/TableParts.js +2 -2
  53. package/dist/_internal/components/data-display/Timeline/Timeline.js +2 -2
  54. package/dist/_internal/components/data-display/index.js +29 -29
  55. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +5 -5
  56. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +4 -4
  57. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +6 -6
  58. package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +5 -5
  59. package/dist/_internal/components/feedback/Dialog/Dialog.js +2 -2
  60. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +3 -3
  61. package/dist/_internal/components/feedback/Sonner/Sonner.js +2 -2
  62. package/dist/_internal/components/feedback/StackedModal/StackedModal.js +3 -3
  63. package/dist/_internal/components/feedback/StackedModal/StackedModal.parts.js +2 -2
  64. package/dist/_internal/components/feedback/Toast/Toast.js +2 -2
  65. package/dist/_internal/components/feedback/index.js +13 -13
  66. package/dist/_internal/components/form/Command/Command.hooks.js +2 -1
  67. package/dist/_internal/components/form/Command/Command.js +4 -3
  68. package/dist/_internal/components/form/Command/Command.parts.js +2 -1
  69. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +3 -2
  70. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +5 -4
  71. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +2 -1
  72. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +3 -2
  73. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +2 -1
  74. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.dom.js +2 -2
  75. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.format.js +3 -3
  76. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.hooks.js +4 -4
  77. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +5 -5
  78. package/dist/_internal/components/form/index.js +13 -13
  79. package/dist/_internal/components/form/total-form/FormErrorSnackbar.js +3 -3
  80. package/dist/_internal/components/index.js +75 -74
  81. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +2 -1
  82. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +3 -2
  83. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +2 -1
  84. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +2 -2
  85. package/dist/_internal/components/layout/Dashboard/Dashboard.js +2 -2
  86. package/dist/_internal/components/layout/Drawer/Drawer.js +2 -1
  87. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +3 -2
  88. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.rail.js +1 -1
  89. package/dist/_internal/components/layout/TableFilter/TableFilter.js +2 -1
  90. package/dist/_internal/components/layout/index.js +9 -8
  91. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +6 -6
  92. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +2 -1
  93. package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.js +2 -1
  94. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +3 -3
  95. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +2 -2
  96. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +4 -3
  97. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +5 -4
  98. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +3 -2
  99. package/dist/_internal/components/navigation/index.js +15 -14
  100. package/dist/_internal/components/typography/Code/Code.js +2 -2
  101. package/dist/_internal/components/typography/index.js +2 -2
  102. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.js +2 -1
  103. package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.js +3 -2
  104. package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.parts.js +2 -1
  105. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +2 -2
  106. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +5 -5
  107. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +3 -3
  108. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +4 -4
  109. package/dist/_internal/components/utility/index.js +8 -8
  110. package/dist/_internal/en-US.data-display.js +1 -1
  111. package/dist/_internal/en-US.labels.js +1 -1
  112. package/dist/_internal/pt-BR.data-display.js +1 -1
  113. package/dist/_internal/pt-BR.labels.js +1 -1
  114. package/dist/_internal/social-login-button/social-login-button.js +2 -1
  115. package/dist/_internal/user-avatar/user-avatar.js +3 -2
  116. package/dist/{chunk-LIWONEAU.js → chunk-3B7EJIG7.js} +2 -2
  117. package/dist/{chunk-GHXW6O5T.js → chunk-3LQLLL2J.js} +4 -4
  118. package/dist/chunk-3LQLLL2J.js.map +1 -0
  119. package/dist/{chunk-GJMWQUAD.js → chunk-3OWFUFZL.js} +6 -3
  120. package/dist/chunk-3OWFUFZL.js.map +1 -0
  121. package/dist/{chunk-V64USPG3.js → chunk-4JV46KXS.js} +3 -3
  122. package/dist/{chunk-UJT6AQHL.js → chunk-4NVEUJXK.js} +2 -2
  123. package/dist/{chunk-PBMCRDZI.js → chunk-4PREA2R5.js} +5 -2
  124. package/dist/chunk-4PREA2R5.js.map +1 -0
  125. package/dist/{chunk-YZX4DVRS.js → chunk-52UVUVYQ.js} +6 -3
  126. package/dist/chunk-52UVUVYQ.js.map +1 -0
  127. package/dist/{chunk-PIP7XII2.js → chunk-5JDY5W7O.js} +3 -3
  128. package/dist/{chunk-YJ6UQDA6.js → chunk-634Z7HGN.js} +6 -3
  129. package/dist/chunk-634Z7HGN.js.map +1 -0
  130. package/dist/{chunk-556LO6KA.js → chunk-6B7VZFAO.js} +2 -2
  131. package/dist/{chunk-FLTXJWOC.js → chunk-6EERXU6R.js} +2 -2
  132. package/dist/{chunk-TPGFR24B.js → chunk-6IVR5HFI.js} +6 -6
  133. package/dist/{chunk-J26ZWYQI.js → chunk-6KCJNERH.js} +2 -2
  134. package/dist/{chunk-AXZCCX7O.js → chunk-6S7CFH6V.js} +2 -2
  135. package/dist/{chunk-3XLSA3YB.js → chunk-763AHWKU.js} +2 -2
  136. package/dist/{chunk-6MGYPTAL.js → chunk-7DODMQRK.js} +2 -2
  137. package/dist/{chunk-C4OETF7K.js → chunk-7H5BIZ33.js} +3 -3
  138. package/dist/{chunk-UGYBN6OO.js → chunk-7HYLXERK.js} +4 -4
  139. package/dist/{chunk-M3ZNQTS5.js → chunk-7S3NG2AO.js} +4 -4
  140. package/dist/{chunk-WE43PZ4P.js → chunk-7UDQJOZZ.js} +2 -2
  141. package/dist/{chunk-3ZWCKCZC.js → chunk-A7LBWRRW.js} +5 -2
  142. package/dist/chunk-A7LBWRRW.js.map +1 -0
  143. package/dist/{chunk-5GLOEGOM.js → chunk-ABJOW7EK.js} +2 -2
  144. package/dist/{chunk-GPPUKDA6.js → chunk-AFSXC5FU.js} +2 -2
  145. package/dist/{chunk-G2IVONJD.js → chunk-AISCD6W6.js} +2 -2
  146. package/dist/{chunk-ZYKDUKAH.js → chunk-B2RNNJRO.js} +7 -4
  147. package/dist/chunk-B2RNNJRO.js.map +1 -0
  148. package/dist/{chunk-HPEBSLYP.js → chunk-B67KUCWU.js} +2 -2
  149. package/dist/{chunk-CYKINZKO.js → chunk-BFBCTF2Y.js} +2 -2
  150. package/dist/{chunk-WUW6NDXC.js → chunk-BLVFHVDM.js} +7 -7
  151. package/dist/{chunk-GHGZI7PK.js → chunk-BMVLTTTC.js} +6 -3
  152. package/dist/{chunk-GHGZI7PK.js.map → chunk-BMVLTTTC.js.map} +1 -1
  153. package/dist/{chunk-UG4EMHMW.js → chunk-BTDY2NYV.js} +2 -2
  154. package/dist/{chunk-KE74C2SM.js → chunk-C2I7NQC4.js} +2 -2
  155. package/dist/{chunk-LR473BUT.js → chunk-C7LHIDVB.js} +3 -3
  156. package/dist/{chunk-V45JGJ3W.js → chunk-CFDYQSN6.js} +3 -3
  157. package/dist/{chunk-BJ7NWZWO.js → chunk-D4LMRSY7.js} +2 -2
  158. package/dist/{chunk-GPQ22MPR.js → chunk-DB7OJM6X.js} +2 -2
  159. package/dist/{chunk-66BRUS2M.js → chunk-DD3VFDB2.js} +2 -2
  160. package/dist/{chunk-J2RUDZVJ.js → chunk-DE2GWZ6X.js} +5 -2
  161. package/dist/chunk-DE2GWZ6X.js.map +1 -0
  162. package/dist/{chunk-JKNKGGOG.js → chunk-DKRMOIX2.js} +7 -1
  163. package/dist/chunk-DKRMOIX2.js.map +1 -0
  164. package/dist/{chunk-CSQWPDQV.js → chunk-DT22MDC3.js} +4 -4
  165. package/dist/{chunk-7HKXTRTK.js → chunk-DWCH6GH5.js} +2 -2
  166. package/dist/{chunk-NTO5DALI.js → chunk-DWLSYFQW.js} +5 -2
  167. package/dist/chunk-DWLSYFQW.js.map +1 -0
  168. package/dist/{chunk-F742IMLQ.js → chunk-EXKK73UN.js} +5 -2
  169. package/dist/chunk-EXKK73UN.js.map +1 -0
  170. package/dist/{chunk-4MKVGSHX.js → chunk-F5SUBK42.js} +6 -3
  171. package/dist/chunk-F5SUBK42.js.map +1 -0
  172. package/dist/{chunk-5KNDAC24.js → chunk-FCCOUOP7.js} +8 -2
  173. package/dist/chunk-FCCOUOP7.js.map +1 -0
  174. package/dist/{chunk-5MAD6ZEI.js → chunk-G3SWMBZS.js} +2 -2
  175. package/dist/{chunk-P3QFJJJY.js → chunk-GHTVBYFA.js} +3 -3
  176. package/dist/{chunk-RRSLH2FV.js → chunk-GLAAX5JJ.js} +7 -2
  177. package/dist/chunk-GLAAX5JJ.js.map +1 -0
  178. package/dist/{chunk-XLTHZI5W.js → chunk-GX2LIB4T.js} +6 -3
  179. package/dist/chunk-GX2LIB4T.js.map +1 -0
  180. package/dist/{chunk-RKVS5AA6.js → chunk-H3NXDKFH.js} +7 -4
  181. package/dist/chunk-H3NXDKFH.js.map +1 -0
  182. package/dist/{chunk-47VRDPR2.js → chunk-HFZE2PGM.js} +5 -2
  183. package/dist/chunk-HFZE2PGM.js.map +1 -0
  184. package/dist/{chunk-5MMAV7XK.js → chunk-HWKBCLKD.js} +4 -2
  185. package/dist/chunk-HWKBCLKD.js.map +1 -0
  186. package/dist/{chunk-IASPZGYB.js → chunk-HWUFOII2.js} +3 -3
  187. package/dist/chunk-HWUFOII2.js.map +1 -0
  188. package/dist/{chunk-VMU52I5D.js → chunk-J7CIRTWQ.js} +8 -3
  189. package/dist/chunk-J7CIRTWQ.js.map +1 -0
  190. package/dist/{chunk-MBY7DWGT.js → chunk-JJNY5MZL.js} +2 -2
  191. package/dist/{chunk-EF4DVYD2.js → chunk-JMUZ5JZA.js} +2 -2
  192. package/dist/{chunk-NUUX4BBR.js → chunk-JQSF3CUR.js} +7 -2
  193. package/dist/chunk-JQSF3CUR.js.map +1 -0
  194. package/dist/{chunk-KYE7I6NT.js → chunk-KSOIFQJ6.js} +4 -4
  195. package/dist/{chunk-JSY234NY.js → chunk-KW2KCPZF.js} +2 -2
  196. package/dist/{chunk-RNQA7MDM.js → chunk-LDPN55AA.js} +2 -2
  197. package/dist/{chunk-U6XXAVBO.js → chunk-LHRAHDJF.js} +2 -2
  198. package/dist/{chunk-VQ6UB4MN.js → chunk-MKRJUT5O.js} +3 -3
  199. package/dist/{chunk-CXTRDTNM.js → chunk-NF5TATKP.js} +4 -4
  200. package/dist/{chunk-NA3M7KDE.js → chunk-NGXDOWUP.js} +2 -2
  201. package/dist/{chunk-EVYLJ5JB.js → chunk-NSS3X7FK.js} +2 -2
  202. package/dist/{chunk-RECD3XOL.js → chunk-NWNHSASQ.js} +2 -2
  203. package/dist/{chunk-W5PRZHLU.js → chunk-O2RXSXSF.js} +74 -3
  204. package/dist/chunk-O2RXSXSF.js.map +1 -0
  205. package/dist/{chunk-VMN6KG2U.js → chunk-OCLEKMBP.js} +3 -3
  206. package/dist/chunk-OCLEKMBP.js.map +1 -0
  207. package/dist/{chunk-HBP2OU4Q.js → chunk-OOCD2QR3.js} +4 -3
  208. package/dist/chunk-OOCD2QR3.js.map +1 -0
  209. package/dist/{chunk-URAXAKUI.js → chunk-OT4HIG7S.js} +3 -3
  210. package/dist/{chunk-K53XSVQO.js → chunk-OTION43A.js} +8 -4
  211. package/dist/chunk-OTION43A.js.map +1 -0
  212. package/dist/{chunk-H6R2L7VI.js → chunk-PAKLYZ6G.js} +2 -2
  213. package/dist/{chunk-SYSR2K2M.js → chunk-PF2A2IM7.js} +2 -2
  214. package/dist/{chunk-SRNBD6EV.js → chunk-PGBIUO2A.js} +2 -2
  215. package/dist/{chunk-QDRHIK2R.js → chunk-QK3XXPBA.js} +2 -2
  216. package/dist/{chunk-A6V7KE45.js → chunk-QVEJGFRP.js} +3 -3
  217. package/dist/{chunk-73OYC22L.js → chunk-RMZQHJEP.js} +2 -2
  218. package/dist/{chunk-VBGC7G4F.js → chunk-RQ3IS5NQ.js} +2 -2
  219. package/dist/{chunk-7S25RDE4.js → chunk-SCQARHMU.js} +2 -2
  220. package/dist/{chunk-47IAX6PI.js → chunk-SEUJNFOD.js} +2 -2
  221. package/dist/{chunk-RQMYEPRR.js → chunk-SM2O6D5F.js} +2 -2
  222. package/dist/{chunk-AAWVAQI2.js → chunk-SXNGH56D.js} +2 -2
  223. package/dist/{chunk-V7INHV5V.js → chunk-SYZVXWEQ.js} +3 -3
  224. package/dist/{chunk-DX5PLJKN.js → chunk-TAR5LSGT.js} +2 -2
  225. package/dist/{chunk-VFVATUC6.js → chunk-TGZ6GPYQ.js} +3 -3
  226. package/dist/{chunk-25HBYY4O.js → chunk-TLVKJBPM.js} +2 -2
  227. package/dist/{chunk-BGTG7G54.js → chunk-TLZR6UPJ.js} +6 -3
  228. package/dist/chunk-TLZR6UPJ.js.map +1 -0
  229. package/dist/{chunk-XLCVMRSO.js → chunk-U67CX4FL.js} +12 -4
  230. package/dist/chunk-U67CX4FL.js.map +1 -0
  231. package/dist/{chunk-PU3FQG7T.js → chunk-UCQRJTCI.js} +2 -2
  232. package/dist/{chunk-I2CT4XIP.js → chunk-UF4JFRLE.js} +3 -3
  233. package/dist/{chunk-4N3I7ZHQ.js → chunk-URAX2JPM.js} +6 -3
  234. package/dist/chunk-URAX2JPM.js.map +1 -0
  235. package/dist/{chunk-MGDCGNLC.js → chunk-UYNJ3FYE.js} +3 -3
  236. package/dist/{chunk-6SFJIW54.js → chunk-V65YK5DC.js} +2 -2
  237. package/dist/{chunk-VZVAP2ZR.js → chunk-V6DMNSW6.js} +4 -4
  238. package/dist/chunk-V6DMNSW6.js.map +1 -0
  239. package/dist/{chunk-CRFOAKQL.js → chunk-VAGGIRLA.js} +6 -3
  240. package/dist/chunk-VAGGIRLA.js.map +1 -0
  241. package/dist/{chunk-L35TCXFA.js → chunk-VRKNVZZQ.js} +74 -3
  242. package/dist/chunk-VRKNVZZQ.js.map +1 -0
  243. package/dist/{chunk-RZ3QMKM7.js → chunk-W3EVATBS.js} +2 -2
  244. package/dist/{chunk-CAHN7AMY.js → chunk-WWIYYXY3.js} +14 -7
  245. package/dist/chunk-WWIYYXY3.js.map +1 -0
  246. package/dist/{chunk-WOXWLJYR.js → chunk-XF47LPCF.js} +5 -2
  247. package/dist/chunk-XF47LPCF.js.map +1 -0
  248. package/dist/{chunk-3YLRR4JM.js → chunk-Y3YZBB74.js} +2 -2
  249. package/dist/{chunk-V37QIB7B.js → chunk-YMKSPW4T.js} +2 -2
  250. package/dist/{chunk-YOKUDQIJ.js → chunk-YOQAK2RN.js} +7 -3
  251. package/dist/chunk-YOQAK2RN.js.map +1 -0
  252. package/dist/{chunk-KYT5G4K7.js → chunk-Z52W7FEU.js} +2 -2
  253. package/dist/{chunk-3YCV4EP7.js → chunk-ZDBG7QG2.js} +3 -3
  254. package/dist/{chunk-7HZ6TJRH.js → chunk-ZT73ACK3.js} +2 -2
  255. package/dist/{chunk-TJO4CBYT.js → chunk-ZX3QMCYO.js} +6 -3
  256. package/dist/chunk-ZX3QMCYO.js.map +1 -0
  257. package/dist/data-display/AlertDialog.js +3 -3
  258. package/dist/data-display/AsyncStateContainer.js +6 -4
  259. package/dist/data-display/Avatar.js +2 -1
  260. package/dist/data-display/CardKit.js +9 -9
  261. package/dist/data-display/Carousel.js +4 -4
  262. package/dist/data-display/DataViews.js +38 -37
  263. package/dist/data-display/EmptyState.js +2 -1
  264. package/dist/data-display/ErrorState.js +2 -1
  265. package/dist/data-display/FleetMap.js +11 -10
  266. package/dist/data-display/LazyImage.js +2 -2
  267. package/dist/data-display/LoadingState.js +3 -1
  268. package/dist/data-display/MapPreview.js +6 -6
  269. package/dist/data-display/SectionOnboarding.js +4 -4
  270. package/dist/data-display/Sheet.js +4 -3
  271. package/dist/data-display/Stepper.js +2 -2
  272. package/dist/data-display/Table.js +3 -3
  273. package/dist/data-display/Timeline.js +2 -2
  274. package/dist/en-US.js +4 -4
  275. package/dist/feedback/ConfirmAction.js +7 -7
  276. package/dist/feedback/Dialog.js +2 -2
  277. package/dist/feedback/SequenceResolver.js +3 -3
  278. package/dist/feedback/Sonner.js +2 -2
  279. package/dist/feedback/StackedModal.js +3 -3
  280. package/dist/feedback/Toast.js +2 -2
  281. package/dist/form/Command.js +4 -3
  282. package/dist/form/DateRangePicker.js +5 -4
  283. package/dist/form/PhoneInput.js +2 -1
  284. package/dist/form/RichTextEditor.js +5 -5
  285. package/dist/form/total-form.js +3 -3
  286. package/dist/layout/ContentToolbar.js +6 -5
  287. package/dist/layout/Dashboard.js +2 -2
  288. package/dist/layout/Drawer.js +2 -1
  289. package/dist/layout/SettingsLayout.js +3 -2
  290. package/dist/layout/TableFilter.js +2 -1
  291. package/dist/locales.js +8 -8
  292. package/dist/native/chunks/{chunk-4SP3BDPZ.js → chunk-67CYDCHZ.js} +2 -2
  293. package/dist/native/chunks/{chunk-FGAX5BRS.js → chunk-7AVFQB6A.js} +7 -4
  294. package/dist/native/chunks/chunk-7AVFQB6A.js.map +1 -0
  295. package/dist/native/chunks/{chunk-SPK34J7Y.js → chunk-DUELD4HY.js} +74 -3
  296. package/dist/native/chunks/chunk-DUELD4HY.js.map +1 -0
  297. package/dist/native/data-display/Avatar.js +4 -1
  298. package/dist/native/data-display/Avatar.js.map +1 -1
  299. package/dist/native/data-display/Badge.js +3 -3
  300. package/dist/native/data-display/Chip.js +3 -3
  301. package/dist/native/data-display/EmptyState.js +3 -3
  302. package/dist/native/data-display/ErrorState.js +5 -3
  303. package/dist/native/data-display/ErrorState.js.map +1 -1
  304. package/dist/native/data-display/FleetMap.js +3 -3
  305. package/dist/native/data-display/LoadingState.js +16 -5
  306. package/dist/native/data-display/LoadingState.js.map +1 -1
  307. package/dist/native/feedback/Dialog.js +3 -3
  308. package/dist/native/form/Button.js +2 -2
  309. package/dist/native/form/Checkbox.js +3 -3
  310. package/dist/native/form/Input.js +1 -1
  311. package/dist/native/form/Switch.js +1 -1
  312. package/dist/navigation/AppHeader.js +8 -7
  313. package/dist/navigation/Breadcrumbs.js +2 -1
  314. package/dist/navigation/NavigationMenu.js +3 -3
  315. package/dist/navigation/SectionNav.js +5 -4
  316. package/dist/pt-BR.js +4 -4
  317. package/dist/social-login-button.js +2 -1
  318. package/dist/types/components/data-display/AlertDialog/AlertDialog.parts.d.ts.map +1 -1
  319. package/dist/types/components/data-display/Avatar/Avatar.d.ts.map +1 -1
  320. package/dist/types/components/data-display/DataViews/DeleteViewDialog.d.ts.map +1 -1
  321. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts +11 -0
  322. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts.map +1 -1
  323. package/dist/types/components/data-display/DataViews/data-views-grid-helpers.d.ts +6 -2
  324. package/dist/types/components/data-display/DataViews/data-views-grid-helpers.d.ts.map +1 -1
  325. package/dist/types/components/data-display/DataViews/use-data-views-state.d.ts.map +1 -1
  326. package/dist/types/components/data-display/EmptyState/EmptyState.d.ts.map +1 -1
  327. package/dist/types/components/data-display/ErrorState/ErrorState.d.ts.map +1 -1
  328. package/dist/types/components/data-display/LoadingState/LoadingState.base.d.ts +7 -0
  329. package/dist/types/components/data-display/LoadingState/LoadingState.base.d.ts.map +1 -1
  330. package/dist/types/components/data-display/LoadingState/LoadingState.d.ts.map +1 -1
  331. package/dist/types/components/data-display/Sheet/Sheet.body.d.ts +1 -1
  332. package/dist/types/components/data-display/Sheet/Sheet.body.d.ts.map +1 -1
  333. package/dist/types/components/data-display/Sheet/Sheet.parts.d.ts.map +1 -1
  334. package/dist/types/components/data-display/Sheet/Sheet.types.d.ts +10 -0
  335. package/dist/types/components/data-display/Sheet/Sheet.types.d.ts.map +1 -1
  336. package/dist/types/components/feedback/StackedModal/StackedModal.d.ts.map +1 -1
  337. package/dist/types/components/form/Command/Command.hooks.d.ts.map +1 -1
  338. package/dist/types/components/form/Command/Command.parts.d.ts.map +1 -1
  339. package/dist/types/components/form/DateRangePicker/DateRangePicker.range.d.ts.map +1 -1
  340. package/dist/types/components/form/PhoneInput/PhoneInput.d.ts.map +1 -1
  341. package/dist/types/components/form/total-form/FormErrorSnackbar.d.ts.map +1 -1
  342. package/dist/types/components/layout/ContentToolbar/ColumnsMenu.d.ts.map +1 -1
  343. package/dist/types/components/layout/ContentToolbar/FilterTrigger.d.ts.map +1 -1
  344. package/dist/types/components/layout/ContentToolbar/MultiSelectDropdown.d.ts.map +1 -1
  345. package/dist/types/components/layout/Dashboard/Dashboard.d.ts +1 -1
  346. package/dist/types/components/layout/Dashboard/Dashboard.d.ts.map +1 -1
  347. package/dist/types/components/layout/Drawer/Drawer.d.ts.map +1 -1
  348. package/dist/types/components/layout/SettingsLayout/SettingsLayout.d.ts.map +1 -1
  349. package/dist/types/components/layout/SettingsLayout/SettingsLayout.rail.d.ts +3 -1
  350. package/dist/types/components/layout/SettingsLayout/SettingsLayout.rail.d.ts.map +1 -1
  351. package/dist/types/components/layout/SettingsLayout/SettingsLayout.types.d.ts +6 -0
  352. package/dist/types/components/layout/SettingsLayout/SettingsLayout.types.d.ts.map +1 -1
  353. package/dist/types/components/layout/TableFilter/TableFilter.d.ts.map +1 -1
  354. package/dist/types/components/navigation/AppHeader/AppHeader.identity.d.ts.map +1 -1
  355. package/dist/types/components/navigation/AppHeader/AppHeader.types.d.ts +5 -1
  356. package/dist/types/components/navigation/AppHeader/AppHeader.types.d.ts.map +1 -1
  357. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  358. package/dist/types/components/utility/AnimatedIcon/AnimatedIcon.d.ts.map +1 -1
  359. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.d.ts.map +1 -1
  360. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.parts.d.ts +1 -0
  361. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.parts.d.ts.map +1 -1
  362. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.types.d.ts +6 -0
  363. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.types.d.ts.map +1 -1
  364. package/dist/types/copy/labels.d.ts +113 -2
  365. package/dist/types/copy/labels.d.ts.map +1 -1
  366. package/dist/types/en-US.data-display.d.ts.map +1 -1
  367. package/dist/types/en-US.labels.d.ts.map +1 -1
  368. package/dist/types/pt-BR.data-display.d.ts.map +1 -1
  369. package/dist/types/pt-BR.labels.d.ts.map +1 -1
  370. package/dist/types/social-login-button/social-login-button.d.ts.map +1 -1
  371. package/dist/types-native/components/data-display/Avatar/Avatar.native.d.ts.map +1 -1
  372. package/dist/types-native/components/data-display/EmptyState/EmptyState.native.d.ts.map +1 -1
  373. package/dist/types-native/components/data-display/ErrorState/ErrorState.native.d.ts.map +1 -1
  374. package/dist/types-native/components/data-display/LoadingState/LoadingState.base.d.ts +7 -0
  375. package/dist/types-native/components/data-display/LoadingState/LoadingState.base.d.ts.map +1 -1
  376. package/dist/types-native/components/data-display/LoadingState/LoadingState.native.d.ts.map +1 -1
  377. package/dist/types-native/copy/labels.d.ts +113 -2
  378. package/dist/types-native/copy/labels.d.ts.map +1 -1
  379. package/dist/types-native/en-US.labels.d.ts.map +1 -1
  380. package/dist/types-native/utils/resolve-labels.d.ts +9 -0
  381. package/dist/types-native/utils/resolve-labels.d.ts.map +1 -0
  382. package/dist/typography/Code.js +2 -2
  383. package/dist/user-avatar.js +3 -2
  384. package/dist/utility/AnimatedIcon.js +2 -1
  385. package/dist/utility/InfiniteScroll.js +3 -2
  386. package/dist/utility/WorkflowStep.js +5 -5
  387. package/package.json +2 -2
  388. package/src/components/data-display/AlertDialog/AlertDialog.parts.tsx +3 -2
  389. package/src/components/data-display/Avatar/Avatar.native.tsx +2 -1
  390. package/src/components/data-display/Avatar/Avatar.tsx +2 -1
  391. package/src/components/data-display/DataViews/DeleteViewDialog.tsx +2 -2
  392. package/src/components/data-display/DataViews/data-views-copy.ts +11 -0
  393. package/src/components/data-display/DataViews/data-views-grid-helpers.tsx +8 -3
  394. package/src/components/data-display/DataViews/data-views-view-nav.tsx +2 -2
  395. package/src/components/data-display/DataViews/use-data-views-state.ts +3 -1
  396. package/src/components/data-display/EmptyState/EmptyState.native.tsx +3 -2
  397. package/src/components/data-display/EmptyState/EmptyState.tsx +3 -2
  398. package/src/components/data-display/ErrorState/ErrorState.native.tsx +2 -1
  399. package/src/components/data-display/ErrorState/ErrorState.tsx +2 -1
  400. package/src/components/data-display/LoadingState/LoadingState.base.ts +8 -0
  401. package/src/components/data-display/LoadingState/LoadingState.native.tsx +10 -5
  402. package/src/components/data-display/LoadingState/LoadingState.tsx +9 -3
  403. package/src/components/data-display/Sheet/Sheet.body.tsx +3 -0
  404. package/src/components/data-display/Sheet/Sheet.md +1 -0
  405. package/src/components/data-display/Sheet/Sheet.parts.tsx +4 -0
  406. package/src/components/data-display/Sheet/Sheet.types.ts +10 -0
  407. package/src/components/feedback/StackedModal/StackedModal.tsx +2 -1
  408. package/src/components/form/Command/Command.hooks.ts +3 -2
  409. package/src/components/form/Command/Command.parts.tsx +3 -2
  410. package/src/components/form/DateRangePicker/DateRangePicker.range.ts +2 -1
  411. package/src/components/form/PhoneInput/PhoneInput.tsx +3 -2
  412. package/src/components/form/total-form/FormErrorSnackbar.tsx +2 -1
  413. package/src/components/layout/ContentToolbar/ColumnsMenu.tsx +3 -2
  414. package/src/components/layout/ContentToolbar/FilterTrigger.tsx +4 -1
  415. package/src/components/layout/ContentToolbar/MultiSelectDropdown.tsx +4 -3
  416. package/src/components/layout/Dashboard/Dashboard.tsx +4 -1
  417. package/src/components/layout/Drawer/Drawer.tsx +2 -1
  418. package/src/components/layout/SettingsLayout/SettingsLayout.md +1 -0
  419. package/src/components/layout/SettingsLayout/SettingsLayout.rail.tsx +9 -2
  420. package/src/components/layout/SettingsLayout/SettingsLayout.tsx +16 -5
  421. package/src/components/layout/SettingsLayout/SettingsLayout.types.ts +6 -0
  422. package/src/components/layout/TableFilter/TableFilter.tsx +4 -3
  423. package/src/components/navigation/AppHeader/AppHeader.identity.tsx +2 -1
  424. package/src/components/navigation/AppHeader/AppHeader.types.ts +5 -1
  425. package/src/components/navigation/Breadcrumbs/Breadcrumbs.tsx +2 -1
  426. package/src/components/navigation/NavigationMenu/NavigationStandardBody.tsx +1 -1
  427. package/src/components/utility/AnimatedIcon/AnimatedIcon.tsx +2 -1
  428. package/src/components/utility/InfiniteScroll/InfiniteScroll.parts.tsx +6 -2
  429. package/src/components/utility/InfiniteScroll/InfiniteScroll.tsx +2 -1
  430. package/src/components/utility/InfiniteScroll/InfiniteScroll.types.ts +6 -0
  431. package/src/copy/labels.ts +131 -2
  432. package/src/en-US.data-display.ts +5 -0
  433. package/src/en-US.labels.ts +71 -0
  434. package/src/pt-BR.data-display.ts +5 -0
  435. package/src/pt-BR.labels.ts +71 -0
  436. package/src/social-login-button/social-login-button.tsx +3 -2
  437. package/dist/chunk-3ZWCKCZC.js.map +0 -1
  438. package/dist/chunk-47VRDPR2.js.map +0 -1
  439. package/dist/chunk-4MKVGSHX.js.map +0 -1
  440. package/dist/chunk-4N3I7ZHQ.js.map +0 -1
  441. package/dist/chunk-5KNDAC24.js.map +0 -1
  442. package/dist/chunk-5MMAV7XK.js.map +0 -1
  443. package/dist/chunk-BGTG7G54.js.map +0 -1
  444. package/dist/chunk-CAHN7AMY.js.map +0 -1
  445. package/dist/chunk-CRFOAKQL.js.map +0 -1
  446. package/dist/chunk-F742IMLQ.js.map +0 -1
  447. package/dist/chunk-GHXW6O5T.js.map +0 -1
  448. package/dist/chunk-GJMWQUAD.js.map +0 -1
  449. package/dist/chunk-HBP2OU4Q.js.map +0 -1
  450. package/dist/chunk-IASPZGYB.js.map +0 -1
  451. package/dist/chunk-J2RUDZVJ.js.map +0 -1
  452. package/dist/chunk-JKNKGGOG.js.map +0 -1
  453. package/dist/chunk-K53XSVQO.js.map +0 -1
  454. package/dist/chunk-L35TCXFA.js.map +0 -1
  455. package/dist/chunk-NTO5DALI.js.map +0 -1
  456. package/dist/chunk-NUUX4BBR.js.map +0 -1
  457. package/dist/chunk-PBMCRDZI.js.map +0 -1
  458. package/dist/chunk-RKVS5AA6.js.map +0 -1
  459. package/dist/chunk-RRSLH2FV.js.map +0 -1
  460. package/dist/chunk-TJO4CBYT.js.map +0 -1
  461. package/dist/chunk-VMN6KG2U.js.map +0 -1
  462. package/dist/chunk-VMU52I5D.js.map +0 -1
  463. package/dist/chunk-VZVAP2ZR.js.map +0 -1
  464. package/dist/chunk-W5PRZHLU.js.map +0 -1
  465. package/dist/chunk-WOXWLJYR.js.map +0 -1
  466. package/dist/chunk-XLCVMRSO.js.map +0 -1
  467. package/dist/chunk-XLTHZI5W.js.map +0 -1
  468. package/dist/chunk-YJ6UQDA6.js.map +0 -1
  469. package/dist/chunk-YOKUDQIJ.js.map +0 -1
  470. package/dist/chunk-YZX4DVRS.js.map +0 -1
  471. package/dist/chunk-ZYKDUKAH.js.map +0 -1
  472. package/dist/native/chunks/chunk-FGAX5BRS.js.map +0 -1
  473. package/dist/native/chunks/chunk-SPK34J7Y.js.map +0 -1
  474. /package/dist/{chunk-LIWONEAU.js.map → chunk-3B7EJIG7.js.map} +0 -0
  475. /package/dist/{chunk-V64USPG3.js.map → chunk-4JV46KXS.js.map} +0 -0
  476. /package/dist/{chunk-UJT6AQHL.js.map → chunk-4NVEUJXK.js.map} +0 -0
  477. /package/dist/{chunk-PIP7XII2.js.map → chunk-5JDY5W7O.js.map} +0 -0
  478. /package/dist/{chunk-556LO6KA.js.map → chunk-6B7VZFAO.js.map} +0 -0
  479. /package/dist/{chunk-FLTXJWOC.js.map → chunk-6EERXU6R.js.map} +0 -0
  480. /package/dist/{chunk-TPGFR24B.js.map → chunk-6IVR5HFI.js.map} +0 -0
  481. /package/dist/{chunk-J26ZWYQI.js.map → chunk-6KCJNERH.js.map} +0 -0
  482. /package/dist/{chunk-AXZCCX7O.js.map → chunk-6S7CFH6V.js.map} +0 -0
  483. /package/dist/{chunk-3XLSA3YB.js.map → chunk-763AHWKU.js.map} +0 -0
  484. /package/dist/{chunk-6MGYPTAL.js.map → chunk-7DODMQRK.js.map} +0 -0
  485. /package/dist/{chunk-C4OETF7K.js.map → chunk-7H5BIZ33.js.map} +0 -0
  486. /package/dist/{chunk-UGYBN6OO.js.map → chunk-7HYLXERK.js.map} +0 -0
  487. /package/dist/{chunk-M3ZNQTS5.js.map → chunk-7S3NG2AO.js.map} +0 -0
  488. /package/dist/{chunk-WE43PZ4P.js.map → chunk-7UDQJOZZ.js.map} +0 -0
  489. /package/dist/{chunk-5GLOEGOM.js.map → chunk-ABJOW7EK.js.map} +0 -0
  490. /package/dist/{chunk-GPPUKDA6.js.map → chunk-AFSXC5FU.js.map} +0 -0
  491. /package/dist/{chunk-G2IVONJD.js.map → chunk-AISCD6W6.js.map} +0 -0
  492. /package/dist/{chunk-HPEBSLYP.js.map → chunk-B67KUCWU.js.map} +0 -0
  493. /package/dist/{chunk-CYKINZKO.js.map → chunk-BFBCTF2Y.js.map} +0 -0
  494. /package/dist/{chunk-WUW6NDXC.js.map → chunk-BLVFHVDM.js.map} +0 -0
  495. /package/dist/{chunk-UG4EMHMW.js.map → chunk-BTDY2NYV.js.map} +0 -0
  496. /package/dist/{chunk-KE74C2SM.js.map → chunk-C2I7NQC4.js.map} +0 -0
  497. /package/dist/{chunk-LR473BUT.js.map → chunk-C7LHIDVB.js.map} +0 -0
  498. /package/dist/{chunk-V45JGJ3W.js.map → chunk-CFDYQSN6.js.map} +0 -0
  499. /package/dist/{chunk-BJ7NWZWO.js.map → chunk-D4LMRSY7.js.map} +0 -0
  500. /package/dist/{chunk-GPQ22MPR.js.map → chunk-DB7OJM6X.js.map} +0 -0
  501. /package/dist/{chunk-66BRUS2M.js.map → chunk-DD3VFDB2.js.map} +0 -0
  502. /package/dist/{chunk-CSQWPDQV.js.map → chunk-DT22MDC3.js.map} +0 -0
  503. /package/dist/{chunk-7HKXTRTK.js.map → chunk-DWCH6GH5.js.map} +0 -0
  504. /package/dist/{chunk-5MAD6ZEI.js.map → chunk-G3SWMBZS.js.map} +0 -0
  505. /package/dist/{chunk-P3QFJJJY.js.map → chunk-GHTVBYFA.js.map} +0 -0
  506. /package/dist/{chunk-MBY7DWGT.js.map → chunk-JJNY5MZL.js.map} +0 -0
  507. /package/dist/{chunk-EF4DVYD2.js.map → chunk-JMUZ5JZA.js.map} +0 -0
  508. /package/dist/{chunk-KYE7I6NT.js.map → chunk-KSOIFQJ6.js.map} +0 -0
  509. /package/dist/{chunk-JSY234NY.js.map → chunk-KW2KCPZF.js.map} +0 -0
  510. /package/dist/{chunk-RNQA7MDM.js.map → chunk-LDPN55AA.js.map} +0 -0
  511. /package/dist/{chunk-U6XXAVBO.js.map → chunk-LHRAHDJF.js.map} +0 -0
  512. /package/dist/{chunk-VQ6UB4MN.js.map → chunk-MKRJUT5O.js.map} +0 -0
  513. /package/dist/{chunk-CXTRDTNM.js.map → chunk-NF5TATKP.js.map} +0 -0
  514. /package/dist/{chunk-NA3M7KDE.js.map → chunk-NGXDOWUP.js.map} +0 -0
  515. /package/dist/{chunk-EVYLJ5JB.js.map → chunk-NSS3X7FK.js.map} +0 -0
  516. /package/dist/{chunk-RECD3XOL.js.map → chunk-NWNHSASQ.js.map} +0 -0
  517. /package/dist/{chunk-URAXAKUI.js.map → chunk-OT4HIG7S.js.map} +0 -0
  518. /package/dist/{chunk-H6R2L7VI.js.map → chunk-PAKLYZ6G.js.map} +0 -0
  519. /package/dist/{chunk-SYSR2K2M.js.map → chunk-PF2A2IM7.js.map} +0 -0
  520. /package/dist/{chunk-SRNBD6EV.js.map → chunk-PGBIUO2A.js.map} +0 -0
  521. /package/dist/{chunk-QDRHIK2R.js.map → chunk-QK3XXPBA.js.map} +0 -0
  522. /package/dist/{chunk-A6V7KE45.js.map → chunk-QVEJGFRP.js.map} +0 -0
  523. /package/dist/{chunk-73OYC22L.js.map → chunk-RMZQHJEP.js.map} +0 -0
  524. /package/dist/{chunk-VBGC7G4F.js.map → chunk-RQ3IS5NQ.js.map} +0 -0
  525. /package/dist/{chunk-7S25RDE4.js.map → chunk-SCQARHMU.js.map} +0 -0
  526. /package/dist/{chunk-47IAX6PI.js.map → chunk-SEUJNFOD.js.map} +0 -0
  527. /package/dist/{chunk-RQMYEPRR.js.map → chunk-SM2O6D5F.js.map} +0 -0
  528. /package/dist/{chunk-AAWVAQI2.js.map → chunk-SXNGH56D.js.map} +0 -0
  529. /package/dist/{chunk-V7INHV5V.js.map → chunk-SYZVXWEQ.js.map} +0 -0
  530. /package/dist/{chunk-DX5PLJKN.js.map → chunk-TAR5LSGT.js.map} +0 -0
  531. /package/dist/{chunk-VFVATUC6.js.map → chunk-TGZ6GPYQ.js.map} +0 -0
  532. /package/dist/{chunk-25HBYY4O.js.map → chunk-TLVKJBPM.js.map} +0 -0
  533. /package/dist/{chunk-PU3FQG7T.js.map → chunk-UCQRJTCI.js.map} +0 -0
  534. /package/dist/{chunk-I2CT4XIP.js.map → chunk-UF4JFRLE.js.map} +0 -0
  535. /package/dist/{chunk-MGDCGNLC.js.map → chunk-UYNJ3FYE.js.map} +0 -0
  536. /package/dist/{chunk-6SFJIW54.js.map → chunk-V65YK5DC.js.map} +0 -0
  537. /package/dist/{chunk-RZ3QMKM7.js.map → chunk-W3EVATBS.js.map} +0 -0
  538. /package/dist/{chunk-3YLRR4JM.js.map → chunk-Y3YZBB74.js.map} +0 -0
  539. /package/dist/{chunk-V37QIB7B.js.map → chunk-YMKSPW4T.js.map} +0 -0
  540. /package/dist/{chunk-KYT5G4K7.js.map → chunk-Z52W7FEU.js.map} +0 -0
  541. /package/dist/{chunk-3YCV4EP7.js.map → chunk-ZDBG7QG2.js.map} +0 -0
  542. /package/dist/{chunk-7HZ6TJRH.js.map → chunk-ZT73ACK3.js.map} +0 -0
  543. /package/dist/native/chunks/{chunk-4SP3BDPZ.js.map → chunk-67CYDCHZ.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/layout/TableFilter/TableFilter.tsx"],"sourcesContent":["'use client';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport SearchIcon from '@mui/icons-material/Search';\nimport Box from '@mui/material/Box/index.js';\nimport Checkbox from '@mui/material/Checkbox/index.js';\nimport Divider from '@mui/material/Divider/index.js';\nimport FormControlLabel from '@mui/material/FormControlLabel/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport InputAdornment from '@mui/material/InputAdornment/index.js';\nimport Link from '@mui/material/Link/index.js';\nimport TextField from '@mui/material/TextField/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport React, { useRef, useState } from 'react';\n\nimport { TableFilterContext, useTableFilterContext } from './TableFilterContext';\nimport { EN_US_UI_LABELS } from '../../../en-US.labels';\nimport type {\n TableFilterCheckboxFieldProps,\n TableFilterKeywordProps,\n TableFilterLayoutProps,\n TableFilterMainProps,\n TableFilterPanelProps,\n TableFilterProps,\n TableFilterRangeFieldProps,\n TableFilterSectionProps,\n} from './TableFilter.types';\nimport { fieldTextFieldStyles } from '../../../tokens/field-height';\nimport { sxRem } from '../../../tokens/relative';\n\n/** The open panel's width, 280 design px through the type scale. */\nconst PANEL_WIDTH = sxRem(280);\n\n/**\n * Compound filter-panel system, MUI port of the reference `TableFilter`. Provides\n * open/close state; `Panel` slides in from the right beside `Main` (no overlap).\n *\n * @example\n * ```tsx\n * <TableFilter open={open} onOpenChange={setOpen} hasActiveFilters={n > 0}>\n * <TableFilter.Layout>\n * <TableFilter.Main>{table}</TableFilter.Main>\n * <TableFilter.Panel onClearAll={clearAll}>\n * <TableFilter.Keyword value={q} onChange={setQ} />\n * <TableFilter.Section title=\"Attributes\">\n * <TableFilter.CheckboxField label=\"Category\" options={cats} selected={sel} onToggle={toggle} />\n * <TableFilter.RangeField label=\"Price\" unit=\"R$\" value={price} onChange={setPrice} />\n * </TableFilter.Section>\n * </TableFilter.Panel>\n * </TableFilter.Layout>\n * </TableFilter>\n * ```\n */\nexport function TableFilter({\n children,\n open,\n onOpenChange,\n hasActiveFilters = false,\n copy,\n}: TableFilterProps): React.JSX.Element {\n return (\n <TableFilterContext.Provider value={{ open, onOpenChange, hasActiveFilters, copy }}>\n {children}\n </TableFilterContext.Provider>\n );\n}\nTableFilter.displayName = 'TableFilter';\n\nconst TableFilterLayout = ({ children, className }: TableFilterLayoutProps): React.JSX.Element => {\n const { open } = useTableFilterContext();\n return (\n <Box\n className={className}\n sx={{\n display: 'flex',\n minHeight: 0,\n minWidth: 0,\n flex: 1,\n alignItems: 'stretch',\n overflow: 'hidden',\n gap: open ? 2 : 0,\n }}\n >\n {children}\n </Box>\n );\n};\nTableFilterLayout.displayName = 'TableFilter.Layout';\n\nconst TableFilterMain = ({ children, className }: TableFilterMainProps): React.JSX.Element => (\n <Box className={className} sx={{ minWidth: 0, flex: 1, overflowY: 'auto', overflowX: 'hidden' }}>\n {children}\n </Box>\n);\nTableFilterMain.displayName = 'TableFilter.Main';\n\nconst TableFilterPanel = ({\n children,\n onClearAll,\n ariaLabel = EN_US_UI_LABELS.tableFilter.filters,\n clearTestId,\n}: TableFilterPanelProps): React.JSX.Element => {\n const { open, copy } = useTableFilterContext();\n return (\n <Box\n component=\"aside\"\n aria-label={ariaLabel}\n aria-hidden={!open}\n sx={{\n display: 'flex',\n minHeight: 0,\n flexShrink: 0,\n flexDirection: 'column',\n alignSelf: 'stretch',\n overflow: 'hidden',\n bgcolor: 'background.paper',\n width: open ? PANEL_WIDTH : 0,\n borderLeft: open ? 1 : 0,\n borderColor: 'divider',\n transition: 'width 300ms ease-in-out',\n '@media (prefers-reduced-motion: reduce)': { transition: 'none' },\n }}\n >\n <Box\n sx={{\n display: 'flex',\n minHeight: 0,\n flex: 1,\n flexDirection: 'column',\n overflowY: 'auto',\n overflowX: 'hidden',\n visibility: open ? 'visible' : 'hidden',\n opacity: open ? 1 : 0,\n pointerEvents: open ? 'auto' : 'none',\n transition: 'opacity 200ms ease-out',\n }}\n >\n <Box sx={{ boxSizing: 'border-box', display: 'flex', width: '100%', minWidth: 0, flexDirection: 'column', gap: 2.5, p: 2 }}>\n <Box sx={{ display: 'flex', justifyContent: 'flex-end' }}>\n <Link\n component=\"button\"\n type=\"button\"\n underline=\"hover\"\n data-testid={clearTestId}\n onClick={onClearAll}\n sx={{ fontSize: sxRem(12), color: 'text.secondary' }}\n >\n {copy.clearAllFilters}\n </Link>\n </Box>\n {children}\n </Box>\n </Box>\n </Box>\n );\n};\nTableFilterPanel.displayName = 'TableFilter.Panel';\n\nconst TableFilterKeyword = ({\n value,\n onChange,\n placeholder = EN_US_UI_LABELS.tableFilter.keywordPlaceholder,\n label = EN_US_UI_LABELS.tableFilter.keywordLabel,\n testId,\n}: TableFilterKeywordProps): React.JSX.Element => {\n const { copy } = useTableFilterContext();\n const [draft, setDraft] = useState(value);\n const prevValue = useRef(value);\n if (prevValue.current !== value) {\n prevValue.current = value;\n if (draft !== value) setDraft(value);\n }\n\n const commit = (): void => {\n if (draft !== value) onChange(draft);\n };\n const clearKeyword = (): void => {\n setDraft('');\n if (value !== '') onChange('');\n };\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>\n <Typography component=\"label\" sx={{ fontSize: sxRem(12), fontWeight: 500, color: 'text.secondary' }}>\n {label}\n </Typography>\n <TextField\n size=\"small\"\n sx={fieldTextFieldStyles}\n name=\"keyword\"\n placeholder={placeholder}\n value={draft}\n onChange={(event) => setDraft(event.target.value)}\n onBlur={commit}\n onKeyDown={(event) => {\n if (event.key !== 'Enter') return;\n event.preventDefault();\n commit();\n }}\n inputProps={{ 'aria-label': label, 'data-testid': testId }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon sx={{ fontSize: sxRem(16), color: 'text.secondary' }} />\n </InputAdornment>\n ),\n endAdornment:\n draft !== '' ? (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n aria-label={copy.clearKeyword}\n data-testid={testId ? `${testId}-clear` : undefined}\n onMouseDown={(event) => event.preventDefault()}\n onClick={clearKeyword}\n >\n <CloseIcon sx={{ fontSize: sxRem(16) }} />\n </IconButton>\n </InputAdornment>\n ) : null,\n }}\n />\n </Box>\n );\n};\nTableFilterKeyword.displayName = 'TableFilter.Keyword';\n\nconst TableFilterSection = ({ title, children }: TableFilterSectionProps): React.JSX.Element => (\n <Box>\n <Divider sx={{ mb: 2.5 }} />\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1.5 }}>\n <Typography component=\"h2\" sx={{ fontSize: sxRem(14), fontWeight: 600, color: 'text.primary' }}>\n {title}\n </Typography>\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>{children}</Box>\n </Box>\n </Box>\n);\nTableFilterSection.displayName = 'TableFilter.Section';\n\nfunction TableFilterCheckboxField<TValue extends string = string>({\n label,\n options,\n selected,\n onToggle,\n testId,\n}: TableFilterCheckboxFieldProps<TValue>): React.JSX.Element {\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }} data-testid={testId}>\n <Typography sx={{ fontSize: sxRem(12), fontWeight: 500, color: 'text.secondary' }}>{label}</Typography>\n <Box sx={{ display: 'flex', flexDirection: 'column' }}>\n {options.map((option) => {\n const checked = selected.has(option.value);\n return (\n <FormControlLabel\n key={option.value}\n control={\n <Checkbox\n size=\"small\"\n checked={checked}\n onChange={(event) => onToggle(option.value, event.target.checked)}\n data-testid={testId ? `${testId}-${option.value}` : undefined}\n sx={{ py: 0.25 }}\n />\n }\n label={\n <Box component=\"span\" sx={{ fontSize: sxRem(14) }}>\n {option.label}\n {option.count != null && (\n <Box component=\"span\" sx={{ color: 'text.secondary' }}>\n {' '}\n ({option.count})\n </Box>\n )}\n </Box>\n }\n sx={{ ml: -0.5, mr: 0 }}\n />\n );\n })}\n </Box>\n </Box>\n );\n}\nTableFilterCheckboxField.displayName = 'TableFilter.CheckboxField';\n\nfunction parseBound(text: string): number | undefined {\n if (text.trim() === '') return undefined;\n const parsed = Number(text);\n return Number.isNaN(parsed) ? undefined : parsed;\n}\n\n/** One numeric bound input (min or max) for {@link TableFilterRangeField}. */\nfunction RangeBound({\n bound,\n error,\n placeholder,\n step,\n ariaLabel,\n testId,\n onChange,\n}: {\n bound: number | undefined;\n error: boolean;\n placeholder: string;\n step?: number;\n ariaLabel: string;\n testId?: string;\n onChange: (next: number | undefined) => void;\n}): React.JSX.Element {\n return (\n <TextField\n size=\"small\"\n sx={fieldTextFieldStyles}\n type=\"number\"\n error={error}\n placeholder={placeholder}\n value={bound != null ? String(bound) : ''}\n onChange={(event) => onChange(parseBound(event.target.value))}\n inputProps={{ step, 'aria-label': ariaLabel, 'data-testid': testId }}\n />\n );\n}\n\n/** Inverted range: both ends set and max < min (surfaced to the user as an error). */\nconst isRangeInverted = (value: { min?: number; max?: number }): boolean =>\n value.min != null && value.max != null && value.max < value.min;\n\nconst TableFilterRangeField = ({\n label,\n value,\n onChange,\n unit,\n step,\n minPlaceholder,\n maxPlaceholder,\n invalidLabel,\n testId,\n}: TableFilterRangeFieldProps): React.JSX.Element => {\n const { copy } = useTableFilterContext();\n const invalid = isRangeInverted(value);\n // A field may override any of the three; unset, they come from the root's\n // table. Neither path reaches an English literal in this package.\n const minText = minPlaceholder ?? copy.rangeMin;\n const maxText = maxPlaceholder ?? copy.rangeMax;\n const invalidText = invalidLabel ?? copy.invalidRange;\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }} data-testid={testId}>\n <Typography sx={{ fontSize: sxRem(12), fontWeight: 500, color: 'text.secondary' }}>\n {label}\n {unit ? ` (${unit})` : ''}\n </Typography>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <RangeBound\n bound={value.min}\n error={invalid}\n placeholder={minText}\n step={step}\n ariaLabel={`${label} ${minText}`}\n testId={testId ? `${testId}-min` : undefined}\n onChange={(min) => onChange({ ...value, min })}\n />\n <Typography component=\"span\" sx={{ color: 'text.secondary' }}>\n –\n </Typography>\n <RangeBound\n bound={value.max}\n error={invalid}\n placeholder={maxText}\n step={step}\n ariaLabel={`${label} ${maxText}`}\n testId={testId ? `${testId}-max` : undefined}\n onChange={(max) => onChange({ ...value, max })}\n />\n </Box>\n {invalid && (\n <Typography\n role=\"alert\"\n data-testid={testId ? `${testId}-error` : undefined}\n sx={{ fontSize: sxRem(11.2), color: 'error.main' }}\n >\n {invalidText}\n </Typography>\n )}\n </Box>\n );\n};\nTableFilterRangeField.displayName = 'TableFilter.RangeField';\n\nTableFilter.Layout = TableFilterLayout;\nTableFilter.Main = TableFilterMain;\nTableFilter.Panel = TableFilterPanel;\nTableFilter.Keyword = TableFilterKeyword;\nTableFilter.Section = TableFilterSection;\nTableFilter.CheckboxField = TableFilterCheckboxField;\nTableFilter.RangeField = TableFilterRangeField;\n"],"mappings":";;;;;;;;;;;;;;;AAEA,OAAO,eAAe;AACtB,OAAO,gBAAgB;AACvB,OAAO,SAAS;AAChB,OAAO,cAAc;AACrB,OAAO,aAAa;AACpB,OAAO,sBAAsB;AAC7B,OAAO,gBAAgB;AACvB,OAAO,oBAAoB;AAC3B,OAAO,UAAU;AACjB,OAAO,eAAe;AACtB,OAAO,gBAAgB;AACvB,SAAgB,QAAQ,gBAAgB;AAgDpC,cA4EI,YA5EJ;AA9BJ,IAAM,cAAc,MAAM,GAAG;AAsBtB,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB;AACF,GAAwC;AACtC,SACE,oBAAC,mBAAmB,UAAnB,EAA4B,OAAO,EAAE,MAAM,cAAc,kBAAkB,KAAK,GAC9E,UACH;AAEJ;AACA,YAAY,cAAc;AAE1B,IAAM,oBAAoB,CAAC,EAAE,UAAU,UAAU,MAAiD;AAChG,QAAM,EAAE,KAAK,IAAI,sBAAsB;AACvC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,IAAI;AAAA,QACF,SAAS;AAAA,QACT,WAAW;AAAA,QACX,UAAU;AAAA,QACV,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,KAAK,OAAO,IAAI;AAAA,MAClB;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AACA,kBAAkB,cAAc;AAEhC,IAAM,kBAAkB,CAAC,EAAE,UAAU,UAAU,MAC7C,oBAAC,OAAI,WAAsB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,WAAW,QAAQ,WAAW,SAAS,GAC3F,UACH;AAEF,gBAAgB,cAAc;AAE9B,IAAM,mBAAmB,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA,YAAY,gBAAgB,YAAY;AAAA,EACxC;AACF,MAAgD;AAC9C,QAAM,EAAE,MAAM,KAAK,IAAI,sBAAsB;AAC7C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,cAAY;AAAA,MACZ,eAAa,CAAC;AAAA,MACd,IAAI;AAAA,QACF,SAAS;AAAA,QACT,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,WAAW;AAAA,QACX,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OAAO,OAAO,cAAc;AAAA,QAC5B,YAAY,OAAO,IAAI;AAAA,QACvB,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,2CAA2C,EAAE,YAAY,OAAO;AAAA,MAClE;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,IAAI;AAAA,YACF,SAAS;AAAA,YACT,WAAW;AAAA,YACX,MAAM;AAAA,YACN,eAAe;AAAA,YACf,WAAW;AAAA,YACX,WAAW;AAAA,YACX,YAAY,OAAO,YAAY;AAAA,YAC/B,SAAS,OAAO,IAAI;AAAA,YACpB,eAAe,OAAO,SAAS;AAAA,YAC/B,YAAY;AAAA,UACd;AAAA,UAEA,+BAAC,OAAI,IAAI,EAAE,WAAW,cAAc,SAAS,QAAQ,OAAO,QAAQ,UAAU,GAAG,eAAe,UAAU,KAAK,KAAK,GAAG,EAAE,GACvH;AAAA,gCAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,gBAAgB,WAAW,GACrD;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,eAAa;AAAA,gBACb,SAAS;AAAA,gBACT,IAAI,EAAE,UAAU,MAAM,EAAE,GAAG,OAAO,iBAAiB;AAAA,gBAElD,eAAK;AAAA;AAAA,YACR,GACF;AAAA,YACC;AAAA,aACH;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AACA,iBAAiB,cAAc;AAE/B,IAAM,qBAAqB,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,cAAc,gBAAgB,YAAY;AAAA,EAC1C,QAAQ,gBAAgB,YAAY;AAAA,EACpC;AACF,MAAkD;AAChD,QAAM,EAAE,KAAK,IAAI,sBAAsB;AACvC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,KAAK;AACxC,QAAM,YAAY,OAAO,KAAK;AAC9B,MAAI,UAAU,YAAY,OAAO;AAC/B,cAAU,UAAU;AACpB,QAAI,UAAU,MAAO,UAAS,KAAK;AAAA,EACrC;AAEA,QAAM,SAAS,MAAY;AACzB,QAAI,UAAU,MAAO,UAAS,KAAK;AAAA,EACrC;AACA,QAAM,eAAe,MAAY;AAC/B,aAAS,EAAE;AACX,QAAI,UAAU,GAAI,UAAS,EAAE;AAAA,EAC/B;AAEA,SACE,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GAC1D;AAAA,wBAAC,cAAW,WAAU,SAAQ,IAAI,EAAE,UAAU,MAAM,EAAE,GAAG,YAAY,KAAK,OAAO,iBAAiB,GAC/F,iBACH;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,IAAI;AAAA,QACJ,MAAK;AAAA,QACL;AAAA,QACA,OAAO;AAAA,QACP,UAAU,CAAC,UAAU,SAAS,MAAM,OAAO,KAAK;AAAA,QAChD,QAAQ;AAAA,QACR,WAAW,CAAC,UAAU;AACpB,cAAI,MAAM,QAAQ,QAAS;AAC3B,gBAAM,eAAe;AACrB,iBAAO;AAAA,QACT;AAAA,QACA,YAAY,EAAE,cAAc,OAAO,eAAe,OAAO;AAAA,QACzD,YAAY;AAAA,UACV,gBACE,oBAAC,kBAAe,UAAS,SACvB,8BAAC,cAAW,IAAI,EAAE,UAAU,MAAM,EAAE,GAAG,OAAO,iBAAiB,GAAG,GACpE;AAAA,UAEF,cACE,UAAU,KACR,oBAAC,kBAAe,UAAS,OACvB;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,cAAY,KAAK;AAAA,cACjB,eAAa,SAAS,GAAG,MAAM,WAAW;AAAA,cAC1C,aAAa,CAAC,UAAU,MAAM,eAAe;AAAA,cAC7C,SAAS;AAAA,cAET,8BAAC,aAAU,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,GAAG;AAAA;AAAA,UAC1C,GACF,IACE;AAAA,QACR;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AACA,mBAAmB,cAAc;AAEjC,IAAM,qBAAqB,CAAC,EAAE,OAAO,SAAS,MAC5C,qBAAC,OACC;AAAA,sBAAC,WAAQ,IAAI,EAAE,IAAI,IAAI,GAAG;AAAA,EAC1B,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,IAAI,GAC5D;AAAA,wBAAC,cAAW,WAAU,MAAK,IAAI,EAAE,UAAU,MAAM,EAAE,GAAG,YAAY,KAAK,OAAO,eAAe,GAC1F,iBACH;AAAA,IACA,oBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GAAI,UAAS;AAAA,KAC3E;AAAA,GACF;AAEF,mBAAmB,cAAc;AAEjC,SAAS,yBAAyD;AAAA,EAChE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6D;AAC3D,SACE,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GAAG,eAAa,QAC1E;AAAA,wBAAC,cAAW,IAAI,EAAE,UAAU,MAAM,EAAE,GAAG,YAAY,KAAK,OAAO,iBAAiB,GAAI,iBAAM;AAAA,IAC1F,oBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,eAAe,SAAS,GACjD,kBAAQ,IAAI,CAAC,WAAW;AACvB,YAAM,UAAU,SAAS,IAAI,OAAO,KAAK;AACzC,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,SACE;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL;AAAA,cACA,UAAU,CAAC,UAAU,SAAS,OAAO,OAAO,MAAM,OAAO,OAAO;AAAA,cAChE,eAAa,SAAS,GAAG,MAAM,IAAI,OAAO,KAAK,KAAK;AAAA,cACpD,IAAI,EAAE,IAAI,KAAK;AAAA;AAAA,UACjB;AAAA,UAEF,OACE,qBAAC,OAAI,WAAU,QAAO,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,GAC7C;AAAA,mBAAO;AAAA,YACP,OAAO,SAAS,QACf,qBAAC,OAAI,WAAU,QAAO,IAAI,EAAE,OAAO,iBAAiB,GACjD;AAAA;AAAA,cAAI;AAAA,cACH,OAAO;AAAA,cAAM;AAAA,eACjB;AAAA,aAEJ;AAAA,UAEF,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE;AAAA;AAAA,QArBjB,OAAO;AAAA,MAsBd;AAAA,IAEJ,CAAC,GACH;AAAA,KACF;AAEJ;AACA,yBAAyB,cAAc;AAEvC,SAAS,WAAW,MAAkC;AACpD,MAAI,KAAK,KAAK,MAAM,GAAI,QAAO;AAC/B,QAAM,SAAS,OAAO,IAAI;AAC1B,SAAO,OAAO,MAAM,MAAM,IAAI,SAAY;AAC5C;AAGA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAQsB;AACpB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,IAAI;AAAA,MACJ,MAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,OAAO,SAAS,OAAO,OAAO,KAAK,IAAI;AAAA,MACvC,UAAU,CAAC,UAAU,SAAS,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,MAC5D,YAAY,EAAE,MAAM,cAAc,WAAW,eAAe,OAAO;AAAA;AAAA,EACrE;AAEJ;AAGA,IAAM,kBAAkB,CAAC,UACvB,MAAM,OAAO,QAAQ,MAAM,OAAO,QAAQ,MAAM,MAAM,MAAM;AAE9D,IAAM,wBAAwB,CAAC;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAqD;AACnD,QAAM,EAAE,KAAK,IAAI,sBAAsB;AACvC,QAAM,UAAU,gBAAgB,KAAK;AAGrC,QAAM,UAAU,kBAAkB,KAAK;AACvC,QAAM,UAAU,kBAAkB,KAAK;AACvC,QAAM,cAAc,gBAAgB,KAAK;AACzC,SACE,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GAAG,eAAa,QAC1E;AAAA,yBAAC,cAAW,IAAI,EAAE,UAAU,MAAM,EAAE,GAAG,YAAY,KAAK,OAAO,iBAAiB,GAC7E;AAAA;AAAA,MACA,OAAO,KAAK,IAAI,MAAM;AAAA,OACzB;AAAA,IACA,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,EAAE,GACvD;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,MAAM;AAAA,UACb,OAAO;AAAA,UACP,aAAa;AAAA,UACb;AAAA,UACA,WAAW,GAAG,KAAK,IAAI,OAAO;AAAA,UAC9B,QAAQ,SAAS,GAAG,MAAM,SAAS;AAAA,UACnC,UAAU,CAAC,QAAQ,SAAS,EAAE,GAAG,OAAO,IAAI,CAAC;AAAA;AAAA,MAC/C;AAAA,MACA,oBAAC,cAAW,WAAU,QAAO,IAAI,EAAE,OAAO,iBAAiB,GAAG,oBAE9D;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,MAAM;AAAA,UACb,OAAO;AAAA,UACP,aAAa;AAAA,UACb;AAAA,UACA,WAAW,GAAG,KAAK,IAAI,OAAO;AAAA,UAC9B,QAAQ,SAAS,GAAG,MAAM,SAAS;AAAA,UACnC,UAAU,CAAC,QAAQ,SAAS,EAAE,GAAG,OAAO,IAAI,CAAC;AAAA;AAAA,MAC/C;AAAA,OACF;AAAA,IACC,WACC;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,eAAa,SAAS,GAAG,MAAM,WAAW;AAAA,QAC1C,IAAI,EAAE,UAAU,MAAM,IAAI,GAAG,OAAO,aAAa;AAAA,QAEhD;AAAA;AAAA,IACH;AAAA,KAEJ;AAEJ;AACA,sBAAsB,cAAc;AAEpC,YAAY,SAAS;AACrB,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,gBAAgB;AAC5B,YAAY,aAAa;","names":[]}
@@ -2,7 +2,7 @@ import {
2
2
  buildGridColumns,
3
3
  buildRowActionsColumn,
4
4
  isActionsColumn
5
- } from "./chunk-GHXW6O5T.js";
5
+ } from "./chunk-3LQLLL2J.js";
6
6
 
7
7
  // src/components/data-display/DataViews/data-views-columns.ts
8
8
  import { useTheme } from "@mui/material/styles/index.js";
@@ -62,4 +62,4 @@ export {
62
62
  useColumnsWithActions,
63
63
  useRenderedColumns
64
64
  };
65
- //# sourceMappingURL=chunk-HPEBSLYP.js.map
65
+ //# sourceMappingURL=chunk-B67KUCWU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EN_US_UI_LABELS
3
- } from "./chunk-W5PRZHLU.js";
3
+ } from "./chunk-O2RXSXSF.js";
4
4
  import {
5
5
  modeInk,
6
6
  neutralTones
@@ -217,4 +217,4 @@ Code.displayName = "Code";
217
217
  export {
218
218
  Code
219
219
  };
220
- //# sourceMappingURL=chunk-CYKINZKO.js.map
220
+ //# sourceMappingURL=chunk-BFBCTF2Y.js.map
@@ -3,17 +3,17 @@ import {
3
3
  } from "./chunk-LUNN5GTB.js";
4
4
  import {
5
5
  InlineFilterControls
6
- } from "./chunk-CSQWPDQV.js";
6
+ } from "./chunk-DT22MDC3.js";
7
7
  import {
8
8
  GridHeaderRow
9
9
  } from "./chunk-X3AFXHY5.js";
10
10
  import {
11
11
  GridMain
12
- } from "./chunk-JSY234NY.js";
12
+ } from "./chunk-KW2KCPZF.js";
13
13
  import {
14
14
  FilterDialog,
15
15
  GridFilterPanel
16
- } from "./chunk-TPGFR24B.js";
16
+ } from "./chunk-6IVR5HFI.js";
17
17
  import {
18
18
  DataViewsPagination
19
19
  } from "./chunk-3W2B7IZG.js";
@@ -33,14 +33,14 @@ import {
33
33
  } from "./chunk-K3PMMW23.js";
34
34
  import {
35
35
  ShellToolbar
36
- } from "./chunk-GPQ22MPR.js";
36
+ } from "./chunk-DB7OJM6X.js";
37
37
  import {
38
38
  SHELL_PROPS,
39
39
  useStickyBarTop
40
40
  } from "./chunk-4IE66GY2.js";
41
41
  import {
42
42
  togglePillValues
43
- } from "./chunk-GHXW6O5T.js";
43
+ } from "./chunk-3LQLLL2J.js";
44
44
  import {
45
45
  DataViewsLayoutProvider,
46
46
  useDataViewsLayout
@@ -50,7 +50,7 @@ import {
50
50
  } from "./chunk-KHG57NAE.js";
51
51
  import {
52
52
  TableFilter
53
- } from "./chunk-ZYKDUKAH.js";
53
+ } from "./chunk-B2RNNJRO.js";
54
54
  import {
55
55
  default as default2
56
56
  } from "./chunk-WEBEOBN5.js";
@@ -251,4 +251,4 @@ function GridShell(props) {
251
251
  export {
252
252
  GridShell
253
253
  };
254
- //# sourceMappingURL=chunk-WUW6NDXC.js.map
254
+ //# sourceMappingURL=chunk-BLVFHVDM.js.map
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-CUMSPE6B.js";
14
14
  import {
15
15
  EN_US_UI_LABELS
16
- } from "./chunk-W5PRZHLU.js";
16
+ } from "./chunk-O2RXSXSF.js";
17
17
  import {
18
18
  sxRem
19
19
  } from "./chunk-YKCAJ2TN.js";
@@ -171,7 +171,10 @@ var DashboardFilters = ({ children, className }) => {
171
171
  };
172
172
  DashboardFilters.displayName = "Dashboard.Filters";
173
173
  DashboardFilters.dashboardSlot = "filters";
174
- var DashboardMoreFilters = ({ children, label = "More filters" }) => {
174
+ var DashboardMoreFilters = ({
175
+ children,
176
+ label = EN_US_UI_LABELS.dashboard.moreFilters
177
+ }) => {
175
178
  const { moreFiltersOpen, toggleMoreFilters, testIdPrefix } = useDashboardContext();
176
179
  return /* @__PURE__ */ jsxs(Box, { children: [
177
180
  /* @__PURE__ */ jsx(
@@ -214,4 +217,4 @@ export {
214
217
  markDashboardSlot,
215
218
  Dashboard
216
219
  };
217
- //# sourceMappingURL=chunk-GHGZI7PK.js.map
220
+ //# sourceMappingURL=chunk-BMVLTTTC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/layout/Dashboard/Dashboard.tsx"],"sourcesContent":["'use client';\n\nimport ExpandLessIcon from '@mui/icons-material/ExpandLess';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport FilterIcon from '@mui/icons-material/FilterListRounded';\nimport NavigateNextIcon from '@mui/icons-material/NavigateNext';\nimport Box from '@mui/material/Box/index.js';\nimport MuiBreadcrumbs from '@mui/material/Breadcrumbs/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Collapse from '@mui/material/Collapse/index.js';\nimport MuiLink from '@mui/material/Link/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { styled } from '@mui/material/styles/index.js';\nimport React, { useMemo, useState } from 'react';\n\nimport { DashboardContext, useDashboardContext } from './DashboardContext';\nimport {\n DashboardAction,\n DashboardActions,\n DashboardExport,\n DashboardFilterToggle,\n DashboardInfo,\n DashboardSettings,\n DashboardSpacer,\n} from './DashboardParts';\nimport type {\n DashboardBodyProps,\n DashboardBreadcrumbProps,\n DashboardFiltersProps,\n DashboardHeaderProps,\n DashboardMoreFiltersProps,\n DashboardProps,\n} from './Dashboard.types';\nimport { EN_US_UI_LABELS } from '../../../en-US.labels';\nimport { sxRem } from '../../../tokens/relative';\n\n/**\n * Ordered slot keys. The root reorders composed children into this sequence so\n * authoring order in JSX never matters — a `<Dashboard.Filters>` placed above\n * a `<Dashboard.Header>` still renders below it.\n */\nconst SLOT_ORDER = ['breadcrumb', 'header', 'filters', 'body'] as const;\n/** A slot a component can occupy in the canonical Dashboard order. */\nexport type DashboardSlot = (typeof SLOT_ORDER)[number];\n\n/** Marker attached to each sub-component so the root can rank it by slot. */\ntype SlottedComponent = { dashboardSlot?: DashboardSlot };\n\n/**\n * Tag a component with the Dashboard slot it occupies so the root ranks it in\n * canonical order. The root inspects only its DIRECT children's `type`, so a\n * page that wraps a `<Dashboard.Header>` (or any part) in its own component MUST\n * mark that wrapper — otherwise it counts as an unrecognised child and sinks\n * below the body. Returns the component for convenient inline use.\n *\n * @example\n * ```tsx\n * function ProductsHeader(props) {\n * return <Dashboard.Header title=\"Products\">{/* … *\\/}</Dashboard.Header>;\n * }\n * markDashboardSlot(ProductsHeader, 'header');\n * ```\n */\nexport function markDashboardSlot<T>(component: T, slot: DashboardSlot): T {\n (component as SlottedComponent).dashboardSlot = slot;\n return component;\n}\n\nconst Root = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n width: '100%',\n}));\n\nfunction slotRank(node: React.ReactNode): number {\n if (React.isValidElement(node)) {\n const slot = (node.type as SlottedComponent).dashboardSlot;\n if (slot) {\n const rank = SLOT_ORDER.indexOf(slot);\n if (rank >= 0) {\n return rank;\n }\n }\n }\n // Unknown / arbitrary children keep their relative position after the\n // recognised slots.\n return SLOT_ORDER.length;\n}\n\n/**\n * Composable page shell. `<Dashboard>` provides shared state through context\n * and renders whichever sub-components you compose — nothing is implied. Drop\n * in only the parts you need; omit `<Dashboard.Filters>` and there is simply no\n * filter UI.\n *\n * @example\n * ```tsx\n * <Dashboard activeFilterCount={2}>\n * <Dashboard.Breadcrumb items={[{ label: 'Admin', href: '/admin' }, { label: 'Products' }]} />\n * <Dashboard.Header title=\"Products\">\n * <Dashboard.Info>What this page does…</Dashboard.Info>\n * <Dashboard.FilterToggle />\n * <Dashboard.Settings>In development</Dashboard.Settings>\n * <Dashboard.Spacer />\n * <Dashboard.Export onExport={handleExport} />\n * <Dashboard.Action><Button variant=\"contained\">New product</Button></Dashboard.Action>\n * </Dashboard.Header>\n * <Dashboard.Filters>{/* search + pills *\\/}</Dashboard.Filters>\n * <Dashboard.Body>{table}</Dashboard.Body>\n * </Dashboard>\n * ```\n */\nexport const Dashboard = ({\n children,\n defaultFiltersVisible = true,\n activeFilterCount = 0,\n testIdPrefix = 'dashboard',\n className,\n}: DashboardProps): React.JSX.Element => {\n const [filtersVisible, setFiltersVisible] = useState(defaultFiltersVisible);\n const [moreFiltersOpen, setMoreFiltersOpen] = useState(false);\n\n const value = useMemo(\n () => ({\n filtersVisible,\n toggleFilters: () => setFiltersVisible((v) => !v),\n moreFiltersOpen,\n toggleMoreFilters: () => setMoreFiltersOpen((v) => !v),\n activeFilterCount,\n testIdPrefix,\n }),\n [filtersVisible, moreFiltersOpen, activeFilterCount, testIdPrefix],\n );\n\n // Stable sort recognised slots into canonical order, preserving the original\n // order of anything unrecognised.\n const ordered = useMemo(() => {\n const arr = React.Children.toArray(children);\n return arr\n .map((node, index) => ({ node, index, rank: slotRank(node) }))\n .sort((a, b) => (a.rank === b.rank ? a.index - b.index : a.rank - b.rank))\n .map((entry) => entry.node);\n }, [children]);\n\n return (\n <DashboardContext.Provider value={value}>\n <Root className={className} data-testid={testIdPrefix}>\n {ordered}\n </Root>\n </DashboardContext.Provider>\n );\n};\n\nDashboard.displayName = 'Dashboard';\n\n/* -------------------------------------------------------------------------- */\n/* Breadcrumb */\n/* -------------------------------------------------------------------------- */\n\nconst DashboardBreadcrumb = ({\n items,\n renderLink,\n ariaLabel = EN_US_UI_LABELS.dashboard.breadcrumb,\n className,\n}: DashboardBreadcrumbProps): React.JSX.Element => {\n const { testIdPrefix } = useDashboardContext();\n return (\n <MuiBreadcrumbs\n separator={<NavigateNextIcon fontSize=\"small\" />}\n className={className}\n aria-label={ariaLabel}\n data-testid={`${testIdPrefix}-breadcrumb`}\n sx={{ fontSize: sxRem(14), color: 'text.secondary' }}\n >\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n if (isLast || !item.href) {\n return (\n <Typography\n key={`${item.label}-${index}`}\n component=\"span\"\n sx={{ fontSize: sxRem(14), color: isLast ? 'text.primary' : 'text.secondary' }}\n aria-current={isLast ? 'page' : undefined}\n >\n {item.label}\n </Typography>\n );\n }\n const linkContent = item.label;\n if (renderLink) {\n return <React.Fragment key={`${item.label}-${index}`}>{renderLink(item, linkContent)}</React.Fragment>;\n }\n return (\n <MuiLink\n key={`${item.label}-${index}`}\n href={item.href}\n underline=\"hover\"\n color=\"inherit\"\n sx={{ fontSize: sxRem(14) }}\n >\n {linkContent}\n </MuiLink>\n );\n })}\n </MuiBreadcrumbs>\n );\n};\nDashboardBreadcrumb.displayName = 'Dashboard.Breadcrumb';\n(DashboardBreadcrumb as SlottedComponent).dashboardSlot = 'breadcrumb';\n\n/* -------------------------------------------------------------------------- */\n/* Header + action parts */\n/* -------------------------------------------------------------------------- */\n\nconst DashboardHeader = ({ title, children, className }: DashboardHeaderProps): React.JSX.Element => {\n const { testIdPrefix } = useDashboardContext();\n return (\n <Box\n className={className}\n data-testid={`${testIdPrefix}-header`}\n sx={{ display: 'flex', alignItems: 'center', gap: 1, flexWrap: 'wrap', minHeight: sxRem(40) }}\n >\n <Typography variant=\"h5\" component=\"h1\" sx={{ fontWeight: 600, mr: 0.5 }}>\n {title}\n </Typography>\n {children}\n </Box>\n );\n};\nDashboardHeader.displayName = 'Dashboard.Header';\n(DashboardHeader as SlottedComponent).dashboardSlot = 'header';\n\n/** Flexible spacer — everything composed after it is pushed to the right. */\n/* -------------------------------------------------------------------------- */\n/* Filters */\n/* -------------------------------------------------------------------------- */\n\nconst DashboardFilters = ({ children, className }: DashboardFiltersProps): React.JSX.Element => {\n const { filtersVisible, testIdPrefix } = useDashboardContext();\n return (\n <Collapse in={filtersVisible} unmountOnExit data-testid={`${testIdPrefix}-filters`}>\n <Box\n className={className}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 1.5,\n p: 2,\n borderRadius: 1,\n border: 1,\n borderColor: 'divider',\n bgcolor: 'action.hover',\n }}\n >\n {children}\n </Box>\n </Collapse>\n );\n};\nDashboardFilters.displayName = 'Dashboard.Filters';\n(DashboardFilters as SlottedComponent).dashboardSlot = 'filters';\n\nconst DashboardMoreFilters = ({ children, label = 'More filters' }: DashboardMoreFiltersProps): React.JSX.Element => {\n const { moreFiltersOpen, toggleMoreFilters, testIdPrefix } = useDashboardContext();\n return (\n <Box>\n <Button\n variant=\"text\"\n size=\"small\"\n startIcon={<FilterIcon fontSize=\"small\" />}\n endIcon={moreFiltersOpen ? <ExpandLessIcon fontSize=\"small\" /> : <ExpandMoreIcon fontSize=\"small\" />}\n onClick={toggleMoreFilters}\n aria-expanded={moreFiltersOpen}\n data-testid={`${testIdPrefix}-more-filters-toggle`}\n >\n {label}\n </Button>\n <Collapse in={moreFiltersOpen} unmountOnExit data-testid={`${testIdPrefix}-more-filters-panel`}>\n <Box sx={{ mt: 1.5, p: 2, borderRadius: 1, border: 1, borderColor: 'divider', bgcolor: 'background.paper' }}>\n {children}\n </Box>\n </Collapse>\n </Box>\n );\n};\nDashboardMoreFilters.displayName = 'Dashboard.MoreFilters';\n\n/* -------------------------------------------------------------------------- */\n/* Body */\n/* -------------------------------------------------------------------------- */\n\nconst DashboardBody = ({ children, className }: DashboardBodyProps): React.JSX.Element => {\n const { testIdPrefix } = useDashboardContext();\n return (\n <Box className={className} data-testid={`${testIdPrefix}-body`}>\n {children}\n </Box>\n );\n};\nDashboardBody.displayName = 'Dashboard.Body';\n(DashboardBody as SlottedComponent).dashboardSlot = 'body';\n\n/* -------------------------------------------------------------------------- */\n/* Attach sub-components as dot-notation parts */\n/* -------------------------------------------------------------------------- */\n\nDashboard.Breadcrumb = DashboardBreadcrumb;\nDashboard.Header = DashboardHeader;\nDashboard.Spacer = DashboardSpacer;\nDashboard.Info = DashboardInfo;\nDashboard.FilterToggle = DashboardFilterToggle;\nDashboard.Settings = DashboardSettings;\nDashboard.Export = DashboardExport;\nDashboard.Action = DashboardAction;\nDashboard.Actions = DashboardActions;\nDashboard.Filters = DashboardFilters;\nDashboard.MoreFilters = DashboardMoreFilters;\nDashboard.Body = DashboardBody;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,oBAAoB;AAC3B,OAAO,oBAAoB;AAC3B,OAAO,gBAAgB;AACvB,OAAO,sBAAsB;AAC7B,OAAO,SAAS;AAChB,OAAO,oBAAoB;AAC3B,OAAO,YAAY;AACnB,OAAO,cAAc;AACrB,OAAO,aAAa;AACpB,OAAO,gBAAgB;AACvB,SAAS,cAAc;AACvB,OAAO,SAAS,SAAS,gBAAgB;AAsInC,cAuEF,YAvEE;AA1GN,IAAM,aAAa,CAAC,cAAc,UAAU,WAAW,MAAM;AAsBtD,SAAS,kBAAqB,WAAc,MAAwB;AACzE,EAAC,UAA+B,gBAAgB;AAChD,SAAO;AACT;AAEA,IAAM,OAAO,OAAO,GAAG,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACvC,SAAS;AAAA,EACT,eAAe;AAAA,EACf,KAAK,MAAM,QAAQ,CAAC;AAAA,EACpB,OAAO;AACT,EAAE;AAEF,SAAS,SAAS,MAA+B;AAC/C,MAAI,MAAM,eAAe,IAAI,GAAG;AAC9B,UAAM,OAAQ,KAAK,KAA0B;AAC7C,QAAI,MAAM;AACR,YAAM,OAAO,WAAW,QAAQ,IAAI;AACpC,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAGA,SAAO,WAAW;AACpB;AAyBO,IAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf;AACF,MAAyC;AACvC,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,qBAAqB;AAC1E,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,KAAK;AAE5D,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,MACL;AAAA,MACA,eAAe,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAAA,MAChD;AAAA,MACA,mBAAmB,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAAA,MACrD;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,iBAAiB,mBAAmB,YAAY;AAAA,EACnE;AAIA,QAAM,UAAU,QAAQ,MAAM;AAC5B,UAAM,MAAM,MAAM,SAAS,QAAQ,QAAQ;AAC3C,WAAO,IACJ,IAAI,CAAC,MAAM,WAAW,EAAE,MAAM,OAAO,MAAM,SAAS,IAAI,EAAE,EAAE,EAC5D,KAAK,CAAC,GAAG,MAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAK,EACxE,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,EAC9B,GAAG,CAAC,QAAQ,CAAC;AAEb,SACE,oBAAC,iBAAiB,UAAjB,EAA0B,OACzB,8BAAC,QAAK,WAAsB,eAAa,cACtC,mBACH,GACF;AAEJ;AAEA,UAAU,cAAc;AAMxB,IAAM,sBAAsB,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,YAAY,gBAAgB,UAAU;AAAA,EACtC;AACF,MAAmD;AACjD,QAAM,EAAE,aAAa,IAAI,oBAAoB;AAC7C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,oBAAC,oBAAiB,UAAS,SAAQ;AAAA,MAC9C;AAAA,MACA,cAAY;AAAA,MACZ,eAAa,GAAG,YAAY;AAAA,MAC5B,IAAI,EAAE,UAAU,MAAM,EAAE,GAAG,OAAO,iBAAiB;AAAA,MAElD,gBAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,cAAM,SAAS,UAAU,MAAM,SAAS;AACxC,YAAI,UAAU,CAAC,KAAK,MAAM;AACxB,iBACE;AAAA,YAAC;AAAA;AAAA,cAEC,WAAU;AAAA,cACV,IAAI,EAAE,UAAU,MAAM,EAAE,GAAG,OAAO,SAAS,iBAAiB,iBAAiB;AAAA,cAC7E,gBAAc,SAAS,SAAS;AAAA,cAE/B,eAAK;AAAA;AAAA,YALD,GAAG,KAAK,KAAK,IAAI,KAAK;AAAA,UAM7B;AAAA,QAEJ;AACA,cAAM,cAAc,KAAK;AACzB,YAAI,YAAY;AACd,iBAAO,oBAAC,MAAM,UAAN,EAA+C,qBAAW,MAAM,WAAW,KAAvD,GAAG,KAAK,KAAK,IAAI,KAAK,EAAmC;AAAA,QACvF;AACA,eACE;AAAA,UAAC;AAAA;AAAA,YAEC,MAAM,KAAK;AAAA,YACX,WAAU;AAAA,YACV,OAAM;AAAA,YACN,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE;AAAA,YAEzB;AAAA;AAAA,UANI,GAAG,KAAK,KAAK,IAAI,KAAK;AAAA,QAO7B;AAAA,MAEJ,CAAC;AAAA;AAAA,EACH;AAEJ;AACA,oBAAoB,cAAc;AACjC,oBAAyC,gBAAgB;AAM1D,IAAM,kBAAkB,CAAC,EAAE,OAAO,UAAU,UAAU,MAA+C;AACnG,QAAM,EAAE,aAAa,IAAI,oBAAoB;AAC7C,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,eAAa,GAAG,YAAY;AAAA,MAC5B,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,GAAG,UAAU,QAAQ,WAAW,MAAM,EAAE,EAAE;AAAA,MAE5F;AAAA,4BAAC,cAAW,SAAQ,MAAK,WAAU,MAAK,IAAI,EAAE,YAAY,KAAK,IAAI,IAAI,GACpE,iBACH;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAEJ;AACA,gBAAgB,cAAc;AAC7B,gBAAqC,gBAAgB;AAOtD,IAAM,mBAAmB,CAAC,EAAE,UAAU,UAAU,MAAgD;AAC9F,QAAM,EAAE,gBAAgB,aAAa,IAAI,oBAAoB;AAC7D,SACE,oBAAC,YAAS,IAAI,gBAAgB,eAAa,MAAC,eAAa,GAAG,YAAY,YACtE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,IAAI;AAAA,QACF,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,GAAG;AAAA,QACH,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,SAAS;AAAA,MACX;AAAA,MAEC;AAAA;AAAA,EACH,GACF;AAEJ;AACA,iBAAiB,cAAc;AAC9B,iBAAsC,gBAAgB;AAEvD,IAAM,uBAAuB,CAAC,EAAE,UAAU,QAAQ,eAAe,MAAoD;AACnH,QAAM,EAAE,iBAAiB,mBAAmB,aAAa,IAAI,oBAAoB;AACjF,SACE,qBAAC,OACC;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,WAAW,oBAAC,cAAW,UAAS,SAAQ;AAAA,QACxC,SAAS,kBAAkB,oBAAC,kBAAe,UAAS,SAAQ,IAAK,oBAAC,kBAAe,UAAS,SAAQ;AAAA,QAClG,SAAS;AAAA,QACT,iBAAe;AAAA,QACf,eAAa,GAAG,YAAY;AAAA,QAE3B;AAAA;AAAA,IACH;AAAA,IACA,oBAAC,YAAS,IAAI,iBAAiB,eAAa,MAAC,eAAa,GAAG,YAAY,uBACvE,8BAAC,OAAI,IAAI,EAAE,IAAI,KAAK,GAAG,GAAG,cAAc,GAAG,QAAQ,GAAG,aAAa,WAAW,SAAS,mBAAmB,GACvG,UACH,GACF;AAAA,KACF;AAEJ;AACA,qBAAqB,cAAc;AAMnC,IAAM,gBAAgB,CAAC,EAAE,UAAU,UAAU,MAA6C;AACxF,QAAM,EAAE,aAAa,IAAI,oBAAoB;AAC7C,SACE,oBAAC,OAAI,WAAsB,eAAa,GAAG,YAAY,SACpD,UACH;AAEJ;AACA,cAAc,cAAc;AAC3B,cAAmC,gBAAgB;AAMpD,UAAU,aAAa;AACvB,UAAU,SAAS;AACnB,UAAU,SAAS;AACnB,UAAU,OAAO;AACjB,UAAU,eAAe;AACzB,UAAU,WAAW;AACrB,UAAU,SAAS;AACnB,UAAU,SAAS;AACnB,UAAU,UAAU;AACpB,UAAU,UAAU;AACpB,UAAU,cAAc;AACxB,UAAU,OAAO;","names":[]}
1
+ {"version":3,"sources":["../src/components/layout/Dashboard/Dashboard.tsx"],"sourcesContent":["'use client';\n\nimport ExpandLessIcon from '@mui/icons-material/ExpandLess';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport FilterIcon from '@mui/icons-material/FilterListRounded';\nimport NavigateNextIcon from '@mui/icons-material/NavigateNext';\nimport Box from '@mui/material/Box/index.js';\nimport MuiBreadcrumbs from '@mui/material/Breadcrumbs/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Collapse from '@mui/material/Collapse/index.js';\nimport MuiLink from '@mui/material/Link/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { styled } from '@mui/material/styles/index.js';\nimport React, { useMemo, useState } from 'react';\n\nimport { DashboardContext, useDashboardContext } from './DashboardContext';\nimport {\n DashboardAction,\n DashboardActions,\n DashboardExport,\n DashboardFilterToggle,\n DashboardInfo,\n DashboardSettings,\n DashboardSpacer,\n} from './DashboardParts';\nimport type {\n DashboardBodyProps,\n DashboardBreadcrumbProps,\n DashboardFiltersProps,\n DashboardHeaderProps,\n DashboardMoreFiltersProps,\n DashboardProps,\n} from './Dashboard.types';\nimport { EN_US_UI_LABELS } from '../../../en-US.labels';\nimport { sxRem } from '../../../tokens/relative';\n\n/**\n * Ordered slot keys. The root reorders composed children into this sequence so\n * authoring order in JSX never matters — a `<Dashboard.Filters>` placed above\n * a `<Dashboard.Header>` still renders below it.\n */\nconst SLOT_ORDER = ['breadcrumb', 'header', 'filters', 'body'] as const;\n/** A slot a component can occupy in the canonical Dashboard order. */\nexport type DashboardSlot = (typeof SLOT_ORDER)[number];\n\n/** Marker attached to each sub-component so the root can rank it by slot. */\ntype SlottedComponent = { dashboardSlot?: DashboardSlot };\n\n/**\n * Tag a component with the Dashboard slot it occupies so the root ranks it in\n * canonical order. The root inspects only its DIRECT children's `type`, so a\n * page that wraps a `<Dashboard.Header>` (or any part) in its own component MUST\n * mark that wrapper — otherwise it counts as an unrecognised child and sinks\n * below the body. Returns the component for convenient inline use.\n *\n * @example\n * ```tsx\n * function ProductsHeader(props) {\n * return <Dashboard.Header title=\"Products\">{/* … *\\/}</Dashboard.Header>;\n * }\n * markDashboardSlot(ProductsHeader, 'header');\n * ```\n */\nexport function markDashboardSlot<T>(component: T, slot: DashboardSlot): T {\n (component as SlottedComponent).dashboardSlot = slot;\n return component;\n}\n\nconst Root = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n width: '100%',\n}));\n\nfunction slotRank(node: React.ReactNode): number {\n if (React.isValidElement(node)) {\n const slot = (node.type as SlottedComponent).dashboardSlot;\n if (slot) {\n const rank = SLOT_ORDER.indexOf(slot);\n if (rank >= 0) {\n return rank;\n }\n }\n }\n // Unknown / arbitrary children keep their relative position after the\n // recognised slots.\n return SLOT_ORDER.length;\n}\n\n/**\n * Composable page shell. `<Dashboard>` provides shared state through context\n * and renders whichever sub-components you compose — nothing is implied. Drop\n * in only the parts you need; omit `<Dashboard.Filters>` and there is simply no\n * filter UI.\n *\n * @example\n * ```tsx\n * <Dashboard activeFilterCount={2}>\n * <Dashboard.Breadcrumb items={[{ label: 'Admin', href: '/admin' }, { label: 'Products' }]} />\n * <Dashboard.Header title=\"Products\">\n * <Dashboard.Info>What this page does…</Dashboard.Info>\n * <Dashboard.FilterToggle />\n * <Dashboard.Settings>In development</Dashboard.Settings>\n * <Dashboard.Spacer />\n * <Dashboard.Export onExport={handleExport} />\n * <Dashboard.Action><Button variant=\"contained\">New product</Button></Dashboard.Action>\n * </Dashboard.Header>\n * <Dashboard.Filters>{/* search + pills *\\/}</Dashboard.Filters>\n * <Dashboard.Body>{table}</Dashboard.Body>\n * </Dashboard>\n * ```\n */\nexport const Dashboard = ({\n children,\n defaultFiltersVisible = true,\n activeFilterCount = 0,\n testIdPrefix = 'dashboard',\n className,\n}: DashboardProps): React.JSX.Element => {\n const [filtersVisible, setFiltersVisible] = useState(defaultFiltersVisible);\n const [moreFiltersOpen, setMoreFiltersOpen] = useState(false);\n\n const value = useMemo(\n () => ({\n filtersVisible,\n toggleFilters: () => setFiltersVisible((v) => !v),\n moreFiltersOpen,\n toggleMoreFilters: () => setMoreFiltersOpen((v) => !v),\n activeFilterCount,\n testIdPrefix,\n }),\n [filtersVisible, moreFiltersOpen, activeFilterCount, testIdPrefix],\n );\n\n // Stable sort recognised slots into canonical order, preserving the original\n // order of anything unrecognised.\n const ordered = useMemo(() => {\n const arr = React.Children.toArray(children);\n return arr\n .map((node, index) => ({ node, index, rank: slotRank(node) }))\n .sort((a, b) => (a.rank === b.rank ? a.index - b.index : a.rank - b.rank))\n .map((entry) => entry.node);\n }, [children]);\n\n return (\n <DashboardContext.Provider value={value}>\n <Root className={className} data-testid={testIdPrefix}>\n {ordered}\n </Root>\n </DashboardContext.Provider>\n );\n};\n\nDashboard.displayName = 'Dashboard';\n\n/* -------------------------------------------------------------------------- */\n/* Breadcrumb */\n/* -------------------------------------------------------------------------- */\n\nconst DashboardBreadcrumb = ({\n items,\n renderLink,\n ariaLabel = EN_US_UI_LABELS.dashboard.breadcrumb,\n className,\n}: DashboardBreadcrumbProps): React.JSX.Element => {\n const { testIdPrefix } = useDashboardContext();\n return (\n <MuiBreadcrumbs\n separator={<NavigateNextIcon fontSize=\"small\" />}\n className={className}\n aria-label={ariaLabel}\n data-testid={`${testIdPrefix}-breadcrumb`}\n sx={{ fontSize: sxRem(14), color: 'text.secondary' }}\n >\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n if (isLast || !item.href) {\n return (\n <Typography\n key={`${item.label}-${index}`}\n component=\"span\"\n sx={{ fontSize: sxRem(14), color: isLast ? 'text.primary' : 'text.secondary' }}\n aria-current={isLast ? 'page' : undefined}\n >\n {item.label}\n </Typography>\n );\n }\n const linkContent = item.label;\n if (renderLink) {\n return <React.Fragment key={`${item.label}-${index}`}>{renderLink(item, linkContent)}</React.Fragment>;\n }\n return (\n <MuiLink\n key={`${item.label}-${index}`}\n href={item.href}\n underline=\"hover\"\n color=\"inherit\"\n sx={{ fontSize: sxRem(14) }}\n >\n {linkContent}\n </MuiLink>\n );\n })}\n </MuiBreadcrumbs>\n );\n};\nDashboardBreadcrumb.displayName = 'Dashboard.Breadcrumb';\n(DashboardBreadcrumb as SlottedComponent).dashboardSlot = 'breadcrumb';\n\n/* -------------------------------------------------------------------------- */\n/* Header + action parts */\n/* -------------------------------------------------------------------------- */\n\nconst DashboardHeader = ({ title, children, className }: DashboardHeaderProps): React.JSX.Element => {\n const { testIdPrefix } = useDashboardContext();\n return (\n <Box\n className={className}\n data-testid={`${testIdPrefix}-header`}\n sx={{ display: 'flex', alignItems: 'center', gap: 1, flexWrap: 'wrap', minHeight: sxRem(40) }}\n >\n <Typography variant=\"h5\" component=\"h1\" sx={{ fontWeight: 600, mr: 0.5 }}>\n {title}\n </Typography>\n {children}\n </Box>\n );\n};\nDashboardHeader.displayName = 'Dashboard.Header';\n(DashboardHeader as SlottedComponent).dashboardSlot = 'header';\n\n/** Flexible spacer — everything composed after it is pushed to the right. */\n/* -------------------------------------------------------------------------- */\n/* Filters */\n/* -------------------------------------------------------------------------- */\n\nconst DashboardFilters = ({ children, className }: DashboardFiltersProps): React.JSX.Element => {\n const { filtersVisible, testIdPrefix } = useDashboardContext();\n return (\n <Collapse in={filtersVisible} unmountOnExit data-testid={`${testIdPrefix}-filters`}>\n <Box\n className={className}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 1.5,\n p: 2,\n borderRadius: 1,\n border: 1,\n borderColor: 'divider',\n bgcolor: 'action.hover',\n }}\n >\n {children}\n </Box>\n </Collapse>\n );\n};\nDashboardFilters.displayName = 'Dashboard.Filters';\n(DashboardFilters as SlottedComponent).dashboardSlot = 'filters';\n\nconst DashboardMoreFilters = ({\n children,\n label = EN_US_UI_LABELS.dashboard.moreFilters,\n}: DashboardMoreFiltersProps): React.JSX.Element => {\n const { moreFiltersOpen, toggleMoreFilters, testIdPrefix } = useDashboardContext();\n return (\n <Box>\n <Button\n variant=\"text\"\n size=\"small\"\n startIcon={<FilterIcon fontSize=\"small\" />}\n endIcon={moreFiltersOpen ? <ExpandLessIcon fontSize=\"small\" /> : <ExpandMoreIcon fontSize=\"small\" />}\n onClick={toggleMoreFilters}\n aria-expanded={moreFiltersOpen}\n data-testid={`${testIdPrefix}-more-filters-toggle`}\n >\n {label}\n </Button>\n <Collapse in={moreFiltersOpen} unmountOnExit data-testid={`${testIdPrefix}-more-filters-panel`}>\n <Box sx={{ mt: 1.5, p: 2, borderRadius: 1, border: 1, borderColor: 'divider', bgcolor: 'background.paper' }}>\n {children}\n </Box>\n </Collapse>\n </Box>\n );\n};\nDashboardMoreFilters.displayName = 'Dashboard.MoreFilters';\n\n/* -------------------------------------------------------------------------- */\n/* Body */\n/* -------------------------------------------------------------------------- */\n\nconst DashboardBody = ({ children, className }: DashboardBodyProps): React.JSX.Element => {\n const { testIdPrefix } = useDashboardContext();\n return (\n <Box className={className} data-testid={`${testIdPrefix}-body`}>\n {children}\n </Box>\n );\n};\nDashboardBody.displayName = 'Dashboard.Body';\n(DashboardBody as SlottedComponent).dashboardSlot = 'body';\n\n/* -------------------------------------------------------------------------- */\n/* Attach sub-components as dot-notation parts */\n/* -------------------------------------------------------------------------- */\n\nDashboard.Breadcrumb = DashboardBreadcrumb;\nDashboard.Header = DashboardHeader;\nDashboard.Spacer = DashboardSpacer;\nDashboard.Info = DashboardInfo;\nDashboard.FilterToggle = DashboardFilterToggle;\nDashboard.Settings = DashboardSettings;\nDashboard.Export = DashboardExport;\nDashboard.Action = DashboardAction;\nDashboard.Actions = DashboardActions;\nDashboard.Filters = DashboardFilters;\nDashboard.MoreFilters = DashboardMoreFilters;\nDashboard.Body = DashboardBody;\n"],"mappings":"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","names":[]}
@@ -9,7 +9,7 @@ import {
9
9
  import {
10
10
  EnhancedTableBody,
11
11
  EnhancedTableHeader
12
- } from "./chunk-G2IVONJD.js";
12
+ } from "./chunk-AISCD6W6.js";
13
13
  import {
14
14
  TABLE_DEFAULTS,
15
15
  containerStyle,
@@ -310,4 +310,4 @@ Table.displayName = "Table";
310
310
  export {
311
311
  Table
312
312
  };
313
- //# sourceMappingURL=chunk-UG4EMHMW.js.map
313
+ //# sourceMappingURL=chunk-BTDY2NYV.js.map
@@ -2,7 +2,7 @@ import {
2
2
  CarouselArrows,
3
3
  CarouselIndicators,
4
4
  CarouselThumbnails
5
- } from "./chunk-QDRHIK2R.js";
5
+ } from "./chunk-QK3XXPBA.js";
6
6
 
7
7
  // src/components/data-display/Carousel/Carousel.chrome.tsx
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -60,4 +60,4 @@ var CarouselChrome = ({
60
60
  export {
61
61
  CarouselChrome
62
62
  };
63
- //# sourceMappingURL=chunk-KE74C2SM.js.map
63
+ //# sourceMappingURL=chunk-C2I7NQC4.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useRichTextEditor
3
- } from "./chunk-WE43PZ4P.js";
3
+ } from "./chunk-7UDQJOZZ.js";
4
4
  import {
5
5
  RichTextEditorToolbar
6
6
  } from "./chunk-C465AAD5.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-LL2BWQPM.js";
10
10
  import {
11
11
  EN_US_UI_LABELS
12
- } from "./chunk-W5PRZHLU.js";
12
+ } from "./chunk-O2RXSXSF.js";
13
13
  import {
14
14
  fieldEdge
15
15
  } from "./chunk-7ZADLRLP.js";
@@ -184,4 +184,4 @@ export {
184
184
  RichTextEditor,
185
185
  RichTextEditor_default
186
186
  };
187
- //# sourceMappingURL=chunk-LR473BUT.js.map
187
+ //# sourceMappingURL=chunk-C7LHIDVB.js.map
@@ -7,10 +7,10 @@ import {
7
7
  } from "./chunk-LYVTJLCF.js";
8
8
  import {
9
9
  SheetBody
10
- } from "./chunk-5MMAV7XK.js";
10
+ } from "./chunk-HWKBCLKD.js";
11
11
  import {
12
12
  SheetOverlay
13
- } from "./chunk-JKNKGGOG.js";
13
+ } from "./chunk-DKRMOIX2.js";
14
14
  import {
15
15
  DEFAULT_DRAG_RESISTANCE,
16
16
  DEFAULT_VELOCITY_THRESHOLD,
@@ -143,4 +143,4 @@ var Sheet = (props) => {
143
143
  export {
144
144
  Sheet
145
145
  };
146
- //# sourceMappingURL=chunk-V45JGJ3W.js.map
146
+ //# sourceMappingURL=chunk-CFDYQSN6.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-H2J2MTRE.js";
4
4
  import {
5
5
  EN_US_MAP_PREVIEW_COPY
6
- } from "./chunk-RRSLH2FV.js";
6
+ } from "./chunk-GLAAX5JJ.js";
7
7
  import {
8
8
  rem
9
9
  } from "./chunk-YKCAJ2TN.js";
@@ -46,4 +46,4 @@ export {
46
46
  resolveMapPreviewProps,
47
47
  glassStyles
48
48
  };
49
- //# sourceMappingURL=chunk-BJ7NWZWO.js.map
49
+ //# sourceMappingURL=chunk-D4LMRSY7.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  GridToolbar
3
- } from "./chunk-M3ZNQTS5.js";
3
+ } from "./chunk-7S3NG2AO.js";
4
4
 
5
5
  // src/components/data-display/DataViews/data-views-shell-toolbar.tsx
6
6
  import { jsx } from "react/jsx-runtime";
@@ -68,4 +68,4 @@ function ShellToolbar({
68
68
  export {
69
69
  ShellToolbar
70
70
  };
71
- //# sourceMappingURL=chunk-GPQ22MPR.js.map
71
+ //# sourceMappingURL=chunk-DB7OJM6X.js.map
@@ -2,7 +2,7 @@ import {
2
2
  MoreGroup,
3
3
  MoreQuick,
4
4
  fieldClearing
5
- } from "./chunk-3YCV4EP7.js";
5
+ } from "./chunk-ZDBG7QG2.js";
6
6
  import {
7
7
  useDataViewsCopy
8
8
  } from "./chunk-KHG57NAE.js";
@@ -193,4 +193,4 @@ function MoreFilters({
193
193
  export {
194
194
  MoreFilters
195
195
  };
196
- //# sourceMappingURL=chunk-66BRUS2M.js.map
196
+ //# sourceMappingURL=chunk-DD3VFDB2.js.map
@@ -12,6 +12,9 @@ import {
12
12
  GROUP_MAX,
13
13
  GROUP_OVERLAP
14
14
  } from "./chunk-6ZZGK5DT.js";
15
+ import {
16
+ EN_US_UI_LABELS
17
+ } from "./chunk-O2RXSXSF.js";
15
18
  import {
16
19
  rem
17
20
  } from "./chunk-YKCAJ2TN.js";
@@ -119,7 +122,7 @@ function useAvatarModel(raw, ref) {
119
122
  clickable: interactive || !!onClick,
120
123
  imgSrc: imageError ? void 0 : src,
121
124
  alt,
122
- ariaLabel: rest["aria-label"] || alt || "Avatar",
125
+ ariaLabel: rest["aria-label"] || alt || EN_US_UI_LABELS.avatar.name,
123
126
  content,
124
127
  contentType,
125
128
  className,
@@ -175,4 +178,4 @@ export {
175
178
  Avatar,
176
179
  AvatarGroup
177
180
  };
178
- //# sourceMappingURL=chunk-J2RUDZVJ.js.map
181
+ //# sourceMappingURL=chunk-DE2GWZ6X.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/Avatar/Avatar.tsx"],"sourcesContent":["import BrokenImage from '@mui/icons-material/BrokenImage';\nimport Person from '@mui/icons-material/Person';\nimport { styled } from '@mui/material/styles/index.js';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport {\n AVATAR_DEFAULTS,\n contentTypeOf,\n pickAvatarContent,\n type AvatarContentPick,\n} from './Avatar.helpers';\nimport { GROUP_MAX, GROUP_OVERLAP, GROUP_HOVER, BORDER_WIDTH } from './Avatar.metrics';\nimport type { AvatarProps, ContentType } from './Avatar.types';\nimport { rem } from '../../../tokens/relative';\nimport { AvatarView, type AvatarViewProps } from './Avatar.view';\nimport { EN_US_UI_LABELS } from '../../../en-US.labels';\n\n/** The node behind the winning content slot; the pick itself is shared. */\nfunction resolveContent(args: {\n children?: React.ReactNode;\n fallback?: React.ReactNode;\n icon?: React.ReactNode;\n imageError: boolean;\n showFallbackOnError: boolean;\n}): { content: React.ReactNode; contentType: ContentType } {\n const { children, fallback, icon, imageError, showFallbackOnError } = args;\n const pick = pickAvatarContent({\n hasChildren: Boolean(children),\n hasFallback: Boolean(fallback),\n hasIcon: Boolean(icon),\n imageError,\n showFallbackOnError,\n });\n const NODES: Record<AvatarContentPick, React.ReactNode> = {\n children,\n fallback,\n icon,\n broken: <BrokenImage />,\n default: <Person />,\n };\n return { content: NODES[pick], contentType: contentTypeOf(pick) };\n}\n\n/** Fades the avatar in after `animationDelay`ms. */\nfunction useMountedFade(animationDelay: number): boolean {\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n const timer = window.setTimeout(() => setMounted(true), animationDelay);\n return () => window.clearTimeout(timer);\n }, [animationDelay]);\n return mounted;\n}\n\ninterface ImageState {\n imageError: boolean;\n imageLoading: boolean;\n handleImageError: React.ReactEventHandler;\n handleImageLoad: () => void;\n}\n\n/**\n * Tracks the `<img>` load lifecycle. `imageLoading` starts true whenever there is\n * a `src` and clears on load/error — the handlers must be wired to the actual img\n * (via `slotProps.img` in the view), since load/error don't bubble to the root.\n */\nfunction useImageState(src: string | undefined, onError?: React.ReactEventHandler): ImageState {\n const [imageError, setImageError] = useState(false);\n const [imageLoading, setImageLoading] = useState(!!src);\n\n useEffect(() => {\n setImageError(false);\n setImageLoading(!!src);\n }, [src]);\n\n const handleImageError = useCallback<React.ReactEventHandler>(\n (event) => {\n setImageError(true);\n setImageLoading(false);\n onError?.(event);\n },\n [onError],\n );\n\n const handleImageLoad = useCallback(() => setImageLoading(false), []);\n\n return { imageError, imageLoading, handleImageError, handleImageLoad };\n}\n\n/** Normalizes props (defaults + rest passthrough) and derives everything the view needs. */\nfunction useAvatarModel(raw: AvatarProps, ref: React.Ref<HTMLDivElement>): AvatarViewProps {\n const {\n variant,\n size,\n glow,\n pulse,\n status,\n fallback,\n icon,\n bordered,\n color,\n src,\n alt,\n children,\n loading,\n onError,\n onClick,\n interactive,\n showFallbackOnError,\n animationDelay,\n className,\n dataTestId,\n // React Native's spelling of the same id; it names the component on both\n // sides and must not reach the DOM as an attribute.\n testID,\n ...rest\n } = { ...AVATAR_DEFAULTS, ...raw };\n\n const mounted = useMountedFade(animationDelay);\n const { imageError, imageLoading, handleImageError, handleImageLoad } = useImageState(src, onError);\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => onClick?.(event),\n [onClick],\n );\n const { content, contentType } = resolveContent({\n children,\n fallback,\n icon,\n imageError,\n showFallbackOnError,\n });\n\n return {\n mounted,\n variant,\n size,\n color,\n glow,\n pulse,\n bordered,\n showSpinner: loading || imageLoading,\n imageError,\n clickable: interactive || !!onClick,\n imgSrc: imageError ? undefined : src,\n alt,\n ariaLabel: (rest['aria-label'] as string) || alt || EN_US_UI_LABELS.avatar.name,\n content,\n contentType,\n className,\n dataTestId: testID ?? dataTestId,\n status,\n forwardedRef: ref,\n onClick: handleClick,\n handleImageError,\n handleImageLoad,\n rest,\n };\n}\n\nexport const Avatar = React.forwardRef<HTMLDivElement, AvatarProps>((props, ref) => (\n <AvatarView {...useAvatarModel(props, ref)} />\n));\n\nAvatar.displayName = 'Avatar';\n\nconst AvatarGroupContainer = styled('div')<{ overlap?: number }>(({ theme, overlap = GROUP_OVERLAP }) => ({\n display: 'flex',\n alignItems: 'center',\n '& > *': {\n marginLeft: rem(theme, -overlap),\n transition: 'all 0.3s ease',\n position: 'relative',\n border: `${rem(theme, BORDER_WIDTH)} solid ${theme.palette.background.paper}`,\n '&:hover': {\n zIndex: 100,\n transform: `scale(${GROUP_HOVER.scale}) translateY(${rem(theme, -GROUP_HOVER.lift)})`,\n },\n '&:first-of-type': {\n marginLeft: 0,\n },\n },\n}));\n\n// Export AvatarGroup for grouped avatars\nexport const AvatarGroup: React.FC<{\n children: React.ReactNode;\n max?: number;\n overlap?: number;\n className?: string;\n dataTestId?: string;\n}> = ({ children, max = GROUP_MAX, overlap = GROUP_OVERLAP, className, dataTestId }) => {\n const childrenArray = React.Children.toArray(children);\n const visibleChildren = max ? childrenArray.slice(0, max) : childrenArray;\n const remainingCount = childrenArray.length - visibleChildren.length;\n\n return (\n <AvatarGroupContainer overlap={overlap} className={className} data-testid={dataTestId}>\n {visibleChildren}\n {remainingCount > 0 && (\n <Avatar\n size={(visibleChildren[0] as React.ReactElement<AvatarProps>)?.props?.size || 'md'}\n color=\"neutral\"\n fallback={`+${remainingCount}`}\n bordered\n dataTestId={dataTestId ? `${dataTestId}-overflow` : undefined}\n />\n )}\n </AvatarGroupContainer>\n );\n};\n\nAvatarGroup.displayName = 'AvatarGroup';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,iBAAiB;AACxB,OAAO,YAAY;AACnB,SAAS,cAAc;AACvB,OAAO,SAAS,aAAa,WAAW,gBAAgB;AAkC5C,cA8JR,YA9JQ;AAnBZ,SAAS,eAAe,MAMmC;AACzD,QAAM,EAAE,UAAU,UAAU,MAAM,YAAY,oBAAoB,IAAI;AACtE,QAAM,OAAO,kBAAkB;AAAA,IAC7B,aAAa,QAAQ,QAAQ;AAAA,IAC7B,aAAa,QAAQ,QAAQ;AAAA,IAC7B,SAAS,QAAQ,IAAI;AAAA,IACrB;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,QAAoD;AAAA,IACxD;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ,oBAAC,eAAY;AAAA,IACrB,SAAS,oBAAC,UAAO;AAAA,EACnB;AACA,SAAO,EAAE,SAAS,MAAM,IAAI,GAAG,aAAa,cAAc,IAAI,EAAE;AAClE;AAGA,SAAS,eAAe,gBAAiC;AACvD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,YAAU,MAAM;AACd,UAAM,QAAQ,OAAO,WAAW,MAAM,WAAW,IAAI,GAAG,cAAc;AACtE,WAAO,MAAM,OAAO,aAAa,KAAK;AAAA,EACxC,GAAG,CAAC,cAAc,CAAC;AACnB,SAAO;AACT;AAcA,SAAS,cAAc,KAAyB,SAA+C;AAC7F,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,CAAC,CAAC,GAAG;AAEtD,YAAU,MAAM;AACd,kBAAc,KAAK;AACnB,oBAAgB,CAAC,CAAC,GAAG;AAAA,EACvB,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,mBAAmB;AAAA,IACvB,CAAC,UAAU;AACT,oBAAc,IAAI;AAClB,sBAAgB,KAAK;AACrB,gBAAU,KAAK;AAAA,IACjB;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,kBAAkB,YAAY,MAAM,gBAAgB,KAAK,GAAG,CAAC,CAAC;AAEpE,SAAO,EAAE,YAAY,cAAc,kBAAkB,gBAAgB;AACvE;AAGA,SAAS,eAAe,KAAkB,KAAiD;AACzF,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA,IAGA;AAAA,IACA,GAAG;AAAA,EACL,IAAI,EAAE,GAAG,iBAAiB,GAAG,IAAI;AAEjC,QAAM,UAAU,eAAe,cAAc;AAC7C,QAAM,EAAE,YAAY,cAAc,kBAAkB,gBAAgB,IAAI,cAAc,KAAK,OAAO;AAClG,QAAM,cAAc;AAAA,IAClB,CAAC,UAA4C,UAAU,KAAK;AAAA,IAC5D,CAAC,OAAO;AAAA,EACV;AACA,QAAM,EAAE,SAAS,YAAY,IAAI,eAAe;AAAA,IAC9C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,WAAW;AAAA,IACxB;AAAA,IACA,WAAW,eAAe,CAAC,CAAC;AAAA,IAC5B,QAAQ,aAAa,SAAY;AAAA,IACjC;AAAA,IACA,WAAY,KAAK,YAAY,KAAgB,OAAO,gBAAgB,OAAO;AAAA,IAC3E;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,UAAU;AAAA,IACtB;AAAA,IACA,cAAc;AAAA,IACd,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,IAAM,SAAS,MAAM,WAAwC,CAAC,OAAO,QAC1E,oBAAC,cAAY,GAAG,eAAe,OAAO,GAAG,GAAG,CAC7C;AAED,OAAO,cAAc;AAErB,IAAM,uBAAuB,OAAO,KAAK,EAAwB,CAAC,EAAE,OAAO,UAAU,cAAc,OAAO;AAAA,EACxG,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,SAAS;AAAA,IACP,YAAY,IAAI,OAAO,CAAC,OAAO;AAAA,IAC/B,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,QAAQ,GAAG,IAAI,OAAO,YAAY,CAAC,UAAU,MAAM,QAAQ,WAAW,KAAK;AAAA,IAC3E,WAAW;AAAA,MACT,QAAQ;AAAA,MACR,WAAW,SAAS,YAAY,KAAK,gBAAgB,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC;AAAA,IACpF;AAAA,IACA,mBAAmB;AAAA,MACjB,YAAY;AAAA,IACd;AAAA,EACF;AACF,EAAE;AAGK,IAAM,cAMR,CAAC,EAAE,UAAU,MAAM,WAAW,UAAU,eAAe,WAAW,WAAW,MAAM;AACtF,QAAM,gBAAgB,MAAM,SAAS,QAAQ,QAAQ;AACrD,QAAM,kBAAkB,MAAM,cAAc,MAAM,GAAG,GAAG,IAAI;AAC5D,QAAM,iBAAiB,cAAc,SAAS,gBAAgB;AAE9D,SACE,qBAAC,wBAAqB,SAAkB,WAAsB,eAAa,YACxE;AAAA;AAAA,IACA,iBAAiB,KAChB;AAAA,MAAC;AAAA;AAAA,QACC,MAAO,gBAAgB,CAAC,GAAuC,OAAO,QAAQ;AAAA,QAC9E,OAAM;AAAA,QACN,UAAU,IAAI,cAAc;AAAA,QAC5B,UAAQ;AAAA,QACR,YAAY,aAAa,GAAG,UAAU,cAAc;AAAA;AAAA,IACtD;AAAA,KAEJ;AAEJ;AAEA,YAAY,cAAc;","names":[]}
@@ -1,6 +1,9 @@
1
1
  import {
2
2
  shimmerAnimation
3
3
  } from "./chunk-IM4DMKH4.js";
4
+ import {
5
+ EN_US_UI_LABELS
6
+ } from "./chunk-O2RXSXSF.js";
4
7
  import {
5
8
  withDefaults
6
9
  } from "./chunk-HPK33ACY.js";
@@ -78,6 +81,7 @@ var SheetHandle = ({ isDraggable }) => {
78
81
  );
79
82
  };
80
83
  var HEADER_DEFAULTS = {
84
+ closeLabel: EN_US_UI_LABELS.common.close,
81
85
  isDraggable: false,
82
86
  dataTestId: "sheet-header"
83
87
  };
@@ -86,6 +90,7 @@ var SheetHeader = (props) => {
86
90
  title,
87
91
  description,
88
92
  showCloseButton,
93
+ closeLabel,
89
94
  onClose,
90
95
  showHandle,
91
96
  isDraggable,
@@ -121,6 +126,7 @@ var SheetHeader = (props) => {
121
126
  IconButton,
122
127
  {
123
128
  onClick: onClose,
129
+ "aria-label": closeLabel,
124
130
  size: "small",
125
131
  sx: { ml: 1, mt: -0.5 },
126
132
  "data-testid": `${dataTestId}-close-button`,
@@ -214,4 +220,4 @@ export {
214
220
  SheetFooter,
215
221
  SheetOverlay
216
222
  };
217
- //# sourceMappingURL=chunk-JKNKGGOG.js.map
223
+ //# sourceMappingURL=chunk-DKRMOIX2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/Sheet/Sheet.parts.tsx"],"sourcesContent":["import CloseIcon from '@mui/icons-material/Close';\nimport Backdrop from '@mui/material/Backdrop/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport Divider from '@mui/material/Divider/index.js';\nimport Fade from '@mui/material/Fade/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { EN_US_UI_LABELS } from '../../../en-US.labels';\nimport { scrim, sheen } from '../../../tokens/ink';\nimport { rem, rems } from '../../../tokens/relative';\nimport { withDefaults } from '../../../utils/withDefaults';\n\nimport { shimmerAnimation } from './Sheet.animations';\nimport type {\n SheetContentProps,\n SheetFooterProps,\n SheetHeaderProps,\n SheetOverlayProps,\n} from './Sheet.types';\n\n/**\n * The grab handle's own styling. A draggable handle is deliberately larger and\n * tinted, so the affordance reads as draggable before the user tries it; a\n * decorative one stays a neutral bar.\n */\nconst handleSx = (theme: Theme, isDraggable: boolean) => ({\n width: rem(theme, isDraggable ? 48 : 32),\n height: rem(theme, isDraggable ? 6 : 4),\n backgroundColor: alpha(theme.palette.text.primary, 0.3),\n borderRadius: 3,\n transition: theme.transitions.create(['all'], {\n duration: theme.transitions.duration.short,\n easing: theme.transitions.easing.easeInOut,\n }),\n position: 'relative',\n overflow: 'hidden',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: '-100%',\n width: '100%',\n height: '100%',\n background: `linear-gradient(\n 90deg,\n transparent,\n ${sheen(theme, 0.3)},\n transparent\n )`,\n animation: isDraggable ? `${shimmerAnimation(theme)} 2s infinite` : 'none',\n },\n ...(isDraggable && {\n backgroundColor: alpha(theme.palette.primary.main, 0.4),\n boxShadow: `${rems(theme, 0, 2, 4)} ${alpha(theme.palette.primary.main, 0.2)}`,\n '&:hover': {\n backgroundColor: theme.palette.primary.main,\n transform: 'scaleX(1.15) scaleY(1.2)',\n boxShadow: `${rems(theme, 0, 3, 6)} ${alpha(theme.palette.primary.main, 0.3)}`,\n },\n }),\n});\n\nconst SheetHandle: React.FC<{ isDraggable: boolean }> = ({ isDraggable }) => {\n const theme = useTheme();\n\n return (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n mb: 1,\n // The handle is decoration on a draggable header: the drag listeners sit\n // on the header itself, so letting the bar swallow the press would open\n // a dead zone in the middle of the grab target.\n pointerEvents: isDraggable ? 'none' : 'auto',\n }}\n >\n <Box sx={handleSx(theme, isDraggable)} />\n </Box>\n );\n};\n\nconst HEADER_DEFAULTS: Partial<SheetHeaderProps> = {\n closeLabel: EN_US_UI_LABELS.common.close,\n isDraggable: false,\n dataTestId: 'sheet-header',\n};\n\nexport const SheetHeader: React.FC<SheetHeaderProps> = (props) => {\n const {\n title,\n description,\n showCloseButton,\n closeLabel,\n onClose,\n showHandle,\n isDraggable,\n onDragStart,\n className,\n style,\n children,\n dataTestId,\n } = withDefaults(props, HEADER_DEFAULTS);\n\n return (\n <Box\n className={className}\n data-testid={dataTestId}\n sx={{\n p: 2,\n pb: showHandle ? 1 : 2,\n cursor: isDraggable ? 'grab' : 'auto',\n '&:active': isDraggable ? { cursor: 'grabbing' } : {},\n ...style,\n }}\n onMouseDown={isDraggable ? onDragStart : undefined}\n onTouchStart={isDraggable ? onDragStart : undefined}\n >\n {showHandle && <SheetHandle isDraggable={Boolean(isDraggable)} />}\n\n <Box sx={{ display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between' }}>\n <Box sx={{ flex: 1 }}>\n {title && (\n <Typography variant=\"h6\" sx={{ fontWeight: 600 }} data-testid={`${dataTestId}-title`}>\n {title}\n </Typography>\n )}\n {description && (\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mt: 0.5 }}>\n {description}\n </Typography>\n )}\n {children}\n </Box>\n\n {showCloseButton && (\n <IconButton\n onClick={onClose}\n aria-label={closeLabel}\n size=\"small\"\n sx={{ ml: 1, mt: -0.5 }}\n data-testid={`${dataTestId}-close-button`}\n >\n <CloseIcon data-testid={`${dataTestId}-close-icon`} />\n </IconButton>\n )}\n </Box>\n </Box>\n );\n};\n\nconst CONTENT_DEFAULTS: Partial<SheetContentProps> = {\n padded: true,\n dataTestId: 'sheet-content',\n};\n\nexport const SheetContent: React.FC<SheetContentProps> = (props) => {\n const { children, className, style, padded, dataTestId } = withDefaults(props, CONTENT_DEFAULTS);\n\n return (\n <Box\n className={className}\n data-testid={dataTestId}\n // No `minHeight: 0` here, deliberately: a flex item's automatic minimum\n // size only applies while its main-axis `overflow` is `visible`, and this\n // one is `auto`, so it already shrinks. `SheetBody` above is the item that\n // needs it stated.\n sx={{ flex: 1, overflow: 'auto', p: padded ? 2 : 0, ...style }}\n >\n {children}\n </Box>\n );\n};\n\nconst FOOTER_DEFAULTS: Partial<SheetFooterProps> = {\n sticky: false,\n divider: false,\n dataTestId: 'sheet-footer',\n};\n\nexport const SheetFooter: React.FC<SheetFooterProps> = (props) => {\n const { children, className, style, sticky, divider, dataTestId } = withDefaults(\n props,\n FOOTER_DEFAULTS,\n );\n\n return (\n <>\n {divider && <Divider />}\n <Box\n className={className}\n data-testid={dataTestId}\n sx={{\n p: 2,\n position: sticky ? 'sticky' : 'relative',\n bottom: sticky ? 0 : 'auto',\n backgroundColor: 'background.paper',\n borderTop: sticky ? '1px solid' : 'none',\n borderColor: 'divider',\n ...style,\n }}\n >\n {children}\n </Box>\n </>\n );\n};\n\nconst OVERLAY_DEFAULTS: Partial<SheetOverlayProps> = {\n open: false,\n blur: false,\n};\n\nexport const SheetOverlay: React.FC<SheetOverlayProps> = (props) => {\n const { open, onClick, className, style, blur, animated } = withDefaults(props, OVERLAY_DEFAULTS);\n const theme = useTheme();\n const timeout = animated === false ? 0 : 300;\n\n return (\n <Fade in={open} timeout={timeout}>\n <Backdrop\n open={Boolean(open)}\n transitionDuration={timeout}\n onClick={onClick}\n className={className}\n sx={{\n // One below the drawer, under the panel. Inside a Sheet this veil is\n // VISUAL only: the drawer's invisible backdrop above it catches the\n // tap (`ClickCatcher` in Sheet.tsx). The onClick keeps it usable alone.\n zIndex: theme.zIndex.drawer - 1,\n backgroundColor: scrim(theme, blur ? 0.6 : 0.5),\n backdropFilter: blur ? `blur(${rem(theme, 8)}) saturate(180%)` : 'none',\n WebkitBackdropFilter: blur ? `blur(${rem(theme, 8)}) saturate(180%)` : 'none',\n ...style,\n }}\n />\n </Fade>\n );\n};\n"],"mappings":"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","names":[]}
@@ -4,16 +4,16 @@ import {
4
4
  } from "./chunk-YH7G44WL.js";
5
5
  import {
6
6
  MoreFilters
7
- } from "./chunk-66BRUS2M.js";
7
+ } from "./chunk-DD3VFDB2.js";
8
8
  import {
9
9
  PillControl
10
- } from "./chunk-73OYC22L.js";
10
+ } from "./chunk-RMZQHJEP.js";
11
11
  import {
12
12
  isQuickActive
13
13
  } from "./chunk-KYUEO2IO.js";
14
14
  import {
15
15
  RangePill
16
- } from "./chunk-UJT6AQHL.js";
16
+ } from "./chunk-4NVEUJXK.js";
17
17
  import {
18
18
  QuickChip
19
19
  } from "./chunk-MHFXJRLD.js";
@@ -244,4 +244,4 @@ function FilterSlots({
244
244
  export {
245
245
  InlineFilterControls
246
246
  };
247
- //# sourceMappingURL=chunk-CSQWPDQV.js.map
247
+ //# sourceMappingURL=chunk-DT22MDC3.js.map
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-62SXUU5U.js";
9
9
  import {
10
10
  EN_US_UI_LABELS
11
- } from "./chunk-W5PRZHLU.js";
11
+ } from "./chunk-O2RXSXSF.js";
12
12
  import {
13
13
  fieldHeight
14
14
  } from "./chunk-QQHZBJMU.js";
@@ -278,4 +278,4 @@ LazyImage.displayName = "LazyImage";
278
278
  export {
279
279
  LazyImage
280
280
  };
281
- //# sourceMappingURL=chunk-7HKXTRTK.js.map
281
+ //# sourceMappingURL=chunk-DWCH6GH5.js.map
@@ -5,6 +5,9 @@ import {
5
5
  import {
6
6
  isoToMasked
7
7
  } from "./chunk-62XVHRTX.js";
8
+ import {
9
+ EN_US_UI_LABELS
10
+ } from "./chunk-O2RXSXSF.js";
8
11
 
9
12
  // src/components/form/DateRangePicker/DateRangePicker.range.ts
10
13
  function resolveDayRange(draft, maxRangeDays) {
@@ -27,7 +30,7 @@ function defaultMessages() {
27
30
  reversed: "The end date must be on or after the start date.",
28
31
  overMax: ({ maxRangeDays }) => `Choose a range of at most ${maxRangeDays} days.`,
29
32
  summary: ({ from, to }) => `${isoToMasked(from, dayMask)} \u2013 ${isoToMasked(to, dayMask)}`,
30
- calendarLabel: "Calendar",
33
+ calendarLabel: EN_US_UI_LABELS.dateRangePicker.calendar,
31
34
  dayMask
32
35
  };
33
36
  }
@@ -62,4 +65,4 @@ export {
62
65
  resolveQuickRanges,
63
66
  activeQuickRangeId
64
67
  };
65
- //# sourceMappingURL=chunk-NTO5DALI.js.map
68
+ //# sourceMappingURL=chunk-DWLSYFQW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/form/DateRangePicker/DateRangePicker.range.ts"],"sourcesContent":["/**\n * Judging a draft, and saying so in words.\n *\n * The picker never repairs what it is given. A reversed pair is not silently\n * swapped and an over-long one is not clipped to the cap: both are reported,\n * because a control that returns a different range from the one on screen is\n * indistinguishable from one that ignored you. The caller reads\n * {@link DateRangeStatus} and keeps its own confirm button shut.\n */\nimport { isoToMasked } from '../../data-display/DataViews/data-views-day-input';\nimport { EN_US_UI_LABELS } from '../../../en-US.labels';\n\nimport { dayCount, isAfterDay } from './DateRangePicker.dates';\nimport type {\n DateRangePickerMessages,\n DateRangeDraft,\n DateRangeStatus,\n QuickRange,\n QuickRangeContext,\n ResolvedQuickRange,\n} from './DateRangePicker.types';\n\n/**\n * Whether a draft is a window this picker will hand over.\n *\n * Exported because the caller needs the same verdict the picker shows: a dialog\n * disabling its \"Apply\" button must not re-derive \"is this legal\" from the two\n * strings, or the two answers drift and the button ends up enabled over a\n * message saying the range is impossible.\n */\nexport function resolveDayRange(\n draft: DateRangeDraft,\n maxRangeDays?: number,\n): DateRangeStatus {\n const { from, to } = draft;\n if (!from || !to) return { ok: false, problem: 'incomplete', days: 0 };\n if (isAfterDay(from, to)) return { ok: false, problem: 'reversed', days: 0 };\n\n const days = dayCount(from, to);\n if (maxRangeDays !== undefined && days > maxRangeDays) {\n return { ok: false, problem: 'over-max', days };\n }\n return { ok: true, window: { from, to }, days };\n}\n\n/**\n * The English defaults.\n *\n * The summary prints the days in the SAME `dd/mm/aaaa` the two fields are\n * masked to, rather than in the host locale's order. One control cannot show\n * the same date two ways: an `en-US` host formatting the summary as `08/05`\n * over a field reading `05/08` leaves the reader to work out which of the two\n * is lying. A host that wants its own order replaces `messages.summary`, which\n * moves both halves of the decision to the same place.\n */\nexport function defaultMessages(): DateRangePickerMessages {\n // ONE mask, read by both the fields and the summary below. They are the same\n // date in the same control, so a summary formatted in a different order from\n // the boxes it summarises is a control arguing with itself — which is what\n // two independent literals eventually become.\n const dayMask = 'dd/mm/yyyy';\n return {\n from: 'Start date',\n to: 'End date',\n quickRanges: 'Quick ranges',\n incomplete: 'Choose both dates.',\n reversed: 'The end date must be on or after the start date.',\n overMax: ({ maxRangeDays }) => `Choose a range of at most ${maxRangeDays} days.`,\n summary: ({ from, to }) => `${isoToMasked(from, dayMask)} – ${isoToMasked(to, dayMask)}`,\n calendarLabel: EN_US_UI_LABELS.dateRangePicker.calendar,\n dayMask,\n };\n}\n\n/** The line under the fields: the chosen window, or why there isn't one. */\nexport function statusMessage(\n status: DateRangeStatus,\n messages: DateRangePickerMessages,\n maxRangeDays: number | undefined,\n): string {\n if (status.ok) return messages.summary(status.window);\n if (status.problem === 'incomplete') return messages.incomplete;\n if (status.problem === 'reversed') return messages.reversed;\n return messages.overMax({ maxRangeDays: maxRangeDays ?? status.days, days: status.days });\n}\n\n/** Every quick range with its window, its length, and whether it is over cap. */\nexport function resolveQuickRanges(\n quickRanges: QuickRange[],\n context: QuickRangeContext,\n maxRangeDays: number | undefined,\n): ResolvedQuickRange[] {\n return quickRanges.map((quickRange) => {\n const window = quickRange.resolve(context);\n const days = dayCount(window.from, window.to);\n return {\n ...quickRange,\n window,\n days,\n overMax: maxRangeDays !== undefined && days > maxRangeDays,\n };\n });\n}\n\n/** The quick range the draft currently IS, if it is exactly one of them. */\nexport function activeQuickRangeId(\n options: ResolvedQuickRange[],\n draft: DateRangeDraft,\n): string | undefined {\n return options.find(\n (option) => option.window.from === draft.from && option.window.to === draft.to,\n )?.id;\n}\n"],"mappings":";;;;;;;;;;;;AA8BO,SAAS,gBACd,OACA,cACiB;AACjB,QAAM,EAAE,MAAM,GAAG,IAAI;AACrB,MAAI,CAAC,QAAQ,CAAC,GAAI,QAAO,EAAE,IAAI,OAAO,SAAS,cAAc,MAAM,EAAE;AACrE,MAAI,WAAW,MAAM,EAAE,EAAG,QAAO,EAAE,IAAI,OAAO,SAAS,YAAY,MAAM,EAAE;AAE3E,QAAM,OAAO,SAAS,MAAM,EAAE;AAC9B,MAAI,iBAAiB,UAAa,OAAO,cAAc;AACrD,WAAO,EAAE,IAAI,OAAO,SAAS,YAAY,KAAK;AAAA,EAChD;AACA,SAAO,EAAE,IAAI,MAAM,QAAQ,EAAE,MAAM,GAAG,GAAG,KAAK;AAChD;AAYO,SAAS,kBAA2C;AAKzD,QAAM,UAAU;AAChB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,SAAS,CAAC,EAAE,aAAa,MAAM,6BAA6B,YAAY;AAAA,IACxE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,MAAM,OAAO,CAAC,WAAM,YAAY,IAAI,OAAO,CAAC;AAAA,IACtF,eAAe,gBAAgB,gBAAgB;AAAA,IAC/C;AAAA,EACF;AACF;AAGO,SAAS,cACd,QACA,UACA,cACQ;AACR,MAAI,OAAO,GAAI,QAAO,SAAS,QAAQ,OAAO,MAAM;AACpD,MAAI,OAAO,YAAY,aAAc,QAAO,SAAS;AACrD,MAAI,OAAO,YAAY,WAAY,QAAO,SAAS;AACnD,SAAO,SAAS,QAAQ,EAAE,cAAc,gBAAgB,OAAO,MAAM,MAAM,OAAO,KAAK,CAAC;AAC1F;AAGO,SAAS,mBACd,aACA,SACA,cACsB;AACtB,SAAO,YAAY,IAAI,CAAC,eAAe;AACrC,UAAM,SAAS,WAAW,QAAQ,OAAO;AACzC,UAAM,OAAO,SAAS,OAAO,MAAM,OAAO,EAAE;AAC5C,WAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA,SAAS,iBAAiB,UAAa,OAAO;AAAA,IAChD;AAAA,EACF,CAAC;AACH;AAGO,SAAS,mBACd,SACA,OACoB;AACpB,SAAO,QAAQ;AAAA,IACb,CAAC,WAAW,OAAO,OAAO,SAAS,MAAM,QAAQ,OAAO,OAAO,OAAO,MAAM;AAAA,EAC9E,GAAG;AACL;","names":[]}
@@ -1,3 +1,6 @@
1
+ import {
2
+ EN_US_UI_LABELS
3
+ } from "./chunk-O2RXSXSF.js";
1
4
  import {
2
5
  shadowInk
3
6
  } from "./chunk-XJAD6E3V.js";
@@ -137,7 +140,7 @@ var DrawerHeader = ({
137
140
  {
138
141
  onClick: onClose,
139
142
  edge: "end",
140
- "aria-label": closeLabel ?? "Close drawer",
143
+ "aria-label": closeLabel ?? EN_US_UI_LABELS.drawer.close,
141
144
  "data-testid": dataTestId ? `${dataTestId}-close` : "drawer-close",
142
145
  children: /* @__PURE__ */ jsx(Close, {})
143
146
  }
@@ -167,4 +170,4 @@ export {
167
170
  DrawerHeader,
168
171
  DrawerContent
169
172
  };
170
- //# sourceMappingURL=chunk-F742IMLQ.js.map
173
+ //# sourceMappingURL=chunk-EXKK73UN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/layout/Drawer/Drawer.tsx"],"sourcesContent":["import Close from '@mui/icons-material/Close';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport MuiDrawer from '@mui/material/Drawer/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type { DrawerContentProps,DrawerHeaderProps, DrawerProps } from './Drawer.types';\nimport { EN_US_UI_LABELS } from '../../../en-US.labels';\nimport { shadowInk } from '../../../tokens/ink';\nimport { rem, rems } from '../../../tokens/relative';\n\ntype DrawerAnchor = 'left' | 'right' | 'top' | 'bottom';\n\n/**\n * A `width`/`height` prop as CSS. `sx` reads a number of 1 or less as a\n * fraction of the parent, and that stays so; any other number is design px,\n * through the type scale; a string is as given.\n */\nconst drawerLength = (theme: Theme, value: number | string | undefined): string | undefined => {\n if (typeof value !== 'number') return value;\n return value <= 1 && value !== 0 ? `${value * 100}%` : rem(theme, value);\n};\n\n// `variant` doubles as a position preset, but an explicit `anchor` always wins.\nconst resolveAnchor = (\n anchor: DrawerProps['anchor'],\n variant: DrawerProps['variant'],\n): DrawerAnchor => {\n if (anchor) return anchor;\n\n // Map variant to anchor position\n switch (variant) {\n case 'right':\n return 'right';\n case 'top':\n return 'top';\n case 'bottom':\n return 'bottom';\n case 'glass':\n return 'right';\n case 'left':\n default:\n return 'left';\n }\n};\n\nconst buildDrawerStyles = (\n theme: Theme,\n anchor: DrawerAnchor,\n variant: DrawerProps['variant'],\n width: DrawerProps['width'],\n height: DrawerProps['height'],\n // Merged LAST into the surface's own rules, so a caller can shape the sliding\n // surface itself (rounded corners on a bottom sheet, a docked panel's offset)\n // without reaching for the MUI paper class from outside. Undefined by default:\n // omit it and the drawer styles exactly as it always has.\n paperSx?: DrawerProps['paperSx'],\n) => {\n const widthCss = drawerLength(theme, width);\n const heightCss = drawerLength(theme, height);\n const baseStyles = {\n width: ['left', 'right'].includes(anchor) ? widthCss : '100%',\n height: ['top', 'bottom'].includes(anchor) ? heightCss : '100%',\n flexShrink: 0,\n };\n\n if (variant === 'glass') {\n return {\n ...baseStyles,\n '& .MuiDrawer-paper': {\n width: widthCss,\n height: '100%',\n backgroundColor: alpha(theme.palette.background.paper, 0.1),\n backdropFilter: `blur(${rem(theme, 20)})`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,\n boxShadow: `${rems(theme, 0, 8, 32)} ${shadowInk(theme, 0.1)}`,\n ...paperSx,\n },\n };\n }\n\n return {\n ...baseStyles,\n '& .MuiDrawer-paper': {\n width: ['left', 'right'].includes(anchor) ? widthCss : '100%',\n height: ['top', 'bottom'].includes(anchor) ? heightCss : '100%',\n boxSizing: 'border-box',\n ...paperSx,\n },\n };\n};\n\nexport const Drawer: React.FC<DrawerProps> = ({\n children,\n open,\n onClose,\n variant = 'left',\n anchor,\n width,\n height = '100%',\n persistent = false,\n backdrop = true,\n hideBackdrop = false,\n keepMounted = false,\n paperSx,\n className,\n dataTestId,\n ...rest\n}) => {\n const theme = useTheme();\n const drawerAnchor = resolveAnchor(anchor, variant);\n\n return (\n <MuiDrawer\n anchor={drawerAnchor}\n open={open}\n onClose={onClose}\n variant={persistent ? 'persistent' : 'temporary'}\n ModalProps={{\n keepMounted,\n hideBackdrop,\n BackdropProps: {\n invisible: !backdrop,\n },\n }}\n sx={buildDrawerStyles(theme, drawerAnchor, variant, width ?? 280, height, paperSx)}\n className={className}\n data-testid={dataTestId || 'drawer'}\n {...rest}\n >\n {children}\n </MuiDrawer>\n );\n};\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n children,\n onClose,\n showCloseButton = true,\n closeLabel,\n dataTestId,\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n data-testid={dataTestId || 'drawer-header'}\n sx={{\n display: 'flex',\n alignItems: 'center',\n // 12px above and below: the close button is 40px tall, so the header lands on\n // its own 64px minimum instead of 72 — the height of the page header beside\n // a docked drawer (FUT-3476).\n padding: theme.spacing(1.5, 2),\n borderBottom: `1px solid ${theme.palette.divider}`,\n minHeight: rem(theme, 64),\n justifyContent: 'space-between',\n }}\n >\n <Box sx={{ flex: 1 }} data-testid={dataTestId ? `${dataTestId}-title` : 'drawer-title'}>\n {typeof children === 'string' ? <Typography variant=\"h6\">{children}</Typography> : children}\n </Box>\n {showCloseButton && onClose && (\n <IconButton\n onClick={onClose}\n edge=\"end\"\n aria-label={closeLabel ?? EN_US_UI_LABELS.drawer.close}\n data-testid={dataTestId ? `${dataTestId}-close` : 'drawer-close'}\n >\n <Close />\n </IconButton>\n )}\n </Box>\n );\n};\n\nexport const DrawerContent: React.FC<DrawerContentProps> = ({ children, padding = true, dataTestId }) => {\n const theme = useTheme();\n\n return (\n <Box\n data-testid={dataTestId || 'drawer-content'}\n sx={{\n flex: 1,\n overflow: 'auto',\n padding: padding ? theme.spacing(2) : 0,\n }}\n >\n {children}\n </Box>\n );\n};\n"],"mappings":"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","names":[]}