@12-apps/ui 6.21.0 → 6.22.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 (612) hide show
  1. package/NATIVE.md +6 -4
  2. package/dist/_internal/components/data-display/Alert/Alert.js +4 -4
  3. package/dist/_internal/components/data-display/Alert/Alert.styles.js +2 -2
  4. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +7 -7
  5. package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
  6. package/dist/_internal/components/data-display/Badge/Badge.js +3 -3
  7. package/dist/_internal/components/data-display/CardKit/CardKebab.js +4 -4
  8. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +5 -5
  9. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +10 -10
  10. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +5 -5
  11. package/dist/_internal/components/data-display/Carousel/Carousel.js +2 -2
  12. package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
  13. package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
  14. package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
  15. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  16. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  17. package/dist/_internal/components/data-display/DataViews/DataViewsBoard.js +3 -3
  18. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +49 -49
  19. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +68 -65
  20. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +10 -7
  21. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +12 -9
  22. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +14 -11
  23. package/dist/_internal/components/data-display/DataViews/base-card.js +9 -7
  24. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +7 -7
  25. package/dist/_internal/components/data-display/DataViews/base-list-card-gutters.js +3 -3
  26. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +6 -6
  27. package/dist/_internal/components/data-display/DataViews/base-list-card.js +15 -13
  28. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +12 -12
  29. package/dist/_internal/components/data-display/DataViews/data-views-columns-tab.js +3 -3
  30. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +5 -5
  31. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +8 -8
  32. package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +3 -3
  33. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +5 -5
  34. package/dist/_internal/components/data-display/DataViews/data-views-export.js +5 -5
  35. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +18 -18
  36. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +12 -12
  37. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +4 -4
  38. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +44 -44
  39. package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +3 -3
  40. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +22 -22
  41. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +7 -7
  42. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +10 -10
  43. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +3 -3
  44. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +5 -5
  45. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +13 -13
  46. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +22 -19
  47. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +12 -12
  48. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +5 -5
  49. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
  50. package/dist/_internal/components/data-display/DataViews/save-view-preview.js +3 -3
  51. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +8 -8
  52. package/dist/_internal/components/data-display/DescriptionItem/DescriptionItem.js +3 -3
  53. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +2 -2
  54. package/dist/_internal/components/data-display/ErrorState/ErrorState.js +2 -2
  55. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +2 -2
  56. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +4 -4
  57. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +3 -3
  58. package/dist/_internal/components/data-display/LoadingState/LoadingState.js +4 -4
  59. package/dist/_internal/components/data-display/MapPreview/MapDecorations.js +2 -2
  60. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
  61. package/dist/_internal/components/data-display/MapPreview/MapPreview.hooks.js +2 -2
  62. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +9 -9
  63. package/dist/_internal/components/data-display/MapPreview/MapTiles.js +2 -2
  64. package/dist/_internal/components/data-display/MapPreview/StaticMapView.js +4 -4
  65. package/dist/_internal/components/data-display/MapPreview/useMapPreview.js +3 -3
  66. package/dist/_internal/components/data-display/Progress/Progress.js +2 -2
  67. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +3 -3
  68. package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
  69. package/dist/_internal/components/data-display/Sheet/Sheet.js +3 -3
  70. package/dist/_internal/components/data-display/StatCard/StatCard.js +4 -4
  71. package/dist/_internal/components/data-display/Table/Table.js +3 -3
  72. package/dist/_internal/components/data-display/index.js +51 -51
  73. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +4 -4
  74. package/dist/_internal/components/feedback/Dialog/Dialog.base.js +1 -0
  75. package/dist/_internal/components/feedback/Dialog/Dialog.base.js.map +1 -0
  76. package/dist/_internal/components/feedback/Dialog/Dialog.helpers.js +12 -0
  77. package/dist/_internal/components/feedback/Dialog/Dialog.helpers.js.map +1 -0
  78. package/dist/_internal/components/feedback/Dialog/Dialog.js +6 -2
  79. package/dist/_internal/components/feedback/Dialog/Dialog.metrics.js +42 -0
  80. package/dist/_internal/components/feedback/Dialog/Dialog.metrics.js.map +1 -0
  81. package/dist/_internal/components/feedback/Dialog/Dialog.styles.js +3 -1
  82. package/dist/_internal/components/feedback/Modal/Modal.js +2 -2
  83. package/dist/_internal/components/feedback/StackedModal/StackedModal.js +2 -2
  84. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
  85. package/dist/_internal/components/feedback/index.js +18 -15
  86. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +5 -5
  87. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +3 -3
  88. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
  89. package/dist/_internal/components/form/Button/Button.js +3 -3
  90. package/dist/_internal/components/form/Calendar/Calendar.js +4 -4
  91. package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
  92. package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
  93. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +6 -6
  94. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +3 -3
  95. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +2 -2
  96. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +10 -10
  97. package/dist/_internal/components/form/CepField/CepField.js +4 -4
  98. package/dist/_internal/components/form/Checkbox/Checkbox.js +2 -2
  99. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +2 -2
  100. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +7 -7
  101. package/dist/_internal/components/form/Input/Input.js +3 -3
  102. package/dist/_internal/components/form/Label/Label.js +2 -2
  103. package/dist/_internal/components/form/Menubar/Menubar.js +5 -5
  104. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +2 -2
  105. package/dist/_internal/components/form/Select/Select.js +2 -2
  106. package/dist/_internal/components/form/Switch/Switch.js +2 -2
  107. package/dist/_internal/components/form/index.js +32 -32
  108. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +11 -11
  109. package/dist/_internal/components/form/total-form/Fields/CepField.js +5 -5
  110. package/dist/_internal/components/form/total-form/Fields/SelectField.js +3 -3
  111. package/dist/_internal/components/form/total-form/Fields/TextField.js +4 -4
  112. package/dist/_internal/components/form/total-form/Fields/index.js +24 -24
  113. package/dist/_internal/components/form/total-form/SubmitButton.js +4 -4
  114. package/dist/_internal/components/index.js +115 -111
  115. package/dist/_internal/components/layout/Box/Box.js +2 -2
  116. package/dist/_internal/components/layout/Card/Card.base.js +1 -0
  117. package/dist/_internal/components/layout/Card/Card.base.js.map +1 -0
  118. package/dist/_internal/components/layout/Card/Card.helpers.js +1 -1
  119. package/dist/_internal/components/layout/Card/Card.js +6 -3
  120. package/dist/_internal/components/layout/Card/Card.metrics.js +44 -0
  121. package/dist/_internal/components/layout/Card/Card.metrics.js.map +1 -0
  122. package/dist/_internal/components/layout/Card/Card.styles.js +3 -1
  123. package/dist/_internal/components/layout/Container/Container.js +2 -2
  124. package/dist/_internal/components/layout/Skeleton/Skeleton.js +3 -3
  125. package/dist/_internal/components/layout/Spacer/Spacer.js +2 -2
  126. package/dist/_internal/components/layout/Stack/Stack.js +3 -3
  127. package/dist/_internal/components/layout/index.js +13 -11
  128. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +12 -9
  129. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +2 -2
  130. package/dist/_internal/components/navigation/index.js +14 -11
  131. package/dist/_internal/components/typography/Heading/Heading.js +2 -2
  132. package/dist/_internal/components/typography/Paragraph/Paragraph.js +2 -2
  133. package/dist/_internal/components/typography/Text/Text.js +2 -2
  134. package/dist/_internal/components/typography/index.js +4 -4
  135. package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.js +2 -2
  136. package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +2 -2
  137. package/dist/_internal/components/utility/index.js +4 -4
  138. package/dist/_internal/icons/Icon.js +2 -2
  139. package/dist/_internal/platform/test-id.js +3 -1
  140. package/dist/_internal/social-login-button/social-login-button.js +11 -9
  141. package/dist/_internal/tokens/mui-type.js +1 -0
  142. package/dist/_internal/tokens/mui-type.js.map +1 -1
  143. package/dist/_internal/tokens/shadow.js +18 -0
  144. package/dist/_internal/tokens/shadow.js.map +1 -0
  145. package/dist/_internal/user-avatar/user-avatar.js +12 -10
  146. package/dist/charts.js +6 -6
  147. package/dist/{chunk-P7FQUGED.js → chunk-23FCBIUN.js} +8 -8
  148. package/dist/{chunk-NUE774AN.js → chunk-25R3ITGZ.js} +2 -2
  149. package/dist/{chunk-Z6UEOSL7.js → chunk-2FDBR77W.js} +3 -3
  150. package/dist/{chunk-IFNK5TPI.js → chunk-2HPP6RVC.js} +2 -2
  151. package/dist/{chunk-6RGWDKUL.js → chunk-2MMEIN4T.js} +4 -4
  152. package/dist/{chunk-YRUCIKPO.js → chunk-2UYR2OOE.js} +4 -4
  153. package/dist/{chunk-26Z7QWID.js → chunk-343TTIHD.js} +2 -2
  154. package/dist/{chunk-BRSF5NRT.js → chunk-3FLVIVOK.js} +4 -4
  155. package/dist/{chunk-BDVNAU2C.js → chunk-4523RYE7.js} +5 -5
  156. package/dist/{chunk-4ETQRBZC.js → chunk-46UPILLK.js} +4 -4
  157. package/dist/{chunk-I3MDKPGG.js → chunk-4IVOHL32.js} +2 -2
  158. package/dist/{chunk-TLX66HCW.js → chunk-4OHRZW7U.js} +5 -5
  159. package/dist/{chunk-2QFTAGDH.js → chunk-4X4KM4ZB.js} +4 -4
  160. package/dist/{chunk-6PRA45LC.js → chunk-5KEMPCW4.js} +54 -45
  161. package/dist/chunk-5KEMPCW4.js.map +1 -0
  162. package/dist/{chunk-CXVMD6FE.js → chunk-5NKUYCZD.js} +4 -4
  163. package/dist/{chunk-77F36LQQ.js → chunk-5OIH36KX.js} +3 -3
  164. package/dist/{chunk-4MLDWACO.js → chunk-5ZTUP65G.js} +10 -10
  165. package/dist/{chunk-GDEXYUPF.js → chunk-67L7HMEP.js} +2 -2
  166. package/dist/{chunk-ZFPJBKVZ.js → chunk-6JGPPTLX.js} +5 -5
  167. package/dist/{chunk-PF5HDFYY.js → chunk-6NZTYZP5.js} +4 -4
  168. package/dist/chunk-6Q6T3FW5.js +92 -0
  169. package/dist/chunk-6Q6T3FW5.js.map +1 -0
  170. package/dist/chunk-73BEVJCS.js +28 -0
  171. package/dist/chunk-73BEVJCS.js.map +1 -0
  172. package/dist/{chunk-I7HYGIEJ.js → chunk-7BYFC2MR.js} +6 -6
  173. package/dist/{chunk-D4T646G4.js → chunk-7NSX7A5H.js} +2 -2
  174. package/dist/{chunk-OH3YGJT5.js → chunk-7TZ6OC5T.js} +2 -2
  175. package/dist/{chunk-QS7ZGRNS.js → chunk-7VN7LFBA.js} +6 -6
  176. package/dist/{chunk-GBNOYRLP.js → chunk-AEGXHZQT.js} +8 -8
  177. package/dist/{chunk-G2IPK2XE.js → chunk-AGSBIUPV.js} +11 -11
  178. package/dist/{chunk-D2IASECY.js → chunk-AIRWM7KK.js} +39 -28
  179. package/dist/chunk-AIRWM7KK.js.map +1 -0
  180. package/dist/{chunk-65DLYC4S.js → chunk-AVGTTWTE.js} +4 -4
  181. package/dist/{chunk-PXH24VIP.js → chunk-B6IURHSZ.js} +4 -4
  182. package/dist/chunk-BEBLRL5D.js +177 -0
  183. package/dist/chunk-BEBLRL5D.js.map +1 -0
  184. package/dist/{chunk-B3BK2SNS.js → chunk-C3CMEDSO.js} +2 -2
  185. package/dist/{chunk-JIINGMEB.js → chunk-CHPZTF34.js} +7 -7
  186. package/dist/{chunk-PWXL3QQ6.js → chunk-CJBBGMIA.js} +2 -2
  187. package/dist/{chunk-BPYPUEM5.js → chunk-CZJLWCEG.js} +2 -2
  188. package/dist/{chunk-BEGWE5O4.js → chunk-DTC224UJ.js} +4 -4
  189. package/dist/{chunk-UB76PBDF.js → chunk-DVFIE54C.js} +2 -2
  190. package/dist/{chunk-KT6HWAEN.js → chunk-DVUPIVI2.js} +4 -4
  191. package/dist/{chunk-GO4MVQGC.js → chunk-DW5FRWRQ.js} +2 -2
  192. package/dist/{chunk-6Z4H2Y77.js → chunk-E27Y7FF2.js} +4 -4
  193. package/dist/{chunk-PANMJFDS.js → chunk-E55CJV65.js} +2 -2
  194. package/dist/{chunk-TPIBJP4S.js → chunk-EOHKZGOZ.js} +2 -2
  195. package/dist/{chunk-SHDIZSN5.js → chunk-EXJBPKGW.js} +5 -5
  196. package/dist/{chunk-DH75UNF3.js → chunk-FGK2C7JR.js} +2 -2
  197. package/dist/{chunk-RI5JZLZL.js → chunk-FKUYRQSP.js} +1 -1
  198. package/dist/chunk-FKUYRQSP.js.map +1 -0
  199. package/dist/{chunk-OOGEYCJH.js → chunk-FL54G7PV.js} +2 -2
  200. package/dist/{chunk-AD776JPA.js → chunk-FR67FG2U.js} +2 -2
  201. package/dist/{chunk-SHQWIDD5.js → chunk-GJQYM3PM.js} +4 -4
  202. package/dist/{chunk-WROCSDVL.js → chunk-GSFNH4C5.js} +5 -5
  203. package/dist/chunk-GYXUCS37.js +36 -0
  204. package/dist/chunk-GYXUCS37.js.map +1 -0
  205. package/dist/{chunk-Z5ABJLTM.js → chunk-HFXTAEYY.js} +2 -2
  206. package/dist/{chunk-BLBOYCOV.js → chunk-HKV4MQ2W.js} +5 -5
  207. package/dist/{chunk-FOMK3WPG.js → chunk-HLYPI5CO.js} +4 -4
  208. package/dist/{chunk-GBRKP5GZ.js → chunk-I5SBTNV2.js} +2 -2
  209. package/dist/{chunk-V5P5Q6HM.js → chunk-J4W4TQPC.js} +6 -6
  210. package/dist/{chunk-RRO2EOJB.js → chunk-JB67KPGM.js} +4 -4
  211. package/dist/{chunk-5ZOJLYD2.js → chunk-JE6RZ5L6.js} +4 -4
  212. package/dist/{chunk-4HYXEMBP.js → chunk-JIKWZDNK.js} +2 -2
  213. package/dist/{chunk-2QLVUVVR.js → chunk-JSH3HFDQ.js} +2 -2
  214. package/dist/{chunk-TZ4SFX3M.js → chunk-JWW2Z3RH.js} +4 -4
  215. package/dist/{chunk-QFHH2NU5.js → chunk-JXNT5TUP.js} +3 -3
  216. package/dist/{chunk-OCXCH2ZW.js → chunk-KTK4A3IF.js} +12 -12
  217. package/dist/{chunk-ZXLIWOXC.js → chunk-LS4FMSHY.js} +5 -5
  218. package/dist/{chunk-SFAP5EH5.js → chunk-LUMF63BM.js} +4 -4
  219. package/dist/{chunk-CZPU5TW3.js → chunk-LYSSO6WC.js} +4 -4
  220. package/dist/{chunk-736HP6BL.js → chunk-M4LQRQFL.js} +2 -2
  221. package/dist/{chunk-426FTCMF.js → chunk-MESRKY67.js} +2 -2
  222. package/dist/{chunk-B5PYBEXO.js → chunk-MP4VSWHK.js} +2 -2
  223. package/dist/{chunk-VWGR5XUP.js → chunk-NWNSUHEB.js} +2 -2
  224. package/dist/{chunk-4K7FDVAB.js → chunk-O3336DJ6.js} +2 -2
  225. package/dist/{chunk-YCCKY5VW.js → chunk-OFOYMZRY.js} +4 -4
  226. package/dist/{chunk-QZDBWXZG.js → chunk-OP65D4UR.js} +2 -2
  227. package/dist/{chunk-BQQONDW5.js → chunk-OVLNF4AZ.js} +6 -6
  228. package/dist/{chunk-ZTZ6S5Q6.js → chunk-OXQP3N6X.js} +4 -4
  229. package/dist/{chunk-3UOHKHOT.js → chunk-PFV6RL4Q.js} +3 -3
  230. package/dist/{chunk-DF2FFYZ7.js → chunk-PMS3H3OO.js} +4 -4
  231. package/dist/{chunk-AGYGNNOM.js → chunk-PQECNGDE.js} +2 -2
  232. package/dist/{chunk-IIROZKW5.js → chunk-PRUSQQDT.js} +2 -2
  233. package/dist/{chunk-IPE5FFFD.js → chunk-PUBPZOQJ.js} +2 -2
  234. package/dist/{chunk-7KTU6YMQ.js → chunk-Q75SJ35X.js} +5 -5
  235. package/dist/{chunk-FINCVAAR.js → chunk-QFJRB27Q.js} +4 -4
  236. package/dist/{chunk-FB36IHCE.js → chunk-QFVFHIHE.js} +8 -8
  237. package/dist/{chunk-IH4RSRQA.js → chunk-QKIJ6YXZ.js} +4 -4
  238. package/dist/{chunk-UOPQOBQZ.js → chunk-QWDEOITU.js} +3 -3
  239. package/dist/{chunk-WBKWIFXA.js → chunk-QYNCPS5W.js} +6 -6
  240. package/dist/{chunk-XEE7PLDR.js → chunk-QZBUGUOY.js} +6 -6
  241. package/dist/{chunk-STH66VLA.js → chunk-R7R3LOKW.js} +2 -2
  242. package/dist/{chunk-OLZTGVBT.js → chunk-REMK55JI.js} +4 -4
  243. package/dist/{chunk-VWBWKLXX.js → chunk-SX3V2DLV.js} +4 -4
  244. package/dist/{chunk-THZ2NAA4.js → chunk-TLMLEC4F.js} +4 -4
  245. package/dist/{chunk-WTIOCG4M.js → chunk-TOYEP23N.js} +2 -2
  246. package/dist/{chunk-ZGHIHEND.js → chunk-TW3BXVEU.js} +2 -2
  247. package/dist/{chunk-6F5IKY32.js → chunk-TYJR4GOF.js} +6 -2
  248. package/dist/{chunk-6F5IKY32.js.map → chunk-TYJR4GOF.js.map} +1 -1
  249. package/dist/{chunk-5RQ7N63M.js → chunk-TZDDL3DR.js} +2 -2
  250. package/dist/{chunk-BEH4DN63.js → chunk-U2YJCNRU.js} +4 -4
  251. package/dist/{chunk-RPQ3W2C6.js → chunk-U2ZDN2AL.js} +2 -2
  252. package/dist/{chunk-WPZT2JD4.js → chunk-U7Q2Y6WG.js} +2 -2
  253. package/dist/{chunk-XLJJ2ZAP.js → chunk-UU3QAKG6.js} +10 -10
  254. package/dist/{chunk-TP4N3X2Q.js → chunk-UVGRRI7N.js} +8 -8
  255. package/dist/{chunk-GCXYCDOA.js → chunk-VLHGBFR6.js} +2 -2
  256. package/dist/chunk-VM3HRSAU.js +79 -0
  257. package/dist/chunk-VM3HRSAU.js.map +1 -0
  258. package/dist/{chunk-QRX5BYUQ.js → chunk-VNDOQEJ7.js} +4 -4
  259. package/dist/{chunk-P6IPJYCS.js → chunk-VNNG46TS.js} +6 -6
  260. package/dist/{chunk-7ZH7ZB33.js → chunk-VQAM2XZV.js} +4 -4
  261. package/dist/{chunk-2SWQ6HIK.js → chunk-W3FAKT3D.js} +4 -4
  262. package/dist/{chunk-JDMYD6QC.js → chunk-W4SDVTZC.js} +2 -2
  263. package/dist/{chunk-7MAOQIWA.js → chunk-W4YWU7LQ.js} +2 -2
  264. package/dist/{chunk-Y46RBFBV.js → chunk-W7Y6RA6W.js} +6 -6
  265. package/dist/{chunk-XFU2S6XT.js → chunk-WGRS4PGY.js} +10 -10
  266. package/dist/{chunk-JXAYT6LX.js → chunk-WLQTHPMX.js} +2 -2
  267. package/dist/{chunk-J2KSG754.js → chunk-WRDPWEIC.js} +5 -5
  268. package/dist/{chunk-RPWEXIAW.js → chunk-X5MPHXG5.js} +6 -6
  269. package/dist/{chunk-UEIVXFUC.js → chunk-XELVDPKL.js} +5 -5
  270. package/dist/{chunk-EPNUVSNK.js → chunk-XFUNJYFT.js} +7 -7
  271. package/dist/{chunk-RRZBATXK.js → chunk-XKV5ZIBG.js} +3 -3
  272. package/dist/{chunk-ZKFYBC6G.js → chunk-XSF6AXEU.js} +2 -2
  273. package/dist/{chunk-VPHOSIPB.js → chunk-XT7HMNBW.js} +9 -9
  274. package/dist/{chunk-R6RVBYTU.js → chunk-XUJG2HFW.js} +3 -3
  275. package/dist/{chunk-S5LE2ARG.js → chunk-YANLN6HP.js} +66 -56
  276. package/dist/chunk-YANLN6HP.js.map +1 -0
  277. package/dist/{chunk-FRQ4HNGF.js → chunk-YJ4HM25H.js} +2 -2
  278. package/dist/{chunk-TVO5STZB.js → chunk-YQ6TNHAC.js} +3 -3
  279. package/dist/{chunk-BNNSO4MC.js → chunk-YTOYMJPM.js} +5 -5
  280. package/dist/{chunk-MCRIT46W.js → chunk-ZIYMBR7K.js} +5 -5
  281. package/dist/{chunk-SAHQLXNN.js → chunk-ZKR5B6YJ.js} +5 -5
  282. package/dist/data-display/Alert.js +4 -4
  283. package/dist/data-display/AsyncStateContainer.js +7 -7
  284. package/dist/data-display/Avatar.js +2 -2
  285. package/dist/data-display/Badge.js +3 -3
  286. package/dist/data-display/CardKit.js +21 -21
  287. package/dist/data-display/Carousel.js +2 -2
  288. package/dist/data-display/Chart.js +6 -6
  289. package/dist/data-display/DataGrid.js +2 -2
  290. package/dist/data-display/DataViews.js +84 -80
  291. package/dist/data-display/DescriptionItem.js +3 -3
  292. package/dist/data-display/EmptyState.js +2 -2
  293. package/dist/data-display/ErrorState.js +2 -2
  294. package/dist/data-display/HoverCard.js +2 -2
  295. package/dist/data-display/LazyImage.js +4 -4
  296. package/dist/data-display/Lightbox.js +3 -3
  297. package/dist/data-display/LoadingState.js +4 -4
  298. package/dist/data-display/MapPreview.js +9 -9
  299. package/dist/data-display/Progress.js +2 -2
  300. package/dist/data-display/SectionOnboarding.js +3 -3
  301. package/dist/data-display/Sheet.js +3 -3
  302. package/dist/data-display/StatCard.js +4 -4
  303. package/dist/data-display/Table.js +3 -3
  304. package/dist/feedback/ConfirmAction.js +7 -7
  305. package/dist/feedback/Dialog.js +6 -2
  306. package/dist/feedback/Modal.js +2 -2
  307. package/dist/feedback/StackedModal.js +2 -2
  308. package/dist/feedback/TutorialOverlay.js +2 -2
  309. package/dist/form/AddressAutocomplete.js +5 -5
  310. package/dist/form/Autocomplete.js +2 -2
  311. package/dist/form/Button.js +3 -3
  312. package/dist/form/Calendar.js +4 -4
  313. package/dist/form/CategorySelect.js +10 -10
  314. package/dist/form/CepField.js +4 -4
  315. package/dist/form/Checkbox.js +2 -2
  316. package/dist/form/CodeEditor.js +2 -2
  317. package/dist/form/DateRangePicker.js +7 -7
  318. package/dist/form/Input.js +3 -3
  319. package/dist/form/Label.js +2 -2
  320. package/dist/form/Menubar.js +5 -5
  321. package/dist/form/Select.js +2 -2
  322. package/dist/form/Switch.js +2 -2
  323. package/dist/form/total-form.js +30 -30
  324. package/dist/icons.js +2 -2
  325. package/dist/layout/Box.js +2 -2
  326. package/dist/layout/Card.js +6 -3
  327. package/dist/layout/Container.js +2 -2
  328. package/dist/layout/ContentToolbar.js +3 -3
  329. package/dist/layout/Skeleton.js +3 -3
  330. package/dist/layout/Spacer.js +2 -2
  331. package/dist/layout/Stack.js +3 -3
  332. package/dist/native/chunks/{chunk-HSIND52T.js → chunk-2UFNPDYT.js} +2 -1
  333. package/dist/native/chunks/chunk-2UFNPDYT.js.map +1 -0
  334. package/dist/native/chunks/{chunk-OGWPPQL4.js → chunk-75JQYVDZ.js} +3 -3
  335. package/dist/native/chunks/{chunk-WKMDCNIN.js → chunk-7LTVGW23.js} +2 -2
  336. package/dist/native/chunks/{chunk-QZAUOHDQ.js → chunk-AR5O4BEY.js} +6 -2
  337. package/dist/native/chunks/{chunk-QZAUOHDQ.js.map → chunk-AR5O4BEY.js.map} +1 -1
  338. package/dist/native/chunks/{chunk-RJVM5YDE.js → chunk-ATS7STZJ.js} +4 -4
  339. package/dist/native/chunks/{chunk-YTHR4Y5P.js → chunk-GWGIWQO7.js} +2 -2
  340. package/dist/native/chunks/{chunk-P3PL4WBO.js → chunk-LEMMXZFN.js} +24 -24
  341. package/dist/native/chunks/{chunk-P3PL4WBO.js.map → chunk-LEMMXZFN.js.map} +1 -1
  342. package/dist/native/chunks/chunk-NRN37A5K.js +67 -0
  343. package/dist/native/chunks/chunk-NRN37A5K.js.map +1 -0
  344. package/dist/native/chunks/{chunk-D4EYAXNG.js → chunk-QYUD3S6F.js} +5 -5
  345. package/dist/native/data-display/Alert.js +8 -8
  346. package/dist/native/data-display/Avatar.js +7 -7
  347. package/dist/native/data-display/Badge.js +8 -8
  348. package/dist/native/data-display/Chip.js +4 -4
  349. package/dist/native/data-display/EmptyState.js +11 -11
  350. package/dist/native/data-display/ErrorState.js +11 -11
  351. package/dist/native/data-display/LoadingState.js +7 -7
  352. package/dist/native/data-display/Progress.js +3 -3
  353. package/dist/native/feedback/Dialog.js +496 -0
  354. package/dist/native/feedback/Dialog.js.map +1 -0
  355. package/dist/native/form/Button.js +4 -4
  356. package/dist/native/form/Checkbox.js +5 -5
  357. package/dist/native/form/Input.js +5 -5
  358. package/dist/native/form/Select.js +6 -6
  359. package/dist/native/form/Switch.js +3 -3
  360. package/dist/native/icons.js +4 -4
  361. package/dist/native/layout/Box.js +4 -4
  362. package/dist/native/layout/Card.js +494 -0
  363. package/dist/native/layout/Card.js.map +1 -0
  364. package/dist/native/layout/Container.js +3 -3
  365. package/dist/native/layout/Skeleton.js +6 -6
  366. package/dist/native/layout/Spacer.js +3 -3
  367. package/dist/native/layout/Stack.js +4 -4
  368. package/dist/native/provider.js +2 -2
  369. package/dist/native/tokens.js +1 -1
  370. package/dist/native/typography/Heading.js +3 -3
  371. package/dist/native/typography/Paragraph.js +3 -3
  372. package/dist/native/typography/Text.js +3 -3
  373. package/dist/navigation/AppHeader.js +12 -9
  374. package/dist/navigation/CommandPalette.js +2 -2
  375. package/dist/social-login-button.js +11 -9
  376. package/dist/types/components/feedback/Dialog/Dialog.base.d.ts +64 -0
  377. package/dist/types/components/feedback/Dialog/Dialog.base.d.ts.map +1 -0
  378. package/dist/types/components/feedback/Dialog/Dialog.d.ts.map +1 -1
  379. package/dist/types/components/feedback/Dialog/Dialog.helpers.d.ts +35 -0
  380. package/dist/types/components/feedback/Dialog/Dialog.helpers.d.ts.map +1 -0
  381. package/dist/types/components/feedback/Dialog/Dialog.metrics.d.ts +133 -0
  382. package/dist/types/components/feedback/Dialog/Dialog.metrics.d.ts.map +1 -0
  383. package/dist/types/components/feedback/Dialog/Dialog.styles.d.ts +4 -4
  384. package/dist/types/components/feedback/Dialog/Dialog.styles.d.ts.map +1 -1
  385. package/dist/types/components/feedback/Dialog/Dialog.types.d.ts +8 -41
  386. package/dist/types/components/feedback/Dialog/Dialog.types.d.ts.map +1 -1
  387. package/dist/types/components/feedback/Dialog/index.d.ts +1 -1
  388. package/dist/types/components/feedback/Dialog/index.d.ts.map +1 -1
  389. package/dist/types/components/layout/Card/Card.base.d.ts +77 -0
  390. package/dist/types/components/layout/Card/Card.base.d.ts.map +1 -0
  391. package/dist/types/components/layout/Card/Card.d.ts.map +1 -1
  392. package/dist/types/components/layout/Card/Card.helpers.d.ts +8 -3
  393. package/dist/types/components/layout/Card/Card.helpers.d.ts.map +1 -1
  394. package/dist/types/components/layout/Card/Card.metrics.d.ts +182 -0
  395. package/dist/types/components/layout/Card/Card.metrics.d.ts.map +1 -0
  396. package/dist/types/components/layout/Card/Card.styles.d.ts +2 -2
  397. package/dist/types/components/layout/Card/Card.styles.d.ts.map +1 -1
  398. package/dist/types/components/layout/Card/Card.types.d.ts +10 -44
  399. package/dist/types/components/layout/Card/Card.types.d.ts.map +1 -1
  400. package/dist/types/components/layout/Card/index.d.ts +1 -1
  401. package/dist/types/components/layout/Card/index.d.ts.map +1 -1
  402. package/dist/types/platform/test-id.d.ts +14 -0
  403. package/dist/types/platform/test-id.d.ts.map +1 -1
  404. package/dist/types/tokens/mui-type.d.ts +1 -1
  405. package/dist/types/tokens/mui-type.d.ts.map +1 -1
  406. package/dist/types/tokens/shadow.d.ts +40 -0
  407. package/dist/types/tokens/shadow.d.ts.map +1 -0
  408. package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts +64 -0
  409. package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts.map +1 -0
  410. package/dist/types-native/components/feedback/Dialog/Dialog.helpers.d.ts +35 -0
  411. package/dist/types-native/components/feedback/Dialog/Dialog.helpers.d.ts.map +1 -0
  412. package/dist/types-native/components/feedback/Dialog/Dialog.look.native.d.ts +44 -0
  413. package/dist/types-native/components/feedback/Dialog/Dialog.look.native.d.ts.map +1 -0
  414. package/dist/types-native/components/feedback/Dialog/Dialog.metrics.d.ts +133 -0
  415. package/dist/types-native/components/feedback/Dialog/Dialog.metrics.d.ts.map +1 -0
  416. package/dist/types-native/components/feedback/Dialog/Dialog.native.d.ts +8 -0
  417. package/dist/types-native/components/feedback/Dialog/Dialog.native.d.ts.map +1 -0
  418. package/dist/types-native/components/feedback/Dialog/Dialog.types.native.d.ts +25 -0
  419. package/dist/types-native/components/feedback/Dialog/Dialog.types.native.d.ts.map +1 -0
  420. package/dist/types-native/components/feedback/Dialog/DialogParts.native.d.ts +39 -0
  421. package/dist/types-native/components/feedback/Dialog/DialogParts.native.d.ts.map +1 -0
  422. package/dist/types-native/components/feedback/Dialog/index.native.d.ts +4 -0
  423. package/dist/types-native/components/feedback/Dialog/index.native.d.ts.map +1 -0
  424. package/dist/types-native/components/layout/Card/Card.base.d.ts +77 -0
  425. package/dist/types-native/components/layout/Card/Card.base.d.ts.map +1 -0
  426. package/dist/types-native/components/layout/Card/Card.helpers.d.ts +11 -0
  427. package/dist/types-native/components/layout/Card/Card.helpers.d.ts.map +1 -0
  428. package/dist/types-native/components/layout/Card/Card.look.native.d.ts +57 -0
  429. package/dist/types-native/components/layout/Card/Card.look.native.d.ts.map +1 -0
  430. package/dist/types-native/components/layout/Card/Card.metrics.d.ts +182 -0
  431. package/dist/types-native/components/layout/Card/Card.metrics.d.ts.map +1 -0
  432. package/dist/types-native/components/layout/Card/Card.native.d.ts +11 -0
  433. package/dist/types-native/components/layout/Card/Card.native.d.ts.map +1 -0
  434. package/dist/types-native/components/layout/Card/Card.types.native.d.ts +28 -0
  435. package/dist/types-native/components/layout/Card/Card.types.native.d.ts.map +1 -0
  436. package/dist/types-native/components/layout/Card/CardParts.native.d.ts +55 -0
  437. package/dist/types-native/components/layout/Card/CardParts.native.d.ts.map +1 -0
  438. package/dist/types-native/components/layout/Card/index.native.d.ts +4 -0
  439. package/dist/types-native/components/layout/Card/index.native.d.ts.map +1 -0
  440. package/dist/types-native/platform/pulse-ring.native.d.ts +35 -0
  441. package/dist/types-native/platform/pulse-ring.native.d.ts.map +1 -0
  442. package/dist/types-native/platform/test-id.d.ts +14 -0
  443. package/dist/types-native/platform/test-id.d.ts.map +1 -1
  444. package/dist/types-native/tokens/mui-type.d.ts +1 -1
  445. package/dist/types-native/tokens/mui-type.d.ts.map +1 -1
  446. package/dist/types-native/tokens/shadow.d.ts +40 -0
  447. package/dist/types-native/tokens/shadow.d.ts.map +1 -0
  448. package/dist/typography/Heading.js +2 -2
  449. package/dist/typography/Paragraph.js +2 -2
  450. package/dist/typography/Text.js +2 -2
  451. package/dist/user-avatar.js +12 -10
  452. package/dist/utility/InfiniteScroll.js +2 -2
  453. package/dist/utility/InstallPrompt.js +2 -2
  454. package/package.json +9 -1
  455. package/src/components/data-display/CardKit/NATIVE-NOTES.md +48 -0
  456. package/src/components/feedback/Dialog/Dialog.base.ts +69 -0
  457. package/src/components/feedback/Dialog/Dialog.helpers.ts +75 -0
  458. package/src/components/feedback/Dialog/Dialog.look.native.ts +159 -0
  459. package/src/components/feedback/Dialog/Dialog.metrics.ts +140 -0
  460. package/src/components/feedback/Dialog/Dialog.native.tsx +149 -0
  461. package/src/components/feedback/Dialog/Dialog.styles.ts +63 -41
  462. package/src/components/feedback/Dialog/Dialog.tsx +58 -74
  463. package/src/components/feedback/Dialog/Dialog.types.native.ts +46 -0
  464. package/src/components/feedback/Dialog/Dialog.types.ts +24 -41
  465. package/src/components/feedback/Dialog/DialogParts.native.tsx +257 -0
  466. package/src/components/feedback/Dialog/NATIVE-NOTES.md +16 -0
  467. package/src/components/feedback/Dialog/index.native.ts +16 -0
  468. package/src/components/feedback/Dialog/index.ts +8 -2
  469. package/src/components/layout/Card/Card.base.ts +92 -0
  470. package/src/components/layout/Card/Card.helpers.ts +13 -7
  471. package/src/components/layout/Card/Card.look.native.ts +204 -0
  472. package/src/components/layout/Card/Card.metrics.ts +171 -0
  473. package/src/components/layout/Card/Card.native.tsx +130 -0
  474. package/src/components/layout/Card/Card.styles.ts +88 -48
  475. package/src/components/layout/Card/Card.tsx +41 -25
  476. package/src/components/layout/Card/Card.types.native.ts +59 -0
  477. package/src/components/layout/Card/Card.types.ts +30 -45
  478. package/src/components/layout/Card/CardParts.native.tsx +262 -0
  479. package/src/components/layout/Card/NATIVE-NOTES.md +15 -0
  480. package/src/components/layout/Card/index.native.ts +18 -0
  481. package/src/components/layout/Card/index.ts +9 -0
  482. package/src/platform/pulse-ring.native.tsx +82 -0
  483. package/src/platform/test-id.ts +17 -0
  484. package/src/tokens/mui-type.ts +2 -1
  485. package/src/tokens/shadow.ts +59 -0
  486. package/dist/chunk-6PRA45LC.js.map +0 -1
  487. package/dist/chunk-D2IASECY.js.map +0 -1
  488. package/dist/chunk-RI5JZLZL.js.map +0 -1
  489. package/dist/chunk-S5LE2ARG.js.map +0 -1
  490. package/dist/chunk-VMF3UXM4.js +0 -137
  491. package/dist/chunk-VMF3UXM4.js.map +0 -1
  492. package/dist/native/chunks/chunk-HSIND52T.js.map +0 -1
  493. /package/dist/{chunk-P7FQUGED.js.map → chunk-23FCBIUN.js.map} +0 -0
  494. /package/dist/{chunk-NUE774AN.js.map → chunk-25R3ITGZ.js.map} +0 -0
  495. /package/dist/{chunk-Z6UEOSL7.js.map → chunk-2FDBR77W.js.map} +0 -0
  496. /package/dist/{chunk-IFNK5TPI.js.map → chunk-2HPP6RVC.js.map} +0 -0
  497. /package/dist/{chunk-6RGWDKUL.js.map → chunk-2MMEIN4T.js.map} +0 -0
  498. /package/dist/{chunk-YRUCIKPO.js.map → chunk-2UYR2OOE.js.map} +0 -0
  499. /package/dist/{chunk-26Z7QWID.js.map → chunk-343TTIHD.js.map} +0 -0
  500. /package/dist/{chunk-BRSF5NRT.js.map → chunk-3FLVIVOK.js.map} +0 -0
  501. /package/dist/{chunk-BDVNAU2C.js.map → chunk-4523RYE7.js.map} +0 -0
  502. /package/dist/{chunk-4ETQRBZC.js.map → chunk-46UPILLK.js.map} +0 -0
  503. /package/dist/{chunk-I3MDKPGG.js.map → chunk-4IVOHL32.js.map} +0 -0
  504. /package/dist/{chunk-TLX66HCW.js.map → chunk-4OHRZW7U.js.map} +0 -0
  505. /package/dist/{chunk-2QFTAGDH.js.map → chunk-4X4KM4ZB.js.map} +0 -0
  506. /package/dist/{chunk-CXVMD6FE.js.map → chunk-5NKUYCZD.js.map} +0 -0
  507. /package/dist/{chunk-77F36LQQ.js.map → chunk-5OIH36KX.js.map} +0 -0
  508. /package/dist/{chunk-4MLDWACO.js.map → chunk-5ZTUP65G.js.map} +0 -0
  509. /package/dist/{chunk-GDEXYUPF.js.map → chunk-67L7HMEP.js.map} +0 -0
  510. /package/dist/{chunk-ZFPJBKVZ.js.map → chunk-6JGPPTLX.js.map} +0 -0
  511. /package/dist/{chunk-PF5HDFYY.js.map → chunk-6NZTYZP5.js.map} +0 -0
  512. /package/dist/{chunk-I7HYGIEJ.js.map → chunk-7BYFC2MR.js.map} +0 -0
  513. /package/dist/{chunk-D4T646G4.js.map → chunk-7NSX7A5H.js.map} +0 -0
  514. /package/dist/{chunk-OH3YGJT5.js.map → chunk-7TZ6OC5T.js.map} +0 -0
  515. /package/dist/{chunk-QS7ZGRNS.js.map → chunk-7VN7LFBA.js.map} +0 -0
  516. /package/dist/{chunk-GBNOYRLP.js.map → chunk-AEGXHZQT.js.map} +0 -0
  517. /package/dist/{chunk-G2IPK2XE.js.map → chunk-AGSBIUPV.js.map} +0 -0
  518. /package/dist/{chunk-65DLYC4S.js.map → chunk-AVGTTWTE.js.map} +0 -0
  519. /package/dist/{chunk-PXH24VIP.js.map → chunk-B6IURHSZ.js.map} +0 -0
  520. /package/dist/{chunk-B3BK2SNS.js.map → chunk-C3CMEDSO.js.map} +0 -0
  521. /package/dist/{chunk-JIINGMEB.js.map → chunk-CHPZTF34.js.map} +0 -0
  522. /package/dist/{chunk-PWXL3QQ6.js.map → chunk-CJBBGMIA.js.map} +0 -0
  523. /package/dist/{chunk-BPYPUEM5.js.map → chunk-CZJLWCEG.js.map} +0 -0
  524. /package/dist/{chunk-BEGWE5O4.js.map → chunk-DTC224UJ.js.map} +0 -0
  525. /package/dist/{chunk-UB76PBDF.js.map → chunk-DVFIE54C.js.map} +0 -0
  526. /package/dist/{chunk-KT6HWAEN.js.map → chunk-DVUPIVI2.js.map} +0 -0
  527. /package/dist/{chunk-GO4MVQGC.js.map → chunk-DW5FRWRQ.js.map} +0 -0
  528. /package/dist/{chunk-6Z4H2Y77.js.map → chunk-E27Y7FF2.js.map} +0 -0
  529. /package/dist/{chunk-PANMJFDS.js.map → chunk-E55CJV65.js.map} +0 -0
  530. /package/dist/{chunk-TPIBJP4S.js.map → chunk-EOHKZGOZ.js.map} +0 -0
  531. /package/dist/{chunk-SHDIZSN5.js.map → chunk-EXJBPKGW.js.map} +0 -0
  532. /package/dist/{chunk-DH75UNF3.js.map → chunk-FGK2C7JR.js.map} +0 -0
  533. /package/dist/{chunk-OOGEYCJH.js.map → chunk-FL54G7PV.js.map} +0 -0
  534. /package/dist/{chunk-AD776JPA.js.map → chunk-FR67FG2U.js.map} +0 -0
  535. /package/dist/{chunk-SHQWIDD5.js.map → chunk-GJQYM3PM.js.map} +0 -0
  536. /package/dist/{chunk-WROCSDVL.js.map → chunk-GSFNH4C5.js.map} +0 -0
  537. /package/dist/{chunk-Z5ABJLTM.js.map → chunk-HFXTAEYY.js.map} +0 -0
  538. /package/dist/{chunk-BLBOYCOV.js.map → chunk-HKV4MQ2W.js.map} +0 -0
  539. /package/dist/{chunk-FOMK3WPG.js.map → chunk-HLYPI5CO.js.map} +0 -0
  540. /package/dist/{chunk-GBRKP5GZ.js.map → chunk-I5SBTNV2.js.map} +0 -0
  541. /package/dist/{chunk-V5P5Q6HM.js.map → chunk-J4W4TQPC.js.map} +0 -0
  542. /package/dist/{chunk-RRO2EOJB.js.map → chunk-JB67KPGM.js.map} +0 -0
  543. /package/dist/{chunk-5ZOJLYD2.js.map → chunk-JE6RZ5L6.js.map} +0 -0
  544. /package/dist/{chunk-4HYXEMBP.js.map → chunk-JIKWZDNK.js.map} +0 -0
  545. /package/dist/{chunk-2QLVUVVR.js.map → chunk-JSH3HFDQ.js.map} +0 -0
  546. /package/dist/{chunk-TZ4SFX3M.js.map → chunk-JWW2Z3RH.js.map} +0 -0
  547. /package/dist/{chunk-QFHH2NU5.js.map → chunk-JXNT5TUP.js.map} +0 -0
  548. /package/dist/{chunk-OCXCH2ZW.js.map → chunk-KTK4A3IF.js.map} +0 -0
  549. /package/dist/{chunk-ZXLIWOXC.js.map → chunk-LS4FMSHY.js.map} +0 -0
  550. /package/dist/{chunk-SFAP5EH5.js.map → chunk-LUMF63BM.js.map} +0 -0
  551. /package/dist/{chunk-CZPU5TW3.js.map → chunk-LYSSO6WC.js.map} +0 -0
  552. /package/dist/{chunk-736HP6BL.js.map → chunk-M4LQRQFL.js.map} +0 -0
  553. /package/dist/{chunk-426FTCMF.js.map → chunk-MESRKY67.js.map} +0 -0
  554. /package/dist/{chunk-B5PYBEXO.js.map → chunk-MP4VSWHK.js.map} +0 -0
  555. /package/dist/{chunk-VWGR5XUP.js.map → chunk-NWNSUHEB.js.map} +0 -0
  556. /package/dist/{chunk-4K7FDVAB.js.map → chunk-O3336DJ6.js.map} +0 -0
  557. /package/dist/{chunk-YCCKY5VW.js.map → chunk-OFOYMZRY.js.map} +0 -0
  558. /package/dist/{chunk-QZDBWXZG.js.map → chunk-OP65D4UR.js.map} +0 -0
  559. /package/dist/{chunk-BQQONDW5.js.map → chunk-OVLNF4AZ.js.map} +0 -0
  560. /package/dist/{chunk-ZTZ6S5Q6.js.map → chunk-OXQP3N6X.js.map} +0 -0
  561. /package/dist/{chunk-3UOHKHOT.js.map → chunk-PFV6RL4Q.js.map} +0 -0
  562. /package/dist/{chunk-DF2FFYZ7.js.map → chunk-PMS3H3OO.js.map} +0 -0
  563. /package/dist/{chunk-AGYGNNOM.js.map → chunk-PQECNGDE.js.map} +0 -0
  564. /package/dist/{chunk-IIROZKW5.js.map → chunk-PRUSQQDT.js.map} +0 -0
  565. /package/dist/{chunk-IPE5FFFD.js.map → chunk-PUBPZOQJ.js.map} +0 -0
  566. /package/dist/{chunk-7KTU6YMQ.js.map → chunk-Q75SJ35X.js.map} +0 -0
  567. /package/dist/{chunk-FINCVAAR.js.map → chunk-QFJRB27Q.js.map} +0 -0
  568. /package/dist/{chunk-FB36IHCE.js.map → chunk-QFVFHIHE.js.map} +0 -0
  569. /package/dist/{chunk-IH4RSRQA.js.map → chunk-QKIJ6YXZ.js.map} +0 -0
  570. /package/dist/{chunk-UOPQOBQZ.js.map → chunk-QWDEOITU.js.map} +0 -0
  571. /package/dist/{chunk-WBKWIFXA.js.map → chunk-QYNCPS5W.js.map} +0 -0
  572. /package/dist/{chunk-XEE7PLDR.js.map → chunk-QZBUGUOY.js.map} +0 -0
  573. /package/dist/{chunk-STH66VLA.js.map → chunk-R7R3LOKW.js.map} +0 -0
  574. /package/dist/{chunk-OLZTGVBT.js.map → chunk-REMK55JI.js.map} +0 -0
  575. /package/dist/{chunk-VWBWKLXX.js.map → chunk-SX3V2DLV.js.map} +0 -0
  576. /package/dist/{chunk-THZ2NAA4.js.map → chunk-TLMLEC4F.js.map} +0 -0
  577. /package/dist/{chunk-WTIOCG4M.js.map → chunk-TOYEP23N.js.map} +0 -0
  578. /package/dist/{chunk-ZGHIHEND.js.map → chunk-TW3BXVEU.js.map} +0 -0
  579. /package/dist/{chunk-5RQ7N63M.js.map → chunk-TZDDL3DR.js.map} +0 -0
  580. /package/dist/{chunk-BEH4DN63.js.map → chunk-U2YJCNRU.js.map} +0 -0
  581. /package/dist/{chunk-RPQ3W2C6.js.map → chunk-U2ZDN2AL.js.map} +0 -0
  582. /package/dist/{chunk-WPZT2JD4.js.map → chunk-U7Q2Y6WG.js.map} +0 -0
  583. /package/dist/{chunk-XLJJ2ZAP.js.map → chunk-UU3QAKG6.js.map} +0 -0
  584. /package/dist/{chunk-TP4N3X2Q.js.map → chunk-UVGRRI7N.js.map} +0 -0
  585. /package/dist/{chunk-GCXYCDOA.js.map → chunk-VLHGBFR6.js.map} +0 -0
  586. /package/dist/{chunk-QRX5BYUQ.js.map → chunk-VNDOQEJ7.js.map} +0 -0
  587. /package/dist/{chunk-P6IPJYCS.js.map → chunk-VNNG46TS.js.map} +0 -0
  588. /package/dist/{chunk-7ZH7ZB33.js.map → chunk-VQAM2XZV.js.map} +0 -0
  589. /package/dist/{chunk-2SWQ6HIK.js.map → chunk-W3FAKT3D.js.map} +0 -0
  590. /package/dist/{chunk-JDMYD6QC.js.map → chunk-W4SDVTZC.js.map} +0 -0
  591. /package/dist/{chunk-7MAOQIWA.js.map → chunk-W4YWU7LQ.js.map} +0 -0
  592. /package/dist/{chunk-Y46RBFBV.js.map → chunk-W7Y6RA6W.js.map} +0 -0
  593. /package/dist/{chunk-XFU2S6XT.js.map → chunk-WGRS4PGY.js.map} +0 -0
  594. /package/dist/{chunk-JXAYT6LX.js.map → chunk-WLQTHPMX.js.map} +0 -0
  595. /package/dist/{chunk-J2KSG754.js.map → chunk-WRDPWEIC.js.map} +0 -0
  596. /package/dist/{chunk-RPWEXIAW.js.map → chunk-X5MPHXG5.js.map} +0 -0
  597. /package/dist/{chunk-UEIVXFUC.js.map → chunk-XELVDPKL.js.map} +0 -0
  598. /package/dist/{chunk-EPNUVSNK.js.map → chunk-XFUNJYFT.js.map} +0 -0
  599. /package/dist/{chunk-RRZBATXK.js.map → chunk-XKV5ZIBG.js.map} +0 -0
  600. /package/dist/{chunk-ZKFYBC6G.js.map → chunk-XSF6AXEU.js.map} +0 -0
  601. /package/dist/{chunk-VPHOSIPB.js.map → chunk-XT7HMNBW.js.map} +0 -0
  602. /package/dist/{chunk-R6RVBYTU.js.map → chunk-XUJG2HFW.js.map} +0 -0
  603. /package/dist/{chunk-FRQ4HNGF.js.map → chunk-YJ4HM25H.js.map} +0 -0
  604. /package/dist/{chunk-TVO5STZB.js.map → chunk-YQ6TNHAC.js.map} +0 -0
  605. /package/dist/{chunk-BNNSO4MC.js.map → chunk-YTOYMJPM.js.map} +0 -0
  606. /package/dist/{chunk-MCRIT46W.js.map → chunk-ZIYMBR7K.js.map} +0 -0
  607. /package/dist/{chunk-SAHQLXNN.js.map → chunk-ZKR5B6YJ.js.map} +0 -0
  608. /package/dist/native/chunks/{chunk-OGWPPQL4.js.map → chunk-75JQYVDZ.js.map} +0 -0
  609. /package/dist/native/chunks/{chunk-WKMDCNIN.js.map → chunk-7LTVGW23.js.map} +0 -0
  610. /package/dist/native/chunks/{chunk-RJVM5YDE.js.map → chunk-ATS7STZJ.js.map} +0 -0
  611. /package/dist/native/chunks/{chunk-YTHR4Y5P.js.map → chunk-GWGIWQO7.js.map} +0 -0
  612. /package/dist/native/chunks/{chunk-D4EYAXNG.js.map → chunk-QYUD3S6F.js.map} +0 -0
