@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
@@ -0,0 +1,92 @@
1
+ import type * as React from 'react';
2
+
3
+ /**
4
+ * THE CONTRACT BOTH `Card` RENDERERS HONOUR — and nothing else.
5
+ *
6
+ * This file imports no MUI and no react-native, on purpose: it ships in BOTH
7
+ * declaration outputs (`dist/types` and `dist/types-native`), and a native
8
+ * consumer has no `@mui/material` to resolve a type import against.
9
+ *
10
+ * Handlers are NOT here. Their names are the same on both sides (`onClick`,
11
+ * `onFocus`, `onBlur`) but their event types are the renderer's own, so each
12
+ * side declares them beside its own extras — except {@link
13
+ * CardBaseProps.onExpandToggle}, whose argument is a boolean rather than an
14
+ * event and is therefore the same type on both.
15
+ */
16
+ export type CardVariant = 'elevated' | 'outlined' | 'glass' | 'gradient' | 'neumorphic' | 'section';
17
+ export type CardEntranceAnimation =
18
+ | 'fade'
19
+ | 'slide-up'
20
+ | 'slide-down'
21
+ | 'slide-left'
22
+ | 'slide-right'
23
+ | 'zoom'
24
+ | 'grow'
25
+ | 'none';
26
+
27
+ /** The named radii a card can be cut to. `full` is a percentage, not a length. */
28
+ export type CardBorderRadius = 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
29
+
30
+ export interface CardBaseProps {
31
+ children: React.ReactNode;
32
+ variant?: CardVariant;
33
+ /** Paints the hover/press surface and marks the card as a pointer target. */
34
+ interactive?: boolean;
35
+ glow?: boolean;
36
+ pulse?: boolean;
37
+ borderRadius?: CardBorderRadius;
38
+ /** Dims the card, blocks pointer events and centres a spinner over it. */
39
+ loading?: boolean;
40
+ /**
41
+ * Accepted and ignored on BOTH renderers — reserved, and extracted so they
42
+ * never reach the underlying element as unknown attributes.
43
+ */
44
+ expandable?: boolean;
45
+ expanded?: boolean;
46
+ onExpandToggle?: (expanded: boolean) => void;
47
+ entranceAnimation?: CardEntranceAnimation;
48
+ animationDelay?: number;
49
+ skeleton?: boolean;
50
+ hoverScale?: number;
51
+ dataTestId?: string;
52
+ testID?: string;
53
+ }
54
+
55
+ export interface CardHeaderBaseProps {
56
+ title?: React.ReactNode;
57
+ subtitle?: React.ReactNode;
58
+ action?: React.ReactNode;
59
+ avatar?: React.ReactNode;
60
+ /** Custom header content; when given it replaces the title/subtitle layout. */
61
+ children?: React.ReactNode;
62
+ dataTestId?: string;
63
+ testID?: string;
64
+ }
65
+
66
+ export interface CardContentBaseProps {
67
+ children: React.ReactNode;
68
+ dense?: boolean;
69
+ dataTestId?: string;
70
+ testID?: string;
71
+ }
72
+
73
+ export type CardActionsAlignment = 'left' | 'center' | 'right' | 'space-between';
74
+
75
+ export interface CardActionsBaseProps {
76
+ children: React.ReactNode;
77
+ disableSpacing?: boolean;
78
+ alignment?: CardActionsAlignment;
79
+ dataTestId?: string;
80
+ testID?: string;
81
+ }
82
+
83
+ export interface CardMediaBaseProps {
84
+ /** The image URL. */
85
+ image?: string;
86
+ /** The media's accessible name. */
87
+ title?: string;
88
+ height?: number | string;
89
+ children?: React.ReactNode;
90
+ dataTestId?: string;
91
+ testID?: string;
92
+ }
@@ -1,4 +1,4 @@
1
- import type { CardProps } from './Card.types';
1
+ import type { CardBaseProps } from './Card.base';
2
2
 
3
3
  type CardDefaultedKeys =
4
4
  | 'variant'
@@ -8,9 +8,15 @@ type CardDefaultedKeys =
8
8
  | 'borderRadius'
9
9
  | 'loading';
10
10
 
