@12-apps/ui 6.18.0 → 6.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (711) hide show
  1. package/NATIVE.md +10 -2
  2. package/components-catalog.md +8 -4
  3. package/dist/_internal/components/data-display/Alert/Alert.base.js +1 -0
  4. package/dist/_internal/components/data-display/Alert/Alert.base.js.map +1 -0
  5. package/dist/_internal/components/data-display/Alert/Alert.helpers.js +16 -0
  6. package/dist/_internal/components/data-display/Alert/Alert.helpers.js.map +1 -0
  7. package/dist/_internal/components/data-display/Alert/Alert.js +9 -2
  8. package/dist/_internal/components/data-display/Alert/Alert.metrics.js +78 -0
  9. package/dist/_internal/components/data-display/Alert/Alert.metrics.js.map +1 -0
  10. package/dist/_internal/components/data-display/Alert/Alert.styles.js +7 -1
  11. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +12 -5
  12. package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
  13. package/dist/_internal/components/data-display/CardKit/CardKebab.js +3 -3
  14. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +10 -3
  15. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +10 -8
  16. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +4 -4
  17. package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
  18. package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
  19. package/dist/_internal/components/data-display/Chart/SpecChart.js +7 -7
  20. package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
  21. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  22. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +3 -3
  23. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +38 -38
  24. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +53 -51
  25. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +3 -3
  26. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +5 -5
  27. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +5 -5
  28. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +3 -3
  29. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +1 -1
  30. package/dist/_internal/components/data-display/DataViews/base-list-card.js +5 -5
  31. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +10 -10
  32. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +4 -4
  33. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +4 -4
  34. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +3 -3
  35. package/dist/_internal/components/data-display/DataViews/data-views-export.js +3 -3
  36. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +11 -11
  37. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +9 -9
  38. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +3 -3
  39. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +35 -35
  40. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +15 -15
  41. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +1 -1
  42. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +4 -4
  43. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +3 -3
  44. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +3 -3
  45. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +9 -9
  46. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +14 -12
  47. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +8 -8
  48. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +3 -3
  49. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +1 -1
  50. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +6 -6
  51. package/dist/_internal/components/data-display/DataViews/use-saved-views-controller.js +2 -2
  52. package/dist/_internal/components/data-display/EmptyState/EmptyState.base.js +1 -0
  53. package/dist/_internal/components/data-display/EmptyState/EmptyState.base.js.map +1 -0
  54. package/dist/_internal/components/data-display/EmptyState/EmptyState.helpers.js +10 -0
  55. package/dist/_internal/components/data-display/EmptyState/EmptyState.helpers.js.map +1 -0
  56. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +4 -1
  57. package/dist/_internal/components/data-display/EmptyState/EmptyState.metrics.js +44 -0
  58. package/dist/_internal/components/data-display/EmptyState/EmptyState.metrics.js.map +1 -0
  59. package/dist/_internal/components/data-display/ErrorState/ErrorState.base.js +1 -0
  60. package/dist/_internal/components/data-display/ErrorState/ErrorState.base.js.map +1 -0
  61. package/dist/_internal/components/data-display/ErrorState/ErrorState.js +3 -1
  62. package/dist/_internal/components/data-display/ErrorState/ErrorState.metrics.js +32 -0
  63. package/dist/_internal/components/data-display/ErrorState/ErrorState.metrics.js.map +1 -0
  64. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +2 -2
  65. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +6 -6
  66. package/dist/_internal/components/data-display/LoadingState/LoadingState.base.js +1 -0
  67. package/dist/_internal/components/data-display/LoadingState/LoadingState.base.js.map +1 -0
  68. package/dist/_internal/components/data-display/LoadingState/LoadingState.helpers.js +6 -2
  69. package/dist/_internal/components/data-display/LoadingState/LoadingState.js +6 -2
  70. package/dist/_internal/components/data-display/LoadingState/LoadingState.metrics.js +34 -0
  71. package/dist/_internal/components/data-display/LoadingState/LoadingState.metrics.js.map +1 -0
  72. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
  73. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +4 -4
  74. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +5 -2
  75. package/dist/_internal/components/data-display/Sheet/Sheet.js +2 -2
  76. package/dist/_internal/components/data-display/Table/Table.js +3 -3
  77. package/dist/_internal/components/data-display/index.js +52 -46
  78. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +3 -3
  79. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
  80. package/dist/_internal/components/feedback/index.js +8 -8
  81. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +4 -4
  82. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +9 -9
  83. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +3 -3
  84. package/dist/_internal/components/form/Button/Button.js +2 -2
  85. package/dist/_internal/components/form/Calendar/Calendar.hooks.js +2 -2
  86. package/dist/_internal/components/form/Calendar/Calendar.js +6 -6
  87. package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
  88. package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
  89. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +5 -5
  90. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +3 -3
  91. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +2 -2
  92. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +8 -8
  93. package/dist/_internal/components/form/CepField/CepField.js +3 -3
  94. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +1 -1
  95. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +9 -9
  96. package/dist/_internal/components/form/Input/Input.js +2 -2
  97. package/dist/_internal/components/form/Menubar/Menubar.js +2 -2
  98. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +2 -2
  99. package/dist/_internal/components/form/index.js +28 -28
  100. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +9 -9
  101. package/dist/_internal/components/form/total-form/Fields/CepField.js +4 -4
  102. package/dist/_internal/components/form/total-form/Fields/TextField.js +3 -3
  103. package/dist/_internal/components/form/total-form/Fields/index.js +19 -19
  104. package/dist/_internal/components/form/total-form/SubmitButton.js +3 -3
  105. package/dist/_internal/components/index.js +111 -101
  106. package/dist/_internal/components/layout/Container/Container.base.js +1 -0
  107. package/dist/_internal/components/layout/Container/Container.base.js.map +1 -0
  108. package/dist/_internal/components/layout/Container/Container.js +3 -1
  109. package/dist/_internal/components/layout/Container/Container.metrics.js +28 -0
  110. package/dist/_internal/components/layout/Container/Container.metrics.js.map +1 -0
  111. package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +2 -2
  112. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +4 -4
  113. package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +2 -2
  114. package/dist/_internal/components/layout/Spacer/Spacer.base.js +1 -0
  115. package/dist/_internal/components/layout/Spacer/Spacer.base.js.map +1 -0
  116. package/dist/_internal/components/layout/Spacer/Spacer.js +3 -1
  117. package/dist/_internal/components/layout/Spacer/Spacer.metrics.js +18 -0
  118. package/dist/_internal/components/layout/Spacer/Spacer.metrics.js.map +1 -0
  119. package/dist/_internal/components/layout/index.js +10 -7
  120. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +5 -5
  121. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +2 -2
  122. package/dist/_internal/components/navigation/Pagination/Pagination.js +2 -2
  123. package/dist/_internal/components/navigation/Tabs/Tabs.js +2 -2
  124. package/dist/_internal/components/navigation/index.js +14 -14
  125. package/dist/_internal/components/typography/Heading/Heading.base.js +1 -0
  126. package/dist/_internal/components/typography/Heading/Heading.base.js.map +1 -0
  127. package/dist/_internal/components/typography/Heading/Heading.js +7 -2
  128. package/dist/_internal/components/typography/Heading/Heading.metrics.js +32 -0
  129. package/dist/_internal/components/typography/Heading/Heading.metrics.js.map +1 -0
  130. package/dist/_internal/components/typography/Heading/Heading.styles.js +5 -1
  131. package/dist/_internal/components/typography/Paragraph/Paragraph.base.js +1 -0
  132. package/dist/_internal/components/typography/Paragraph/Paragraph.base.js.map +1 -0
  133. package/dist/_internal/components/typography/Paragraph/Paragraph.js +7 -1
  134. package/dist/_internal/components/typography/Paragraph/Paragraph.metrics.js +24 -0
  135. package/dist/_internal/components/typography/Paragraph/Paragraph.metrics.js.map +1 -0
  136. package/dist/_internal/components/typography/index.js +5 -3
  137. package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +1 -1
  138. package/dist/_internal/components/utility/index.js +1 -1
  139. package/dist/_internal/platform/aria.js +11 -0
  140. package/dist/_internal/platform/aria.js.map +1 -0
  141. package/dist/_internal/platform/text-children.js +37 -0
  142. package/dist/_internal/platform/text-children.js.map +1 -0
  143. package/dist/_internal/social-login-button/social-login-button.js +6 -5
  144. package/dist/_internal/tokens/mui-type.js +25 -0
  145. package/dist/_internal/tokens/mui-type.js.map +1 -0
  146. package/dist/_internal/user-avatar/user-avatar.js +3 -3
  147. package/dist/charts.js +13 -13
  148. package/dist/chunk-3N6EK6K5.js +57 -0
  149. package/dist/chunk-3N6EK6K5.js.map +1 -0
  150. package/dist/{chunk-77GA5YHQ.js → chunk-43NEBUV3.js} +2 -2
  151. package/dist/{chunk-4WK2RTVY.js → chunk-4FRZDSRD.js} +3 -3
  152. package/dist/{chunk-2EKALM6P.js → chunk-4SXZSSVV.js} +3 -3
  153. package/dist/{chunk-SKZHOWTS.js → chunk-5SYD23V4.js} +4 -4
  154. package/dist/chunk-6D5WEZ2L.js +219 -0
  155. package/dist/chunk-6D5WEZ2L.js.map +1 -0
  156. package/dist/{chunk-7RZ4WOQW.js → chunk-6DXYCXH4.js} +2 -2
  157. package/dist/{chunk-IJIT5HQP.js → chunk-72UYVJBQ.js} +2 -2
  158. package/dist/{chunk-KVN3K4J3.js → chunk-7DFEKTT7.js} +12 -16
  159. package/dist/chunk-7DFEKTT7.js.map +1 -0
  160. package/dist/{chunk-VNEEXUWA.js → chunk-7WL24VNI.js} +4 -4
  161. package/dist/{chunk-J54WH74M.js → chunk-AP4FLCLA.js} +4 -4
  162. package/dist/chunk-B2Y3BABA.js +136 -0
  163. package/dist/chunk-B2Y3BABA.js.map +1 -0
  164. package/dist/{chunk-IE7ISTLQ.js → chunk-B443IIQG.js} +4 -4
  165. package/dist/{chunk-EPNCYUQ7.js → chunk-BPYPUEM5.js} +5 -5
  166. package/dist/{chunk-V662PA6T.js → chunk-BUDXR3EV.js} +5 -5
  167. package/dist/{chunk-EW7ZNSWU.js → chunk-BVZVH3ZN.js} +6 -6
  168. package/dist/{chunk-U7RULTSH.js → chunk-C6XESZ3R.js} +6 -6
  169. package/dist/{chunk-WUPVHIMD.js → chunk-CLNTJM3F.js} +2 -2
  170. package/dist/{chunk-YNQGXSDD.js → chunk-CRNQVWIT.js} +7 -7
  171. package/dist/{chunk-7EESF76V.js → chunk-DLFOEXUP.js} +2 -2
  172. package/dist/{chunk-6YLAVHV4.js → chunk-DTKMBI7B.js} +4 -4
  173. package/dist/{chunk-BBC4KT5G.js → chunk-DZN3JF5E.js} +4 -4
  174. package/dist/{chunk-5ERH4OIK.js → chunk-E27Y7FF2.js} +92 -76
  175. package/dist/chunk-E27Y7FF2.js.map +1 -0
  176. package/dist/{chunk-P5YYVDAD.js → chunk-E5ZHW4I5.js} +4 -4
  177. package/dist/{chunk-OH3YGJT5.js → chunk-EMNGIYH6.js} +5 -5
  178. package/dist/{chunk-UQHJQ26Y.js → chunk-ES2RN7YV.js} +2 -2
  179. package/dist/{chunk-EGRFMPGD.js → chunk-EXJBPKGW.js} +4 -4
  180. package/dist/{chunk-BILE3A7F.js → chunk-FWCUELBU.js} +2 -2
  181. package/dist/{chunk-4R2CDZOQ.js → chunk-GBFGZJB5.js} +4 -4
  182. package/dist/{chunk-67LDIJQZ.js → chunk-GCJLMX63.js} +2 -2
  183. package/dist/chunk-HEK4LQT6.js +69 -0
  184. package/dist/chunk-HEK4LQT6.js.map +1 -0
  185. package/dist/{chunk-BLBOYCOV.js → chunk-HKV4MQ2W.js} +5 -5
  186. package/dist/{chunk-L5ZZJ4XE.js → chunk-HKZHEK3Z.js} +2 -2
  187. package/dist/{chunk-IPS55KWK.js → chunk-HP2ODXNA.js} +2 -2
  188. package/dist/{chunk-3AOOI2NR.js → chunk-HR7YTBR7.js} +4 -4
  189. package/dist/{chunk-O6J4CKS5.js → chunk-IIOEQRXX.js} +30 -13
  190. package/dist/chunk-IIOEQRXX.js.map +1 -0
  191. package/dist/{chunk-PUBPZOQJ.js → chunk-IPE5FFFD.js} +2 -2
  192. package/dist/{chunk-C52BELLW.js → chunk-ISSJNFJV.js} +2 -2
  193. package/dist/{chunk-2ZRZTGWP.js → chunk-ISW5K72V.js} +5 -5
  194. package/dist/{chunk-X24P3ZYW.js → chunk-J4W4TQPC.js} +6 -6
  195. package/dist/{chunk-LZRURORY.js → chunk-KADJNWTQ.js} +3 -3
  196. package/dist/{chunk-3AFUWDYS.js → chunk-KKYW3LU7.js} +3 -3
  197. package/dist/{chunk-NHSMLVNC.js → chunk-KSF7TLXH.js} +6 -6
  198. package/dist/{chunk-FP4R47TM.js → chunk-L65LF6LN.js} +2 -2
  199. package/dist/{chunk-FH4VARZ7.js → chunk-L6KEVPXN.js} +7 -7
  200. package/dist/{chunk-X5BHPSAC.js → chunk-LDE4ELB5.js} +7 -7
  201. package/dist/{chunk-NETZMGQP.js → chunk-LIOVN5IM.js} +2 -2
  202. package/dist/{chunk-OQXOYHIV.js → chunk-M3RIC6JI.js} +4 -4
  203. package/dist/{chunk-MY5VNNSP.js → chunk-MCRIT46W.js} +4 -4
  204. package/dist/{chunk-WO52KYSU.js → chunk-MHFJBNDP.js} +8 -8
  205. package/dist/chunk-MWFSIB6K.js +47 -0
  206. package/dist/chunk-MWFSIB6K.js.map +1 -0
  207. package/dist/chunk-N3QUEBNS.js +32 -0
  208. package/dist/chunk-N3QUEBNS.js.map +1 -0
  209. package/dist/{chunk-WBVHRLIS.js → chunk-N4WANJI3.js} +4 -4
  210. package/dist/chunk-N7MJ6CNC.js +30 -0
  211. package/dist/chunk-N7MJ6CNC.js.map +1 -0
  212. package/dist/{chunk-XKMFIH27.js → chunk-NECUCG2S.js} +14 -14
  213. package/dist/{chunk-IH4CX43Q.js → chunk-NFHS77NE.js} +2 -2
  214. package/dist/{chunk-E67PUPFJ.js → chunk-NQC6H7GY.js} +73 -57
  215. package/dist/chunk-NQC6H7GY.js.map +1 -0
  216. package/dist/{chunk-74KMXBG3.js → chunk-OAXAF4VY.js} +9 -9
  217. package/dist/{chunk-4EJSUL62.js → chunk-OR7UH2ZQ.js} +3 -3
  218. package/dist/{chunk-3ZFORMNT.js → chunk-OZWQNFG6.js} +4 -4
  219. package/dist/{chunk-23FCBIUN.js → chunk-P7FQUGED.js} +8 -8
  220. package/dist/{chunk-PC5FFEIY.js → chunk-PC3ZFERM.js} +2 -2
  221. package/dist/{chunk-XSJWN3WH.js → chunk-PMS3H3OO.js} +10 -10
  222. package/dist/{chunk-CGQI4XE5.js → chunk-PWR7K5OP.js} +16 -16
  223. package/dist/chunk-PWR7K5OP.js.map +1 -0
  224. package/dist/{chunk-KQ74QU55.js → chunk-QJJUTBKZ.js} +2 -2
  225. package/dist/chunk-QKLGH3RZ.js +29 -0
  226. package/dist/chunk-QKLGH3RZ.js.map +1 -0
  227. package/dist/{chunk-VEFDL77X.js → chunk-QZPNQWS2.js} +2 -2
  228. package/dist/{chunk-DWZ7FLA7.js → chunk-RBGOGTT2.js} +4 -4
  229. package/dist/chunk-RKCS6K36.js +48 -0
  230. package/dist/chunk-RKCS6K36.js.map +1 -0
  231. package/dist/{chunk-MZQTHSLN.js → chunk-S7HRED4D.js} +2 -2
  232. package/dist/{chunk-LUMF63BM.js → chunk-SFAP5EH5.js} +4 -4
  233. package/dist/{chunk-ZEBJT5JZ.js → chunk-SG6VULKS.js} +3 -3
  234. package/dist/{chunk-GJQYM3PM.js → chunk-SHQWIDD5.js} +4 -4
  235. package/dist/{chunk-24BUCMQA.js → chunk-SL4NFGOL.js} +4 -4
  236. package/dist/{chunk-PHCSPHDH.js → chunk-SOHDPFOB.js} +2 -2
  237. package/dist/chunk-TLGGVE56.js +37 -0
  238. package/dist/chunk-TLGGVE56.js.map +1 -0
  239. package/dist/{chunk-K2T2CQSZ.js → chunk-UF27D35R.js} +2 -2
  240. package/dist/{chunk-7M5BACFQ.js → chunk-UXQW6ZIN.js} +45 -57
  241. package/dist/chunk-UXQW6ZIN.js.map +1 -0
  242. package/dist/{chunk-A2GGT4OC.js → chunk-V3SBJ3PB.js} +54 -30
  243. package/dist/chunk-V3SBJ3PB.js.map +1 -0
  244. package/dist/chunk-VJK5FBNK.js +46 -0
  245. package/dist/chunk-VJK5FBNK.js.map +1 -0
  246. package/dist/{chunk-B7BZAIHL.js → chunk-VOOPGAQO.js} +2 -2
  247. package/dist/{chunk-GSTRPZS4.js → chunk-WEH5TCPE.js} +8 -8
  248. package/dist/{chunk-MUVJD26L.js → chunk-WPR2HS5B.js} +8 -8
  249. package/dist/{chunk-KT6HWAEN.js → chunk-WZUNBSS7.js} +2 -2
  250. package/dist/{chunk-3JYYPJFD.js → chunk-X2J6MRJW.js} +2 -2
  251. package/dist/{chunk-HEG7JIBM.js → chunk-X5MPHXG5.js} +4 -4
  252. package/dist/{chunk-NFAKRI4S.js → chunk-XELVDPKL.js} +4 -4
  253. package/dist/{chunk-EPNUVSNK.js → chunk-XFUNJYFT.js} +7 -7
  254. package/dist/{chunk-4G3FGCWX.js → chunk-XXJRT6BP.js} +2 -2
  255. package/dist/{chunk-QRX5BYUQ.js → chunk-Y6KPZQPI.js} +4 -4
  256. package/dist/chunk-YBVKLJAL.js +53 -0
  257. package/dist/chunk-YBVKLJAL.js.map +1 -0
  258. package/dist/{chunk-KZSKI2R3.js → chunk-YLDS5FOQ.js} +2 -2
  259. package/dist/chunk-YSTHOE66.js +51 -0
  260. package/dist/chunk-YSTHOE66.js.map +1 -0
  261. package/dist/{chunk-NYLXHOMR.js → chunk-Z7JNCB5Q.js} +26 -13
  262. package/dist/chunk-Z7JNCB5Q.js.map +1 -0
  263. package/dist/{chunk-WX7VWW3W.js → chunk-ZBOFBRZC.js} +2 -2
  264. package/dist/{chunk-HSAH5QUQ.js → chunk-ZIOCRSHU.js} +3 -3
  265. package/dist/{chunk-HOJL2GKW.js → chunk-ZOUWHGV3.js} +7 -7
  266. package/dist/{chunk-2ZDTGI5V.js → chunk-ZRFRU545.js} +7 -7
  267. package/dist/data-display/Alert.js +9 -2
  268. package/dist/data-display/AsyncStateContainer.js +12 -5
  269. package/dist/data-display/Badge.js +2 -2
  270. package/dist/data-display/CardKit.js +14 -12
  271. package/dist/data-display/Carousel.js +3 -3
  272. package/dist/data-display/Chart.js +13 -13
  273. package/dist/data-display/DataGrid.js +3 -3
  274. package/dist/data-display/DataViews.js +62 -60
  275. package/dist/data-display/EmptyState.js +4 -1
  276. package/dist/data-display/ErrorState.js +3 -1
  277. package/dist/data-display/HoverCard.js +2 -2
  278. package/dist/data-display/Lightbox.js +6 -6
  279. package/dist/data-display/LoadingState.js +6 -2
  280. package/dist/data-display/MapPreview.js +4 -4
  281. package/dist/data-display/SectionOnboarding.js +5 -2
  282. package/dist/data-display/Sheet.js +2 -2
  283. package/dist/data-display/Table.js +3 -3
  284. package/dist/feedback/ConfirmAction.js +6 -6
  285. package/dist/feedback/TutorialOverlay.js +2 -2
  286. package/dist/form/AddressAutocomplete.js +9 -9
  287. package/dist/form/Button.js +2 -2
  288. package/dist/form/Calendar.js +6 -6
  289. package/dist/form/CategorySelect.js +10 -10
  290. package/dist/form/CepField.js +3 -3
  291. package/dist/form/CodeEditor.js +1 -1
  292. package/dist/form/DateRangePicker.js +9 -9
  293. package/dist/form/Input.js +2 -2
  294. package/dist/form/Menubar.js +2 -2
  295. package/dist/form/RichTextEditor.js +2 -2
  296. package/dist/form/total-form.js +25 -25
  297. package/dist/layout/Container.js +3 -1
  298. package/dist/layout/ContentToolbar.js +3 -3
  299. package/dist/layout/ScrollArea.js +2 -2
  300. package/dist/layout/SettingsLayout.js +6 -6
  301. package/dist/layout/Spacer.js +3 -1
  302. package/dist/native/chunks/chunk-4NK5ZQZ3.js +10 -0
  303. package/dist/native/chunks/chunk-4NK5ZQZ3.js.map +1 -0
  304. package/dist/native/chunks/chunk-5GJ5OG5R.js +36 -0
  305. package/dist/native/chunks/chunk-5GJ5OG5R.js.map +1 -0
  306. package/dist/native/chunks/{chunk-QZ233LRH.js → chunk-EKKNUEA6.js} +2 -2
  307. package/dist/native/chunks/{chunk-L2UUNK2M.js → chunk-P3PL4WBO.js} +2 -1
  308. package/dist/native/chunks/chunk-UKCCYP52.js +318 -0
  309. package/dist/native/chunks/chunk-UKCCYP52.js.map +1 -0
  310. package/dist/native/chunks/chunk-V4DQTC5L.js +24 -0
  311. package/dist/native/chunks/chunk-V4DQTC5L.js.map +1 -0
  312. package/dist/native/chunks/chunk-YQGNMAJN.js +108 -0
  313. package/dist/native/chunks/chunk-YQGNMAJN.js.map +1 -0
  314. package/dist/native/chunks/{chunk-VGBKUL6D.js → chunk-YTHR4Y5P.js} +2 -2
  315. package/dist/native/data-display/Alert.js +372 -0
  316. package/dist/native/data-display/Alert.js.map +1 -0
  317. package/dist/native/data-display/EmptyState.js +293 -0
  318. package/dist/native/data-display/EmptyState.js.map +1 -0
  319. package/dist/native/data-display/ErrorState.js +188 -0
  320. package/dist/native/data-display/ErrorState.js.map +1 -0
  321. package/dist/native/data-display/LoadingState.js +205 -0
  322. package/dist/native/data-display/LoadingState.js.map +1 -0
  323. package/dist/native/form/Button.js +6 -316
  324. package/dist/native/form/Button.js.map +1 -1
  325. package/dist/native/icons.js +10 -99
  326. package/dist/native/icons.js.map +1 -1
  327. package/dist/native/layout/Box.js +3 -3
  328. package/dist/native/layout/Container.js +93 -0
  329. package/dist/native/layout/Container.js.map +1 -0
  330. package/dist/native/layout/Spacer.js +80 -0
  331. package/dist/native/layout/Spacer.js.map +1 -0
  332. package/dist/native/layout/Stack.js +3 -3
  333. package/dist/native/provider.js +2 -2
  334. package/dist/native/tokens.js +1 -1
  335. package/dist/native/typography/Heading.js +110 -0
  336. package/dist/native/typography/Heading.js.map +1 -0
  337. package/dist/native/typography/Paragraph.js +86 -0
  338. package/dist/native/typography/Paragraph.js.map +1 -0
  339. package/dist/native/typography/Text.js +2 -2
  340. package/dist/navigation/AppHeader.js +9 -9
  341. package/dist/navigation/NavigationMenu.js +2 -2
  342. package/dist/navigation/Pagination.js +2 -2
  343. package/dist/navigation/Tabs.js +2 -2
  344. package/dist/social-login-button.js +6 -5
  345. package/dist/types/components/data-display/Alert/Alert.base.d.ts +92 -0
  346. package/dist/types/components/data-display/Alert/Alert.base.d.ts.map +1 -0
  347. package/dist/types/components/data-display/Alert/Alert.d.ts.map +1 -1
  348. package/dist/types/components/data-display/Alert/Alert.helpers.d.ts +23 -0
  349. package/dist/types/components/data-display/Alert/Alert.helpers.d.ts.map +1 -0
  350. package/dist/types/components/data-display/Alert/Alert.metrics.d.ts +181 -0
  351. package/dist/types/components/data-display/Alert/Alert.metrics.d.ts.map +1 -0
  352. package/dist/types/components/data-display/Alert/Alert.styles.d.ts +3 -10
  353. package/dist/types/components/data-display/Alert/Alert.styles.d.ts.map +1 -1
  354. package/dist/types/components/data-display/Alert/Alert.types.d.ts +5 -79
  355. package/dist/types/components/data-display/Alert/Alert.types.d.ts.map +1 -1
  356. package/dist/types/components/data-display/Alert/index.d.ts +1 -1
  357. package/dist/types/components/data-display/Alert/index.d.ts.map +1 -1
  358. package/dist/types/components/data-display/EmptyState/EmptyState.base.d.ts +51 -0
  359. package/dist/types/components/data-display/EmptyState/EmptyState.base.d.ts.map +1 -0
  360. package/dist/types/components/data-display/EmptyState/EmptyState.d.ts.map +1 -1
  361. package/dist/types/components/data-display/EmptyState/EmptyState.helpers.d.ts +13 -0
  362. package/dist/types/components/data-display/EmptyState/EmptyState.helpers.d.ts.map +1 -0
  363. package/dist/types/components/data-display/EmptyState/EmptyState.metrics.d.ts +57 -0
  364. package/dist/types/components/data-display/EmptyState/EmptyState.metrics.d.ts.map +1 -0
  365. package/dist/types/components/data-display/EmptyState/EmptyState.types.d.ts +3 -39
  366. package/dist/types/components/data-display/EmptyState/EmptyState.types.d.ts.map +1 -1
  367. package/dist/types/components/data-display/EmptyState/index.d.ts +1 -1
  368. package/dist/types/components/data-display/EmptyState/index.d.ts.map +1 -1
  369. package/dist/types/components/data-display/ErrorState/ErrorState.base.d.ts +43 -0
  370. package/dist/types/components/data-display/ErrorState/ErrorState.base.d.ts.map +1 -0
  371. package/dist/types/components/data-display/ErrorState/ErrorState.d.ts.map +1 -1
  372. package/dist/types/components/data-display/ErrorState/ErrorState.metrics.d.ts +37 -0
  373. package/dist/types/components/data-display/ErrorState/ErrorState.metrics.d.ts.map +1 -0
  374. package/dist/types/components/data-display/ErrorState/ErrorState.types.d.ts +3 -32
  375. package/dist/types/components/data-display/ErrorState/ErrorState.types.d.ts.map +1 -1
  376. package/dist/types/components/data-display/ErrorState/index.d.ts +1 -1
  377. package/dist/types/components/data-display/ErrorState/index.d.ts.map +1 -1
  378. package/dist/types/components/data-display/LoadingState/LoadingState.base.d.ts +37 -0
  379. package/dist/types/components/data-display/LoadingState/LoadingState.base.d.ts.map +1 -0
  380. package/dist/types/components/data-display/LoadingState/LoadingState.d.ts.map +1 -1
  381. package/dist/types/components/data-display/LoadingState/LoadingState.helpers.d.ts +12 -6
  382. package/dist/types/components/data-display/LoadingState/LoadingState.helpers.d.ts.map +1 -1
  383. package/dist/types/components/data-display/LoadingState/LoadingState.metrics.d.ts +43 -0
  384. package/dist/types/components/data-display/LoadingState/LoadingState.metrics.d.ts.map +1 -0
  385. package/dist/types/components/data-display/LoadingState/LoadingState.types.d.ts +3 -27
  386. package/dist/types/components/data-display/LoadingState/LoadingState.types.d.ts.map +1 -1
  387. package/dist/types/components/data-display/LoadingState/index.d.ts +1 -1
  388. package/dist/types/components/data-display/LoadingState/index.d.ts.map +1 -1
  389. package/dist/types/components/layout/Container/Container.base.d.ts +31 -0
  390. package/dist/types/components/layout/Container/Container.base.d.ts.map +1 -0
  391. package/dist/types/components/layout/Container/Container.d.ts.map +1 -1
  392. package/dist/types/components/layout/Container/Container.metrics.d.ts +57 -0
  393. package/dist/types/components/layout/Container/Container.metrics.d.ts.map +1 -0
  394. package/dist/types/components/layout/Container/Container.types.d.ts +4 -8
  395. package/dist/types/components/layout/Container/Container.types.d.ts.map +1 -1
  396. package/dist/types/components/layout/Container/index.d.ts +1 -1
  397. package/dist/types/components/layout/Container/index.d.ts.map +1 -1
  398. package/dist/types/components/layout/Spacer/Spacer.base.d.ts +30 -0
  399. package/dist/types/components/layout/Spacer/Spacer.base.d.ts.map +1 -0
  400. package/dist/types/components/layout/Spacer/Spacer.d.ts.map +1 -1
  401. package/dist/types/components/layout/Spacer/Spacer.metrics.d.ts +36 -0
  402. package/dist/types/components/layout/Spacer/Spacer.metrics.d.ts.map +1 -0
  403. package/dist/types/components/layout/Spacer/Spacer.types.d.ts +4 -9
  404. package/dist/types/components/layout/Spacer/Spacer.types.d.ts.map +1 -1
  405. package/dist/types/components/layout/Spacer/index.d.ts +1 -1
  406. package/dist/types/components/layout/Spacer/index.d.ts.map +1 -1
  407. package/dist/types/components/typography/Heading/Heading.base.d.ts +52 -0
  408. package/dist/types/components/typography/Heading/Heading.base.d.ts.map +1 -0
  409. package/dist/types/components/typography/Heading/Heading.d.ts +9 -6
  410. package/dist/types/components/typography/Heading/Heading.d.ts.map +1 -1
  411. package/dist/types/components/typography/Heading/Heading.metrics.d.ts +52 -0
  412. package/dist/types/components/typography/Heading/Heading.metrics.d.ts.map +1 -0
  413. package/dist/types/components/typography/Heading/Heading.styles.d.ts.map +1 -1
  414. package/dist/types/components/typography/Heading/Heading.types.d.ts +8 -38
  415. package/dist/types/components/typography/Heading/Heading.types.d.ts.map +1 -1
  416. package/dist/types/components/typography/Heading/index.d.ts +1 -1
  417. package/dist/types/components/typography/Heading/index.d.ts.map +1 -1
  418. package/dist/types/components/typography/Paragraph/Paragraph.base.d.ts +23 -0
  419. package/dist/types/components/typography/Paragraph/Paragraph.base.d.ts.map +1 -0
  420. package/dist/types/components/typography/Paragraph/Paragraph.d.ts.map +1 -1
  421. package/dist/types/components/typography/Paragraph/Paragraph.metrics.d.ts +30 -0
  422. package/dist/types/components/typography/Paragraph/Paragraph.metrics.d.ts.map +1 -0
  423. package/dist/types/components/typography/Paragraph/Paragraph.types.d.ts +4 -7
  424. package/dist/types/components/typography/Paragraph/Paragraph.types.d.ts.map +1 -1
  425. package/dist/types/components/typography/Paragraph/index.d.ts +1 -1
  426. package/dist/types/components/typography/Paragraph/index.d.ts.map +1 -1
  427. package/dist/types/platform/aria.d.ts +29 -0
  428. package/dist/types/platform/aria.d.ts.map +1 -0
  429. package/dist/types/platform/text-children.d.ts +6 -0
  430. package/dist/types/platform/text-children.d.ts.map +1 -0
  431. package/dist/types/tokens/mui-type.d.ts +42 -0
  432. package/dist/types/tokens/mui-type.d.ts.map +1 -0
  433. package/dist/types-native/components/data-display/Alert/Alert.base.d.ts +92 -0
  434. package/dist/types-native/components/data-display/Alert/Alert.base.d.ts.map +1 -0
  435. package/dist/types-native/components/data-display/Alert/Alert.helpers.d.ts +23 -0
  436. package/dist/types-native/components/data-display/Alert/Alert.helpers.d.ts.map +1 -0
  437. package/dist/types-native/components/data-display/Alert/Alert.look.native.d.ts +46 -0
  438. package/dist/types-native/components/data-display/Alert/Alert.look.native.d.ts.map +1 -0
  439. package/dist/types-native/components/data-display/Alert/Alert.metrics.d.ts +181 -0
  440. package/dist/types-native/components/data-display/Alert/Alert.metrics.d.ts.map +1 -0
  441. package/dist/types-native/components/data-display/Alert/Alert.native.d.ts +5 -0
  442. package/dist/types-native/components/data-display/Alert/Alert.native.d.ts.map +1 -0
  443. package/dist/types-native/components/data-display/Alert/Alert.types.native.d.ts +8 -0
  444. package/dist/types-native/components/data-display/Alert/Alert.types.native.d.ts.map +1 -0
  445. package/dist/types-native/components/data-display/Alert/index.native.d.ts +3 -0
  446. package/dist/types-native/components/data-display/Alert/index.native.d.ts.map +1 -0
  447. package/dist/types-native/components/data-display/EmptyState/EmptyState.base.d.ts +51 -0
  448. package/dist/types-native/components/data-display/EmptyState/EmptyState.base.d.ts.map +1 -0
  449. package/dist/types-native/components/data-display/EmptyState/EmptyState.helpers.d.ts +13 -0
  450. package/dist/types-native/components/data-display/EmptyState/EmptyState.helpers.d.ts.map +1 -0
  451. package/dist/types-native/components/data-display/EmptyState/EmptyState.metrics.d.ts +57 -0
  452. package/dist/types-native/components/data-display/EmptyState/EmptyState.metrics.d.ts.map +1 -0
  453. package/dist/types-native/components/data-display/EmptyState/EmptyState.native.d.ts +22 -0
  454. package/dist/types-native/components/data-display/EmptyState/EmptyState.native.d.ts.map +1 -0
  455. package/dist/types-native/components/data-display/EmptyState/EmptyState.types.native.d.ts +8 -0
  456. package/dist/types-native/components/data-display/EmptyState/EmptyState.types.native.d.ts.map +1 -0
  457. package/dist/types-native/components/data-display/EmptyState/index.native.d.ts +3 -0
  458. package/dist/types-native/components/data-display/EmptyState/index.native.d.ts.map +1 -0
  459. package/dist/types-native/components/data-display/ErrorState/ErrorState.base.d.ts +43 -0
  460. package/dist/types-native/components/data-display/ErrorState/ErrorState.base.d.ts.map +1 -0
  461. package/dist/types-native/components/data-display/ErrorState/ErrorState.metrics.d.ts +37 -0
  462. package/dist/types-native/components/data-display/ErrorState/ErrorState.metrics.d.ts.map +1 -0
  463. package/dist/types-native/components/data-display/ErrorState/ErrorState.native.d.ts +14 -0
  464. package/dist/types-native/components/data-display/ErrorState/ErrorState.native.d.ts.map +1 -0
  465. package/dist/types-native/components/data-display/ErrorState/ErrorState.types.native.d.ts +8 -0
  466. package/dist/types-native/components/data-display/ErrorState/ErrorState.types.native.d.ts.map +1 -0
  467. package/dist/types-native/components/data-display/ErrorState/index.native.d.ts +3 -0
  468. package/dist/types-native/components/data-display/ErrorState/index.native.d.ts.map +1 -0
  469. package/dist/types-native/components/data-display/LoadingState/LoadingState.base.d.ts +37 -0
  470. package/dist/types-native/components/data-display/LoadingState/LoadingState.base.d.ts.map +1 -0
  471. package/dist/types-native/components/data-display/LoadingState/LoadingState.helpers.d.ts +27 -0
  472. package/dist/types-native/components/data-display/LoadingState/LoadingState.helpers.d.ts.map +1 -0
  473. package/dist/types-native/components/data-display/LoadingState/LoadingState.metrics.d.ts +43 -0
  474. package/dist/types-native/components/data-display/LoadingState/LoadingState.metrics.d.ts.map +1 -0
  475. package/dist/types-native/components/data-display/LoadingState/LoadingState.native.d.ts +10 -0
  476. package/dist/types-native/components/data-display/LoadingState/LoadingState.native.d.ts.map +1 -0
  477. package/dist/types-native/components/data-display/LoadingState/LoadingState.types.native.d.ts +8 -0
  478. package/dist/types-native/components/data-display/LoadingState/LoadingState.types.native.d.ts.map +1 -0
  479. package/dist/types-native/components/data-display/LoadingState/index.native.d.ts +3 -0
  480. package/dist/types-native/components/data-display/LoadingState/index.native.d.ts.map +1 -0
  481. package/dist/types-native/components/form/Button/Button.native.d.ts +1 -1
  482. package/dist/types-native/components/form/Button/Button.native.d.ts.map +1 -1
  483. package/dist/types-native/components/layout/Container/Container.base.d.ts +31 -0
  484. package/dist/types-native/components/layout/Container/Container.base.d.ts.map +1 -0
  485. package/dist/types-native/components/layout/Container/Container.metrics.d.ts +57 -0
  486. package/dist/types-native/components/layout/Container/Container.metrics.d.ts.map +1 -0
  487. package/dist/types-native/components/layout/Container/Container.native.d.ts +30 -0
  488. package/dist/types-native/components/layout/Container/Container.native.d.ts.map +1 -0
  489. package/dist/types-native/components/layout/Container/Container.types.native.d.ts +8 -0
  490. package/dist/types-native/components/layout/Container/Container.types.native.d.ts.map +1 -0
  491. package/dist/types-native/components/layout/Container/index.native.d.ts +3 -0
  492. package/dist/types-native/components/layout/Container/index.native.d.ts.map +1 -0
  493. package/dist/types-native/components/layout/Spacer/Spacer.base.d.ts +30 -0
  494. package/dist/types-native/components/layout/Spacer/Spacer.base.d.ts.map +1 -0
  495. package/dist/types-native/components/layout/Spacer/Spacer.metrics.d.ts +36 -0
  496. package/dist/types-native/components/layout/Spacer/Spacer.metrics.d.ts.map +1 -0
  497. package/dist/types-native/components/layout/Spacer/Spacer.native.d.ts +21 -0
  498. package/dist/types-native/components/layout/Spacer/Spacer.native.d.ts.map +1 -0
  499. package/dist/types-native/components/layout/Spacer/Spacer.types.native.d.ts +8 -0
  500. package/dist/types-native/components/layout/Spacer/Spacer.types.native.d.ts.map +1 -0
  501. package/dist/types-native/components/layout/Spacer/index.native.d.ts +3 -0
  502. package/dist/types-native/components/layout/Spacer/index.native.d.ts.map +1 -0
  503. package/dist/types-native/components/typography/Heading/Heading.base.d.ts +52 -0
  504. package/dist/types-native/components/typography/Heading/Heading.base.d.ts.map +1 -0
  505. package/dist/types-native/components/typography/Heading/Heading.metrics.d.ts +52 -0
  506. package/dist/types-native/components/typography/Heading/Heading.metrics.d.ts.map +1 -0
  507. package/dist/types-native/components/typography/Heading/Heading.native.d.ts +30 -0
  508. package/dist/types-native/components/typography/Heading/Heading.native.d.ts.map +1 -0
  509. package/dist/types-native/components/typography/Heading/Heading.types.native.d.ts +14 -0
  510. package/dist/types-native/components/typography/Heading/Heading.types.native.d.ts.map +1 -0
  511. package/dist/types-native/components/typography/Heading/index.native.d.ts +3 -0
  512. package/dist/types-native/components/typography/Heading/index.native.d.ts.map +1 -0
  513. package/dist/types-native/components/typography/Paragraph/Paragraph.base.d.ts +23 -0
  514. package/dist/types-native/components/typography/Paragraph/Paragraph.base.d.ts.map +1 -0
  515. package/dist/types-native/components/typography/Paragraph/Paragraph.metrics.d.ts +30 -0
  516. package/dist/types-native/components/typography/Paragraph/Paragraph.metrics.d.ts.map +1 -0
  517. package/dist/types-native/components/typography/Paragraph/Paragraph.native.d.ts +23 -0
  518. package/dist/types-native/components/typography/Paragraph/Paragraph.native.d.ts.map +1 -0
  519. package/dist/types-native/components/typography/Paragraph/Paragraph.types.native.d.ts +14 -0
  520. package/dist/types-native/components/typography/Paragraph/Paragraph.types.native.d.ts.map +1 -0
  521. package/dist/types-native/components/typography/Paragraph/index.native.d.ts +3 -0
  522. package/dist/types-native/components/typography/Paragraph/index.native.d.ts.map +1 -0
  523. package/dist/types-native/platform/aria.d.ts +29 -0
  524. package/dist/types-native/platform/aria.d.ts.map +1 -0
  525. package/dist/types-native/platform/text-children.d.ts +6 -0
  526. package/dist/types-native/platform/text-children.d.ts.map +1 -0
  527. package/dist/types-native/tokens/mui-type.d.ts +42 -0
  528. package/dist/types-native/tokens/mui-type.d.ts.map +1 -0
  529. package/dist/typography/Heading.js +7 -2
  530. package/dist/typography/Paragraph.js +7 -1
  531. package/dist/user-avatar.js +3 -3
  532. package/dist/utility/InstallPrompt.js +1 -1
  533. package/package.json +33 -1
  534. package/src/components/data-display/Alert/Alert.base.ts +105 -0
  535. package/src/components/data-display/Alert/Alert.helpers.ts +54 -0
  536. package/src/components/data-display/Alert/Alert.look.native.ts +131 -0
  537. package/src/components/data-display/Alert/Alert.metrics.ts +166 -0
  538. package/src/components/data-display/Alert/Alert.native.tsx +239 -0
  539. package/src/components/data-display/Alert/Alert.styles.tsx +162 -134
  540. package/src/components/data-display/Alert/Alert.tsx +136 -121
  541. package/src/components/data-display/Alert/Alert.types.native.ts +12 -0
  542. package/src/components/data-display/Alert/Alert.types.ts +7 -85
  543. package/src/components/data-display/Alert/NATIVE-NOTES.md +10 -0
  544. package/src/components/data-display/Alert/index.native.ts +2 -0
  545. package/src/components/data-display/Alert/index.ts +1 -1
  546. package/src/components/data-display/EmptyState/EmptyState.base.ts +54 -0
  547. package/src/components/data-display/EmptyState/EmptyState.helpers.ts +66 -0
  548. package/src/components/data-display/EmptyState/EmptyState.metrics.ts +54 -0
  549. package/src/components/data-display/EmptyState/EmptyState.native.tsx +277 -0
  550. package/src/components/data-display/EmptyState/EmptyState.tsx +42 -79
  551. package/src/components/data-display/EmptyState/EmptyState.types.native.ts +16 -0
  552. package/src/components/data-display/EmptyState/EmptyState.types.ts +11 -30
  553. package/src/components/data-display/EmptyState/NATIVE-NOTES.md +7 -0
  554. package/src/components/data-display/EmptyState/index.native.ts +8 -0
  555. package/src/components/data-display/EmptyState/index.ts +7 -1
  556. package/src/components/data-display/ErrorState/ErrorState.base.ts +51 -0
  557. package/src/components/data-display/ErrorState/ErrorState.metrics.ts +44 -0
  558. package/src/components/data-display/ErrorState/ErrorState.native.tsx +193 -0
  559. package/src/components/data-display/ErrorState/ErrorState.tsx +68 -53
  560. package/src/components/data-display/ErrorState/ErrorState.types.native.ts +11 -0
  561. package/src/components/data-display/ErrorState/ErrorState.types.ts +3 -38
  562. package/src/components/data-display/ErrorState/NATIVE-NOTES.md +6 -0
  563. package/src/components/data-display/ErrorState/index.native.ts +2 -0
  564. package/src/components/data-display/ErrorState/index.ts +1 -1
  565. package/src/components/data-display/LoadingState/LoadingState.base.ts +43 -0
  566. package/src/components/data-display/LoadingState/LoadingState.helpers.ts +27 -28
  567. package/src/components/data-display/LoadingState/LoadingState.metrics.ts +67 -0
  568. package/src/components/data-display/LoadingState/LoadingState.native.tsx +175 -0
  569. package/src/components/data-display/LoadingState/LoadingState.tsx +25 -11
  570. package/src/components/data-display/LoadingState/LoadingState.types.native.ts +11 -0
  571. package/src/components/data-display/LoadingState/LoadingState.types.ts +3 -31
  572. package/src/components/data-display/LoadingState/NATIVE-NOTES.md +7 -0
  573. package/src/components/data-display/LoadingState/index.native.ts +7 -0
  574. package/src/components/data-display/LoadingState/index.ts +6 -1
  575. package/src/components/form/Button/Button.native.tsx +2 -18
  576. package/src/components/layout/Container/Container.base.ts +32 -0
  577. package/src/components/layout/Container/Container.md +14 -0
  578. package/src/components/layout/Container/Container.metrics.ts +101 -0
  579. package/src/components/layout/Container/Container.native.tsx +73 -0
  580. package/src/components/layout/Container/Container.tsx +27 -30
  581. package/src/components/layout/Container/Container.types.native.ts +11 -0
  582. package/src/components/layout/Container/Container.types.ts +8 -9
  583. package/src/components/layout/Container/NATIVE-NOTES.md +3 -0
  584. package/src/components/layout/Container/index.native.ts +8 -0
  585. package/src/components/layout/Container/index.ts +7 -1
  586. package/src/components/layout/Spacer/Spacer.base.ts +32 -0
  587. package/src/components/layout/Spacer/Spacer.md +13 -1
  588. package/src/components/layout/Spacer/Spacer.metrics.ts +55 -0
  589. package/src/components/layout/Spacer/Spacer.native.tsx +68 -0
  590. package/src/components/layout/Spacer/Spacer.tsx +11 -41
  591. package/src/components/layout/Spacer/Spacer.types.native.ts +11 -0
  592. package/src/components/layout/Spacer/Spacer.types.ts +5 -9
  593. package/src/components/layout/Spacer/index.native.ts +2 -0
  594. package/src/components/layout/Spacer/index.ts +1 -1
  595. package/src/components/typography/Heading/Heading.base.ts +55 -0
  596. package/src/components/typography/Heading/Heading.md +13 -0
  597. package/src/components/typography/Heading/Heading.metrics.ts +84 -0
  598. package/src/components/typography/Heading/Heading.native.tsx +105 -0
  599. package/src/components/typography/Heading/Heading.styles.ts +19 -21
  600. package/src/components/typography/Heading/Heading.tsx +26 -23
  601. package/src/components/typography/Heading/Heading.types.native.ts +17 -0
  602. package/src/components/typography/Heading/Heading.types.ts +11 -39
  603. package/src/components/typography/Heading/NATIVE-NOTES.md +3 -0
  604. package/src/components/typography/Heading/index.native.ts +2 -0
  605. package/src/components/typography/Heading/index.ts +1 -1
  606. package/src/components/typography/Paragraph/Paragraph.base.ts +25 -0
  607. package/src/components/typography/Paragraph/Paragraph.md +11 -0
  608. package/src/components/typography/Paragraph/Paragraph.metrics.ts +41 -0
  609. package/src/components/typography/Paragraph/Paragraph.native.tsx +100 -0
  610. package/src/components/typography/Paragraph/Paragraph.tsx +53 -30
  611. package/src/components/typography/Paragraph/Paragraph.types.native.ts +17 -0
  612. package/src/components/typography/Paragraph/Paragraph.types.ts +7 -8
  613. package/src/components/typography/Paragraph/index.native.ts +2 -0
  614. package/src/components/typography/Paragraph/index.ts +1 -1
  615. package/src/platform/aria.ts +32 -0
  616. package/src/platform/text-children.tsx +68 -0
  617. package/src/tokens/mui-type.ts +64 -0
  618. package/dist/chunk-5ERH4OIK.js.map +0 -1
  619. package/dist/chunk-7M5BACFQ.js.map +0 -1
  620. package/dist/chunk-A2GGT4OC.js.map +0 -1
  621. package/dist/chunk-C6AZDXEE.js +0 -207
  622. package/dist/chunk-C6AZDXEE.js.map +0 -1
  623. package/dist/chunk-CGQI4XE5.js.map +0 -1
  624. package/dist/chunk-DTO7GKLA.js +0 -65
  625. package/dist/chunk-DTO7GKLA.js.map +0 -1
  626. package/dist/chunk-E67PUPFJ.js.map +0 -1
  627. package/dist/chunk-KVN3K4J3.js.map +0 -1
  628. package/dist/chunk-NBNLGTRB.js +0 -71
  629. package/dist/chunk-NBNLGTRB.js.map +0 -1
  630. package/dist/chunk-NYLXHOMR.js.map +0 -1
  631. package/dist/chunk-O6J4CKS5.js.map +0 -1
  632. /package/dist/{chunk-77GA5YHQ.js.map → chunk-43NEBUV3.js.map} +0 -0
  633. /package/dist/{chunk-4WK2RTVY.js.map → chunk-4FRZDSRD.js.map} +0 -0
  634. /package/dist/{chunk-2EKALM6P.js.map → chunk-4SXZSSVV.js.map} +0 -0
  635. /package/dist/{chunk-SKZHOWTS.js.map → chunk-5SYD23V4.js.map} +0 -0
  636. /package/dist/{chunk-7RZ4WOQW.js.map → chunk-6DXYCXH4.js.map} +0 -0
  637. /package/dist/{chunk-IJIT5HQP.js.map → chunk-72UYVJBQ.js.map} +0 -0
  638. /package/dist/{chunk-VNEEXUWA.js.map → chunk-7WL24VNI.js.map} +0 -0
  639. /package/dist/{chunk-J54WH74M.js.map → chunk-AP4FLCLA.js.map} +0 -0
  640. /package/dist/{chunk-IE7ISTLQ.js.map → chunk-B443IIQG.js.map} +0 -0
  641. /package/dist/{chunk-EPNCYUQ7.js.map → chunk-BPYPUEM5.js.map} +0 -0
  642. /package/dist/{chunk-V662PA6T.js.map → chunk-BUDXR3EV.js.map} +0 -0
  643. /package/dist/{chunk-EW7ZNSWU.js.map → chunk-BVZVH3ZN.js.map} +0 -0
  644. /package/dist/{chunk-U7RULTSH.js.map → chunk-C6XESZ3R.js.map} +0 -0
  645. /package/dist/{chunk-WUPVHIMD.js.map → chunk-CLNTJM3F.js.map} +0 -0
  646. /package/dist/{chunk-YNQGXSDD.js.map → chunk-CRNQVWIT.js.map} +0 -0
  647. /package/dist/{chunk-7EESF76V.js.map → chunk-DLFOEXUP.js.map} +0 -0
  648. /package/dist/{chunk-6YLAVHV4.js.map → chunk-DTKMBI7B.js.map} +0 -0
  649. /package/dist/{chunk-BBC4KT5G.js.map → chunk-DZN3JF5E.js.map} +0 -0
  650. /package/dist/{chunk-P5YYVDAD.js.map → chunk-E5ZHW4I5.js.map} +0 -0
  651. /package/dist/{chunk-OH3YGJT5.js.map → chunk-EMNGIYH6.js.map} +0 -0
  652. /package/dist/{chunk-UQHJQ26Y.js.map → chunk-ES2RN7YV.js.map} +0 -0
  653. /package/dist/{chunk-EGRFMPGD.js.map → chunk-EXJBPKGW.js.map} +0 -0
  654. /package/dist/{chunk-BILE3A7F.js.map → chunk-FWCUELBU.js.map} +0 -0
  655. /package/dist/{chunk-4R2CDZOQ.js.map → chunk-GBFGZJB5.js.map} +0 -0
  656. /package/dist/{chunk-67LDIJQZ.js.map → chunk-GCJLMX63.js.map} +0 -0
  657. /package/dist/{chunk-BLBOYCOV.js.map → chunk-HKV4MQ2W.js.map} +0 -0
  658. /package/dist/{chunk-L5ZZJ4XE.js.map → chunk-HKZHEK3Z.js.map} +0 -0
  659. /package/dist/{chunk-IPS55KWK.js.map → chunk-HP2ODXNA.js.map} +0 -0
  660. /package/dist/{chunk-3AOOI2NR.js.map → chunk-HR7YTBR7.js.map} +0 -0
  661. /package/dist/{chunk-PUBPZOQJ.js.map → chunk-IPE5FFFD.js.map} +0 -0
  662. /package/dist/{chunk-C52BELLW.js.map → chunk-ISSJNFJV.js.map} +0 -0
  663. /package/dist/{chunk-2ZRZTGWP.js.map → chunk-ISW5K72V.js.map} +0 -0
  664. /package/dist/{chunk-X24P3ZYW.js.map → chunk-J4W4TQPC.js.map} +0 -0
  665. /package/dist/{chunk-LZRURORY.js.map → chunk-KADJNWTQ.js.map} +0 -0
  666. /package/dist/{chunk-3AFUWDYS.js.map → chunk-KKYW3LU7.js.map} +0 -0
  667. /package/dist/{chunk-NHSMLVNC.js.map → chunk-KSF7TLXH.js.map} +0 -0
  668. /package/dist/{chunk-FP4R47TM.js.map → chunk-L65LF6LN.js.map} +0 -0
  669. /package/dist/{chunk-FH4VARZ7.js.map → chunk-L6KEVPXN.js.map} +0 -0
  670. /package/dist/{chunk-X5BHPSAC.js.map → chunk-LDE4ELB5.js.map} +0 -0
  671. /package/dist/{chunk-NETZMGQP.js.map → chunk-LIOVN5IM.js.map} +0 -0
  672. /package/dist/{chunk-OQXOYHIV.js.map → chunk-M3RIC6JI.js.map} +0 -0
  673. /package/dist/{chunk-MY5VNNSP.js.map → chunk-MCRIT46W.js.map} +0 -0
  674. /package/dist/{chunk-WO52KYSU.js.map → chunk-MHFJBNDP.js.map} +0 -0
  675. /package/dist/{chunk-WBVHRLIS.js.map → chunk-N4WANJI3.js.map} +0 -0
  676. /package/dist/{chunk-XKMFIH27.js.map → chunk-NECUCG2S.js.map} +0 -0
  677. /package/dist/{chunk-IH4CX43Q.js.map → chunk-NFHS77NE.js.map} +0 -0
  678. /package/dist/{chunk-74KMXBG3.js.map → chunk-OAXAF4VY.js.map} +0 -0
  679. /package/dist/{chunk-4EJSUL62.js.map → chunk-OR7UH2ZQ.js.map} +0 -0
  680. /package/dist/{chunk-3ZFORMNT.js.map → chunk-OZWQNFG6.js.map} +0 -0
  681. /package/dist/{chunk-23FCBIUN.js.map → chunk-P7FQUGED.js.map} +0 -0
  682. /package/dist/{chunk-PC5FFEIY.js.map → chunk-PC3ZFERM.js.map} +0 -0
  683. /package/dist/{chunk-XSJWN3WH.js.map → chunk-PMS3H3OO.js.map} +0 -0
  684. /package/dist/{chunk-KQ74QU55.js.map → chunk-QJJUTBKZ.js.map} +0 -0
  685. /package/dist/{chunk-VEFDL77X.js.map → chunk-QZPNQWS2.js.map} +0 -0
  686. /package/dist/{chunk-DWZ7FLA7.js.map → chunk-RBGOGTT2.js.map} +0 -0
  687. /package/dist/{chunk-MZQTHSLN.js.map → chunk-S7HRED4D.js.map} +0 -0
  688. /package/dist/{chunk-LUMF63BM.js.map → chunk-SFAP5EH5.js.map} +0 -0
  689. /package/dist/{chunk-ZEBJT5JZ.js.map → chunk-SG6VULKS.js.map} +0 -0
  690. /package/dist/{chunk-GJQYM3PM.js.map → chunk-SHQWIDD5.js.map} +0 -0
  691. /package/dist/{chunk-24BUCMQA.js.map → chunk-SL4NFGOL.js.map} +0 -0
  692. /package/dist/{chunk-PHCSPHDH.js.map → chunk-SOHDPFOB.js.map} +0 -0
  693. /package/dist/{chunk-K2T2CQSZ.js.map → chunk-UF27D35R.js.map} +0 -0
  694. /package/dist/{chunk-B7BZAIHL.js.map → chunk-VOOPGAQO.js.map} +0 -0
  695. /package/dist/{chunk-GSTRPZS4.js.map → chunk-WEH5TCPE.js.map} +0 -0
  696. /package/dist/{chunk-MUVJD26L.js.map → chunk-WPR2HS5B.js.map} +0 -0
  697. /package/dist/{chunk-KT6HWAEN.js.map → chunk-WZUNBSS7.js.map} +0 -0
  698. /package/dist/{chunk-3JYYPJFD.js.map → chunk-X2J6MRJW.js.map} +0 -0
  699. /package/dist/{chunk-HEG7JIBM.js.map → chunk-X5MPHXG5.js.map} +0 -0
  700. /package/dist/{chunk-NFAKRI4S.js.map → chunk-XELVDPKL.js.map} +0 -0
  701. /package/dist/{chunk-EPNUVSNK.js.map → chunk-XFUNJYFT.js.map} +0 -0
  702. /package/dist/{chunk-4G3FGCWX.js.map → chunk-XXJRT6BP.js.map} +0 -0
  703. /package/dist/{chunk-QRX5BYUQ.js.map → chunk-Y6KPZQPI.js.map} +0 -0
  704. /package/dist/{chunk-KZSKI2R3.js.map → chunk-YLDS5FOQ.js.map} +0 -0
  705. /package/dist/{chunk-WX7VWW3W.js.map → chunk-ZBOFBRZC.js.map} +0 -0
  706. /package/dist/{chunk-HSAH5QUQ.js.map → chunk-ZIOCRSHU.js.map} +0 -0
  707. /package/dist/{chunk-HOJL2GKW.js.map → chunk-ZOUWHGV3.js.map} +0 -0
  708. /package/dist/{chunk-2ZDTGI5V.js.map → chunk-ZRFRU545.js.map} +0 -0
  709. /package/dist/native/chunks/{chunk-QZ233LRH.js.map → chunk-EKKNUEA6.js.map} +0 -0
  710. /package/dist/native/chunks/{chunk-L2UUNK2M.js.map → chunk-P3PL4WBO.js.map} +0 -0
  711. /package/dist/native/chunks/{chunk-VGBKUL6D.js.map → chunk-YTHR4Y5P.js.map} +0 -0