@@ -11,7 +11,17 @@ import Typography from '@mui/material/Typography/index.js';
11
11
  import { useTheme } from '@mui/material/styles/index.js';
12
12
  import React from 'react';
13
13
 
14
+ import { hasSpacingSlot, withDialogDefaults } from './Dialog.helpers';
15
+ import {
16
+ DIALOG_ACTIONS,
17
+ DIALOG_BODY_PADDING_UNITS,
18
+ DIALOG_CONTENT_PADDING_UNITS,
19
+ DIALOG_HEADER_CHILDREN_PADDING_UNITS,
20
+ DIALOG_TITLE,
21
+ DIALOG_TITLED_BODY_PADDING_TOP_UNITS,
22
+ } from './Dialog.metrics';
14
23
  import { backdropSxOf, variantStylesOf } from './Dialog.styles';
24
+ import { childTestId, resolveTestId, slotTestId, withoutTestIdProps } from '../../../platform/test-id';
15
25
  import type {
16
26
  DialogActionsProps,
17
27
  DialogContentProps,
@@ -19,24 +29,6 @@ import type {
19
29
  DialogProps,
20
30
  } from './Dialog.types';
21
31
 
22
- /**
23
- * Does this hand us a spacing slot? Fragments are transparent: `<>` is a way of
24
- * passing several children, not a child that owns them, and a consumer who
25
- * groups a `DialogContent` and a `DialogActions` in one has still passed both.
26
- *
27
- * Only the slots themselves count, and only at the top. A `DialogContent`
28
- * genuinely nested inside a `<div>` is that div's content, and the dialog
29
- * padding the div is right.
30
- */
31
- function hasSpacingSlot(children: React.ReactNode): boolean {
32
- return React.Children.toArray(children).some((child) => {
33
- if (!React.isValidElement(child)) return false;
34
- if (child.type === DialogContent || child.type === DialogActions) return true;
35
- if (child.type !== React.Fragment) return false;
36
- return hasSpacingSlot((child.props as { children?: React.ReactNode }).children);
37
- });
38
- }
39
-
40
32
  /**
41
33
  * The padding a dialog gives children that are not managing their own — and the
42
34
  * rule that takes it back when it turns out they are.
@@ -60,8 +52,8 @@ function hasSpacingSlot(children: React.ReactNode): boolean {
60
52
  * had before, not a broken one.
61
53
  */
62
54
  const BODY_SX = {
63
- px: 3,
64
- pb: 2.5,
55
+ px: DIALOG_BODY_PADDING_UNITS.horizontal,
56
+ pb: DIALOG_BODY_PADDING_UNITS.bottom,
65
57
  '&:has(> .MuiDialogContent-root), &:has(> .MuiDialogActions-root)': {
66
58
  display: 'contents',
67
59
  },
@@ -74,38 +66,12 @@ const BODY_SX = {
74
66
  * spacing.
75
67
  */
76
68
  function bodyOf(children: React.ReactNode, hasTitle: boolean): React.ReactNode {
77
- if (hasSpacingSlot(children)) return children;
78
- return <Box sx={{ ...BODY_SX, pt: hasTitle ? 0.5 : 2.5 }}>{children}</Box>;
79
- }
80
-
81
- const DIALOG_DEFAULTS = {
82
- variant: 'default',
83
- size: 'md',
84
- showCloseButton: true,
85
- backdrop: true,
86
- persistent: false,
87
- glass: false,
88
- gradient: false,
89
- glow: false,
90
- pulse: false,
91
- borderRadius: 'lg',
92
- } as const satisfies Partial<DialogProps>;
93
-
94
- /** DialogProps with every defaulted field guaranteed present (wide types). */
95
- type DialogPropsWithDefaults = DialogProps &
96
- Required<Pick<DialogProps, keyof typeof DIALOG_DEFAULTS>>;
97
-
98
- /**
99
- * Apply {@link DIALOG_DEFAULTS} exactly like parameter defaults would: only a
100
- * missing/`undefined` prop falls back (a loop, so the component's cyclomatic
101
- * complexity doesn't pay one branch per defaulted prop).
102
- */
103
- function withDialogDefaults(props: DialogProps): DialogPropsWithDefaults {
104
- const merged: Record<string, unknown> = { ...props };
105
- for (const [key, value] of Object.entries(DIALOG_DEFAULTS)) {
106
- if (merged[key] === undefined) merged[key] = value;
107
- }
108
- return merged as unknown as DialogPropsWithDefaults;
69
+ // Read lazily: both slots are declared below this function.
70
+ if (hasSpacingSlot(children, [DialogContent, DialogActions])) return children;
71
+ const pt = hasTitle
72
+ ? DIALOG_BODY_PADDING_UNITS.topUnderTitle
73
+ : DIALOG_BODY_PADDING_UNITS.top;
74
+ return <Box sx={{ ...BODY_SX, pt }}>{children}</Box>;
109
75
  }
110
76
 
111
77
  export const Dialog: React.FC<DialogProps> = (rawProps) => {
@@ -125,11 +91,15 @@ export const Dialog: React.FC<DialogProps> = (rawProps) => {
125
91
  borderRadius,
126
92
  onClose,
127
93
  open,
128
- dataTestId,
129
- ...props
94
+ ...others
130
95
  } = withDialogDefaults(rawProps);
131
96
  const theme = useTheme();
132
- const testId = dataTestId || 'dialog';
97
+ // Every spelling of the test id the shared contract allows, mapped to the one
98
+ // the DOM reads, and stripped from what is spread — `testID` is React
99
+ // Native's name for it and is not a DOM attribute. The native `Dialog` does
100
+ // the same in reverse.
101
+ const testId = resolveTestId(others, 'dialog');
102
+ const props = withoutTestIdProps(others);
133
103
  const paperSx = variantStylesOf(theme, {
134
104
  variant, size, borderRadius, glass, gradient, glow, pulse,
135
105
  });
@@ -147,7 +117,7 @@ export const Dialog: React.FC<DialogProps> = (rawProps) => {
147
117
  subtitle={description}
148
118
  showCloseButton={showCloseButton}
149
119
  onClose={onClose}
150
- dataTestId={dataTestId}
120
+ dataTestId={testId}
151
121
  />
152
122
  ) : null;
153
123
  const body = bodyOf(children, Boolean(title));
@@ -191,11 +161,20 @@ export const DialogHeader: React.FC<DialogHeaderProps> = ({
191
161
  subtitle,
192
162
  showCloseButton = true,
193
163
  onClose,
194
- dataTestId,
164
+ ...others
195
165
  }) => {
166
+ const props = withoutTestIdProps(others);
167
+
196
168
  if (children) {
197
169
  return (
198
- <Box sx={{ p: 2, borderBottom: '1px solid', borderColor: 'divider' }}>
170
+ <Box
171
+ data-testid={slotTestId(others, 'header', 'dialog')}
172
+ sx={{
173
+ p: DIALOG_HEADER_CHILDREN_PADDING_UNITS,
174
+ borderBottom: '1px solid',
175
+ borderColor: 'divider',
176
+ }}
177
+ >
199
178
  {children}
200
179
  </Box>
201
180
  );
@@ -203,20 +182,27 @@ export const DialogHeader: React.FC<DialogHeaderProps> = ({
203
182
 
204
183
  return (
205
184
  <MuiDialogTitle
206
- data-testid={dataTestId ? `${dataTestId}-title` : 'dialog-title'}
185
+ data-testid={slotTestId(others, 'title', 'dialog')}
207
186
  sx={{
208
187
  display: 'flex',
209
188
  alignItems: 'center',
210
189
  justifyContent: 'space-between',
211
- pb: subtitle ? 1 : 2,
190
+ pb: subtitle
191
+ ? DIALOG_TITLE.paddingBottomUnits.withSubtitle
192
+ : DIALOG_TITLE.paddingBottomUnits.plain,
212
193
  }}
194
+ {...props}
213
195
  >
214
196
  <Box>
215
197
  <Typography variant="h6" component="div">
216
198
  {title}
217
199
  </Typography>
218
200
  {subtitle && (
219
- <Typography variant="body2" color="text.secondary" sx={{ mt: 0.5 }}>
201
+ <Typography
202
+ variant="body2"
203
+ color="text.secondary"
204
+ sx={{ mt: DIALOG_TITLE.subtitleGapUnits }}
205
+ >
220
206
  {subtitle}
221
207
  </Typography>
222
208
  )}
@@ -225,7 +211,7 @@ export const DialogHeader: React.FC<DialogHeaderProps> = ({
225
211
  <IconButton
226
212
  aria-label="close"
227
213
  onClick={onClose}
228
- data-testid={dataTestId ? `${dataTestId}-close` : 'dialog-close'}
214
+ data-testid={childTestId(others, 'close', 'dialog')}
229
215
  sx={{
230
216
  color: 'text.secondary',
231
217
  '&:hover': {
@@ -254,7 +240,7 @@ export const DialogHeader: React.FC<DialogHeaderProps> = ({
254
240
  * contributes its bottom padding, so a shrunk label's `translate(…, -9px)` is
255
241
  * all that is missing. 12px clears it and leaves the gap visually tight.
256
242
  */
257
- const TITLED_BODY_PADDING_TOP = 1.5;
243
+ const TITLED_BODY_PADDING_TOP = DIALOG_TITLED_BODY_PADDING_TOP_UNITS;
258
244
 
259
245
  /**
260
246
  * `.MuiDialogTitle-root + &` is `(0,2,0)`-specific and a plain `sx` entry is
@@ -268,14 +254,13 @@ export const DialogContent: React.FC<DialogContentProps> = ({
268
254
  children,
269
255
  dividers = false,
270
256
  dense = false,
271
- dataTestId,
272
- ...props
257
+ ...others
273
258
  }) => (
274
259
  <MuiDialogContent
275
- data-testid={dataTestId ? `${dataTestId}-content` : 'dialog-content'}
260
+ data-testid={slotTestId(others, 'content', 'dialog')}
276
261
  dividers={dividers}
277
262
  sx={{
278
- padding: dense ? 1.5 : 3,
263
+ padding: dense ? DIALOG_CONTENT_PADDING_UNITS.dense : DIALOG_CONTENT_PADDING_UNITS.normal,
279
264
  [TITLED_BODY_SELECTOR]: { paddingTop: TITLED_BODY_PADDING_TOP },
280
265
  '&.MuiDialogContent-dividers': {
281
266
  borderTop: dividers ? '1px solid' : 'none',
@@ -283,7 +268,7 @@ export const DialogContent: React.FC<DialogContentProps> = ({
283
268
  borderColor: 'divider',
284
269
  },
285
270
  }}
286
- {...props}
271
+ {...withoutTestIdProps(others)}
287
272
  >
288
273
  {children}
289
274
  </MuiDialogContent>
@@ -292,9 +277,8 @@ export const DialogContent: React.FC<DialogContentProps> = ({
292
277
  export const DialogActions: React.FC<DialogActionsProps> = ({
293
278
  children,
294
279
  alignment = 'right',
295
- spacing = 1,
296
- dataTestId,
297
- ...props
280
+ spacing = DIALOG_ACTIONS.defaultSpacingUnits,
281
+ ...others
298
282
  }) => {
299
283
  const getJustifyContent = () => {
300
284
  switch (alignment) {
@@ -308,13 +292,13 @@ export const DialogActions: React.FC<DialogActionsProps> = ({
308
292
 
309
293
  return (
310
294
  <MuiDialogActions
311
- data-testid={dataTestId ? `${dataTestId}-actions` : 'dialog-actions'}
295
+ data-testid={slotTestId(others, 'actions', 'dialog')}
312
296
  sx={{
313
297
  justifyContent: getJustifyContent(),
314
298
  gap: spacing,
315
- p: 2,
299
+ p: DIALOG_ACTIONS.paddingUnits,
316
300
  }}
317
- {...props}
301
+ {...withoutTestIdProps(others)}
318
302
  >
319
303
  {children}
320
304
  </MuiDialogActions>
@@ -0,0 +1,46 @@
1
+ import type { ModalProps, StyleProp, ViewProps, ViewStyle } from 'react-native';
2
+
3
+ import type {
4
+ DialogActionsBaseProps,
5
+ DialogBaseProps,
6
+ DialogContentBaseProps,
7
+ DialogHeaderBaseProps,
8
+ } from './Dialog.base';
9
+
10
+ export type {
11
+ DialogActionsAlignment,
12
+ DialogActionsBaseProps,
13
+ DialogBaseProps,
14
+ DialogBorderRadius,
15
+ DialogContentBaseProps,
16
+ DialogHeaderBaseProps,
17
+ DialogSize,
18
+ DialogVariant,
19
+ } from './Dialog.base';
20
+
21
+ /** Everything a native slot takes on top of its shared contract. */
22
+ type NativeSlotProps<Base> = Base & Omit<ViewProps, keyof Base | 'style'> & {
23
+ style?: StyleProp<ViewStyle>;
24
+ };
25
+
26
+ /**
27
+ * The native `Dialog`: the shared contract over React Native's own `Modal`.
28
+ *
29
+ * `Modal`'s props come through so a consumer can pick the presentation
30
+ * (`animationType`, `statusBarTranslucent`, `supportedOrientations`). `visible`
31
+ * is spoken for — `open` is the shared name — and `onRequestClose` is wired to
32
+ * `onClose` unless the dialog is `persistent`, which is what makes the Android
33
+ * back button and the browser's Escape key behave like the web's.
34
+ *
35
+ * `style` lands on the PAPER, the box the web styles through `PaperProps.sx`.
36
+ */
37
+ export type DialogProps = DialogBaseProps &
38
+ Omit<ModalProps, keyof DialogBaseProps | 'visible' | 'onRequestClose' | 'style'> & {
39
+ style?: StyleProp<ViewStyle>;
40
+ };
41
+
42
+ export type DialogHeaderProps = NativeSlotProps<DialogHeaderBaseProps>;
43
+
44
+ export type DialogContentProps = NativeSlotProps<DialogContentBaseProps>;
45
+
46
+ export type DialogActionsProps = NativeSlotProps<DialogActionsBaseProps>;
@@ -1,47 +1,30 @@
1
- import type { SizeValue } from '../../../tokens/scales';
2
1
  import type { DialogProps as MuiDialogProps } from '@mui/material/Dialog/index.js';
3
- import type { ReactNode } from 'react';
4
2
 
5
- export type DialogVariant = 'default' | 'glass' | 'fullscreen' | 'drawer';
6
- export type DialogSize = SizeValue;
3
+ import type {
4
+ DialogActionsBaseProps,
5
+ DialogBaseProps,
6
+ DialogContentBaseProps,
7
+ DialogHeaderBaseProps,
8
+ } from './Dialog.base';
7
9
 
8
- export interface DialogProps extends Omit<MuiDialogProps, 'variant' | 'title'> {
9
- children: ReactNode;
10
- variant?: DialogVariant;
11
- size?: DialogSize;
12
- title?: ReactNode;
13
- description?: string;
14
- showCloseButton?: boolean;
15
- backdrop?: boolean;
16
- persistent?: boolean;
17
- glass?: boolean;
18
- gradient?: boolean;
19
- glow?: boolean;
20
- pulse?: boolean;
21
- borderRadius?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
22
- onClose?: () => void;
23
- dataTestId?: string;
24
- }
10
+ export type {
11
+ DialogActionsAlignment,
12
+ DialogActionsBaseProps,
13
+ DialogBaseProps,
14
+ DialogBorderRadius,
15
+ DialogContentBaseProps,
16
+ DialogHeaderBaseProps,
17
+ DialogSize,
18
+ DialogVariant,
19
+ } from './Dialog.base';
25
20
 
26
- export interface DialogHeaderProps {
27
- children?: ReactNode;
28
- title?: ReactNode;
29
- subtitle?: ReactNode;
30
- showCloseButton?: boolean;
31
- onClose?: () => void;
32
- dataTestId?: string;
33
- }
21
+ /** The web `Dialog`: the shared contract, plus everything MUI's own `Dialog` takes. */
22
+ export interface DialogProps
23
+ extends DialogBaseProps,
24
+ Omit<MuiDialogProps, 'variant' | 'title' | keyof DialogBaseProps> {}
34
25
 
35
- export interface DialogContentProps {
36
- children: ReactNode;
37
- dividers?: boolean;
38
- dense?: boolean;
39
- dataTestId?: string;
40
- }
26
+ export type DialogHeaderProps = DialogHeaderBaseProps;
41
27
 
42
- export interface DialogActionsProps {
43
- children: ReactNode;
44
- alignment?: 'left' | 'center' | 'right' | 'space-between';
45
- spacing?: number;
46
- dataTestId?: string;
47
- }
28
+ export type DialogContentProps = DialogContentBaseProps;
29
+
30
+ export type DialogActionsProps = DialogActionsBaseProps;
@@ -0,0 +1,257 @@
1
+ import * as React from 'react';
2
+ import {
3
+ Pressable,
4
+ ScrollView,
5
+ StyleSheet,
6
+ Text as RNText,
7
+ View,
8
+ type TextStyle,
9
+ type ViewStyle,
10
+ } from 'react-native';
11
+
12
+ import {
13
+ DIALOG_ACTIONS,
14
+ DIALOG_CLOSE_BUTTON,
15
+ DIALOG_CONTENT_PADDING_UNITS,
16
+ DIALOG_HEADER_CHILDREN_PADDING_UNITS,
17
+ DIALOG_TITLE,
18
+ DIALOG_TITLED_BODY_PADDING_TOP_UNITS,
19
+ } from './Dialog.metrics';
20
+ import type {
21
+ DialogActionsAlignment,
22
+ DialogActionsProps,
23
+ DialogContentProps,
24
+ DialogHeaderProps,
25
+ } from './Dialog.types.native';
26
+ import { Icon } from '../../../icons/Icon.native';
27
+ import { childTestId, slotTestId, withoutTestIdProps } from '../../../platform/test-id';
28
+ import { renderTextChildren } from '../../../platform/text-children';
29
+ import { useUiTheme } from '../../../provider/use-ui-theme.native';
30
+ import { muiTypeStyle } from '../../../tokens/mui-type';
31
+ import type { UiTheme } from '../../../tokens/theme';
32
+
33
+ /**
34
+ * THE THREE SLOTS A DIALOG IS BUILT OUT OF, ON REACT NATIVE.
35
+ *
36
+ * The web overrides only padding, alignment and the dividers, so the rest of
37
+ * the numbers are MUI's own and are restated in `Dialog.metrics.ts` rather than
38
+ * re-invented.
39
+ */
40
+
41
+ /**
42
+ * Is there a title above this body?
43
+ *
44
+ * The web asks the DOM — `.MuiDialogTitle-root + &` — because only the CSS knows
45
+ * which `DialogContent` actually FOLLOWS the title. React Native has no sibling
46
+ * selector, so `Dialog` says so through context instead; the difference is that
47
+ * a second `DialogContent` further down gets the tighter top padding too.
48
+ */
49
+ export const DialogTitledContext = React.createContext(false);
50
+
51
+ /** The body text of a slot, in MUI's `body1`, so a bare string is not unstyled. */
52
+ export const dialogBodyTextStyle = (theme: UiTheme): TextStyle => ({
53
+ ...muiTypeStyle(theme, 'body1'),
54
+ color: theme.palette.text.primary,
55
+ });
56
+
57
+ /** MUI's dialog title: `h6`, in the body ink. */
58
+ export const dialogTitleStyle = (theme: UiTheme): TextStyle => ({
59
+ ...muiTypeStyle(theme, 'h6'),
60
+ color: theme.palette.text.primary,
61
+ });
62
+
63
+ /** The subtitle under it: `body2`, muted, one half-unit down. */
64
+ export const dialogSubtitleStyle = (theme: UiTheme): TextStyle => ({
65
+ ...muiTypeStyle(theme, 'body2'),
66
+ color: theme.palette.text.secondary,
67
+ marginTop: theme.spacing(DIALOG_TITLE.subtitleGapUnits),
68
+ });
69
+
70
+ function CloseButton({ onPress, testID }: { onPress: () => void; testID: string }): React.JSX.Element {
71
+ const theme = useUiTheme();
72
+ return (
73
+ <Pressable
74
+ role="button"
75
+ aria-label="close"
76
+ testID={testID}
77
+ onPress={onPress}
78
+ style={({ pressed }) => [
79
+ styles.close,
80
+ pressed ? { backgroundColor: theme.palette.action.hover } : null,
81
+ ]}
82
+ >
83
+ <Icon name="Close" size={DIALOG_CLOSE_BUTTON.iconSize} color={theme.palette.text.secondary} />
84
+ </Pressable>
85
+ );
86
+ }
87
+
88
+ export function DialogHeader({
89
+ children,
90
+ title,
91
+ subtitle,
92
+ showCloseButton = true,
93
+ onClose,
94
+ ...others
95
+ }: DialogHeaderProps): React.JSX.Element {
96
+ const theme = useUiTheme();
97
+ const { style, ...viewProps } = withoutTestIdProps(others);
98
+
99
+ if (children) {
100
+ return (
101
+ <View
102
+ testID={slotTestId(others, 'header', 'dialog')}
103
+ style={[
104
+ {
105
+ padding: theme.spacing(DIALOG_HEADER_CHILDREN_PADDING_UNITS),
106
+ borderBottomWidth: 1,
107
+ borderBottomColor: theme.palette.divider,
108
+ borderStyle: 'solid',
109
+ },
110
+ style,
111
+ ]}
112
+ {...viewProps}
113
+ >
114
+ {renderTextChildren(children, dialogBodyTextStyle(theme))}
115
+ </View>
116
+ );
117
+ }
118
+
119
+ const paddingBottom = theme.spacing(
120
+ subtitle ? DIALOG_TITLE.paddingBottomUnits.withSubtitle : DIALOG_TITLE.paddingBottomUnits.plain,
121
+ );
122
+
123
+ return (
124
+ <View
125
+ testID={slotTestId(others, 'title', 'dialog')}
126
+ style={[styles.header, { paddingBottom }, style]}
127
+ {...viewProps}
128
+ >
129
+ <View style={styles.headerText}>
130
+ {/*
131
+ MUI's `DialogTitle` renders `component: "h2"`, so the web dialog has a
132
+ heading and the native one had none. `role`/`aria-level` are what
133
+ react-native-web maps to an `<h2>`; a device reads the same pair
134
+ through `accessibilityRole="header"`, which RN derives from `role`.
135
+ */}
136
+ <RNText role="heading" aria-level={2} style={dialogTitleStyle(theme)}>
137
+ {title}
138
+ </RNText>
139
+ {subtitle ? <RNText style={dialogSubtitleStyle(theme)}>{subtitle}</RNText> : null}
140
+ </View>
141
+ {showCloseButton && onClose ? (
142
+ <CloseButton onPress={onClose} testID={childTestId(others, 'close', 'dialog')} />
143
+ ) : null}
144
+ </View>
145
+ );
146
+ }
147
+
148
+ DialogHeader.displayName = 'DialogHeader';
149
+
150
+ export function DialogContent({
151
+ children,
152
+ dividers = false,
153
+ dense = false,
154
+ ...others
155
+ }: DialogContentProps): React.JSX.Element {
156
+ const theme = useUiTheme();
157
+ const titled = React.useContext(DialogTitledContext);
158
+ const { style, ...viewProps } = withoutTestIdProps(others);
159
+ const padding = theme.spacing(
160
+ dense ? DIALOG_CONTENT_PADDING_UNITS.dense : DIALOG_CONTENT_PADDING_UNITS.normal,
161
+ );
162
+ const paddingTop = titled
163
+ ? theme.spacing(DIALOG_TITLED_BODY_PADDING_TOP_UNITS)
164
+ : padding;
165
+
166
+ return (
167
+ <ScrollView
168
+ testID={slotTestId(others, 'content', 'dialog')}
169
+ style={[
170
+ styles.content,
171
+ dividers
172
+ ? {
173
+ borderTopWidth: 1,
174
+ borderBottomWidth: 1,
175
+ borderStyle: 'solid',
176
+ borderColor: theme.palette.divider,
177
+ }
178
+ : null,
179
+ style,
180
+ ]}
181
+ contentContainerStyle={{ padding, paddingTop }}
182
+ {...viewProps}
183
+ >
184
+ {renderTextChildren(children, dialogBodyTextStyle(theme))}
185
+ </ScrollView>
186
+ );
187
+ }
188
+
189
+ DialogContent.displayName = 'DialogContent';
190
+
191
+ const JUSTIFY: Record<DialogActionsAlignment, NonNullable<ViewStyle['justifyContent']>> = {
192
+ left: 'flex-start',
193
+ center: 'center',
194
+ right: 'flex-end',
195
+ 'space-between': 'space-between',
196
+ };
197
+
198
+ export function DialogActions({
199
+ children,
200
+ alignment = 'right',
201
+ spacing = DIALOG_ACTIONS.defaultSpacingUnits,
202
+ ...others
203
+ }: DialogActionsProps): React.JSX.Element {
204
+ const theme = useUiTheme();
205
+ const { style, ...viewProps } = withoutTestIdProps(others);
206
+
207
+ return (
208
+ <View
209
+ testID={slotTestId(others, 'actions', 'dialog')}
210
+ style={[
211
+ styles.actions,
212
+ {
213
+ padding: theme.spacing(DIALOG_ACTIONS.paddingUnits),
214
+ justifyContent: JUSTIFY[alignment],
215
+ gap: theme.spacing(spacing),
216
+ },
217
+ style,
218
+ ]}
219
+ {...viewProps}
220
+ >
221
+ {renderTextChildren(children, dialogBodyTextStyle(theme))}
222
+ </View>
223
+ );
224
+ }
225
+
226
+ DialogActions.displayName = 'DialogActions';
227
+
228
+ const styles = StyleSheet.create({
229
+ header: {
230
+ flexDirection: 'row',
231
+ alignItems: 'center',
232
+ justifyContent: 'space-between',
233
+ flexGrow: 0,
234
+ flexShrink: 0,
235
+ paddingTop: DIALOG_TITLE.padding.top,
236
+ paddingHorizontal: DIALOG_TITLE.padding.horizontal,
237
+ },
238
+ headerText: {
239
+ flexShrink: 1,
240
+ },
241
+ close: {
242
+ padding: DIALOG_CLOSE_BUTTON.padding,
243
+ borderRadius: 9999,
244
+ alignItems: 'center',
245
+ justifyContent: 'center',
246
+ },
247
+ content: {
248
+ flexGrow: 1,
249
+ flexShrink: 1,
250
+ },
251
+ actions: {
252
+ flexDirection: 'row',
253
+ alignItems: 'center',
254
+ flexGrow: 0,
255
+ flexShrink: 0,
256
+ },
257
+ });
@@ -0,0 +1,16 @@
1
+ # Dialog on React Native
2
+
3
+ Known rendering gaps, one bullet each; `pnpm native:ledger` reads them.
4
+
5
+ - `glass` paints its 0.1 paper wash and primary hairline without the 20px backdrop blur, and the scrim behind it is a flat `alpha(black, 0.2)` without its 8px blur — React Native has no backdrop filter.
6
+ - `gradient` adds nothing on native: it is a `linear-gradient` background IMAGE layered over the paper colour, and React Native core has neither a gradient fill nor a second background layer.
7
+ - `role="dialog"` sits on React Native's `Modal`, which is the dialog on this side; the web puts it on MUI's paper. react-native-web gives that role to the TOP-MOST modal only, so two stacked dialogs announce one.
8
+ - The modal mounts and unmounts without a transition where the web fades the paper in through MUI's `Fade`. React Native's own `animationType` is forwarded, so a consumer who wants `"fade"` or `"slide"` passes it.
9
+ - The paper is `maxHeight: '100%'` inside an overlay inset by the web's `theme.spacing(2)` margin; the web writes `calc(100% - 64px)`, which React Native has no `calc` for, and 90vw, which the inset overlay stands in for.
10
+ - `borderRadius` has no effect on `variant="drawer"` on EITHER renderer, so native paints the drawer SQUARE — which is what the web shows. Two things have to fail for that and both do: the web builds `${radius}px 0 0 ${radius}px` out of `theme.spacing()`, which already returns a px string, so the declaration reads `16pxpx 0 0 16pxpx` and is dropped; and that `sx` lands on a plain `Box` inside the Drawer rather than on a Paper, and MUI renders the Drawer's own Paper with `square: true`, so `shape.borderRadius` paints nothing either. Rounding the drawer is a web change (`Dialog.styles.ts` plus where the `sx` lands), made once, for both.
11
+ - A `DialogContent` or `DialogActions` passed through a COMPONENT boundary still gets the padded wrapper here. The web catches that case with a `:has()` selector, which asks the DOM one step after React can; native has only the element-type check, so a body split into its own component is padded twice and stops being a sibling of the action bar.
12
+ - `DialogContent` is a `ScrollView` — React Native's `overflow-y: auto` — so its padding lives on the scrolling content container rather than on the box the test id names.
13
+ - The tighter top padding a body gets under a title (FUT-544) is decided by context rather than by the web's `.MuiDialogTitle-root + &`, so a SECOND `DialogContent` further down the dialog gets it too.
14
+ - A `glow`ing paper stops clipping its children to its corners: a view's own shadow is clipped by its own overflow on a device, so the halo the caller asked for would not paint. The web keeps its clip and shows both.
15
+ - The close button is a `Pressable` around the shared `Close` glyph at MUI's 8px `IconButton` padding; its pressed wash stands in for the web's hover.
16
+ - Title, subtitle and raw text children are set in MUI's default `h6`/`body2`/`body1` numbers; a host that re-themes MUI's typography variants moves the web only.
@@ -0,0 +1,16 @@
1
+ export { Dialog } from './Dialog.native';
2
+ export { DialogActions, DialogContent, DialogHeader } from './DialogParts.native';
3
+ export type {
4
+ DialogActionsAlignment,
5
+ DialogActionsBaseProps,
6
+ DialogActionsProps,
7
+ DialogBaseProps,
8
+ DialogBorderRadius,
9
+ DialogContentBaseProps,
10
+ DialogContentProps,
11
+ DialogHeaderBaseProps,
12
+ DialogHeaderProps,
13
+ DialogProps,
14
+ DialogSize,
15
+ DialogVariant,
16
+ } from './Dialog.types.native';
@@ -1,9 +1,15 @@
1
- export { Dialog, DialogActions,DialogContent, DialogHeader } from './Dialog';
1
+ export { Dialog, DialogActions, DialogContent, DialogHeader } from './Dialog';
2
2
  export type {
3
+ DialogActionsAlignment,
4
+ DialogActionsBaseProps,
3
5
  DialogActionsProps,
6
+ DialogBaseProps,
7
+ DialogBorderRadius,
8
+ DialogContentBaseProps,
4
9
  DialogContentProps,
10
+ DialogHeaderBaseProps,
5
11
  DialogHeaderProps,
6
12
  DialogProps,
7
13
  DialogSize,
8
14
  DialogVariant,
9
- } from './Dialog.types';
15
+ } from './Dialog.types';