11
- type ResolvedCardProps = CardProps & Required<Pick<CardProps, CardDefaultedKeys>>;
11
+ /**
12
+ * Generic over the renderer's own props: the web and the native `Card` pass
13
+ * different handler types (and different style props) through, and both come
14
+ * back out untouched.
15
+ */
16
+ type ResolvedCardProps<P extends CardBaseProps> = P &
17
+ Required<Pick<CardBaseProps, CardDefaultedKeys>>;
12
18
 
13
- const CARD_DEFAULTS: Pick<CardProps, CardDefaultedKeys> = {
19
+ const CARD_DEFAULTS: Required<Pick<CardBaseProps, CardDefaultedKeys>> = {
14
20
  variant: 'elevated',
15
21
  interactive: false,
16
22
  glow: false,
@@ -21,10 +27,10 @@ const CARD_DEFAULTS: Pick<CardProps, CardDefaultedKeys> = {
21
27
 
22
28
  // Strips explicitly-undefined props before the merge, so `glow={undefined}` still
23
29
  // falls back to the default exactly as a destructuring default would.
24
- const definedProps = (props: CardProps): Partial<CardProps> =>
30
+ const definedProps = <P extends CardBaseProps>(props: P): Partial<P> =>
25
31
  Object.fromEntries(
26
32
  Object.entries(props).filter(([, value]) => value !== undefined),
27
- ) as Partial<CardProps>;
33
+ ) as Partial<P>;
28
34
 
29
- export const resolveCardProps = (props: CardProps): ResolvedCardProps =>
30
- ({ ...CARD_DEFAULTS, ...definedProps(props) }) as ResolvedCardProps;
35
+ export const resolveCardProps = <P extends CardBaseProps>(props: P): ResolvedCardProps<P> =>
36
+ ({ ...CARD_DEFAULTS, ...definedProps(props) }) as ResolvedCardProps<P>;
@@ -0,0 +1,204 @@
1
+ import type { ViewStyle } from 'react-native';
2
+
3
+ import type { CardBorderRadius, CardVariant } from './Card.base';
4
+ import {
5
+ CARD_BORDER_WIDTH,
6
+ CARD_GLASS,
7
+ CARD_GLOW,
8
+ CARD_GRADIENT,
9
+ CARD_LOADING,
10
+ CARD_NEUMORPHIC,
11
+ CARD_PAPER_SHADOW,
12
+ CARD_RADIUS_FULL,
13
+ CARD_RADIUS_UNITS,
14
+ CARD_SECTION_BACKGROUND,
15
+ neumorphicShadows,
16
+ } from './Card.metrics';
17
+ import { alpha } from '../../../tokens/color';
18
+ import { BLACK, WHITE, drop, halo, type UiShadow } from '../../../tokens/shadow';
19
+ import type { UiTheme } from '../../../tokens/theme';
20
+
21
+ /**
22
+ * WHAT THE NATIVE `Card` PAINTS — the arithmetic, with no JSX in sight.
23
+ *
24
+ * The web builds one `sx` object by spreading base, `interactive`, `glow`,
25
+ * `pulse` and finally the variant's own surface over each other; whichever
26
+ * wrote a property last wins. The composition here spreads the SAME things in
27
+ * the SAME order, which is why `glow` shows through an `elevated` card (whose
28
+ * surface declares no shadow) and is buried by a `glass` one (whose surface
29
+ * does) on both renderers.
30
+ */
31
+
32
+ /** The named radius as a length. `full` stays a percentage of the box. */
33
+ export function cardRadius(theme: UiTheme, radius: CardBorderRadius): number | string {
34
+ if (radius === 'full') return CARD_RADIUS_FULL;
35
+ return theme.spacing(CARD_RADIUS_UNITS[radius] ?? CARD_RADIUS_UNITS.md);
36
+ }
37
+
38
+ interface Surface {
39
+ surface: ViewStyle;
40
+ /** What the web changes on `:hover`; native applies it while pressed. */
41
+ hover: ViewStyle;
42
+ }
43
+
44
+ function glassSurface(theme: UiTheme, lifted: boolean): Surface {
45
+ return {
46
+ surface: {
47
+ backgroundColor: alpha(theme.palette.background.paper, CARD_GLASS.backgroundAlpha.rest),
48
+ borderWidth: CARD_BORDER_WIDTH,
49
+ borderStyle: 'solid',
50
+ borderColor: alpha(theme.palette.primary.main, CARD_GLASS.borderAlpha.rest),
51
+ boxShadow: drop(
52
+ CARD_GLASS.shadow.offsetY,
53
+ CARD_GLASS.shadow.blurRadius,
54
+ alpha(BLACK, CARD_GLASS.shadow.alpha),
55
+ ),
56
+ },
57
+ hover: {
58
+ backgroundColor: alpha(
59
+ theme.palette.background.paper,
60
+ lifted ? CARD_GLASS.backgroundAlpha.lifted : CARD_GLASS.backgroundAlpha.rest,
61
+ ),
62
+ borderColor: alpha(theme.palette.primary.main, CARD_GLASS.borderAlpha.lifted),
63
+ },
64
+ };
65
+ }
66
+
67
+ function neumorphicSurface(theme: UiTheme, lifted: boolean): Surface {
68
+ const { dark, light } = CARD_NEUMORPHIC.alpha;
69
+ const pair = (raised: boolean): UiShadow[] =>
70
+ theme.mode === 'dark'
71
+ ? neumorphicShadows(raised, alpha(BLACK, dark.near), alpha(WHITE, dark.far))
72
+ : neumorphicShadows(
73
+ raised,
74
+ alpha(theme.palette.grey[400], raised ? light.near.lifted : light.near.rest),
75
+ alpha(WHITE, raised ? light.far.lifted : light.far.rest),
76
+ );
77
+
78
+ return {
79
+ surface: {
80
+ backgroundColor: theme.mode === 'dark' ? theme.palette.grey[800] : theme.palette.grey[100],
81
+ boxShadow: pair(false),
82
+ borderWidth: 0,
83
+ },
84
+ hover: { boxShadow: pair(lifted) },
85
+ };
86
+ }
87
+
88
+ function sectionSurface(theme: UiTheme, lifted: boolean): Surface {
89
+ const wash = CARD_SECTION_BACKGROUND[theme.mode === 'dark' ? 'dark' : 'light'];
90
+ return {
91
+ surface: { backgroundColor: wash.rest, borderWidth: 0, boxShadow: undefined },
92
+ hover: { backgroundColor: lifted ? wash.lifted : wash.rest },
93
+ };
94
+ }
95
+
96
+ /**
97
+ * Each variant's resting surface and whatever it changes on hover — the same
98
+ * split `Card.styles.ts` makes, in React Native's property names.
99
+ *
100
+ * `gradient` is the one honest gap: React Native core has no gradient fill, so
101
+ * it paints the gradient's FIRST stop. The parity ledger records it.
102
+ */
103
+ export function cardSurface(theme: UiTheme, variant: CardVariant, lifted: boolean): Surface {
104
+ switch (variant) {
105
+ case 'outlined':
106
+ return {
107
+ surface: {
108
+ borderWidth: CARD_BORDER_WIDTH,
109
+ borderStyle: 'solid',
110
+ borderColor: theme.palette.divider,
111
+ boxShadow: undefined,
112
+ },
113
+ hover: { borderColor: lifted ? theme.palette.primary.main : theme.palette.divider },
114
+ };
115
+ case 'glass':
116
+ return glassSurface(theme, lifted);
117
+ case 'gradient':
118
+ return {
119
+ surface: {
120
+ backgroundColor: theme.palette.primary.main,
121
+ boxShadow: drop(
122
+ CARD_GRADIENT.shadow.offsetY,
123
+ CARD_GRADIENT.shadow.blurRadius,
124
+ alpha(theme.palette.primary.main, CARD_GRADIENT.shadow.alpha),
125
+ ),
126
+ },
127
+ hover: {
128
+ backgroundColor: lifted ? theme.palette.primary.dark : theme.palette.primary.main,
129
+ },
130
+ };
131
+ case 'neumorphic':
132
+ return neumorphicSurface(theme, lifted);
133
+ case 'section':
134
+ return sectionSurface(theme, lifted);
135
+ default:
136
+ // `elevated` declares only MUI's inert `elevation`, so the paper shadow
137
+ // the base laid down (or a `glow` over it) is what shows.
138
+ return { surface: {}, hover: {} };
139
+ }
140
+ }
141
+
142
+ /** The ink a card's own text inherits: `gradient` flips it, everything else is body ink. */
143
+ export const cardInk = (theme: UiTheme, variant: CardVariant): string =>
144
+ variant === 'gradient' ? theme.palette.primary.contrastText : theme.palette.text.primary;
145
+
146
+ export interface CardLookArgs {
147
+ variant: CardVariant;
148
+ interactive: boolean;
149
+ glow: boolean;
150
+ pulse: boolean;
151
+ loading: boolean;
152
+ borderRadius: CardBorderRadius;
153
+ }
154
+
155
+ export interface CardLook {
156
+ container: ViewStyle;
157
+ /** Applied while pressed, standing in for the web's `:hover`. */
158
+ pressed: ViewStyle;
159
+ radius: number | string;
160
+ ink: string;
161
+ }
162
+
163
+ /**
164
+ * Everything the card paints, decided once per render.
165
+ *
166
+ * `overflow` is the one place native needs a rule the web does not. MUI's
167
+ * `Card` clips its children, and the pulse ring has to reach 15px past the
168
+ * edge — but a view's own shadow is clipped by its own overflow on a device,
169
+ * so a `glow` the caller asked for would simply not paint. Both decorations
170
+ * therefore turn the clip off, exactly as `Button.native.tsx` does.
171
+ */
172
+ export function cardLook(theme: UiTheme, a: CardLookArgs): CardLook {
173
+ const radius = cardRadius(theme, a.borderRadius);
174
+ const chosen = cardSurface(theme, a.variant, a.interactive);
175
+
176
+ const base: ViewStyle = {
177
+ position: 'relative',
178
+ borderRadius: radius,
179
+ backgroundColor: theme.palette.background.paper,
180
+ overflow: a.pulse || a.glow ? 'visible' : 'hidden',
181
+ opacity: a.loading ? CARD_LOADING.opacity : 1,
182
+ pointerEvents: a.loading ? 'none' : 'auto',
183
+ };
184
+
185
+ return {
186
+ radius,
187
+ ink: cardInk(theme, a.variant),
188
+ container: {
189
+ ...base,
190
+ boxShadow: CARD_PAPER_SHADOW,
191
+ ...(a.interactive ? { cursor: 'pointer' } : null),
192
+ ...(a.glow
193
+ ? { boxShadow: halo(CARD_GLOW.rest.blurRadius, alpha(theme.palette.primary.main, CARD_GLOW.rest.alpha)) }
194
+ : null),
195
+ ...chosen.surface,
196
+ },
197
+ pressed: {
198
+ ...(a.glow
199
+ ? { boxShadow: halo(CARD_GLOW.lifted.blurRadius, alpha(theme.palette.primary.main, CARD_GLOW.lifted.alpha)) }
200
+ : null),
201
+ ...chosen.hover,
202
+ },
203
+ };
204
+ }
@@ -0,0 +1,171 @@
1
+ import type { CardBorderRadius } from './Card.base';
2
+ import type { UiShadow } from '../../../tokens/shadow';
3
+
4
+ /**
5
+ * THE NUMBERS BOTH `Card` RENDERERS DRAW WITH.
6
+ *
7
+ * `Card.styles.ts` (web, emotion over MUI) and `Card.native.tsx` /
8
+ * `Card.look.native.ts` (React Native) read this one table. The web turns the
9
+ * radii into `theme.spacing()` and the shadows into CSS strings (`shadowCss`
10
+ * in `src/tokens/shadow.ts` writes exactly the text it always has); native
11
+ * hands the same shadow objects to `boxShadow` and the same numbers to a
12
+ * `StyleSheet`.
13
+ *
14
+ * Nothing here imports a renderer, a theme or a colour: a shadow's COLOUR is
15
+ * the caller's, because the two sides reach for the same arithmetic through
16
+ * different doors (`alpha` from `@mui/material/styles` on the web, from
17
+ * `src/tokens/color` natively — a port of it, asserted equal).
18
+ */
19
+
20
+ /* ── The envelope ─────────────────────────────────────────────────────────── */
21
+
22
+ /**
23
+ * `theme.spacing(n)` per named radius. `none` is written as a bare `0` by the
24
+ * web rather than `spacing(0)`, so it is spelled that way on both sides.
25
+ */
26
+ export const CARD_RADIUS_UNITS: Record<Exclude<CardBorderRadius, 'full'>, number> = {
27
+ none: 0,
28
+ sm: 0.5,
29
+ md: 1,
30
+ lg: 2,
31
+ xl: 3,
32
+ };
33
+
34
+ /** `full` is a percentage of the box, not a length. */
35
+ export const CARD_RADIUS_FULL = '50%';
36
+
37
+ /** The hairline `outlined` and `glass` draw. */
38
+ export const CARD_BORDER_WIDTH = 1;
39
+
40
+ /* ── Shadows ──────────────────────────────────────────────────────────────── */
41
+
42
+ /** A card's shadows are `UiShadow`s; `src/tokens/shadow.ts` says why they have a shape. */
43
+ export type CardShadow = UiShadow;
44
+
45
+ /**
46
+ * MUI's `theme.shadows[1]` — the elevation a `Paper` paints and therefore the
47
+ * shadow every `elevated` card on the web already has.
48
+ *
49
+ * It is restated here rather than derived because the web never names it: it
50
+ * arrives through `MuiCard` -> `MuiPaper`, and React Native has no Paper to
51
+ * inherit it from. (`variant="elevated"`'s own `elevation: 4` is not a CSS
52
+ * property and paints nothing — see {@link CARD_ELEVATION}.)
53
+ */
54
+ export const CARD_PAPER_SHADOW: readonly UiShadow[] = [
55
+ { offsetX: 0, offsetY: 2, blurRadius: 1, spreadDistance: -1, color: 'rgba(0, 0, 0, 0.2)' },
56
+ { offsetX: 0, offsetY: 1, blurRadius: 1, spreadDistance: 0, color: 'rgba(0, 0, 0, 0.14)' },
57
+ { offsetX: 0, offsetY: 1, blurRadius: 3, spreadDistance: 0, color: 'rgba(0, 0, 0, 0.12)' },
58
+ ];
59
+
60
+ /**
61
+ * What `elevated` declares at rest and on hover.
62
+ *
63
+ * `elevation` is not a CSS property, so on the web these paint NOTHING and an
64
+ * elevated card shows `MuiPaper`'s own elevation-1 shadow. Kept because they
65
+ * are what the source says, and mirrored natively by leaving
66
+ * {@link CARD_PAPER_SHADOW} in place for both states.
67
+ */
68
+ export const CARD_ELEVATION = { rest: 4, lifted: 8 } as const;
69
+
70
+ /* ── Variant surfaces ─────────────────────────────────────────────────────── */
71
+
72
+ /** `glass`: a 0.1 wash of the paper behind a 20px blur, inside a primary hairline. */
73
+ export const CARD_GLASS = {
74
+ backgroundAlpha: { rest: 0.1, lifted: 0.15 },
75
+ borderAlpha: { rest: 0.2, lifted: 0.3 },
76
+ blurPx: 20,
77
+ shadow: { offsetY: 8, blurRadius: 32, alpha: 0.1 },
78
+ } as const;
79
+
80
+ /** `gradient`: primary into secondary at 135°, over a hue-tinted drop shadow. */
81
+ export const CARD_GRADIENT = {
82
+ angleDeg: 135,
83
+ shadow: { offsetY: 4, blurRadius: 20, alpha: 0.3 },
84
+ } as const;
85
+
86
+ /** `neumorphic`: two opposed shadows, blurred twice their offset. */
87
+ export const CARD_NEUMORPHIC = {
88
+ spread: { rest: 8, lifted: 12 },
89
+ blurFactor: 2,
90
+ alpha: {
91
+ dark: { near: 0.3, far: 0.1 },
92
+ light: { near: { rest: 0.2, lifted: 0.3 }, far: { rest: 0.8, lifted: 0.9 } },
93
+ },
94
+ } as const;
95
+
96
+ /**
97
+ * The offset pair `neumorphic` paints, given the two colours the mode picked:
98
+ * `near` down-right, `far` up-left, both blurred twice the offset.
99
+ */
100
+ export function neumorphicShadows(lifted: boolean, near: string, far: string): UiShadow[] {
101
+ const spread = lifted ? CARD_NEUMORPHIC.spread.lifted : CARD_NEUMORPHIC.spread.rest;
102
+ const blurRadius = spread * CARD_NEUMORPHIC.blurFactor;
103
+ return [
104
+ { offsetX: spread, offsetY: spread, blurRadius, spreadDistance: 0, color: near },
105
+ { offsetX: -spread, offsetY: -spread, blurRadius, spreadDistance: 0, color: far },
106
+ ];
107
+ }
108
+
109
+ /**
110
+ * `section`: a flat ink wash rather than a palette slot, so a section reads as
111
+ * a recess in whatever surface it sits on.
112
+ */
113
+ export const CARD_SECTION_BACKGROUND = {
114
+ dark: { rest: 'rgba(0, 0, 0, 0.2)', lifted: 'rgba(0, 0, 0, 0.25)' },
115
+ light: { rest: 'rgba(0, 0, 0, 0.02)', lifted: 'rgba(0, 0, 0, 0.04)' },
116
+ } as const;
117
+
118
+ /* ── Decorations ──────────────────────────────────────────────────────────── */
119
+
120
+ /** `glow`: a haloed primary shadow that widens under the pointer. */
121
+ export const CARD_GLOW = {
122
+ rest: { blurRadius: 20, alpha: 0.3 },
123
+ lifted: { blurRadius: 30, alpha: 0.4 },
124
+ } as const;
125
+
126
+ /**
127
+ * `pulse`: a ring of the primary hue that grows 15px out of the card's edge and
128
+ * fades, every two seconds. The web draws it as an `::after` box-shadow spread
129
+ * behind the paper (`z-index: -1`).
130
+ */
131
+ export const CARD_PULSE = {
132
+ alpha: 0.3,
133
+ durationMs: 2000,
134
+ spread: 15,
135
+ /** The fraction of the cycle the ring is still visible for. */
136
+ fadeAt: 0.7,
137
+ zIndex: -1,
138
+ } as const;
139
+
140
+ /** `interactive`: the card rises 2px under the pointer and settles while pressed. */
141
+ export const CARD_INTERACTIVE_LIFT = 2;
142
+
143
+ /** `loading`: the card dims, stops taking pointers and centres a spinner over itself. */
144
+ export const CARD_LOADING = { opacity: 0.6, spinnerZIndex: 10, spinnerSize: 40 } as const;
145
+
146
+ /* ── The slots ────────────────────────────────────────────────────────────── */
147
+
148
+ /** `CardContent`: `theme.spacing(2)`, halved by `dense`. */
149
+ export const CARD_CONTENT_PADDING_UNITS = { normal: 2, dense: 1 } as const;
150
+
151
+ /**
152
+ * `CardHeader`, in MUI's own px: 16 all round, the avatar 16 from the content,
153
+ * the action pulled back out of the padding on three sides.
154
+ */
155
+ export const CARD_HEADER = {
156
+ padding: 16,
157
+ avatarGap: 16,
158
+ action: { marginTop: -4, marginRight: -8, marginBottom: -4 },
159
+ } as const;
160
+
161
+ /** A `CardHeader` given raw `children` is a plain `theme.spacing(2)` box instead. */
162
+ export const CARD_HEADER_CHILDREN_PADDING_UNITS = 2;
163
+
164
+ /**
165
+ * `CardActions`, in MUI's own px: 8 all round, and 8 between the actions unless
166
+ * `disableSpacing` turns the run off.
167
+ */
168
+ export const CARD_ACTIONS = { padding: 8, gap: 8 } as const;
169
+
170
+ /** `CardMedia`'s default height. */
171
+ export const CARD_MEDIA_HEIGHT = 200;
@@ -0,0 +1,130 @@
1
+ import * as React from 'react';
2
+ import {
3
+ ActivityIndicator,
4
+ Platform,
5
+ Pressable,
6
+ StyleSheet,
7
+ View,
8
+ type GestureResponderEvent,
9
+ type PressableStateCallbackType,
10
+ type StyleProp,
11
+ type ViewStyle,
12
+ } from 'react-native';
13
+
14
+ import { resolveCardProps } from './Card.helpers';
15
+ import { cardLook } from './Card.look.native';
16
+ import { CARD_LOADING, CARD_PULSE } from './Card.metrics';
17
+ import { CardInkContext } from './CardParts.native';
18
+ import type { CardProps } from './Card.types.native';
19
+ import { PulseRing } from '../../../platform/pulse-ring.native';
20
+ import { childTestId, resolveTestId, withoutTestIdProps } from '../../../platform/test-id';
21
+ import { renderTextChildren } from '../../../platform/text-children';
22
+ import { useUiTheme } from '../../../provider/use-ui-theme.native';
23
+ import { muiTypeStyle } from '../../../tokens/mui-type';
24
+
25
+ // The shared stories import all five names from `./Card`, which resolves here
26
+ // under Metro and in the native Storybook; the slots live in their own file to
27
+ // keep this one about the envelope, and are re-exported so that import works.
28
+ export { CardActions, CardContent, CardHeader, CardMedia } from './CardParts.native';
29
+
30
+ /** The spinner a loading card centres over itself; `role` comes from `ActivityIndicator`. */
31
+ function Spinner({ color, testID }: { color: string; testID: string }): React.JSX.Element {
32
+ return (
33
+ <View testID={testID} style={[styles.spinner, { zIndex: CARD_LOADING.spinnerZIndex }]}>
34
+ <ActivityIndicator
35
+ size={Platform.OS === 'ios' ? 'large' : CARD_LOADING.spinnerSize}
36
+ color={color}
37
+ />
38
+ </View>
39
+ );
40
+ }
41
+
42
+ export const Card = React.forwardRef<View, CardProps>((rawProps, ref) => {
43
+ const resolved = resolveCardProps(rawProps);
44
+ const { children, loading, pulse, onClick, onPress, onFocus, onBlur, ...others } = resolved;
45
+ const theme = useUiTheme();
46
+ const look = cardLook(theme, resolved);
47
+
48
+ const testID = resolveTestId(others, 'card');
49
+ const idFor = (suffix: string): string => childTestId(others, suffix, 'card');
50
+ const rest = withoutTestIdProps(others);
51
+ // `cardLook` consumed these, and the reserved ones paint nothing on either
52
+ // renderer; none of them is a `View` prop.
53
+ const {
54
+ variant: _variant,
55
+ interactive,
56
+ glow: _glow,
57
+ borderRadius: _borderRadius,
58
+ style,
59
+ expandable: _expandable,
60
+ expanded: _expanded,
61
+ onExpandToggle: _onExpandToggle,
62
+ entranceAnimation: _entranceAnimation,
63
+ animationDelay: _animationDelay,
64
+ skeleton: _skeleton,
65
+ hoverScale: _hoverScale,
66
+ ...viewProps
67
+ } = rest;
68
+
69
+ // A loading card is inert: no handler fires and pointer events are off, so a
70
+ // half-rendered card cannot be pressed through. Same rule as the web.
71
+ const idle = !loading;
72
+ const handlePress = (event: GestureResponderEvent): void => {
73
+ onClick?.(event);
74
+ onPress?.(event);
75
+ };
76
+
77
+ // The ink goes to the SLOTS through context and to bare text children
78
+ // directly: on the web one `color` on the card covers both, because CSS
79
+ // inherits and React Native does not.
80
+ const body = (
81
+ <CardInkContext.Provider value={look.ink}>
82
+ {pulse ? (
83
+ <PulseRing
84
+ color={theme.palette.primary.main}
85
+ radius={look.radius}
86
+ spread={CARD_PULSE.spread}
87
+ durationMs={CARD_PULSE.durationMs}
88
+ fadeAt={CARD_PULSE.fadeAt}
89
+ opacity={CARD_PULSE.alpha}
90
+ testID={idFor('pulse')}
91
+ />
92
+ ) : null}
93
+ {loading ? <Spinner color={theme.palette.primary.main} testID={idFor('loading')} /> : null}
94
+ {renderTextChildren(children, { ...muiTypeStyle(theme, 'body1'), color: look.ink })}
95
+ </CardInkContext.Provider>
96
+ );
97
+
98
+ const shared = { testID, onFocus: idle ? onFocus : undefined, onBlur: idle ? onBlur : undefined };
99
+
100
+ if (!interactive && !onClick && !onPress) {
101
+ return (
102
+ <View ref={ref} style={[look.container, style]} {...shared} {...viewProps}>
103
+ {body}
104
+ </View>
105
+ );
106
+ }
107
+
108
+ const container = ({ pressed }: PressableStateCallbackType): StyleProp<ViewStyle> => [
109
+ look.container,
110
+ pressed && idle ? look.pressed : null,
111
+ style,
112
+ ];
113
+
114
+ return (
115
+ <Pressable ref={ref} style={container} onPress={idle ? handlePress : undefined} {...shared} {...viewProps}>
116
+ {body}
117
+ </Pressable>
118
+ );
119
+ });
120
+
121
+ Card.displayName = 'Card';
122
+
123
+ const styles = StyleSheet.create({
124
+ spinner: {
125
+ ...StyleSheet.absoluteFillObject,
126
+ alignItems: 'center',
127
+ justifyContent: 'center',
128
+ pointerEvents: 'none',
129
+ },
130
+ });