@@ -1,9 +1,22 @@
1
- import type { Theme } from '@mui/material/styles/index.js';
1
+ import type { CSSObject, Theme } from '@mui/material/styles/index.js';
2
2
  import Typography from '@mui/material/Typography/index.js';
3
3
  import { styled } from '@mui/material/styles/index.js';
4
4
  import React from 'react';
5
5
 
6
+ import {
7
+ LEAD_FONT_SIZE,
8
+ LEAD_LETTER_SPACING_EM,
9
+ LEAD_LINE_HEIGHT,
10
+ MUTED_OPACITY,
11
+ PARAGRAPH_FONT_WEIGHT,
12
+ PARAGRAPH_MARGIN_BOTTOM_EM,
13
+ PARAGRAPH_SIZES,
14
+ SMALL_FONT_SIZE,
15
+ SMALL_LINE_HEIGHT,
16
+ } from './Paragraph.metrics';
6
17
  import type { ParagraphProps } from './Paragraph.types';
18
+ import { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';
19
+ import { px } from '../../../tokens/theme';
7
20
 
8
21
  const getColorFromTheme = (theme: Theme, color: string) => {
9
22
  if (color === 'neutral') {
@@ -22,6 +35,20 @@ const getColorFromTheme = (theme: Theme, color: string) => {
22
35
  return colorMap[color] || theme.palette.text.primary;
23
36
  };
24
37
 
38
+ // Derived from the shared metrics, not restated: the native `Paragraph` reads
39
+ // the same table, so the two renderers cannot disagree on a size.
40
+ const sizeMap: Record<string, { fontSize: string; lineHeight: number }> = Object.fromEntries(
41
+ Object.entries(PARAGRAPH_SIZES).map(([size, step]) => [
42
+ size,
43
+ { fontSize: px(step.fontSize), lineHeight: step.lineHeight },
44
+ ]),
45
+ );
46
+
47
+ // `lead` and `small` shrink or grow relative to the scale, but only at the
48
+ // default size — an explicit size wins.
49
+ const sizeOverride = (customSize: string, atDefault: number): string | undefined =>
50
+ customSize === 'md' ? px(atDefault) : sizeMap[customSize]?.fontSize;
51
+
25
52
  const StyledParagraph = styled(Typography, {
26
53
  shouldForwardProp: (prop) =>
27
54
  !['customVariant', 'customColor', 'customSize'].includes(prop as string),
@@ -32,61 +59,56 @@ const StyledParagraph = styled(Typography, {
32
59
  }>(({ theme, customVariant = 'default', customColor = 'neutral', customSize = 'md' }) => {
33
60
  const textColor = getColorFromTheme(theme, customColor);
34
61
 
35
- // Size mapping
36
- const sizeMap = {
37
- xs: { fontSize: '0.75rem', lineHeight: 1.4 },
38
- sm: { fontSize: '0.875rem', lineHeight: 1.5 },
39
- md: { fontSize: '1rem', lineHeight: 1.6 },
40
- lg: { fontSize: '1.125rem', lineHeight: 1.6 },
41
- xl: { fontSize: '1.25rem', lineHeight: 1.7 },
42
- };
43
-
44
- const baseStyles = {
62
+ const baseStyles: CSSObject = {
45
63
  fontFamily: theme.typography.body1.fontFamily,
46
- margin: '0 0 1em 0',
64
+ margin: `0 0 ${PARAGRAPH_MARGIN_BOTTOM_EM}em 0`,
47
65
  transition: 'all 0.2s ease',
48
- ...sizeMap[customSize as keyof typeof sizeMap],
66
+ ...sizeMap[customSize],
49
67
  };
50
68
 
51
69
  // Variant-specific styles
52
- const variantStyles = {
70
+ const variantStyles: Record<string, CSSObject> = {
53
71
  default: {
54
72
  ...baseStyles,
55
73
  color: textColor,
56
- fontWeight: 400,
74
+ fontWeight: PARAGRAPH_FONT_WEIGHT,
57
75
  },
58
76
  lead: {
59
77
  ...baseStyles,
60
78
  color: textColor,
61
- fontWeight: 400,
62
- fontSize:
63
- customSize === 'md' ? '1.125rem' : sizeMap[customSize as keyof typeof sizeMap]?.fontSize,
64
- lineHeight: 1.7,
65
- letterSpacing: '0.01em',
79
+ fontWeight: PARAGRAPH_FONT_WEIGHT,
80
+ fontSize: sizeOverride(customSize, LEAD_FONT_SIZE),
81
+ lineHeight: LEAD_LINE_HEIGHT,
82
+ letterSpacing: `${LEAD_LETTER_SPACING_EM}em`,
66
83
  },
67
84
  muted: {
68
85
  ...baseStyles,
69
86
  color: theme.palette.text.secondary,
70
- fontWeight: 400,
71
- opacity: 0.8,
87
+ fontWeight: PARAGRAPH_FONT_WEIGHT,
88
+ opacity: MUTED_OPACITY,
72
89
  },
73
90
  small: {
74
91
  ...baseStyles,
75
92
  color: theme.palette.text.secondary,
76
- fontSize:
77
- customSize === 'md' ? '0.875rem' : sizeMap[customSize as keyof typeof sizeMap]?.fontSize,
78
- fontWeight: 400,
79
- lineHeight: 1.5,
93
+ fontSize: sizeOverride(customSize, SMALL_FONT_SIZE),
94
+ fontWeight: PARAGRAPH_FONT_WEIGHT,
95
+ lineHeight: SMALL_LINE_HEIGHT,
80
96
  },
81
97
  };
82
98
 
83
- return variantStyles[customVariant as keyof typeof variantStyles] || variantStyles.default;
99
+ return variantStyles[customVariant] || variantStyles.default;
84
100
  });
85
101
 
86
102
  export const Paragraph = React.forwardRef<globalThis.HTMLParagraphElement, ParagraphProps>(
87
- ({ variant = 'default', color = 'neutral', size = 'md', children, ...props }, ref) => (
103
+ ({ variant = 'default', color = 'neutral', size = 'md', children, ...others }, ref) => {
104
+ // `testID` and `dataTestId` are the shared contract's spellings; the DOM
105
+ // wants `data-testid`, and must not see the other two as attributes.
106
+ const testId = resolveTestId(others);
107
+ const props = withoutTestIdProps(others);
108
+ return (
88
109
  <StyledParagraph
89
110
  ref={ref}
111
+ data-testid={testId}
90
112
  customVariant={variant}
91
113
  customColor={color}
92
114
  customSize={size}
@@ -94,7 +116,8 @@ export const Paragraph = React.forwardRef<globalThis.HTMLParagraphElement, Parag
94
116
  >
95
117
  {children}
96
118
  </StyledParagraph>
97
- ),
119
+ );
120
+ },
98
121
  );
99
122
 
100
- Paragraph.displayName = 'Paragraph';
123
+ Paragraph.displayName = 'Paragraph';
@@ -0,0 +1,17 @@
1
+ import type { GestureResponderEvent, StyleProp, TextProps as RNTextProps, TextStyle } from 'react-native';
2
+
3
+ import type { ParagraphBaseProps } from './Paragraph.base';
4
+
5
+ export type { ParagraphBaseProps, ParagraphVariant } from './Paragraph.base';
6
+
7
+ /**
8
+ * The native `Paragraph`: the shared contract, plus a react-native `Text`'s
9
+ * own props. `onClick` keeps its web name and `onPress` is accepted too, as on
10
+ * `Button`; both fire.
11
+ */
12
+ export type ParagraphProps = ParagraphBaseProps &
13
+ Omit<RNTextProps, keyof ParagraphBaseProps | 'style' | 'onPress'> & {
14
+ onClick?: (event: GestureResponderEvent) => void;
15
+ onPress?: (event: GestureResponderEvent) => void;
16
+ style?: StyleProp<TextStyle>;
17
+ };
@@ -1,11 +1,10 @@
1
- import type { ColorValue, SizeValue } from '../../../tokens/scales';
2
1
  import type React from 'react';
3
2
 
4
- export type ParagraphVariant = 'default' | 'lead' | 'muted' | 'small';
3
+ import type { ParagraphBaseProps } from './Paragraph.base';
5
4
 
6
- export interface ParagraphProps extends React.HTMLAttributes<globalThis.HTMLParagraphElement> {
7
- variant?: ParagraphVariant;
8
- color?: ColorValue;
9
- size?: SizeValue;
10
- children: React.ReactNode;
11
- }
5
+ export type { ParagraphBaseProps, ParagraphVariant } from './Paragraph.base';
6
+
7
+ /** The web `Paragraph`: the shared contract, plus everything a `<p>` accepts. */
8
+ export interface ParagraphProps
9
+ extends ParagraphBaseProps,
10
+ Omit<React.HTMLAttributes<globalThis.HTMLParagraphElement>, 'color' | 'children'> {}
@@ -0,0 +1,2 @@
1
+ export { Paragraph, paragraphStyle } from './Paragraph.native';
2
+ export type { ParagraphBaseProps, ParagraphProps, ParagraphVariant } from './Paragraph.types.native';
@@ -1,2 +1,2 @@
1
1
  export { Paragraph } from './Paragraph';
2
- export type { ParagraphProps } from './Paragraph.types';
2
+ export type { ParagraphBaseProps, ParagraphProps, ParagraphVariant } from './Paragraph.types';
@@ -0,0 +1,32 @@
1
+ /**
2
+ * ARIA ATTRIBUTES REACT NATIVE DOES NOT DECLARE.
3
+ *
4
+ * React Native's `ViewProps` (0.83) type a dozen `aria-*` props and stop:
5
+ * `aria-level`, `aria-atomic` and `aria-describedby` are not among them.
6
+ * react-native-web forwards all three to the DOM — and `aria-level` also
7
+ * picks the heading tag, so a `role="heading"` at level 3 renders an `<h3>`
8
+ * exactly as the MUI half's `component="h3"` does — while a device ignores
9
+ * them. A native component spreads them through here rather than widening
10
+ * the element's props type or casting at every call site.
11
+ */
12
+ export interface WebAria {
13
+ 'aria-level'?: 1 | 2 | 3 | 4 | 5 | 6;
14
+ 'aria-atomic'?: 'true' | 'false';
15
+ 'aria-describedby'?: string;
16
+ }
17
+
18
+ /**
19
+ * `attrs` as something JSX can spread onto a react-native element without
20
+ * that element's props type having to know them.
21
+ *
22
+ * `aria-atomic` travels under react-native-web's own older name. Its
23
+ * `createDOMProps` (0.20.0) reads `aria-activedescendant` where it means
24
+ * `aria-atomic` — `_ariaAtomic = ariaAtomic != null ? ariaActiveDescendant :
25
+ * accessibilityAtomic` — so the modern spelling never reaches the DOM and
26
+ * the legacy one, still accepted and still emitted as `aria-atomic`, does.
27
+ * Neither name exists on a device, so nothing is lost there.
28
+ */
29
+ export function webAria(attrs: WebAria): object {
30
+ const { 'aria-atomic': atomic, ...rest } = attrs;
31
+ return atomic === undefined ? rest : { ...rest, accessibilityAtomic: atomic };
32
+ }
@@ -0,0 +1,68 @@
1
+ import * as React from 'react';
2
+ import { Text as RNText, type TextStyle } from 'react-native';
3
+
4
+ /**
5
+ * FREE-FORM CHILDREN, FLOWING AS THE WEB FLOWS THEM.
6
+ *
7
+ * `<Alert>O total é {total}.</Alert>` is THREE children — a string, a number
8
+ * and another string. The web lays them out inline, as one sentence. React
9
+ * Native has no inline text outside a `Text`, so a native component has to
10
+ * wrap them; wrapping each child on its own puts every fragment on its own
11
+ * line, which is what the harness caught: an alert body reading
12
+ *
13
+ * O corpo do alerta na variante
14
+ * success
15
+ * .
16
+ *
17
+ * So CONSECUTIVE text children are grouped into one `Text` — the run flows as
18
+ * a sentence — and any element child ends the run and renders as given, the
19
+ * way a block element interrupts a paragraph on the web.
20
+ */
21
+ const isText = (child: React.ReactNode): child is string | number =>
22
+ typeof child === 'string' || typeof child === 'number';
23
+
24
+ /**
25
+ * Fragments are flattened first. A caller writing `<Alert><>{a} de {b}</></Alert>`
26
+ * hands over ONE child, and `React.Children.toArray` does not look inside it —
27
+ * so without this the fragment would reach React Native holding bare strings,
28
+ * which throws "Text strings must be rendered within a <Text> component".
29
+ */
30
+ function flatten(children: React.ReactNode): React.ReactNode[] {
31
+ return React.Children.toArray(children).flatMap((child) =>
32
+ React.isValidElement(child) && child.type === React.Fragment
33
+ ? flatten((child.props as { children?: React.ReactNode }).children)
34
+ : [child],
35
+ );
36
+ }
37
+
38
+ export function renderTextChildren(
39
+ children: React.ReactNode,
40
+ style: TextStyle,
41
+ /** Passed to each run, for a surface that clips rather than wraps (a button label). */
42
+ numberOfLines?: number,
43
+ ): React.ReactNode {
44
+ const out: React.ReactNode[] = [];
45
+ let run: Array<string | number> = [];
46
+
47
+ const flush = (): void => {
48
+ if (run.length === 0) return;
49
+ out.push(
50
+ <RNText key={`text-${out.length}`} style={style} numberOfLines={numberOfLines}>
51
+ {run}
52
+ </RNText>,
53
+ );
54
+ run = [];
55
+ };
56
+
57
+ for (const child of flatten(children)) {
58
+ if (isText(child)) {
59
+ run.push(child);
60
+ continue;
61
+ }
62
+ flush();
63
+ out.push(child);
64
+ }
65
+ flush();
66
+
67
+ return out;
68
+ }
@@ -0,0 +1,64 @@
1
+ import type { UiTheme } from './theme';
2
+
3
+ /**
4
+ * MUI'S DEFAULT `Typography` VARIANTS, AS NUMBERS.
5
+ *
6
+ * Several web components render a title or a message BY NAME —
7
+ * `<Typography variant="h6">` — and let MUI's theme turn the name into a
8
+ * size. The native halves have no MUI theme, so they need the numbers MUI's
9
+ * `createTypography` produces for those names. These are those numbers, for
10
+ * the variants the ported components use: `fontSize` in px, `lineHeight` as
11
+ * a ratio, `letterSpacing` in em exactly as MUI rounds it
12
+ * (`round(letterSpacing / size)`, five decimals).
13
+ *
14
+ * Only the DEFAULTS. A host that re-themes `typography.h6` moves the web
15
+ * halves and not these; each component that reads this records that as a
16
+ * known gap in its `NATIVE-NOTES.md`.
17
+ */
18
+ export type MuiTypeVariantName = 'h6' | 'body1' | 'body2';
19
+
20
+ export interface MuiTypeVariant {
21
+ fontSize: number;
22
+ lineHeight: number;
23
+ fontWeight: 400 | 500;
24
+ letterSpacingEm: number;
25
+ }
26
+
27
+ export const MUI_TYPE: Record<MuiTypeVariantName, MuiTypeVariant> = {
28
+ h6: { fontSize: 20, lineHeight: 1.6, fontWeight: 500, letterSpacingEm: 0.0075 },
29
+ body1: { fontSize: 16, lineHeight: 1.5, fontWeight: 400, letterSpacingEm: 0.00938 },
30
+ body2: { fontSize: 14, lineHeight: 1.43, fontWeight: 400, letterSpacingEm: 0.01071 },
31
+ };
32
+
33
+ /** MUI's `theme.typography.fontWeightMedium`, which several web styles name outright. */
34
+ export const MUI_FONT_WEIGHT_MEDIUM = 500;
35
+
36
+ /** A variant multiplied out for a renderer whose `lineHeight` and `letterSpacing` are absolute. */
37
+ export interface MuiTypeStyle {
38
+ fontFamily: string | undefined;
39
+ fontSize: number;
40
+ lineHeight: number;
41
+ fontWeight: `${MuiTypeVariant['fontWeight']}`;
42
+ letterSpacing: number;
43
+ }
44
+
45
+ /**
46
+ * The variant as absolute numbers, in the theme's font. `fontSize` may be
47
+ * overridden — the Alert's title is `body1` at 1.05rem — and the ratios
48
+ * follow it, which is what the browser does with `em` and a unitless
49
+ * line-height.
50
+ */
51
+ export function muiTypeStyle(
52
+ theme: Pick<UiTheme, 'typography'>,
53
+ variant: MuiTypeVariantName,
54
+ fontSize: number = MUI_TYPE[variant].fontSize,
55
+ ): MuiTypeStyle {
56
+ const step = MUI_TYPE[variant];
57
+ return {
58
+ fontFamily: theme.typography.fontFamily,
59
+ fontSize,
60
+ lineHeight: fontSize * step.lineHeight,
61
+ fontWeight: `${step.fontWeight}`,
62
+ letterSpacing: fontSize * step.letterSpacingEm,
63
+ };
64
+ }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Alert/Alert.styles.tsx"],"sourcesContent":["import Error from '@mui/icons-material/Error';\nimport Info from '@mui/icons-material/Info';\nimport CheckCircle from '@mui/icons-material/CheckCircle';\nimport Warning from '@mui/icons-material/Warning';\nimport { alpha, darken, keyframes, lighten } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nexport const pulseAnimation = keyframes`\n 0% {\n box-shadow: 0 0 0 0 currentColor;\n opacity: 1;\n }\n 70% {\n box-shadow: 0 0 0 10px currentColor;\n opacity: 0;\n }\n 100% {\n box-shadow: 0 0 0 0 currentColor;\n opacity: 0;\n }\n`;\n\n// Additional animations can be enabled as needed\n// const slideInAnimation = keyframes`\n// from {\n// transform: translateX(-100%);\n// opacity: 0;\n// }\n// to {\n// transform: translateX(0);\n// opacity: 1;\n// }\n// `;\n\n// const bounceIn = keyframes`\n// 0% {\n// transform: scale(0.3);\n// opacity: 0;\n// }\n// 50% {\n// transform: scale(1.05);\n// }\n// 70% {\n// transform: scale(0.9);\n// }\n// 100% {\n// transform: scale(1);\n// opacity: 1;\n// }\n// `;\n\n// Removed unused slideInAnimation - can be re-added if needed for future features\n\nexport const shimmerAnimation = keyframes`\n 0% {\n background-position: -1000px 0;\n }\n 100% {\n background-position: 1000px 0;\n }\n`;\n\nexport const fadeInScale = keyframes`\n from {\n opacity: 0;\n transform: scale(0.95) translateY(-10px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n`;\n\nexport const iconRotate = keyframes`\n 0% {\n transform: rotate(0deg) scale(0.8);\n }\n 50% {\n transform: rotate(180deg) scale(1.1);\n }\n 100% {\n transform: rotate(360deg) scale(1);\n }\n`;\n\nexport const getColorFromTheme = (theme: Theme, variant: string) => {\n const colorMap: Record<string, { main: string; light?: string; dark?: string }> = {\n info: theme.palette.info,\n success: theme.palette.success,\n warning: theme.palette.warning,\n danger: theme.palette.error,\n primary: theme.palette.primary,\n secondary: theme.palette.secondary,\n neutral: {\n main: theme.palette.grey[500] || '#9E9E9E',\n light: theme.palette.grey[300] || '#E0E0E0',\n dark: theme.palette.grey[700] || '#616161',\n },\n };\n\n return colorMap[variant] || theme.palette.info;\n};\n\nexport const getVariantIcon = (variant: string) => {\n const iconMap: Record<string, React.ReactNode> = {\n info: <Info />,\n success: <CheckCircle />,\n warning: <Warning />,\n danger: <Error />,\n };\n\n return iconMap[variant];\n};\n\n// The palette shape getColorFromTheme returns — a main plus optional light/dark,\n// which is narrower than MUI's PaletteColor.\nexport type AlertPalette = { main: string; light?: string; dark?: string };\n\n/** The four semantic variants, which differ only in which palette they read. */\nconst SEMANTIC_VARIANTS = new Set(['info', 'success', 'warning', 'danger']);\n\n/**\n * The room the message is given — padding, the stack's rhythm, and where the\n * icon and the close button sit relative to it.\n *\n * Extracted for the same reason {@link alertVariantStyles} and\n * {@link alertEmphasisStyles} were: `styled()`'s callback is one function, and\n * every block written inline is counted against its length by the complexity\n * gate. Keeping the layout here means the callback assembles four named pieces\n * instead of carrying all of them.\n */\nexport const alertLayoutStyles = (\n theme: Theme,\n colorPalette: AlertPalette,\n animate: boolean | undefined,\n): CSSObject => ({\n // ROOM TO READ.\n //\n // MUI's `6px 16px` is sized for one line of text and nothing else. This Alert\n // routinely carries three things stacked — a sentence, a smaller explanation,\n // then a control — and at 6px they touched top and bottom and ran together\n // vertically, so the whole card read as one dense block instead of as a\n // message with parts. The generosity is what makes the structure legible; it\n // is not decoration.\n //\n // Padding stays overridable by an `sx` (a full-bleed strip legitimately wants\n // it tight), because this is a default rather than a rule.\n padding: theme.spacing(1.75, 2),\n\n '.MuiAlert-message': {\n display: 'flex',\n flexDirection: 'column',\n // 0.5 put a title, its explanation and a button 4px apart, which reads as a\n // spacing bug rather than as a group. 1 separates the lines; the extra\n // margin below goes to whatever CONTROL sits at the end, because the gap\n // between prose and a thing you press has to be bigger than the gap between\n // two lines of prose or the button looks like part of the text.\n gap: theme.spacing(1),\n fontSize: '0.95rem',\n lineHeight: 1.5,\n // No padding of its own — the root's is now doing that job, and MUI's\n // default `8px 0` on top of it would double the vertical space.\n padding: 0,\n // A CONTROL ON A TINTED PANEL NEEDS AN EDGE.\n //\n // `ghost` and `text` paint no background and no border — bare labels, which\n // works on white where the surrounding page is obviously not clickable.\n // Inside a coloured Alert it stops working: the label is one more coloured\n // phrase among several, and a \"Cancelar\" beside two lines of prose reads as\n // part of the prose.\n //\n // Only the BORDER is set, never the background or the colour, and that is\n // what makes it safe to apply to every button rather than just the bare\n // ones: a `solid` keeps its fill and its light label and gains a hairline\n // in the same hue, while a `ghost` gains the whole affordance.\n '.MuiButton-root': {\n marginTop: theme.spacing(0.5),\n border: `1px solid ${alpha(colorPalette.main, 0.45)}` },\n },\n\n '.MuiAlert-icon': {\n transition: 'transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n alignItems: 'center',\n // Clear of the words rather than nearly touching them, and aligned to the\n // FIRST line instead of centred on the whole block — an icon floating\n // halfway down a three-line message points at nothing.\n alignSelf: 'flex-start',\n marginRight: theme.spacing(1.75),\n paddingTop: theme.spacing(0.25),\n animation: animate ? `${iconRotate} 0.6s ease-out` : 'none' },\n\n // The close button, kept off the text it sits beside.\n '.MuiAlert-action': {\n alignItems: 'flex-start',\n paddingLeft: theme.spacing(2) },\n});\n\n/**\n * A semantic Alert's surface and ink.\n *\n * ## Why this is not `alpha(main, 0.1)`\n *\n * It used to be, four times over, with `color: main` for the text. Both halves\n * were wrong, and independently so.\n *\n * The fill was TRANSLUCENT. A 10% wash only reads as a banner when something\n * opaque is behind it, so the component silently depended on where a consumer\n * put it. Placed over content — a floating notice, an invite anchored above a\n * catalogue — the page came straight through and the sentence interleaved with\n * whatever it was over. That is not a faint banner; it is an unreadable one,\n * and nothing in the component said so.\n *\n * The ink was the SEVERITY HUE at body size. `#0288d1`, this library's info\n * blue, is 3.03:1 on white — under the 4.5:1 WCAG AA floor before any wash is\n * involved. So the text failed on a plain white page too, where the fill was\n * behaving exactly as intended.\n *\n * ## Why `lighten`/`darken` rather than a hand-picked pair\n *\n * These are the same transforms MUI's own `standard` Alert uses, at the same\n * ratios — the recipe this component overrode. Reusing it means an OPAQUE tint\n * with a dark ink of the same hue, contrast that holds on any surface because\n * it no longer depends on one, and a pairing already proven across MUI's\n * palette rather than eyeballed here. Both modes are handled: on a dark theme\n * the tint darkens and the ink lightens, which an alpha wash could never do\n * because it carries the seed's own lightness through unchanged.\n *\n * The border keeps an alpha — it is a hairline over the tint it belongs to, so\n * translucency there costs nothing and lets the edge follow the fill.\n */\nconst semanticSurface = (theme: Theme, colorPalette: AlertPalette): CSSObject => {\n const dark = theme.palette.mode === 'dark';\n return {\n backgroundColor: dark ? darken(colorPalette.main, 0.8) : lighten(colorPalette.main, 0.9),\n color: dark ? lighten(colorPalette.main, 0.6) : darken(colorPalette.main, 0.6),\n border: `1px solid ${alpha(colorPalette.main, 0.35)}`,\n '.MuiAlert-icon': {\n color: colorPalette.main,\n },\n };\n};\n\n// The six visual variants. Each block is spread in only when it matches, which\n// is how the original inline version read; keeping that shape here means the\n// styled() callback carries one branch instead of six. The four semantics were\n// four IDENTICAL copies of the same block — they now share one, so the next\n// change to a banner's surface cannot land on three of them.\nexport const alertVariantStyles = (\n theme: Theme,\n customVariant: string | undefined,\n colorPalette: AlertPalette,\n): CSSObject => ({\n...(customVariant !== undefined &&\n SEMANTIC_VARIANTS.has(customVariant) &&\n semanticSurface(theme, colorPalette)),\n\n...(customVariant === 'glass' && {\n // 85%, not 10%. This is the variant that is MEANT to be see-through, and it\n // was the same mistake in a costume: at 0.1 the blur had almost nothing to\n // sit on, so `glass` was not frosted, it was a window. A frosted pane has to\n // be mostly pane — the backdrop should be legible AS texture behind the\n // text, never as competition with it.\n backgroundColor: alpha(theme.palette.background.paper, 0.85),\n backdropFilter: 'blur(20px) saturate(180%)',\n WebkitBackdropFilter: 'blur(20px) saturate(180%)',\n border: `1px solid ${alpha(theme.palette.divider, 0.4)}`,\n color: theme.palette.text.primary,\n '.MuiAlert-icon': {\n color: theme.palette.primary.main,\n },\n // Safari before 18 and Firefox with the filter disabled paint the declared\n // alpha with nothing blurred behind it — the see-through banner this is\n // fixing. There is no degraded frost to fall back to, so it falls back to an\n // opaque pane: less pretty, still readable.\n '@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)))': {\n backgroundColor: theme.palette.background.paper,\n },\n}),\n\n...(customVariant === 'gradient' && {\n background: `linear-gradient(135deg, ${alpha(colorPalette.light || colorPalette.main, 0.9)}, ${alpha(colorPalette.dark || colorPalette.main, 0.9)})`,\n color: theme.palette.getContrastText(colorPalette.main),\n border: 'none',\n position: 'relative',\n overflow: 'hidden',\n '.MuiAlert-icon': {\n color: theme.palette.getContrastText(colorPalette.main),\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: '-1000px',\n width: '100%',\n height: '100%',\n background: `linear-gradient(90deg, transparent, ${alpha(theme.palette.common.white, 0.2)}, transparent)`,\n animation: `${shimmerAnimation} 3s infinite`,\n },\n '&:hover': {\n filter: 'brightness(1.1)',\n transform: 'translateY(-2px) scale(1.01)',\n },\n}),\n});\n\n// glow and pulse combine into three distinct looks, so the combinations are\n// spelled out rather than layered — layering them would let the glow-only shadow\n// leak into the glow+pulse case.\nexport const alertEmphasisStyles = (\n colorPalette: AlertPalette,\n glow: boolean,\n pulse: boolean,\n): CSSObject => ({\n...(glow &&\n !pulse && {\n boxShadow: `0 0 20px 5px ${alpha(colorPalette.main, 0.3)} !important`,\n filter: 'brightness(1.05)',\n }),\n\n// Pulse animation\n...(pulse &&\n !glow && {\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: colorPalette.main,\n opacity: 0.2,\n animation: `${pulseAnimation} 2s infinite`,\n pointerEvents: 'none',\n zIndex: -1,\n },\n }),\n\n// Both glow and pulse\n...(glow &&\n pulse && {\n position: 'relative',\n boxShadow: `0 0 20px 5px ${alpha(colorPalette.main, 0.3)} !important`,\n filter: 'brightness(1.05)',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: colorPalette.main,\n opacity: 0.2,\n animation: `${pulseAnimation} 2s infinite`,\n pointerEvents: 'none',\n zIndex: -1,\n },\n }),\n});\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/EmptyState/EmptyState.tsx"],"sourcesContent":["import AddIcon from '@mui/icons-material/Add';\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Link from '@mui/material/Link/index.js';\nimport Stack from '@mui/material/Stack/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type { EmptyStateProps } from './EmptyState.types';\n\ntype EmptyStateVariant = NonNullable<EmptyStateProps['variant']>;\n\nconst makeTestId =\n (dataTestId?: string) =>\n (suffix: string): string =>\n dataTestId ? `${dataTestId}-${suffix}` : `empty-state-${suffix}`;\n\ninterface ActionSpec {\n key: string;\n variant: 'contained' | 'outlined';\n onClick: () => void;\n label: string;\n icon?: React.ReactNode;\n}\n\n// The four buttons are one button with different props. Listing them keeps their\n// order — primary, create, secondary, refresh — visible in one place.\nconst actionsOf = (\n props: EmptyStateProps,\n refreshLabel: string,\n createLabel: string,\n): ActionSpec[] => {\n const { primaryAction, secondaryAction, onCreate, onRefresh } = props;\n const specs: ActionSpec[] = [];\n\n if (primaryAction) {\n specs.push({\n key: 'primary-action',\n variant: 'contained',\n onClick: primaryAction.onClick,\n label: primaryAction.label,\n });\n }\n if (onCreate) {\n specs.push({\n key: 'create-button',\n variant: 'contained',\n onClick: onCreate,\n label: createLabel,\n icon: <AddIcon />,\n });\n }\n if (secondaryAction) {\n specs.push({\n key: 'secondary-action',\n variant: 'outlined',\n onClick: secondaryAction.onClick,\n label: secondaryAction.label,\n });\n }\n if (onRefresh) {\n specs.push({\n key: 'refresh-button',\n variant: 'outlined',\n onClick: onRefresh,\n label: refreshLabel,\n icon: <RefreshIcon />,\n });\n }\n\n return specs;\n};\n\nconst Illustration: React.FC<{\n illustration: React.ReactNode;\n variant: EmptyStateVariant;\n testId: string;\n}> = ({ illustration, variant, testId }) => (\n <Box\n data-testid={testId}\n sx={{\n maxWidth: variant === 'illustrated' ? 240 : 120,\n width: '100%',\n height: 'auto',\n opacity: variant === 'minimal' ? 0.6 : 0.8,\n display: variant === 'minimal' ? 'none' : 'block',\n }}\n >\n {illustration}\n </Box>\n);\n\nconst Actions: React.FC<{\n specs: ActionSpec[];\n testId: (suffix: string) => string;\n}> = ({ specs, testId }) => {\n const theme = useTheme();\n\n return (\n <Stack\n direction={{ xs: 'column', sm: 'row' }}\n spacing={2}\n alignItems=\"center\"\n sx={{ mt: theme.spacing(2) }}\n >\n {specs.map((spec) => (\n <Button\n key={spec.key}\n variant={spec.variant}\n onClick={spec.onClick}\n startIcon={spec.icon}\n data-testid={testId(spec.key)}\n sx={{ minWidth: 120 }}\n >\n {spec.label}\n </Button>\n ))}\n </Stack>\n );\n};\n\nconst HelpLink: React.FC<{\n helpLink: NonNullable<EmptyStateProps['helpLink']>;\n testId: string;\n}> = ({ helpLink, testId }) => {\n const theme = useTheme();\n\n return (\n <Link\n href={helpLink.href}\n target={helpLink.external ? '_blank' : undefined}\n rel={helpLink.external ? 'noopener noreferrer' : undefined}\n data-testid={testId}\n sx={{\n mt: theme.spacing(1),\n color: theme.palette.primary.main,\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline',\n },\n }}\n >\n {helpLink.label}\n {helpLink.external && ' ↗'}\n </Link>\n );\n};\n\nconst Content: React.FC<{\n title: string;\n description?: string;\n titleId: string;\n testId: (suffix: string) => string;\n actions: ActionSpec[];\n showActions: boolean;\n helpLink?: EmptyStateProps['helpLink'];\n}> = ({ title, description, titleId, testId, actions, showActions, helpLink }) => {\n const theme = useTheme();\n\n return (\n <Stack spacing={2} alignItems=\"center\">\n <Typography\n id={titleId}\n variant=\"h6\"\n component=\"h3\"\n data-testid={testId('title')}\n sx={{\n fontWeight: theme.typography.fontWeightMedium,\n color: theme.palette.text.primary,\n maxWidth: 400,\n }}\n >\n {title}\n </Typography>\n\n {description && (\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n data-testid={testId('description')}\n sx={{\n maxWidth: 480,\n lineHeight: 1.6,\n }}\n >\n {description}\n </Typography>\n )}\n\n {showActions && <Actions specs={actions} testId={testId} />}\n\n {helpLink && <HelpLink helpLink={helpLink} testId={testId('help-link')} />}\n </Stack>\n );\n};\n\nexport const EmptyState: React.FC<EmptyStateProps> = React.memo((props) => {\n const {\n variant = 'default',\n title,\n description,\n illustration,\n helpLink,\n refreshLabel = 'Refresh',\n createLabel = 'Create New',\n className,\n dataTestId,\n } = props;\n const theme = useTheme();\n const titleId = React.useId();\n const testId = makeTestId(dataTestId);\n\n const actions = actionsOf(props, refreshLabel, createLabel);\n // The `action` variant reserves the action row even when nothing fills it.\n const showActions = variant === 'action' || actions.length > 0;\n\n return (\n <Box\n role=\"region\"\n aria-labelledby={titleId}\n className={className}\n data-testid={dataTestId || 'empty-state'}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n padding: theme.spacing(6),\n minHeight: 200,\n gap: theme.spacing(3),\n }}\n >\n {/* Illustration */}\n {illustration && (\n <Illustration\n illustration={illustration}\n variant={variant}\n testId={testId('icon')}\n />\n )}\n\n {/* Content */}\n <Content\n title={title}\n description={description}\n titleId={titleId}\n testId={testId}\n actions={actions}\n showActions={showActions}\n helpLink={helpLink}\n />\n </Box>\n );\n});\n\nEmptyState.displayName = 'EmptyState';\n\nexport default EmptyState;\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/typography/Paragraph/Paragraph.tsx"],"sourcesContent":["import type { Theme } from '@mui/material/styles/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { styled } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type { ParagraphProps } from './Paragraph.types';\n\nconst getColorFromTheme = (theme: Theme, color: string) => {\n if (color === 'neutral') {\n return theme.palette.text.primary;\n }\n\n const colorMap: Record<string, string> = {\n primary: theme.palette.primary.main,\n secondary: theme.palette.secondary.main,\n success: theme.palette.success.main,\n warning: theme.palette.warning.main,\n info: theme.palette.info.main,\n danger: theme.palette.error.main,\n };\n\n return colorMap[color] || theme.palette.text.primary;\n};\n\nconst StyledParagraph = styled(Typography, {\n shouldForwardProp: (prop) =>\n !['customVariant', 'customColor', 'customSize'].includes(prop as string),\n})<{\n customVariant?: string;\n customColor?: string;\n customSize?: string;\n}>(({ theme, customVariant = 'default', customColor = 'neutral', customSize = 'md' }) => {\n const textColor = getColorFromTheme(theme, customColor);\n\n // Size mapping\n const sizeMap = {\n xs: { fontSize: '0.75rem', lineHeight: 1.4 },\n sm: { fontSize: '0.875rem', lineHeight: 1.5 },\n md: { fontSize: '1rem', lineHeight: 1.6 },\n lg: { fontSize: '1.125rem', lineHeight: 1.6 },\n xl: { fontSize: '1.25rem', lineHeight: 1.7 },\n };\n\n const baseStyles = {\n fontFamily: theme.typography.body1.fontFamily,\n margin: '0 0 1em 0',\n transition: 'all 0.2s ease',\n ...sizeMap[customSize as keyof typeof sizeMap],\n };\n\n // Variant-specific styles\n const variantStyles = {\n default: {\n ...baseStyles,\n color: textColor,\n fontWeight: 400,\n },\n lead: {\n ...baseStyles,\n color: textColor,\n fontWeight: 400,\n fontSize:\n customSize === 'md' ? '1.125rem' : sizeMap[customSize as keyof typeof sizeMap]?.fontSize,\n lineHeight: 1.7,\n letterSpacing: '0.01em',\n },\n muted: {\n ...baseStyles,\n color: theme.palette.text.secondary,\n fontWeight: 400,\n opacity: 0.8,\n },\n small: {\n ...baseStyles,\n color: theme.palette.text.secondary,\n fontSize:\n customSize === 'md' ? '0.875rem' : sizeMap[customSize as keyof typeof sizeMap]?.fontSize,\n fontWeight: 400,\n lineHeight: 1.5,\n },\n };\n\n return variantStyles[customVariant as keyof typeof variantStyles] || variantStyles.default;\n});\n\nexport const Paragraph = React.forwardRef<globalThis.HTMLParagraphElement, ParagraphProps>(\n ({ variant = 'default', color = 'neutral', size = 'md', children, ...props }, ref) => (\n <StyledParagraph\n ref={ref}\n customVariant={variant}\n customColor={color}\n customSize={size}\n {...props}\n >\n {children}\n </StyledParagraph>\n ),\n);\n\nParagraph.displayName = 'Paragraph';"],"mappings":";AACA,OAAO,gBAAgB;AACvB,SAAS,cAAc;AACvB,OAAO,WAAW;AAoFZ;AAhFN,IAAM,oBAAoB,CAAC,OAAc,UAAkB;AACzD,MAAI,UAAU,WAAW;AACvB,WAAO,MAAM,QAAQ,KAAK;AAAA,EAC5B;AAEA,QAAM,WAAmC;AAAA,IACvC,SAAS,MAAM,QAAQ,QAAQ;AAAA,IAC/B,WAAW,MAAM,QAAQ,UAAU;AAAA,IACnC,SAAS,MAAM,QAAQ,QAAQ;AAAA,IAC/B,SAAS,MAAM,QAAQ,QAAQ;AAAA,IAC/B,MAAM,MAAM,QAAQ,KAAK;AAAA,IACzB,QAAQ,MAAM,QAAQ,MAAM;AAAA,EAC9B;AAEA,SAAO,SAAS,KAAK,KAAK,MAAM,QAAQ,KAAK;AAC/C;AAEA,IAAM,kBAAkB,OAAO,YAAY;AAAA,EACzC,mBAAmB,CAAC,SAClB,CAAC,CAAC,iBAAiB,eAAe,YAAY,EAAE,SAAS,IAAc;AAC3E,CAAC,EAIE,CAAC,EAAE,OAAO,gBAAgB,WAAW,cAAc,WAAW,aAAa,KAAK,MAAM;AACvF,QAAM,YAAY,kBAAkB,OAAO,WAAW;AAGtD,QAAM,UAAU;AAAA,IACd,IAAI,EAAE,UAAU,WAAW,YAAY,IAAI;AAAA,IAC3C,IAAI,EAAE,UAAU,YAAY,YAAY,IAAI;AAAA,IAC5C,IAAI,EAAE,UAAU,QAAQ,YAAY,IAAI;AAAA,IACxC,IAAI,EAAE,UAAU,YAAY,YAAY,IAAI;AAAA,IAC5C,IAAI,EAAE,UAAU,WAAW,YAAY,IAAI;AAAA,EAC7C;AAEA,QAAM,aAAa;AAAA,IACjB,YAAY,MAAM,WAAW,MAAM;AAAA,IACnC,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,GAAG,QAAQ,UAAkC;AAAA,EAC/C;AAGA,QAAM,gBAAgB;AAAA,IACpB,SAAS;AAAA,MACP,GAAG;AAAA,MACH,OAAO;AAAA,MACP,YAAY;AAAA,IACd;AAAA,IACA,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,UACE,eAAe,OAAO,aAAa,QAAQ,UAAkC,GAAG;AAAA,MAClF,YAAY;AAAA,MACZ,eAAe;AAAA,IACjB;AAAA,IACA,OAAO;AAAA,MACL,GAAG;AAAA,MACH,OAAO,MAAM,QAAQ,KAAK;AAAA,MAC1B,YAAY;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,OAAO;AAAA,MACL,GAAG;AAAA,MACH,OAAO,MAAM,QAAQ,KAAK;AAAA,MAC1B,UACE,eAAe,OAAO,aAAa,QAAQ,UAAkC,GAAG;AAAA,MAClF,YAAY;AAAA,MACZ,YAAY;AAAA,IACd;AAAA,EACF;AAEA,SAAO,cAAc,aAA2C,KAAK,cAAc;AACrF,CAAC;AAEM,IAAM,YAAY,MAAM;AAAA,EAC7B,CAAC,EAAE,UAAU,WAAW,QAAQ,WAAW,OAAO,MAAM,UAAU,GAAG,MAAM,GAAG,QAC1E;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,eAAe;AAAA,MACf,aAAa;AAAA,MACb,YAAY;AAAA,MACX,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEN;AAEA,UAAU,cAAc;","names":[]}
@@ -1,207 +0,0 @@
1
- import {
2
- alertEmphasisStyles,
3
- alertLayoutStyles,
4
- alertVariantStyles,
5
- fadeInScale,
6
- getColorFromTheme,
7
- getVariantIcon
8
- } from "./chunk-5ERH4OIK.js";
9
-
10
- // src/components/data-display/Alert/Alert.tsx
11
- import Close from "@mui/icons-material/Close";
12
- import MuiAlert from "@mui/material/Alert/index.js";
13
- import AlertTitle from "@mui/material/AlertTitle/index.js";
14
- import Box from "@mui/material/Box/index.js";
15
- import Collapse from "@mui/material/Collapse/index.js";
16
- import IconButton from "@mui/material/IconButton/index.js";
17
- import { alpha, styled } from "@mui/material/styles/index.js";
18
- import React from "react";
19
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
20
- var StyledAlert = styled(MuiAlert, {
21
- shouldForwardProp: (prop) => !["customVariant", "customColor", "glow", "pulse", "animate"].includes(prop)
22
- })(({ theme, customVariant, customColor, glow, pulse, animate }) => {
23
- const colorPalette = getColorFromTheme(theme, customColor || customVariant || "info");
24
- return {
25
- borderRadius: theme.spacing(1.5),
26
- transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
27
- position: "relative",
28
- overflow: "hidden",
29
- animation: animate ? `${fadeInScale} 0.3s ease-out` : "none",
30
- willChange: "transform, opacity",
31
- ...alertLayoutStyles(theme, colorPalette, animate),
32
- // Hover effects
33
- "&:hover": {
34
- transform: "translateY(-3px) scale(1.01)",
35
- boxShadow: `0 8px 20px ${alpha(colorPalette.main, 0.2)}`,
36
- transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
37
- ".MuiAlert-icon": {
38
- transform: "scale(1.15) rotate(10deg)"
39
- },
40
- "&::before": {
41
- opacity: 1
42
- }
43
- },
44
- // Active state
45
- "&:active": {
46
- transform: "translateY(-1px) scale(0.99)",
47
- transition: "transform 0.1s ease"
48
- },
49
- // Focus styles for accessibility
50
- "&:focus-within": {
51
- outline: `3px solid ${alpha(colorPalette.main, 0.5)}`,
52
- outlineOffset: "3px",
53
- boxShadow: `0 0 0 6px ${alpha(colorPalette.main, 0.1)}`,
54
- transition: "all 0.2s ease"
55
- },
56
- ...alertVariantStyles(theme, customVariant, colorPalette),
57
- ...alertEmphasisStyles(colorPalette, Boolean(glow), Boolean(pulse))
58
- };
59
- });
60
- var ALERT_DEFAULTS = {
61
- variant: "info",
62
- glow: false,
63
- pulse: false,
64
- showIcon: true,
65
- closable: false,
66
- animate: true,
67
- role: "alert",
68
- "aria-atomic": "true",
69
- "data-testid": "alert"
70
- };
71
- var definedProps = (props) => Object.fromEntries(
72
- Object.entries(props).filter(([, value]) => value !== void 0)
73
- );
74
- var testIdFor = (base, suffix) => base ? `${base}-${suffix}` : `alert-${suffix}`;
75
- var MUI_SEVERITY = {
76
- danger: "error",
77
- glass: "info",
78
- gradient: "info"
79
- };
80
- var toMuiSeverity = (variant) => MUI_SEVERITY[variant] ?? variant;
81
- var AlertContent = ({ title, description, dataTestId, children }) => /* @__PURE__ */ jsxs(Fragment, { children: [
82
- title && /* @__PURE__ */ jsx(
83
- AlertTitle,
84
- {
85
- "data-testid": testIdFor(dataTestId, "title"),
86
- sx: {
87
- fontWeight: 600,
88
- fontSize: "1.05rem",
89
- marginBottom: description ? 0.5 : 0,
90
- wordWrap: "break-word",
91
- overflowWrap: "break-word",
92
- wordBreak: "break-word"
93
- },
94
- children: title
95
- }
96
- ),
97
- description && /* @__PURE__ */ jsx(
98
- Box,
99
- {
100
- component: "div",
101
- "data-testid": testIdFor(dataTestId, "message"),
102
- sx: {
103
- opacity: 0.9,
104
- fontSize: "0.925rem",
105
- wordWrap: "break-word",
106
- overflowWrap: "break-word",
107
- wordBreak: "break-word"
108
- },
109
- children: description
110
- }
111
- ),
112
- children
113
- ] });
114
- var AlertCloseButton = ({
115
- dataTestId,
116
- label,
117
- onClose
118
- }) => /* @__PURE__ */ jsx(
119
- IconButton,
120
- {
121
- "data-testid": testIdFor(dataTestId, "close"),
122
- "aria-label": label,
123
- color: "inherit",
124
- size: "small",
125
- onClick: onClose,
126
- sx: (theme) => ({
127
- transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
128
- opacity: 0.7,
129
- "&:hover": {
130
- transform: "rotate(90deg) scale(1.1)",
131
- opacity: 1,
132
- backgroundColor: alpha(theme.palette.action.hover, 0.1)
133
- },
134
- "&:focus": {
135
- opacity: 1,
136
- outline: "none",
137
- backgroundColor: alpha(theme.palette.action.focus, 0.1)
138
- }
139
- }),
140
- children: /* @__PURE__ */ jsx(Close, { fontSize: "inherit" })
141
- }
142
- );
143
- function dismissButton(props, dataTestId, onClose) {
144
- if (!props.closable) return null;
145
- return /* @__PURE__ */ jsx(AlertCloseButton, { dataTestId, label: props.closeLabel, onClose });
146
- }
147
- var Alert = React.forwardRef(
148
- (alertProps, ref) => {
149
- const {
150
- variant,
151
- color,
152
- glow,
153
- pulse,
154
- icon,
155
- showIcon,
156
- onClose,
157
- title,
158
- description,
159
- children,
160
- animate,
161
- role,
162
- "aria-atomic": ariaAtomic,
163
- "data-testid": dataTestId,
164
- ...props
165
- } = { ...ALERT_DEFAULTS, ...definedProps(alertProps) };
166
- const ariaLive = alertProps["aria-live"] ?? (variant === "danger" ? "assertive" : "polite");
167
- const [open, setOpen] = React.useState(true);
168
- const [isClosing, setIsClosing] = React.useState(false);
169
- const handleClose = () => {
170
- setIsClosing(true);
171
- window.setTimeout(() => {
172
- setOpen(false);
173
- onClose?.();
174
- }, 200);
175
- };
176
- const severity = toMuiSeverity(variant);
177
- const displayIcon = showIcon ? /* @__PURE__ */ jsx(Box, { component: "span", "data-testid": testIdFor(dataTestId, "icon"), children: icon || getVariantIcon(variant) }) : false;
178
- const content = /* @__PURE__ */ jsx(AlertContent, { title, description, dataTestId, children });
179
- return /* @__PURE__ */ jsx(Collapse, { in: open && !isClosing, timeout: 300, children: /* @__PURE__ */ jsx(
180
- StyledAlert,
181
- {
182
- ref,
183
- "data-testid": dataTestId || "alert",
184
- severity,
185
- customVariant: variant,
186
- customColor: color,
187
- glow,
188
- pulse,
189
- animate,
190
- icon: displayIcon,
191
- role,
192
- "aria-live": ariaLive,
193
- "aria-atomic": ariaAtomic,
194
- tabIndex: 0,
195
- action: dismissButton(alertProps, dataTestId, handleClose),
196
- ...props,
197
- children: content
198
- }
199
- ) });
200
- }
201
- );
202
- Alert.displayName = "Alert";
203
-
204
- export {
205
- Alert
206
- };
207
- //# sourceMappingURL=chunk-C6AZDXEE.js.map