@12-apps/ui 6.19.0 → 6.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (698) hide show
  1. package/NATIVE.md +7 -2
  2. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +8 -7
  3. package/dist/_internal/components/data-display/Avatar/Avatar.base.js +1 -0
  4. package/dist/_internal/components/data-display/Avatar/Avatar.base.js.map +1 -0
  5. package/dist/_internal/components/data-display/Avatar/Avatar.helpers.js +14 -0
  6. package/dist/_internal/components/data-display/Avatar/Avatar.helpers.js.map +1 -0
  7. package/dist/_internal/components/data-display/Avatar/Avatar.js +8 -2
  8. package/dist/_internal/components/data-display/Avatar/Avatar.metrics.js +52 -0
  9. package/dist/_internal/components/data-display/Avatar/Avatar.metrics.js.map +1 -0
  10. package/dist/_internal/components/data-display/Avatar/Avatar.view.js +6 -1
  11. package/dist/_internal/components/data-display/Badge/Badge.animations.js +6 -1
  12. package/dist/_internal/components/data-display/Badge/Badge.base.js +1 -0
  13. package/dist/_internal/components/data-display/Badge/Badge.base.js.map +1 -0
  14. package/dist/_internal/components/data-display/Badge/Badge.helpers.js +3 -1
  15. package/dist/_internal/components/data-display/Badge/Badge.js +12 -6
  16. package/dist/_internal/components/data-display/Badge/Badge.metrics.js +64 -0
  17. package/dist/_internal/components/data-display/Badge/Badge.metrics.js.map +1 -0
  18. package/dist/_internal/components/data-display/Badge/Badge.styles.js +8 -3
  19. package/dist/_internal/components/data-display/Badge/Badge.variants.js +6 -1
  20. package/dist/_internal/components/data-display/Badge/BadgeContent.js +9 -4
  21. package/dist/_internal/components/data-display/CardKit/CardKebab.js +3 -3
  22. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +4 -4
  23. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +4 -4
  24. package/dist/_internal/components/data-display/Carousel/Carousel.js +2 -2
  25. package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
  26. package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
  27. package/dist/_internal/components/data-display/Chart/chart-renderers.js +2 -2
  28. package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
  29. package/dist/_internal/components/data-display/Chip/Chip.base.js +1 -0
  30. package/dist/_internal/components/data-display/Chip/Chip.base.js.map +1 -0
  31. package/dist/_internal/components/data-display/Chip/Chip.helpers.js +3 -9
  32. package/dist/_internal/components/data-display/Chip/Chip.js +4 -2
  33. package/dist/_internal/components/data-display/Chip/Chip.metrics.js +32 -0
  34. package/dist/_internal/components/data-display/Chip/Chip.metrics.js.map +1 -0
  35. package/dist/_internal/components/data-display/Chip/Chip.styles.js +16 -0
  36. package/dist/_internal/components/data-display/Chip/Chip.styles.js.map +1 -0
  37. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +3 -3
  38. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +43 -43
  39. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +54 -54
  40. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +3 -3
  41. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +5 -5
  42. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +5 -5
  43. package/dist/_internal/components/data-display/DataViews/base-card.js +4 -3
  44. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +5 -4
  45. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +1 -1
  46. package/dist/_internal/components/data-display/DataViews/base-list-card.js +7 -6
  47. package/dist/_internal/components/data-display/DataViews/card-surface.js +7 -2
  48. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +15 -15
  49. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +4 -4
  50. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +4 -4
  51. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +3 -3
  52. package/dist/_internal/components/data-display/DataViews/data-views-export.js +3 -3
  53. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +16 -16
  54. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +9 -9
  55. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +3 -3
  56. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +40 -40
  57. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +20 -20
  58. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +4 -4
  59. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +7 -7
  60. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +3 -3
  61. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +3 -3
  62. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +12 -12
  63. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +13 -13
  64. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +11 -11
  65. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +3 -3
  66. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +1 -1
  67. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +6 -6
  68. package/dist/_internal/components/data-display/DataViews/use-saved-views-controller.js +2 -2
  69. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +2 -2
  70. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +3 -3
  71. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +6 -4
  72. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +5 -5
  73. package/dist/_internal/components/data-display/LoadingState/LoadingState.js +5 -4
  74. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
  75. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +4 -4
  76. package/dist/_internal/components/data-display/Progress/Progress.base.js +1 -0
  77. package/dist/_internal/components/data-display/Progress/Progress.base.js.map +1 -0
  78. package/dist/_internal/components/data-display/Progress/Progress.helpers.js +5 -1
  79. package/dist/_internal/components/data-display/Progress/Progress.js +8 -3
  80. package/dist/_internal/components/data-display/Progress/Progress.metrics.js +52 -0
  81. package/dist/_internal/components/data-display/Progress/Progress.metrics.js.map +1 -0
  82. package/dist/_internal/components/data-display/Progress/Progress.styles.js +6 -1
  83. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +3 -3
  84. package/dist/_internal/components/data-display/Sheet/Sheet.js +2 -2
  85. package/dist/_internal/components/data-display/StatCard/StatCard.js +6 -4
  86. package/dist/_internal/components/data-display/Table/Table.js +3 -3
  87. package/dist/_internal/components/data-display/index.js +63 -56
  88. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +3 -3
  89. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
  90. package/dist/_internal/components/feedback/index.js +8 -8
  91. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +3 -3
  92. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +7 -7
  93. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +3 -3
  94. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
  95. package/dist/_internal/components/form/Button/Button.js +2 -2
  96. package/dist/_internal/components/form/Calendar/Calendar.js +4 -4
  97. package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
  98. package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
  99. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +5 -5
  100. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +3 -3
  101. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +2 -2
  102. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +10 -10
  103. package/dist/_internal/components/form/CepField/CepField.js +3 -3
  104. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +3 -3
  105. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +7 -7
  106. package/dist/_internal/components/form/Input/Input.js +2 -2
  107. package/dist/_internal/components/form/Menubar/Menubar.js +2 -2
  108. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +2 -2
  109. package/dist/_internal/components/form/index.js +28 -28
  110. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +11 -11
  111. package/dist/_internal/components/form/total-form/Fields/CepField.js +4 -4
  112. package/dist/_internal/components/form/total-form/Fields/TextField.js +3 -3
  113. package/dist/_internal/components/form/total-form/Fields/index.js +21 -21
  114. package/dist/_internal/components/form/total-form/SubmitButton.js +3 -3
  115. package/dist/_internal/components/index.js +125 -118
  116. package/dist/_internal/components/layout/Container/Container.js +2 -2
  117. package/dist/_internal/components/layout/Container/Container.metrics.js +3 -1
  118. package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +2 -2
  119. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +4 -4
  120. package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +2 -2
  121. package/dist/_internal/components/layout/Skeleton/Skeleton.base.js +1 -0
  122. package/dist/_internal/components/layout/Skeleton/Skeleton.base.js.map +1 -0
  123. package/dist/_internal/components/layout/Skeleton/Skeleton.helpers.js +5 -3
  124. package/dist/_internal/components/layout/Skeleton/Skeleton.js +5 -3
  125. package/dist/_internal/components/layout/Skeleton/Skeleton.metrics.js +36 -0
  126. package/dist/_internal/components/layout/Skeleton/Skeleton.metrics.js.map +1 -0
  127. package/dist/_internal/components/layout/Skeleton/Skeleton.styles.js +2 -1
  128. package/dist/_internal/components/layout/index.js +18 -17
  129. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +5 -5
  130. package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +2 -2
  131. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +4 -4
  132. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +2 -2
  133. package/dist/_internal/components/navigation/Pagination/Pagination.js +2 -2
  134. package/dist/_internal/components/navigation/Tabs/Tabs.js +2 -2
  135. package/dist/_internal/components/navigation/index.js +16 -16
  136. package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +2 -2
  137. package/dist/_internal/components/utility/index.js +2 -2
  138. package/dist/_internal/icons/Icon.js +2 -2
  139. package/dist/_internal/icons/paths.generated.js +1 -1
  140. package/dist/_internal/platform/animation.js +31 -0
  141. package/dist/_internal/platform/animation.js.map +1 -0
  142. package/dist/_internal/platform/web-keys.js +10 -0
  143. package/dist/_internal/platform/web-keys.js.map +1 -0
  144. package/dist/_internal/social-login-button/social-login-button.js +3 -3
  145. package/dist/_internal/tokens/mui-type.js +2 -1
  146. package/dist/_internal/tokens/mui-type.js.map +1 -1
  147. package/dist/_internal/user-avatar/user-avatar.js +7 -5
  148. package/dist/charts.js +11 -11
  149. package/dist/{chunk-P7FQUGED.js → chunk-23FCBIUN.js} +8 -8
  150. package/dist/{chunk-SL4NFGOL.js → chunk-24BUCMQA.js} +4 -4
  151. package/dist/{chunk-4SXZSSVV.js → chunk-2EKALM6P.js} +3 -3
  152. package/dist/{chunk-ZRFRU545.js → chunk-2ZDTGI5V.js} +7 -7
  153. package/dist/{chunk-HR7YTBR7.js → chunk-3AOOI2NR.js} +4 -4
  154. package/dist/chunk-3ZVUNSFF.js +32 -0
  155. package/dist/chunk-3ZVUNSFF.js.map +1 -0
  156. package/dist/{chunk-KKYW3LU7.js → chunk-47UD6DZ4.js} +2 -2
  157. package/dist/{chunk-ZOUWHGV3.js → chunk-4MGFUPQT.js} +4 -4
  158. package/dist/{chunk-LYNJJV2X.js → chunk-4SQFO4GW.js} +58 -40
  159. package/dist/chunk-4SQFO4GW.js.map +1 -0
  160. package/dist/{chunk-4FRZDSRD.js → chunk-4WK2RTVY.js} +3 -3
  161. package/dist/{chunk-HAFE43QJ.js → chunk-5JEOLUWJ.js} +6 -2
  162. package/dist/chunk-5JEOLUWJ.js.map +1 -0
  163. package/dist/{chunk-LDE4ELB5.js → chunk-5ZF3VASA.js} +7 -7
  164. package/dist/{chunk-JE6RZ5L6.js → chunk-5ZOJLYD2.js} +4 -4
  165. package/dist/{chunk-MMZAGB64.js → chunk-6C5D6O3D.js} +4 -2
  166. package/dist/chunk-6C5D6O3D.js.map +1 -0
  167. package/dist/{chunk-E5ZHW4I5.js → chunk-6IUTT6BK.js} +3 -3
  168. package/dist/{chunk-WPR2HS5B.js → chunk-74EZ565M.js} +8 -8
  169. package/dist/{chunk-BVZVH3ZN.js → chunk-74OZ5KVR.js} +5 -5
  170. package/dist/{chunk-PMS3H3OO.js → chunk-76GZ55IC.js} +7 -7
  171. package/dist/{chunk-QIV73V2X.js → chunk-7BYFC2MR.js} +36 -28
  172. package/dist/chunk-7BYFC2MR.js.map +1 -0
  173. package/dist/{chunk-DLFOEXUP.js → chunk-7EESF76V.js} +2 -2
  174. package/dist/{chunk-HKZHEK3Z.js → chunk-7JWXLDRH.js} +3 -3
  175. package/dist/{chunk-OR7UH2ZQ.js → chunk-7P2HZLEG.js} +3 -3
  176. package/dist/{chunk-6DXYCXH4.js → chunk-7RZ4WOQW.js} +2 -2
  177. package/dist/{chunk-EMNGIYH6.js → chunk-7TZ6OC5T.js} +5 -5
  178. package/dist/{chunk-HXYXDQ7U.js → chunk-7WDPC46N.js} +4 -2
  179. package/dist/chunk-7WDPC46N.js.map +1 -0
  180. package/dist/{chunk-CDJPDZCA.js → chunk-AEGX66N7.js} +2 -2
  181. package/dist/{chunk-65DLYC4S.js → chunk-AVGTTWTE.js} +4 -4
  182. package/dist/{chunk-C6XESZ3R.js → chunk-B2A4DG77.js} +6 -6
  183. package/dist/{chunk-VOOPGAQO.js → chunk-B7BZAIHL.js} +2 -2
  184. package/dist/{chunk-DZN3JF5E.js → chunk-BBC4KT5G.js} +4 -4
  185. package/dist/chunk-BF4FYOAR.js +23 -0
  186. package/dist/chunk-BF4FYOAR.js.map +1 -0
  187. package/dist/{chunk-FWCUELBU.js → chunk-BILE3A7F.js} +2 -2
  188. package/dist/{chunk-UEJQQVP2.js → chunk-BLT5ZBVL.js} +4 -4
  189. package/dist/chunk-BRMGHMYB.js +45 -0
  190. package/dist/chunk-BRMGHMYB.js.map +1 -0
  191. package/dist/{chunk-ISSJNFJV.js → chunk-C52BELLW.js} +2 -2
  192. package/dist/{chunk-BPYPUEM5.js → chunk-CZJLWCEG.js} +2 -2
  193. package/dist/{chunk-WZUNBSS7.js → chunk-DVUPIVI2.js} +4 -4
  194. package/dist/chunk-E46PG577.js +78 -0
  195. package/dist/chunk-E46PG577.js.map +1 -0
  196. package/dist/{chunk-L6KEVPXN.js → chunk-E4FGKZID.js} +20 -9
  197. package/dist/chunk-E4FGKZID.js.map +1 -0
  198. package/dist/{chunk-EXJBPKGW.js → chunk-EGRFMPGD.js} +4 -4
  199. package/dist/{chunk-XFUNJYFT.js → chunk-EPNUVSNK.js} +7 -7
  200. package/dist/{chunk-H2EQVMU3.js → chunk-EX3PSZLV.js} +2 -2
  201. package/dist/{chunk-4Q7HWRR2.js → chunk-EZSEAYYT.js} +52 -72
  202. package/dist/chunk-EZSEAYYT.js.map +1 -0
  203. package/dist/{chunk-LIOVN5IM.js → chunk-F2DOTCF3.js} +2 -2
  204. package/dist/chunk-FAITHWIO.js +73 -0
  205. package/dist/chunk-FAITHWIO.js.map +1 -0
  206. package/dist/{chunk-64IEKEMQ.js → chunk-FGLV6BXQ.js} +4 -4
  207. package/dist/{chunk-L65LF6LN.js → chunk-FP4R47TM.js} +2 -2
  208. package/dist/{chunk-NQHOHQCY.js → chunk-FPWB5ILF.js} +16 -8
  209. package/dist/chunk-FPWB5ILF.js.map +1 -0
  210. package/dist/{chunk-7AR2R7TV.js → chunk-G5ZVD5IJ.js} +4 -4
  211. package/dist/{chunk-SHQWIDD5.js → chunk-GJQYM3PM.js} +4 -4
  212. package/dist/{chunk-7WL24VNI.js → chunk-HDNK7BAX.js} +5 -5
  213. package/dist/{chunk-X5MPHXG5.js → chunk-HEG7JIBM.js} +4 -4
  214. package/dist/{chunk-LLABVZM3.js → chunk-HEK4LQT6.js} +13 -7
  215. package/dist/chunk-HEK4LQT6.js.map +1 -0
  216. package/dist/{chunk-HKFMPEXJ.js → chunk-HI2OFZSZ.js} +17 -10
  217. package/dist/chunk-HI2OFZSZ.js.map +1 -0
  218. package/dist/{chunk-ZIOCRSHU.js → chunk-HSAH5QUQ.js} +3 -3
  219. package/dist/{chunk-B443IIQG.js → chunk-IE7ISTLQ.js} +4 -4
  220. package/dist/{chunk-NFHS77NE.js → chunk-IH4CX43Q.js} +2 -2
  221. package/dist/{chunk-72UYVJBQ.js → chunk-IJIT5HQP.js} +2 -2
  222. package/dist/{chunk-KPQAPQH6.js → chunk-J2KSG754.js} +10 -8
  223. package/dist/chunk-J2KSG754.js.map +1 -0
  224. package/dist/{chunk-AP4FLCLA.js → chunk-J54WH74M.js} +4 -4
  225. package/dist/{chunk-5HOJSVQH.js → chunk-JB7JE4QZ.js} +2 -2
  226. package/dist/{chunk-QJJUTBKZ.js → chunk-KQ74QU55.js} +2 -2
  227. package/dist/chunk-KU6VHNRV.js +68 -0
  228. package/dist/chunk-KU6VHNRV.js.map +1 -0
  229. package/dist/chunk-KVEHH4SA.js +85 -0
  230. package/dist/chunk-KVEHH4SA.js.map +1 -0
  231. package/dist/{chunk-YLDS5FOQ.js → chunk-KZSKI2R3.js} +2 -2
  232. package/dist/{chunk-IIOEQRXX.js → chunk-LAHDFBDE.js} +2 -2
  233. package/dist/{chunk-BUDXR3EV.js → chunk-LKVIZNUM.js} +5 -5
  234. package/dist/{chunk-OAXAF4VY.js → chunk-LMJBINWN.js} +12 -12
  235. package/dist/{chunk-SFAP5EH5.js → chunk-LUMF63BM.js} +4 -4
  236. package/dist/{chunk-KADJNWTQ.js → chunk-LZRURORY.js} +3 -3
  237. package/dist/{chunk-CLNTJM3F.js → chunk-M7OHXNLF.js} +2 -2
  238. package/dist/{chunk-UXQW6ZIN.js → chunk-MBYO2F4Y.js} +5 -5
  239. package/dist/{chunk-ZHEJLUCX.js → chunk-MHV5Y5MR.js} +30 -17
  240. package/dist/chunk-MHV5Y5MR.js.map +1 -0
  241. package/dist/{chunk-MCRIT46W.js → chunk-MY5VNNSP.js} +4 -4
  242. package/dist/{chunk-XELVDPKL.js → chunk-NFAKRI4S.js} +4 -4
  243. package/dist/{chunk-KSF7TLXH.js → chunk-NHSMLVNC.js} +6 -6
  244. package/dist/{chunk-ES2RN7YV.js → chunk-NRUYYGDZ.js} +2 -2
  245. package/dist/{chunk-ZGEBIC5X.js → chunk-OLVZ6TOV.js} +13 -9
  246. package/dist/chunk-OLVZ6TOV.js.map +1 -0
  247. package/dist/{chunk-MQUU2XZB.js → chunk-OQFSYMHJ.js} +2 -2
  248. package/dist/{chunk-M3RIC6JI.js → chunk-OQXOYHIV.js} +4 -4
  249. package/dist/{chunk-PC3ZFERM.js → chunk-PC5FFEIY.js} +2 -2
  250. package/dist/{chunk-SOHDPFOB.js → chunk-PHCSPHDH.js} +2 -2
  251. package/dist/{chunk-OZWQNFG6.js → chunk-PODGTNXS.js} +3 -3
  252. package/dist/{chunk-IPE5FFFD.js → chunk-PUBPZOQJ.js} +2 -2
  253. package/dist/{chunk-GBFGZJB5.js → chunk-Q4NOI2CR.js} +5 -5
  254. package/dist/{chunk-IRDGC7FK.js → chunk-QZWKC3AP.js} +13 -7
  255. package/dist/chunk-QZWKC3AP.js.map +1 -0
  256. package/dist/{chunk-GOWBYHYW.js → chunk-R6SBP5M5.js} +4 -4
  257. package/dist/{chunk-DTKMBI7B.js → chunk-R7MX5KPJ.js} +4 -4
  258. package/dist/{chunk-NECUCG2S.js → chunk-RQDN4BN5.js} +14 -14
  259. package/dist/{chunk-5SYD23V4.js → chunk-SKZHOWTS.js} +4 -4
  260. package/dist/{chunk-Y6KPZQPI.js → chunk-SOCKK67R.js} +4 -4
  261. package/dist/{chunk-GCJLMX63.js → chunk-VCTKJHXD.js} +2 -2
  262. package/dist/{chunk-QZPNQWS2.js → chunk-VEFDL77X.js} +2 -2
  263. package/dist/{chunk-WEH5TCPE.js → chunk-VJFH2AXT.js} +8 -8
  264. package/dist/{chunk-S7HRED4D.js → chunk-VLHGBFR6.js} +3 -3
  265. package/dist/{chunk-RLC46NIW.js → chunk-VMNSGE2G.js} +3 -1
  266. package/dist/chunk-VMNSGE2G.js.map +1 -0
  267. package/dist/{chunk-HP2ODXNA.js → chunk-VR5HDUBK.js} +2 -2
  268. package/dist/{chunk-RBGOGTT2.js → chunk-W2UTDN4T.js} +4 -4
  269. package/dist/{chunk-N4WANJI3.js → chunk-WBVHRLIS.js} +4 -4
  270. package/dist/{chunk-XXJRT6BP.js → chunk-WMALDOF5.js} +4 -4
  271. package/dist/{chunk-MHFJBNDP.js → chunk-WO52KYSU.js} +8 -8
  272. package/dist/{chunk-ZBOFBRZC.js → chunk-WX7VWW3W.js} +2 -2
  273. package/dist/{chunk-J4W4TQPC.js → chunk-X24P3ZYW.js} +6 -6
  274. package/dist/{chunk-JZT5XP23.js → chunk-YBVKLJAL.js} +8 -3
  275. package/dist/{chunk-JZT5XP23.js.map → chunk-YBVKLJAL.js.map} +1 -1
  276. package/dist/{chunk-X2J6MRJW.js → chunk-YFHIESMD.js} +2 -2
  277. package/dist/{chunk-72NOM3O2.js → chunk-YK2PETUP.js} +2 -2
  278. package/dist/{chunk-CRNQVWIT.js → chunk-Z4GWXTZV.js} +4 -4
  279. package/dist/{chunk-SG6VULKS.js → chunk-ZEBJT5JZ.js} +3 -3
  280. package/dist/chunk-ZEG2LNBY.js +68 -0
  281. package/dist/chunk-ZEG2LNBY.js.map +1 -0
  282. package/dist/{chunk-JZKOJZ6V.js → chunk-ZOW2CCMO.js} +26 -25
  283. package/dist/chunk-ZOW2CCMO.js.map +1 -0
  284. package/dist/{chunk-3HWL4AW4.js → chunk-ZTF5C2GA.js} +22 -10
  285. package/dist/chunk-ZTF5C2GA.js.map +1 -0
  286. package/dist/data-display/AsyncStateContainer.js +8 -7
  287. package/dist/data-display/Avatar.js +8 -2
  288. package/dist/data-display/Badge.js +12 -6
  289. package/dist/data-display/CardKit.js +7 -7
  290. package/dist/data-display/Carousel.js +2 -2
  291. package/dist/data-display/Chart.js +11 -11
  292. package/dist/data-display/Chip.js +4 -2
  293. package/dist/data-display/DataGrid.js +3 -3
  294. package/dist/data-display/DataViews.js +66 -65
  295. package/dist/data-display/EmptyState.js +2 -2
  296. package/dist/data-display/HoverCard.js +3 -3
  297. package/dist/data-display/LazyImage.js +6 -4
  298. package/dist/data-display/Lightbox.js +5 -5
  299. package/dist/data-display/LoadingState.js +5 -4
  300. package/dist/data-display/MapPreview.js +4 -4
  301. package/dist/data-display/Progress.js +8 -3
  302. package/dist/data-display/SectionOnboarding.js +3 -3
  303. package/dist/data-display/Sheet.js +2 -2
  304. package/dist/data-display/StatCard.js +6 -4
  305. package/dist/data-display/Table.js +3 -3
  306. package/dist/feedback/ConfirmAction.js +6 -6
  307. package/dist/feedback/TutorialOverlay.js +2 -2
  308. package/dist/form/AddressAutocomplete.js +7 -7
  309. package/dist/form/Autocomplete.js +2 -2
  310. package/dist/form/Button.js +2 -2
  311. package/dist/form/Calendar.js +4 -4
  312. package/dist/form/CategorySelect.js +10 -10
  313. package/dist/form/CepField.js +3 -3
  314. package/dist/form/CodeEditor.js +3 -3
  315. package/dist/form/DateRangePicker.js +7 -7
  316. package/dist/form/Input.js +2 -2
  317. package/dist/form/Menubar.js +2 -2
  318. package/dist/form/RichTextEditor.js +2 -2
  319. package/dist/form/total-form.js +30 -30
  320. package/dist/icons.js +2 -2
  321. package/dist/layout/Container.js +2 -2
  322. package/dist/layout/ContentToolbar.js +10 -10
  323. package/dist/layout/ScrollArea.js +2 -2
  324. package/dist/layout/SettingsLayout.js +6 -6
  325. package/dist/layout/Skeleton.js +5 -3
  326. package/dist/native/chunks/{chunk-V4DQTC5L.js → chunk-HSIND52T.js} +3 -2
  327. package/dist/native/chunks/chunk-HSIND52T.js.map +1 -0
  328. package/dist/native/chunks/chunk-MLQIOKQZ.js +30 -0
  329. package/dist/native/chunks/chunk-MLQIOKQZ.js.map +1 -0
  330. package/dist/native/chunks/{chunk-YQGNMAJN.js → chunk-Q52IDAF2.js} +6 -4
  331. package/dist/native/chunks/chunk-Q52IDAF2.js.map +1 -0
  332. package/dist/native/data-display/Alert.js +7 -7
  333. package/dist/native/data-display/Avatar.js +451 -0
  334. package/dist/native/data-display/Avatar.js.map +1 -0
  335. package/dist/native/data-display/Badge.js +418 -0
  336. package/dist/native/data-display/Badge.js.map +1 -0
  337. package/dist/native/data-display/Chip.js +374 -0
  338. package/dist/native/data-display/Chip.js.map +1 -0
  339. package/dist/native/data-display/EmptyState.js +9 -9
  340. package/dist/native/data-display/ErrorState.js +9 -9
  341. package/dist/native/data-display/LoadingState.js +4 -4
  342. package/dist/native/data-display/Progress.js +432 -0
  343. package/dist/native/data-display/Progress.js.map +1 -0
  344. package/dist/native/icons.js +2 -2
  345. package/dist/native/layout/Container.js +7 -1
  346. package/dist/native/layout/Container.js.map +1 -1
  347. package/dist/native/layout/Skeleton.js +214 -0
  348. package/dist/native/layout/Skeleton.js.map +1 -0
  349. package/dist/navigation/AppHeader.js +9 -9
  350. package/dist/navigation/NavigationMenu.js +4 -4
  351. package/dist/navigation/Pagination.js +2 -2
  352. package/dist/navigation/Tabs.js +2 -2
  353. package/dist/social-login-button.js +3 -3
  354. package/dist/types/components/data-display/Avatar/Avatar.base.d.ts +87 -0
  355. package/dist/types/components/data-display/Avatar/Avatar.base.d.ts.map +1 -0
  356. package/dist/types/components/data-display/Avatar/Avatar.d.ts.map +1 -1
  357. package/dist/types/components/data-display/Avatar/Avatar.helpers.d.ts +37 -0
  358. package/dist/types/components/data-display/Avatar/Avatar.helpers.d.ts.map +1 -0
  359. package/dist/types/components/data-display/Avatar/Avatar.metrics.d.ts +113 -0
  360. package/dist/types/components/data-display/Avatar/Avatar.metrics.d.ts.map +1 -0
  361. package/dist/types/components/data-display/Avatar/Avatar.types.d.ts +4 -68
  362. package/dist/types/components/data-display/Avatar/Avatar.types.d.ts.map +1 -1
  363. package/dist/types/components/data-display/Avatar/Avatar.view.d.ts +2 -2
  364. package/dist/types/components/data-display/Avatar/Avatar.view.d.ts.map +1 -1
  365. package/dist/types/components/data-display/Avatar/index.d.ts +1 -1
  366. package/dist/types/components/data-display/Avatar/index.d.ts.map +1 -1
  367. package/dist/types/components/data-display/Badge/Badge.animations.d.ts.map +1 -1
  368. package/dist/types/components/data-display/Badge/Badge.base.d.ts +101 -0
  369. package/dist/types/components/data-display/Badge/Badge.base.d.ts.map +1 -0
  370. package/dist/types/components/data-display/Badge/Badge.d.ts.map +1 -1
  371. package/dist/types/components/data-display/Badge/Badge.helpers.d.ts +10 -4
  372. package/dist/types/components/data-display/Badge/Badge.helpers.d.ts.map +1 -1
  373. package/dist/types/components/data-display/Badge/Badge.metrics.d.ts +111 -0
  374. package/dist/types/components/data-display/Badge/Badge.metrics.d.ts.map +1 -0
  375. package/dist/types/components/data-display/Badge/Badge.styles.d.ts +1 -4
  376. package/dist/types/components/data-display/Badge/Badge.styles.d.ts.map +1 -1
  377. package/dist/types/components/data-display/Badge/Badge.types.d.ts +4 -81
  378. package/dist/types/components/data-display/Badge/Badge.types.d.ts.map +1 -1
  379. package/dist/types/components/data-display/Badge/Badge.variants.d.ts.map +1 -1
  380. package/dist/types/components/data-display/Badge/BadgeContent.d.ts.map +1 -1
  381. package/dist/types/components/data-display/Badge/index.d.ts +1 -1
  382. package/dist/types/components/data-display/Badge/index.d.ts.map +1 -1
  383. package/dist/types/components/data-display/Chip/Chip.base.d.ts +81 -0
  384. package/dist/types/components/data-display/Chip/Chip.base.d.ts.map +1 -0
  385. package/dist/types/components/data-display/Chip/Chip.d.ts.map +1 -1
  386. package/dist/types/components/data-display/Chip/Chip.helpers.d.ts +14 -28
  387. package/dist/types/components/data-display/Chip/Chip.helpers.d.ts.map +1 -1
  388. package/dist/types/components/data-display/Chip/Chip.metrics.d.ts +61 -0
  389. package/dist/types/components/data-display/Chip/Chip.metrics.d.ts.map +1 -0
  390. package/dist/types/components/data-display/Chip/Chip.styles.d.ts +30 -0
  391. package/dist/types/components/data-display/Chip/Chip.styles.d.ts.map +1 -0
  392. package/dist/types/components/data-display/Chip/Chip.types.d.ts +4 -67
  393. package/dist/types/components/data-display/Chip/Chip.types.d.ts.map +1 -1
  394. package/dist/types/components/data-display/Chip/index.d.ts +1 -1
  395. package/dist/types/components/data-display/Chip/index.d.ts.map +1 -1
  396. package/dist/types/components/data-display/Progress/Progress.base.d.ts +72 -0
  397. package/dist/types/components/data-display/Progress/Progress.base.d.ts.map +1 -0
  398. package/dist/types/components/data-display/Progress/Progress.d.ts.map +1 -1
  399. package/dist/types/components/data-display/Progress/Progress.helpers.d.ts +15 -3
  400. package/dist/types/components/data-display/Progress/Progress.helpers.d.ts.map +1 -1
  401. package/dist/types/components/data-display/Progress/Progress.metrics.d.ts +91 -0
  402. package/dist/types/components/data-display/Progress/Progress.metrics.d.ts.map +1 -0
  403. package/dist/types/components/data-display/Progress/Progress.styles.d.ts.map +1 -1
  404. package/dist/types/components/data-display/Progress/Progress.types.d.ts +4 -48
  405. package/dist/types/components/data-display/Progress/Progress.types.d.ts.map +1 -1
  406. package/dist/types/components/data-display/Progress/index.d.ts +1 -1
  407. package/dist/types/components/data-display/Progress/index.d.ts.map +1 -1
  408. package/dist/types/components/layout/Container/Container.d.ts.map +1 -1
  409. package/dist/types/components/layout/Container/Container.metrics.d.ts +17 -11
  410. package/dist/types/components/layout/Container/Container.metrics.d.ts.map +1 -1
  411. package/dist/types/components/layout/Skeleton/Skeleton.base.d.ts +37 -0
  412. package/dist/types/components/layout/Skeleton/Skeleton.base.d.ts.map +1 -0
  413. package/dist/types/components/layout/Skeleton/Skeleton.d.ts.map +1 -1
  414. package/dist/types/components/layout/Skeleton/Skeleton.helpers.d.ts +13 -3
  415. package/dist/types/components/layout/Skeleton/Skeleton.helpers.d.ts.map +1 -1
  416. package/dist/types/components/layout/Skeleton/Skeleton.metrics.d.ts +68 -0
  417. package/dist/types/components/layout/Skeleton/Skeleton.metrics.d.ts.map +1 -0
  418. package/dist/types/components/layout/Skeleton/Skeleton.styles.d.ts +1 -1
  419. package/dist/types/components/layout/Skeleton/Skeleton.styles.d.ts.map +1 -1
  420. package/dist/types/components/layout/Skeleton/Skeleton.types.d.ts +5 -15
  421. package/dist/types/components/layout/Skeleton/Skeleton.types.d.ts.map +1 -1
  422. package/dist/types/components/layout/Skeleton/index.d.ts +1 -1
  423. package/dist/types/components/layout/Skeleton/index.d.ts.map +1 -1
  424. package/dist/types/icons/paths.generated.d.ts +2 -0
  425. package/dist/types/icons/paths.generated.d.ts.map +1 -1
  426. package/dist/types/platform/animation.d.ts +14 -0
  427. package/dist/types/platform/animation.d.ts.map +1 -0
  428. package/dist/types/platform/web-keys.d.ts +25 -0
  429. package/dist/types/platform/web-keys.d.ts.map +1 -0
  430. package/dist/types/tokens/mui-type.d.ts +1 -1
  431. package/dist/types/tokens/mui-type.d.ts.map +1 -1
  432. package/dist/types-native/components/data-display/Avatar/Avatar.base.d.ts +87 -0
  433. package/dist/types-native/components/data-display/Avatar/Avatar.base.d.ts.map +1 -0
  434. package/dist/types-native/components/data-display/Avatar/Avatar.helpers.d.ts +37 -0
  435. package/dist/types-native/components/data-display/Avatar/Avatar.helpers.d.ts.map +1 -0
  436. package/dist/types-native/components/data-display/Avatar/Avatar.look.native.d.ts +25 -0
  437. package/dist/types-native/components/data-display/Avatar/Avatar.look.native.d.ts.map +1 -0
  438. package/dist/types-native/components/data-display/Avatar/Avatar.metrics.d.ts +113 -0
  439. package/dist/types-native/components/data-display/Avatar/Avatar.metrics.d.ts.map +1 -0
  440. package/dist/types-native/components/data-display/Avatar/Avatar.native.d.ts +19 -0
  441. package/dist/types-native/components/data-display/Avatar/Avatar.native.d.ts.map +1 -0
  442. package/dist/types-native/components/data-display/Avatar/Avatar.parts.native.d.ts +69 -0
  443. package/dist/types-native/components/data-display/Avatar/Avatar.parts.native.d.ts.map +1 -0
  444. package/dist/types-native/components/data-display/Avatar/Avatar.types.native.d.ts +24 -0
  445. package/dist/types-native/components/data-display/Avatar/Avatar.types.native.d.ts.map +1 -0
  446. package/dist/types-native/components/data-display/Avatar/index.native.d.ts +3 -0
  447. package/dist/types-native/components/data-display/Avatar/index.native.d.ts.map +1 -0
  448. package/dist/types-native/components/data-display/Badge/Badge.base.d.ts +101 -0
  449. package/dist/types-native/components/data-display/Badge/Badge.base.d.ts.map +1 -0
  450. package/dist/types-native/components/data-display/Badge/Badge.helpers.d.ts +19 -0
  451. package/dist/types-native/components/data-display/Badge/Badge.helpers.d.ts.map +1 -0
  452. package/dist/types-native/components/data-display/Badge/Badge.look.native.d.ts +31 -0
  453. package/dist/types-native/components/data-display/Badge/Badge.look.native.d.ts.map +1 -0
  454. package/dist/types-native/components/data-display/Badge/Badge.metrics.d.ts +111 -0
  455. package/dist/types-native/components/data-display/Badge/Badge.metrics.d.ts.map +1 -0
  456. package/dist/types-native/components/data-display/Badge/Badge.native.d.ts +10 -0
  457. package/dist/types-native/components/data-display/Badge/Badge.native.d.ts.map +1 -0
  458. package/dist/types-native/components/data-display/Badge/Badge.types.native.d.ts +8 -0
  459. package/dist/types-native/components/data-display/Badge/Badge.types.native.d.ts.map +1 -0
  460. package/dist/types-native/components/data-display/Badge/BadgeContent.native.d.ts +20 -0
  461. package/dist/types-native/components/data-display/Badge/BadgeContent.native.d.ts.map +1 -0
  462. package/dist/types-native/components/data-display/Badge/index.native.d.ts +3 -0
  463. package/dist/types-native/components/data-display/Badge/index.native.d.ts.map +1 -0
  464. package/dist/types-native/components/data-display/Chip/Chip.base.d.ts +81 -0
  465. package/dist/types-native/components/data-display/Chip/Chip.base.d.ts.map +1 -0
  466. package/dist/types-native/components/data-display/Chip/Chip.helpers.d.ts +22 -0
  467. package/dist/types-native/components/data-display/Chip/Chip.helpers.d.ts.map +1 -0
  468. package/dist/types-native/components/data-display/Chip/Chip.look.native.d.ts +29 -0
  469. package/dist/types-native/components/data-display/Chip/Chip.look.native.d.ts.map +1 -0
  470. package/dist/types-native/components/data-display/Chip/Chip.metrics.d.ts +61 -0
  471. package/dist/types-native/components/data-display/Chip/Chip.metrics.d.ts.map +1 -0
  472. package/dist/types-native/components/data-display/Chip/Chip.native.d.ts +11 -0
  473. package/dist/types-native/components/data-display/Chip/Chip.native.d.ts.map +1 -0
  474. package/dist/types-native/components/data-display/Chip/Chip.types.native.d.ts +20 -0
  475. package/dist/types-native/components/data-display/Chip/Chip.types.native.d.ts.map +1 -0
  476. package/dist/types-native/components/data-display/Chip/index.native.d.ts +3 -0
  477. package/dist/types-native/components/data-display/Chip/index.native.d.ts.map +1 -0
  478. package/dist/types-native/components/data-display/Progress/Progress.base.d.ts +72 -0
  479. package/dist/types-native/components/data-display/Progress/Progress.base.d.ts.map +1 -0
  480. package/dist/types-native/components/data-display/Progress/Progress.helpers.d.ts +18 -0
  481. package/dist/types-native/components/data-display/Progress/Progress.helpers.d.ts.map +1 -0
  482. package/dist/types-native/components/data-display/Progress/Progress.look.native.d.ts +28 -0
  483. package/dist/types-native/components/data-display/Progress/Progress.look.native.d.ts.map +1 -0
  484. package/dist/types-native/components/data-display/Progress/Progress.metrics.d.ts +91 -0
  485. package/dist/types-native/components/data-display/Progress/Progress.metrics.d.ts.map +1 -0
  486. package/dist/types-native/components/data-display/Progress/Progress.native.d.ts +10 -0
  487. package/dist/types-native/components/data-display/Progress/Progress.native.d.ts.map +1 -0
  488. package/dist/types-native/components/data-display/Progress/Progress.types.native.d.ts +8 -0
  489. package/dist/types-native/components/data-display/Progress/Progress.types.native.d.ts.map +1 -0
  490. package/dist/types-native/components/data-display/Progress/index.native.d.ts +3 -0
  491. package/dist/types-native/components/data-display/Progress/index.native.d.ts.map +1 -0
  492. package/dist/types-native/components/layout/Container/Container.metrics.d.ts +17 -11
  493. package/dist/types-native/components/layout/Container/Container.metrics.d.ts.map +1 -1
  494. package/dist/types-native/components/layout/Container/Container.native.d.ts +2 -2
  495. package/dist/types-native/components/layout/Container/Container.native.d.ts.map +1 -1
  496. package/dist/types-native/components/layout/Skeleton/Skeleton.base.d.ts +37 -0
  497. package/dist/types-native/components/layout/Skeleton/Skeleton.base.d.ts.map +1 -0
  498. package/dist/types-native/components/layout/Skeleton/Skeleton.helpers.d.ts +16 -0
  499. package/dist/types-native/components/layout/Skeleton/Skeleton.helpers.d.ts.map +1 -0
  500. package/dist/types-native/components/layout/Skeleton/Skeleton.metrics.d.ts +68 -0
  501. package/dist/types-native/components/layout/Skeleton/Skeleton.metrics.d.ts.map +1 -0
  502. package/dist/types-native/components/layout/Skeleton/Skeleton.native.d.ts +38 -0
  503. package/dist/types-native/components/layout/Skeleton/Skeleton.native.d.ts.map +1 -0
  504. package/dist/types-native/components/layout/Skeleton/Skeleton.types.native.d.ts +8 -0
  505. package/dist/types-native/components/layout/Skeleton/Skeleton.types.native.d.ts.map +1 -0
  506. package/dist/types-native/components/layout/Skeleton/index.native.d.ts +3 -0
  507. package/dist/types-native/components/layout/Skeleton/index.native.d.ts.map +1 -0
  508. package/dist/types-native/icons/paths.generated.d.ts +2 -0
  509. package/dist/types-native/icons/paths.generated.d.ts.map +1 -1
  510. package/dist/types-native/platform/animation.d.ts +14 -0
  511. package/dist/types-native/platform/animation.d.ts.map +1 -0
  512. package/dist/types-native/platform/web-keys.d.ts +25 -0
  513. package/dist/types-native/platform/web-keys.d.ts.map +1 -0
  514. package/dist/types-native/tokens/mui-type.d.ts +1 -1
  515. package/dist/types-native/tokens/mui-type.d.ts.map +1 -1
  516. package/dist/user-avatar.js +7 -5
  517. package/dist/utility/InstallPrompt.js +2 -2
  518. package/package.json +21 -1
  519. package/src/components/data-display/Avatar/Avatar.base.ts +108 -0
  520. package/src/components/data-display/Avatar/Avatar.helpers.ts +54 -0
  521. package/src/components/data-display/Avatar/Avatar.look.native.ts +123 -0
  522. package/src/components/data-display/Avatar/Avatar.metrics.ts +111 -0
  523. package/src/components/data-display/Avatar/Avatar.native.tsx +190 -0
  524. package/src/components/data-display/Avatar/Avatar.parts.native.tsx +243 -0
  525. package/src/components/data-display/Avatar/Avatar.tsx +34 -36
  526. package/src/components/data-display/Avatar/Avatar.types.native.ts +39 -0
  527. package/src/components/data-display/Avatar/Avatar.types.ts +12 -81
  528. package/src/components/data-display/Avatar/Avatar.view.tsx +61 -41
  529. package/src/components/data-display/Avatar/NATIVE-NOTES.md +11 -0
  530. package/src/components/data-display/Avatar/index.native.ts +10 -0
  531. package/src/components/data-display/Avatar/index.ts +8 -1
  532. package/src/components/data-display/Badge/Badge.animations.ts +11 -9
  533. package/src/components/data-display/Badge/Badge.base.ts +138 -0
  534. package/src/components/data-display/Badge/Badge.helpers.ts +18 -7
  535. package/src/components/data-display/Badge/Badge.look.native.ts +174 -0
  536. package/src/components/data-display/Badge/Badge.metrics.ts +116 -0
  537. package/src/components/data-display/Badge/Badge.native.tsx +212 -0
  538. package/src/components/data-display/Badge/Badge.styles.ts +63 -74
  539. package/src/components/data-display/Badge/Badge.tsx +12 -6
  540. package/src/components/data-display/Badge/Badge.types.native.ts +16 -0
  541. package/src/components/data-display/Badge/Badge.types.ts +27 -113
  542. package/src/components/data-display/Badge/Badge.variants.ts +20 -9
  543. package/src/components/data-display/Badge/BadgeContent.native.tsx +78 -0
  544. package/src/components/data-display/Badge/BadgeContent.tsx +8 -8
  545. package/src/components/data-display/Badge/NATIVE-NOTES.md +11 -0
  546. package/src/components/data-display/Badge/index.native.ts +8 -0
  547. package/src/components/data-display/Badge/index.ts +7 -1
  548. package/src/components/data-display/Chip/Chip.base.ts +99 -0
  549. package/src/components/data-display/Chip/Chip.helpers.ts +49 -0
  550. package/src/components/data-display/Chip/Chip.look.native.ts +163 -0
  551. package/src/components/data-display/Chip/Chip.metrics.ts +102 -0
  552. package/src/components/data-display/Chip/Chip.native.tsx +269 -0
  553. package/src/components/data-display/Chip/{Chip.helpers.tsx → Chip.styles.tsx} +23 -51
  554. package/src/components/data-display/Chip/Chip.tsx +10 -11
  555. package/src/components/data-display/Chip/Chip.types.native.ts +28 -0
  556. package/src/components/data-display/Chip/Chip.types.ts +5 -84
  557. package/src/components/data-display/Chip/NATIVE-NOTES.md +10 -0
  558. package/src/components/data-display/Chip/chip.md +1 -1
  559. package/src/components/data-display/Chip/index.native.ts +8 -0
  560. package/src/components/data-display/Chip/index.ts +1 -1
  561. package/src/components/data-display/Progress/NATIVE-NOTES.md +10 -0
  562. package/src/components/data-display/Progress/Progress.base.ts +86 -0
  563. package/src/components/data-display/Progress/Progress.helpers.ts +29 -8
  564. package/src/components/data-display/Progress/Progress.look.native.ts +111 -0
  565. package/src/components/data-display/Progress/Progress.metrics.ts +101 -0
  566. package/src/components/data-display/Progress/Progress.native.tsx +387 -0
  567. package/src/components/data-display/Progress/Progress.styles.ts +31 -17
  568. package/src/components/data-display/Progress/Progress.tsx +7 -6
  569. package/src/components/data-display/Progress/Progress.types.native.ts +11 -0
  570. package/src/components/data-display/Progress/Progress.types.ts +6 -58
  571. package/src/components/data-display/Progress/index.native.ts +7 -0
  572. package/src/components/data-display/Progress/index.ts +6 -1
  573. package/src/components/layout/Container/Container.metrics.ts +27 -13
  574. package/src/components/layout/Container/Container.native.tsx +4 -2
  575. package/src/components/layout/Container/Container.tsx +10 -4
  576. package/src/components/layout/Container/NATIVE-NOTES.md +0 -2
  577. package/src/components/layout/Skeleton/NATIVE-NOTES.md +8 -0
  578. package/src/components/layout/Skeleton/Skeleton.base.ts +37 -0
  579. package/src/components/layout/Skeleton/Skeleton.helpers.ts +24 -8
  580. package/src/components/layout/Skeleton/Skeleton.metrics.ts +81 -0
  581. package/src/components/layout/Skeleton/Skeleton.native.tsx +271 -0
  582. package/src/components/layout/Skeleton/Skeleton.styles.ts +25 -25
  583. package/src/components/layout/Skeleton/Skeleton.tsx +9 -5
  584. package/src/components/layout/Skeleton/Skeleton.types.native.ts +16 -0
  585. package/src/components/layout/Skeleton/Skeleton.types.ts +13 -16
  586. package/src/components/layout/Skeleton/index.native.ts +8 -0
  587. package/src/components/layout/Skeleton/index.ts +7 -1
  588. package/src/icons/glyphs.json +2 -0
  589. package/src/icons/paths.generated.ts +2 -0
  590. package/src/platform/animation.ts +53 -0
  591. package/src/platform/web-keys.ts +28 -0
  592. package/src/tokens/mui-type.ts +2 -1
  593. package/dist/chunk-3HWL4AW4.js.map +0 -1
  594. package/dist/chunk-4Q7HWRR2.js.map +0 -1
  595. package/dist/chunk-FS4X3VDA.js +0 -78
  596. package/dist/chunk-FS4X3VDA.js.map +0 -1
  597. package/dist/chunk-HAFE43QJ.js.map +0 -1
  598. package/dist/chunk-HKFMPEXJ.js.map +0 -1
  599. package/dist/chunk-HXYXDQ7U.js.map +0 -1
  600. package/dist/chunk-IRDGC7FK.js.map +0 -1
  601. package/dist/chunk-JZKOJZ6V.js.map +0 -1
  602. package/dist/chunk-KPQAPQH6.js.map +0 -1
  603. package/dist/chunk-L6KEVPXN.js.map +0 -1
  604. package/dist/chunk-LLABVZM3.js.map +0 -1
  605. package/dist/chunk-LYNJJV2X.js.map +0 -1
  606. package/dist/chunk-MMZAGB64.js.map +0 -1
  607. package/dist/chunk-NQHOHQCY.js.map +0 -1
  608. package/dist/chunk-QIV73V2X.js.map +0 -1
  609. package/dist/chunk-RLC46NIW.js.map +0 -1
  610. package/dist/chunk-ZGEBIC5X.js.map +0 -1
  611. package/dist/chunk-ZHEJLUCX.js.map +0 -1
  612. package/dist/native/chunks/chunk-V4DQTC5L.js.map +0 -1
  613. package/dist/native/chunks/chunk-YQGNMAJN.js.map +0 -1
  614. /package/dist/{chunk-P7FQUGED.js.map → chunk-23FCBIUN.js.map} +0 -0
  615. /package/dist/{chunk-SL4NFGOL.js.map → chunk-24BUCMQA.js.map} +0 -0
  616. /package/dist/{chunk-4SXZSSVV.js.map → chunk-2EKALM6P.js.map} +0 -0
  617. /package/dist/{chunk-ZRFRU545.js.map → chunk-2ZDTGI5V.js.map} +0 -0
  618. /package/dist/{chunk-HR7YTBR7.js.map → chunk-3AOOI2NR.js.map} +0 -0
  619. /package/dist/{chunk-KKYW3LU7.js.map → chunk-47UD6DZ4.js.map} +0 -0
  620. /package/dist/{chunk-ZOUWHGV3.js.map → chunk-4MGFUPQT.js.map} +0 -0
  621. /package/dist/{chunk-4FRZDSRD.js.map → chunk-4WK2RTVY.js.map} +0 -0
  622. /package/dist/{chunk-LDE4ELB5.js.map → chunk-5ZF3VASA.js.map} +0 -0
  623. /package/dist/{chunk-JE6RZ5L6.js.map → chunk-5ZOJLYD2.js.map} +0 -0
  624. /package/dist/{chunk-E5ZHW4I5.js.map → chunk-6IUTT6BK.js.map} +0 -0
  625. /package/dist/{chunk-WPR2HS5B.js.map → chunk-74EZ565M.js.map} +0 -0
  626. /package/dist/{chunk-BVZVH3ZN.js.map → chunk-74OZ5KVR.js.map} +0 -0
  627. /package/dist/{chunk-PMS3H3OO.js.map → chunk-76GZ55IC.js.map} +0 -0
  628. /package/dist/{chunk-DLFOEXUP.js.map → chunk-7EESF76V.js.map} +0 -0
  629. /package/dist/{chunk-HKZHEK3Z.js.map → chunk-7JWXLDRH.js.map} +0 -0
  630. /package/dist/{chunk-OR7UH2ZQ.js.map → chunk-7P2HZLEG.js.map} +0 -0
  631. /package/dist/{chunk-6DXYCXH4.js.map → chunk-7RZ4WOQW.js.map} +0 -0
  632. /package/dist/{chunk-EMNGIYH6.js.map → chunk-7TZ6OC5T.js.map} +0 -0
  633. /package/dist/{chunk-CDJPDZCA.js.map → chunk-AEGX66N7.js.map} +0 -0
  634. /package/dist/{chunk-65DLYC4S.js.map → chunk-AVGTTWTE.js.map} +0 -0
  635. /package/dist/{chunk-C6XESZ3R.js.map → chunk-B2A4DG77.js.map} +0 -0
  636. /package/dist/{chunk-VOOPGAQO.js.map → chunk-B7BZAIHL.js.map} +0 -0
  637. /package/dist/{chunk-DZN3JF5E.js.map → chunk-BBC4KT5G.js.map} +0 -0
  638. /package/dist/{chunk-FWCUELBU.js.map → chunk-BILE3A7F.js.map} +0 -0
  639. /package/dist/{chunk-UEJQQVP2.js.map → chunk-BLT5ZBVL.js.map} +0 -0
  640. /package/dist/{chunk-ISSJNFJV.js.map → chunk-C52BELLW.js.map} +0 -0
  641. /package/dist/{chunk-BPYPUEM5.js.map → chunk-CZJLWCEG.js.map} +0 -0
  642. /package/dist/{chunk-WZUNBSS7.js.map → chunk-DVUPIVI2.js.map} +0 -0
  643. /package/dist/{chunk-EXJBPKGW.js.map → chunk-EGRFMPGD.js.map} +0 -0
  644. /package/dist/{chunk-XFUNJYFT.js.map → chunk-EPNUVSNK.js.map} +0 -0
  645. /package/dist/{chunk-H2EQVMU3.js.map → chunk-EX3PSZLV.js.map} +0 -0
  646. /package/dist/{chunk-LIOVN5IM.js.map → chunk-F2DOTCF3.js.map} +0 -0
  647. /package/dist/{chunk-64IEKEMQ.js.map → chunk-FGLV6BXQ.js.map} +0 -0
  648. /package/dist/{chunk-L65LF6LN.js.map → chunk-FP4R47TM.js.map} +0 -0
  649. /package/dist/{chunk-7AR2R7TV.js.map → chunk-G5ZVD5IJ.js.map} +0 -0
  650. /package/dist/{chunk-SHQWIDD5.js.map → chunk-GJQYM3PM.js.map} +0 -0
  651. /package/dist/{chunk-7WL24VNI.js.map → chunk-HDNK7BAX.js.map} +0 -0
  652. /package/dist/{chunk-X5MPHXG5.js.map → chunk-HEG7JIBM.js.map} +0 -0
  653. /package/dist/{chunk-ZIOCRSHU.js.map → chunk-HSAH5QUQ.js.map} +0 -0
  654. /package/dist/{chunk-B443IIQG.js.map → chunk-IE7ISTLQ.js.map} +0 -0
  655. /package/dist/{chunk-NFHS77NE.js.map → chunk-IH4CX43Q.js.map} +0 -0
  656. /package/dist/{chunk-72UYVJBQ.js.map → chunk-IJIT5HQP.js.map} +0 -0
  657. /package/dist/{chunk-AP4FLCLA.js.map → chunk-J54WH74M.js.map} +0 -0
  658. /package/dist/{chunk-5HOJSVQH.js.map → chunk-JB7JE4QZ.js.map} +0 -0
  659. /package/dist/{chunk-QJJUTBKZ.js.map → chunk-KQ74QU55.js.map} +0 -0
  660. /package/dist/{chunk-YLDS5FOQ.js.map → chunk-KZSKI2R3.js.map} +0 -0
  661. /package/dist/{chunk-IIOEQRXX.js.map → chunk-LAHDFBDE.js.map} +0 -0
  662. /package/dist/{chunk-BUDXR3EV.js.map → chunk-LKVIZNUM.js.map} +0 -0
  663. /package/dist/{chunk-OAXAF4VY.js.map → chunk-LMJBINWN.js.map} +0 -0
  664. /package/dist/{chunk-SFAP5EH5.js.map → chunk-LUMF63BM.js.map} +0 -0
  665. /package/dist/{chunk-KADJNWTQ.js.map → chunk-LZRURORY.js.map} +0 -0
  666. /package/dist/{chunk-CLNTJM3F.js.map → chunk-M7OHXNLF.js.map} +0 -0
  667. /package/dist/{chunk-UXQW6ZIN.js.map → chunk-MBYO2F4Y.js.map} +0 -0
  668. /package/dist/{chunk-MCRIT46W.js.map → chunk-MY5VNNSP.js.map} +0 -0
  669. /package/dist/{chunk-XELVDPKL.js.map → chunk-NFAKRI4S.js.map} +0 -0
  670. /package/dist/{chunk-KSF7TLXH.js.map → chunk-NHSMLVNC.js.map} +0 -0
  671. /package/dist/{chunk-ES2RN7YV.js.map → chunk-NRUYYGDZ.js.map} +0 -0
  672. /package/dist/{chunk-MQUU2XZB.js.map → chunk-OQFSYMHJ.js.map} +0 -0
  673. /package/dist/{chunk-M3RIC6JI.js.map → chunk-OQXOYHIV.js.map} +0 -0
  674. /package/dist/{chunk-PC3ZFERM.js.map → chunk-PC5FFEIY.js.map} +0 -0
  675. /package/dist/{chunk-SOHDPFOB.js.map → chunk-PHCSPHDH.js.map} +0 -0
  676. /package/dist/{chunk-OZWQNFG6.js.map → chunk-PODGTNXS.js.map} +0 -0
  677. /package/dist/{chunk-IPE5FFFD.js.map → chunk-PUBPZOQJ.js.map} +0 -0
  678. /package/dist/{chunk-GBFGZJB5.js.map → chunk-Q4NOI2CR.js.map} +0 -0
  679. /package/dist/{chunk-GOWBYHYW.js.map → chunk-R6SBP5M5.js.map} +0 -0
  680. /package/dist/{chunk-DTKMBI7B.js.map → chunk-R7MX5KPJ.js.map} +0 -0
  681. /package/dist/{chunk-NECUCG2S.js.map → chunk-RQDN4BN5.js.map} +0 -0
  682. /package/dist/{chunk-5SYD23V4.js.map → chunk-SKZHOWTS.js.map} +0 -0
  683. /package/dist/{chunk-Y6KPZQPI.js.map → chunk-SOCKK67R.js.map} +0 -0
  684. /package/dist/{chunk-GCJLMX63.js.map → chunk-VCTKJHXD.js.map} +0 -0
  685. /package/dist/{chunk-QZPNQWS2.js.map → chunk-VEFDL77X.js.map} +0 -0
  686. /package/dist/{chunk-WEH5TCPE.js.map → chunk-VJFH2AXT.js.map} +0 -0
  687. /package/dist/{chunk-S7HRED4D.js.map → chunk-VLHGBFR6.js.map} +0 -0
  688. /package/dist/{chunk-HP2ODXNA.js.map → chunk-VR5HDUBK.js.map} +0 -0
  689. /package/dist/{chunk-RBGOGTT2.js.map → chunk-W2UTDN4T.js.map} +0 -0
  690. /package/dist/{chunk-N4WANJI3.js.map → chunk-WBVHRLIS.js.map} +0 -0
  691. /package/dist/{chunk-XXJRT6BP.js.map → chunk-WMALDOF5.js.map} +0 -0
  692. /package/dist/{chunk-MHFJBNDP.js.map → chunk-WO52KYSU.js.map} +0 -0
  693. /package/dist/{chunk-ZBOFBRZC.js.map → chunk-WX7VWW3W.js.map} +0 -0
  694. /package/dist/{chunk-J4W4TQPC.js.map → chunk-X24P3ZYW.js.map} +0 -0
  695. /package/dist/{chunk-X2J6MRJW.js.map → chunk-YFHIESMD.js.map} +0 -0
  696. /package/dist/{chunk-72NOM3O2.js.map → chunk-YK2PETUP.js.map} +0 -0
  697. /package/dist/{chunk-CRNQVWIT.js.map → chunk-Z4GWXTZV.js.map} +0 -0
  698. /package/dist/{chunk-SG6VULKS.js.map → chunk-ZEBJT5JZ.js.map} +0 -0
@@ -5,8 +5,8 @@ import React from 'react';
5
5
 
6
6
  import {
7
7
  CONTAINER_COMPACT_PADDING_UNITS,
8
- CONTAINER_PADDED_VERTICAL_UNITS,
9
8
  containerPaddingUnits,
9
+ containerVerticalUnits,
10
10
  resolveContainerMaxWidth,
11
11
  } from './Container.metrics';
12
12
  import type { ContainerProps } from './Container.types';
@@ -38,14 +38,20 @@ export const Container: React.FC<ContainerProps> = ({
38
38
  justifyContent: 'center',
39
39
  minHeight: '100vh',
40
40
  }),
41
+ // The shorthand FIRST: a `paddingTop` declared before it is overridden by
42
+ // it, which is how `variant="padded"` painted no vertical inset at all.
43
+ padding: theme.spacing(containerPaddingUnits(padding, false)),
41
44
  ...(variant === 'padded' && {
42
- paddingTop: theme.spacing(CONTAINER_PADDED_VERTICAL_UNITS),
43
- paddingBottom: theme.spacing(CONTAINER_PADDED_VERTICAL_UNITS),
45
+ paddingTop: theme.spacing(containerVerticalUnits(variant, padding, false)),
46
+ paddingBottom: theme.spacing(containerVerticalUnits(variant, padding, false)),
44
47
  }),
45
- padding: theme.spacing(containerPaddingUnits(padding, false)),
46
48
  ...(responsive && {
47
49
  [theme.breakpoints.down('sm')]: {
48
50
  padding: theme.spacing(CONTAINER_COMPACT_PADDING_UNITS),
51
+ ...(variant === 'padded' && {
52
+ paddingTop: theme.spacing(containerVerticalUnits(variant, padding, true)),
53
+ paddingBottom: theme.spacing(containerVerticalUnits(variant, padding, true)),
54
+ }),
49
55
  },
50
56
  }),
51
57
  ...(sx || {}),
@@ -1,5 +1,3 @@
1
1
  # Container on React Native — known gaps
2
2
 
3
- - `variant="padded"` adds no vertical padding on either renderer: the web declares its 64px above and below BEFORE the `padding` shorthand, which overrides them, and native paints the same insets so the two agree. The fix is a web change (`Container.tsx` order) plus `containerPaddingUnits`, made together.
4
- - `padding="none"` paints the `md` inset on either renderer: the web reads its map with `||`, so `none`'s 0 falls through to the default. Same one-place fix.
5
3
  - `responsive` reads `useWindowDimensions().width < 600` in place of MUI's `sm` media query, and `centered` reads the window height in place of `100vh`; both track the window, as CSS would, but a container inside a narrower parent still measures the window, not the parent.
@@ -0,0 +1,8 @@
1
+ # Skeleton on React Native
2
+
3
+ Known rendering gaps, one bullet each; `pnpm native:ledger` reads them.
4
+
5
+ - MUI's `wave` sweep and the `shimmer` overlay are gradient pseudo-elements travelling across the box; React Native core has neither, so both are drawn as the same wash (`action.hover` for the wave, `alpha(#fff, 0.3)` for the shimmer) fading in and out over the whole box on the web's own cadence — 1.6s linear after 0.5s for the wave, 2s for the shimmer.
6
+ - `glassmorphism` paints the 135° gradient's first stop (`alpha(paper, 0.8)`) flat and keeps the hairline and the `0 8px 32px 0 rgba(0, 0, 0, 0.1)` shadow, but not the 20px backdrop blur — React Native has no backdrop filter.
7
+ - The `text` variant is drawn at its FINAL height. MUI gives it a `1.2em` line box and squashes the box to 60% with `transform: scale(1, 0.6)`; React Native transforms do not change layout, so the two are multiplied out (11.52px at the theme's 16px body size) and the elliptical `4px/6.7px` radius the squash rounds off is drawn as the plain 4px it lands on.
8
+ - `width`, `height` and `borderRadius` accept a number or a percentage; any other CSS length (`10rem`, `calc(…)`) has no React Native equivalent and leaves the box to size itself from its content.
@@ -0,0 +1,37 @@
1
+ /**
2
+ * THE CONTRACT BOTH RENDERERS HONOUR — and nothing else.
3
+ *
4
+ * This file imports no MUI and no react-native, on purpose: it is in BOTH
5
+ * declaration outputs (`dist/types` and `dist/types-native`), and a native
6
+ * consumer has no `@mui/material` to resolve a type import against.
7
+ */
8
+ export type SkeletonVariant = 'text' | 'circular' | 'rectangular' | 'wave';
9
+ export type SkeletonAnimation = 'pulse' | 'wave' | false;
10
+ export type SkeletonIntensity = 'low' | 'medium' | 'high';
11
+
12
+ /**
13
+ * The contract both renderers honour. `className` and a CSS `style` are the
14
+ * web's own and stay in `Skeleton.types.ts`; `style` on native is a
15
+ * `ViewStyle` and is declared in `Skeleton.types.native.ts`.
16
+ */
17
+ export interface SkeletonBaseProps {
18
+ variant?: SkeletonVariant;
19
+ animation?: SkeletonAnimation;
20
+ width?: number | string;
21
+ height?: number | string;
22
+ count?: number;
23
+ /** Between instances, in SPACING UNITS — `theme.spacing(n)` on both sides. */
24
+ spacing?: number;
25
+ borderRadius?: number | string;
26
+ intensity?: SkeletonIntensity;
27
+ glassmorphism?: boolean;
28
+ shimmer?: boolean;
29
+ /**
30
+ * All three spellings of the same id: the web forwards `data-testid`, React
31
+ * Native calls it `testID`, and `dataTestId` is the house name. See
32
+ * `src/platform/test-id.ts`.
33
+ */
34
+ testID?: string;
35
+ dataTestId?: string;
36
+ 'data-testid'?: string;
37
+ }
@@ -1,4 +1,4 @@
1
- import type { SkeletonProps } from './Skeleton.types';
1
+ import type { SkeletonBaseProps } from './Skeleton.base';
2
2
 
3
3
  type SkeletonDefaultedKeys =
4
4
  | 'variant'
@@ -9,10 +9,15 @@ type SkeletonDefaultedKeys =
9
9
  | 'glassmorphism'
10
10
  | 'shimmer';
11
11
 
12
- type ResolvedSkeletonProps = SkeletonProps &
13
- Required<Pick<SkeletonProps, SkeletonDefaultedKeys>>;
12
+ /**
13
+ * Generic over the renderer's own props: the web and the native `Skeleton`
14
+ * carry different extras (`className`/`style` against a `View`'s props), and
15
+ * both come back out untouched.
16
+ */
17
+ type ResolvedSkeletonProps<P extends SkeletonBaseProps> = P &
18
+ Required<Pick<SkeletonBaseProps, SkeletonDefaultedKeys>>;
14
19
 
15
- const SKELETON_DEFAULTS: Pick<SkeletonProps, SkeletonDefaultedKeys> = {
20
+ const SKELETON_DEFAULTS: Required<Pick<SkeletonBaseProps, SkeletonDefaultedKeys>> = {
16
21
  variant: 'text',
17
22
  animation: 'pulse',
18
23
  count: 1,
@@ -24,10 +29,21 @@ const SKELETON_DEFAULTS: Pick<SkeletonProps, SkeletonDefaultedKeys> = {
24
29
 
25
30
  // Strips explicitly-undefined props before the merge, so `count={undefined}` still
26
31
  // falls back to the default exactly as a destructuring default would.
27
- const definedProps = (props: SkeletonProps): Partial<SkeletonProps> =>
32
+ const definedProps = <P extends SkeletonBaseProps>(props: P): Partial<P> =>
28
33
  Object.fromEntries(
29
34
  Object.entries(props).filter(([, value]) => value !== undefined),
30
- ) as Partial<SkeletonProps>;
35
+ ) as Partial<P>;
31
36
 
32
- export const resolveSkeletonProps = (props: SkeletonProps): ResolvedSkeletonProps =>
33
- ({ ...SKELETON_DEFAULTS, ...definedProps(props) }) as ResolvedSkeletonProps;
37
+ export const resolveSkeletonProps = <P extends SkeletonBaseProps>(
38
+ props: P,
39
+ ): ResolvedSkeletonProps<P> =>
40
+ ({ ...SKELETON_DEFAULTS, ...definedProps(props) }) as ResolvedSkeletonProps<P>;
41
+
42
+ /**
43
+ * The id of instance `index` when a caller asked for several. Unnamed
44
+ * skeletons stay unnamed — the web has always cloned `undefined` there.
45
+ */
46
+ export const skeletonInstanceTestId = (
47
+ base: string | undefined,
48
+ index: number,
49
+ ): string | undefined => (base ? `${base}-${index}` : undefined);
@@ -0,0 +1,81 @@
1
+ import type { SkeletonIntensity, SkeletonVariant } from './Skeleton.base';
2
+
3
+ /**
4
+ * THE NUMBERS BOTH `Skeleton` RENDERERS DRAW WITH.
5
+ *
6
+ * `Skeleton.styles.ts` (web, emotion over MUI's own `Skeleton`) and
7
+ * `Skeleton.native.tsx` (React Native) read this one table. The web turns them
8
+ * into CSS strings — `blur(20px)`, `shimmer 2s infinite` — and native uses the
9
+ * numbers as they are, so neither renderer restates a value.
10
+ *
11
+ * Two groups live here. The first is what the web component WRITES (the
12
+ * intensity alphas, the default box, the glass and shimmer washes). The second
13
+ * is what MUI's own `Skeleton` contributes on the web and the native half
14
+ * therefore has to restate: its pulse keyframe, its wave cadence, and the
15
+ * geometry of the `text` variant. Those are MUI's DEFAULTS — a host that
16
+ * re-themes them moves the web only, which `NATIVE-NOTES.md` records.
17
+ */
18
+
19
+ /** The tint's alpha over the ink, per intensity. */
20
+ export const SKELETON_INTENSITY_OPACITY: Record<SkeletonIntensity, number> = {
21
+ low: 0.11,
22
+ medium: 0.13,
23
+ high: 0.15,
24
+ };
25
+
26
+ /** The box a variant draws when the caller gives no `width`/`height`. */
27
+ export const SKELETON_DEFAULT_DIMENSIONS: Record<
28
+ SkeletonVariant,
29
+ { width: number | string; height: number | undefined }
30
+ > = {
31
+ // `text` has no height of its own: MUI's line box gives it one (below).
32
+ text: { width: '100%', height: undefined },
33
+ circular: { width: 40, height: 40 },
34
+ rectangular: { width: '100%', height: 40 },
35
+ wave: { width: '100%', height: 40 },
36
+ };
37
+
38
+ /* ── `glassmorphism` ──────────────────────────────────────────────────────── */
39
+
40
+ /** The 135° wash over `background.paper`, from the first stop to the last. */
41
+ export const GLASS_BACKGROUND_ALPHA_FROM = 0.8;
42
+ export const GLASS_BACKGROUND_ALPHA_TO = 0.4;
43
+ export const GLASS_BLUR_PX = 20;
44
+ export const GLASS_BORDER_ALPHA = 0.2;
45
+ /** `0 8px 32px 0 rgba(0, 0, 0, 0.1)`. */
46
+ export const GLASS_SHADOW = { offsetY: 8, blur: 32, alpha: 0.1 } as const;
47
+
48
+ /* ── `shimmer` ────────────────────────────────────────────────────────────── */
49
+
50
+ /** The sweep's middle stop, over white. */
51
+ export const SHIMMER_ALPHA = 0.3;
52
+ export const SHIMMER_DURATION_MS = 2000;
53
+
54
+ /**
55
+ * MUI's `palette.common`, which is a pair of fixed hexes rather than anything
56
+ * derived — so the shared theme has no slot for them and they are named here.
57
+ */
58
+ export const COMMON_BLACK = '#000';
59
+ export const COMMON_WHITE = '#fff';
60
+
61
+ /* ── MUI's own `Skeleton`, restated for the renderer that has no MUI ──────── */
62
+
63
+ /**
64
+ * MUI's `pulseKeyframe`: opacity 1 → 0.4 → 1, `2s ease-in-out 0.5s infinite`.
65
+ * The delay runs once on the web; native replays it each lap unless the
66
+ * animation is sequenced, which `Skeleton.native.tsx` does.
67
+ */
68
+ export const PULSE = { durationMs: 2000, delayMs: 500, dip: 0.4 } as const;
69
+
70
+ /** MUI's `wave` sweep: `1.6s linear 0.5s infinite`, in `palette.action.hover`. */
71
+ export const WAVE = { durationMs: 1600, delayMs: 500 } as const;
72
+
73
+ /**
74
+ * The `text` variant, as MUI draws it: a line box `1.2em` tall squashed to 60%
75
+ * of its height (`transform: scale(1, 0.60)`), with a `4px/6.7px` elliptical
76
+ * radius that the same squash turns back into a round 4px. React Native has no
77
+ * `em`, and its transforms do not change layout, so the native half multiplies
78
+ * the two out into one height and draws the plain 4px radius the squash lands on.
79
+ */
80
+ export const TEXT_LINE_HEIGHT_EM = 1.2;
81
+ export const TEXT_SCALE_Y = 0.6;
@@ -0,0 +1,271 @@
1
+ import * as React from 'react';
2
+ import {
3
+ Animated,
4
+ Easing,
5
+ StyleSheet,
6
+ View,
7
+ type DimensionValue,
8
+ type StyleProp,
9
+ type ViewProps,
10
+ type ViewStyle,
11
+ } from 'react-native';
12
+
13
+ import { resolveSkeletonProps, skeletonInstanceTestId } from './Skeleton.helpers';
14
+ import {
15
+ COMMON_BLACK,
16
+ COMMON_WHITE,
17
+ GLASS_BACKGROUND_ALPHA_FROM,
18
+ GLASS_BORDER_ALPHA,
19
+ GLASS_SHADOW,
20
+ PULSE,
21
+ SHIMMER_ALPHA,
22
+ SHIMMER_DURATION_MS,
23
+ SKELETON_DEFAULT_DIMENSIONS,
24
+ SKELETON_INTENSITY_OPACITY,
25
+ TEXT_LINE_HEIGHT_EM,
26
+ TEXT_SCALE_Y,
27
+ WAVE,
28
+ } from './Skeleton.metrics';
29
+ import type {
30
+ SkeletonAnimation,
31
+ SkeletonIntensity,
32
+ SkeletonProps,
33
+ SkeletonVariant,
34
+ } from './Skeleton.types.native';
35
+ import { useLoopedProgress } from '../../../platform/animation';
36
+ import { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';
37
+ import { useUiTheme } from '../../../provider/use-ui-theme.native';
38
+ import { alpha } from '../../../tokens/color';
39
+ import type { UiTheme } from '../../../tokens/theme';
40
+
41
+ /** MUI's `pulseKeyframe` runs `ease-in-out`. */
42
+ const PULSE_EASING = Easing.inOut(Easing.ease);
43
+ const PERCENT = /^-?\d+(?:\.\d+)?%$/;
44
+
45
+ /**
46
+ * A width or a height, as React Native accepts one. The web takes any CSS
47
+ * length; here a number is dp and a percentage is a percentage — anything else
48
+ * (`10rem`, `calc(...)`) has no equivalent and sizes the box from its content,
49
+ * which `NATIVE-NOTES.md` records.
50
+ */
51
+ export function dimension(value: number | string | undefined): DimensionValue | undefined {
52
+ if (value === undefined || typeof value === 'number') return value;
53
+ return PERCENT.test(value) ? (value as `${number}%`) : undefined;
54
+ }
55
+
56
+ /** The tint the web writes: the body ink at the intensity's alpha, white in dark mode. */
57
+ export const skeletonTint = (theme: UiTheme, intensity: SkeletonIntensity): string =>
58
+ alpha(
59
+ theme.mode === 'dark' ? COMMON_WHITE : theme.palette.text.primary,
60
+ SKELETON_INTENSITY_OPACITY[intensity],
61
+ );
62
+
63
+ /** MUI's radius per variant: a circle, a square rectangle, the theme's 4px on text. */
64
+ const radiusFor = (theme: UiTheme, variant: SkeletonVariant): number => {
65
+ if (variant === 'circular') return theme.radius.full;
66
+ return variant === 'text' ? theme.radius.md : 0;
67
+ };
68
+
69
+ /**
70
+ * The `text` variant's height. MUI gives it a `1.2em` line box and squashes the
71
+ * whole box to 60%; React Native's transforms do not change layout, so the two
72
+ * are multiplied out into the height the web actually shows.
73
+ */
74
+ export function textBoxHeight(
75
+ theme: UiTheme,
76
+ height: number | string | undefined,
77
+ ): DimensionValue | undefined {
78
+ if (typeof height === 'string') return dimension(height);
79
+ const box = height ?? theme.typography.sizes.md.fontSize * TEXT_LINE_HEIGHT_EM;
80
+ return box * TEXT_SCALE_Y;
81
+ }
82
+
83
+ /**
84
+ * `glassmorphism`: the gradient's first stop flat, the hairline, and the web's
85
+ * own box-shadow string — React Native 0.76+ takes CSS shadow syntax, so the
86
+ * two renderers draw the shadow from the same declaration. What is missing is
87
+ * the 20px backdrop blur, which React Native has no equivalent of.
88
+ */
89
+ function glassStyle(theme: UiTheme): ViewStyle {
90
+ return {
91
+ backgroundColor: alpha(theme.palette.background.paper, GLASS_BACKGROUND_ALPHA_FROM),
92
+ borderWidth: 1,
93
+ borderColor: alpha(theme.palette.divider, GLASS_BORDER_ALPHA),
94
+ boxShadow: `0 ${GLASS_SHADOW.offsetY}px ${GLASS_SHADOW.blur}px 0 ${alpha(COMMON_BLACK, GLASS_SHADOW.alpha)}`,
95
+ };
96
+ }
97
+
98
+ interface SkeletonBoxStyleArgs {
99
+ variant: SkeletonVariant;
100
+ intensity: SkeletonIntensity;
101
+ width?: number | string;
102
+ height?: number | string;
103
+ borderRadius?: number | string;
104
+ glassmorphism: boolean;
105
+ /** A box with a wash sliding over it clips, as MUI's `wave` and the shimmer do. */
106
+ clipped: boolean;
107
+ }
108
+
109
+ /** The box the web paints, in absolute numbers. */
110
+ export function skeletonBoxStyle(theme: UiTheme, a: SkeletonBoxStyleArgs): ViewStyle {
111
+ const box = SKELETON_DEFAULT_DIMENSIONS[a.variant];
112
+ const height = a.height ?? box.height;
113
+ const style: ViewStyle = {
114
+ width: dimension(a.width ?? box.width),
115
+ height: a.variant === 'text' ? textBoxHeight(theme, height) : dimension(height),
116
+ borderRadius: dimension(a.borderRadius) ?? radiusFor(theme, a.variant),
117
+ backgroundColor: skeletonTint(theme, a.intensity),
118
+ };
119
+ if (a.clipped) style.overflow = 'hidden';
120
+ return a.glassmorphism ? { ...style, ...glassStyle(theme) } : style;
121
+ }
122
+
123
+ interface WashProps {
124
+ color: string;
125
+ durationMs: number;
126
+ delayMs: number;
127
+ testID?: string;
128
+ }
129
+
130
+ /**
131
+ * MUI's sweeping `::after`, standing still. React Native core has no gradient
132
+ * fill and no pseudo-elements, so the same wash covers the box and fades in and
133
+ * out on the same cadence instead of travelling across it. It carries no
134
+ * `aria-hidden` of its own: the box it sits in is already hidden, and the
135
+ * shared stories count the boxes by that attribute.
136
+ */
137
+ function Wash({ color, durationMs, delayMs, testID }: WashProps): React.JSX.Element {
138
+ const progress = useLoopedProgress(true, { durationMs, delayMs, easing: Easing.linear });
139
+ return (
140
+ <Animated.View
141
+ testID={testID}
142
+ style={[
143
+ StyleSheet.absoluteFill,
144
+ {
145
+ pointerEvents: 'none',
146
+ backgroundColor: color,
147
+ opacity: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [0, 1, 0] }),
148
+ },
149
+ ]}
150
+ />
151
+ );
152
+ }
153
+
154
+ interface SkeletonBoxProps extends SkeletonBoxStyleArgs {
155
+ animation: SkeletonAnimation;
156
+ shimmer: boolean;
157
+ style?: StyleProp<ViewStyle>;
158
+ testID?: string;
159
+ rest: ViewProps;
160
+ }
161
+
162
+ /** The web's `muiAnimationFor`: the `wave` VARIANT always animates as a wave. */
163
+ const effectiveAnimation = (
164
+ variant: SkeletonVariant,
165
+ animation: SkeletonAnimation,
166
+ ): SkeletonAnimation => (variant === 'wave' ? 'wave' : animation);
167
+
168
+ /** One skeleton box: the tint, the pulse, and the wash the sweep stands in for. */
169
+ function SkeletonBox({
170
+ animation,
171
+ shimmer,
172
+ style,
173
+ testID,
174
+ rest,
175
+ ...styleArgs
176
+ }: SkeletonBoxProps): React.JSX.Element {
177
+ const theme = useUiTheme();
178
+ const animates = effectiveAnimation(styleArgs.variant, animation);
179
+ const pulse = useLoopedProgress(animates === 'pulse', {
180
+ durationMs: PULSE.durationMs,
181
+ delayMs: PULSE.delayMs,
182
+ easing: PULSE_EASING,
183
+ });
184
+ const box = skeletonBoxStyle(theme, styleArgs);
185
+ const washId = testID ? `${testID}-wash` : undefined;
186
+
187
+ return (
188
+ <Animated.View
189
+ aria-hidden
190
+ testID={testID}
191
+ style={[
192
+ box,
193
+ animates === 'pulse'
194
+ ? { opacity: pulse.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, PULSE.dip, 1] }) }
195
+ : null,
196
+ style,
197
+ ]}
198
+ {...rest}
199
+ >
200
+ {shimmer ? (
201
+ <Wash
202
+ color={alpha(COMMON_WHITE, SHIMMER_ALPHA)}
203
+ durationMs={SHIMMER_DURATION_MS}
204
+ delayMs={0}
205
+ testID={washId}
206
+ />
207
+ ) : null}
208
+ {!shimmer && animates === 'wave' ? (
209
+ <Wash
210
+ color={theme.palette.action.hover}
211
+ durationMs={WAVE.durationMs}
212
+ delayMs={WAVE.delayMs}
213
+ testID={washId}
214
+ />
215
+ ) : null}
216
+ </Animated.View>
217
+ );
218
+ }
219
+
220
+ /**
221
+ * The native `Skeleton`: the same box, the same tint and the same default
222
+ * dimensions the MUI half draws, on a `View`.
223
+ */
224
+ export const Skeleton: React.FC<SkeletonProps> = React.memo(function Skeleton(rawProps) {
225
+ const resolved = resolveSkeletonProps(rawProps);
226
+ const {
227
+ variant,
228
+ animation,
229
+ width,
230
+ height,
231
+ count,
232
+ spacing,
233
+ borderRadius,
234
+ intensity,
235
+ glassmorphism,
236
+ shimmer,
237
+ style,
238
+ ...others
239
+ } = resolved;
240
+ const theme = useUiTheme();
241
+ const testID = resolveTestId(others);
242
+ const box: Omit<SkeletonBoxProps, 'testID'> = {
243
+ variant,
244
+ animation,
245
+ intensity,
246
+ width,
247
+ height,
248
+ borderRadius,
249
+ glassmorphism,
250
+ shimmer,
251
+ clipped: shimmer || effectiveAnimation(variant, animation) === 'wave',
252
+ style,
253
+ rest: withoutTestIdProps(others),
254
+ };
255
+
256
+ // Handle edge case: count of 0 should render nothing
257
+ if (count === 0) return null;
258
+ if (count === 1) return <SkeletonBox {...box} testID={testID} />;
259
+
260
+ return (
261
+ <View style={{ gap: theme.spacing(spacing) }}>
262
+ {Array.from({ length: count }, (_, index) => (
263
+ <View key={`skeleton-${index}`}>
264
+ <SkeletonBox {...box} testID={skeletonInstanceTestId(testID, index)} />
265
+ </View>
266
+ ))}
267
+ </View>
268
+ );
269
+ });
270
+
271
+ Skeleton.displayName = 'Skeleton';
@@ -2,6 +2,17 @@ import { alpha } from '@mui/material/styles/index.js';
2
2
  import type { CSSObject, Theme } from '@mui/material/styles/index.js';
3
3
 
4
4
  import type { SkeletonProps } from './Skeleton.types';
5
+ import {
6
+ GLASS_BACKGROUND_ALPHA_FROM,
7
+ GLASS_BACKGROUND_ALPHA_TO,
8
+ GLASS_BLUR_PX,
9
+ GLASS_BORDER_ALPHA,
10
+ GLASS_SHADOW,
11
+ SHIMMER_ALPHA,
12
+ SHIMMER_DURATION_MS,
13
+ SKELETON_DEFAULT_DIMENSIONS,
14
+ SKELETON_INTENSITY_OPACITY,
15
+ } from './Skeleton.metrics';
5
16
 
6
17
  type SkeletonVariant = NonNullable<SkeletonProps['variant']>;
7
18
  type SkeletonIntensity = NonNullable<SkeletonProps['intensity']>;
@@ -29,36 +40,25 @@ export const muiAnimationFor = (
29
40
  return animation;
30
41
  };
31
42
 
43
+ // Derived from the shared metrics, not restated: the native `Skeleton` reads
44
+ // the same table, so the two renderers cannot disagree on a default box.
32
45
  export const defaultDimensions = (
33
46
  variant: SkeletonVariant,
34
- ): { width: number | string; height: number | undefined } => {
35
- switch (variant) {
36
- case 'circular':
37
- return { width: 40, height: 40 };
38
- case 'rectangular':
39
- case 'wave':
40
- return { width: '100%', height: 40 };
41
- default:
42
- return { width: '100%', height: undefined };
43
- }
44
- };
45
-
46
- const INTENSITY_OPACITY: Record<SkeletonIntensity, number> = {
47
- low: 0.11,
48
- medium: 0.13,
49
- high: 0.15,
50
- };
47
+ ): { width: number | string; height: number | undefined } =>
48
+ // The `default:` arm the old switch had: an unrecognised variant used to fall
49
+ // back rather than hand `undefined` to a caller that then reads `.width`.
50
+ SKELETON_DEFAULT_DIMENSIONS[variant] ?? SKELETON_DEFAULT_DIMENSIONS.rectangular;
51
51
 
52
52
  const intensityOpacity = (intensity: SkeletonIntensity): number =>
53
- INTENSITY_OPACITY[intensity] ?? INTENSITY_OPACITY.medium;
53
+ SKELETON_INTENSITY_OPACITY[intensity] ?? SKELETON_INTENSITY_OPACITY.medium;
54
54
 
55
55
  const glassmorphismStyles = (theme: Theme): CSSObject => ({
56
56
  background: `linear-gradient(135deg,
57
- ${alpha(theme.palette.background.paper, 0.8)} 0%,
58
- ${alpha(theme.palette.background.paper, 0.4)} 100%)`,
59
- backdropFilter: 'blur(20px)',
60
- border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,
61
- boxShadow: `0 8px 32px 0 ${alpha(theme.palette.common.black, 0.1)}`,
57
+ ${alpha(theme.palette.background.paper, GLASS_BACKGROUND_ALPHA_FROM)} 0%,
58
+ ${alpha(theme.palette.background.paper, GLASS_BACKGROUND_ALPHA_TO)} 100%)`,
59
+ backdropFilter: `blur(${GLASS_BLUR_PX}px)`,
60
+ border: `1px solid ${alpha(theme.palette.divider, GLASS_BORDER_ALPHA)}`,
61
+ boxShadow: `0 ${GLASS_SHADOW.offsetY}px ${GLASS_SHADOW.blur}px 0 ${alpha(theme.palette.common.black, GLASS_SHADOW.alpha)}`,
62
62
  });
63
63
 
64
64
  // The sweep is a pseudo-element sliding across the box, so the box has to clip it
@@ -74,11 +74,11 @@ const shimmerStyles = (theme: Theme): CSSObject => ({
74
74
  background: `linear-gradient(
75
75
  90deg,
76
76
  transparent,
77
- ${alpha(theme.palette.common.white, 0.3)},
77
+ ${alpha(theme.palette.common.white, SHIMMER_ALPHA)},
78
78
  transparent
79
79
  )`,
80
80
  transform: 'translateX(-100%)',
81
- animation: 'shimmer 2s infinite',
81
+ animation: `shimmer ${SHIMMER_DURATION_MS / 1000}s infinite`,
82
82
  },
83
83
  '@keyframes shimmer': {
84
84
  '100%': {
@@ -4,7 +4,7 @@ import Stack from '@mui/material/Stack/index.js';
4
4
  import { useTheme } from '@mui/material/styles/index.js';
5
5
  import React from 'react';
6
6
 
7
- import { resolveSkeletonProps } from './Skeleton.helpers';
7
+ import { resolveSkeletonProps, skeletonInstanceTestId } from './Skeleton.helpers';
8
8
  import {
9
9
  defaultDimensions,
10
10
  muiAnimationFor,
@@ -12,6 +12,7 @@ import {
12
12
  skeletonStyles,
13
13
  } from './Skeleton.styles';
14
14
  import type { SkeletonProps } from './Skeleton.types';
15
+ import { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';
15
16
 
16
17
  export const Skeleton: React.FC<SkeletonProps> = React.memo((rawProps) => {
17
18
  const {
@@ -26,10 +27,13 @@ export const Skeleton: React.FC<SkeletonProps> = React.memo((rawProps) => {
26
27
  intensity,
27
28
  glassmorphism,
28
29
  shimmer,
29
- 'data-testid': dataTestId,
30
30
  style,
31
- ...props
31
+ ...others
32
32
  } = resolveSkeletonProps(rawProps);
33
+ // `testID` and `dataTestId` are the shared contract's spellings; the DOM
34
+ // wants `data-testid`, and must not see the other two as attributes.
35
+ const dataTestId = resolveTestId(others);
36
+ const props = withoutTestIdProps(others);
33
37
  const theme = useTheme();
34
38
 
35
39
  const defaults = defaultDimensions(variant);
@@ -70,7 +74,7 @@ export const Skeleton: React.FC<SkeletonProps> = React.memo((rawProps) => {
70
74
  {Array.from({ length: count }).map((_, index) => (
71
75
  <Box key={`skeleton-${index}`}>
72
76
  {React.cloneElement(singleSkeleton, {
73
- 'data-testid': dataTestId ? `${dataTestId}-${index}` : undefined,
77
+ 'data-testid': skeletonInstanceTestId(dataTestId, index),
74
78
  })}
75
79
  </Box>
76
80
  ))}
@@ -78,4 +82,4 @@ export const Skeleton: React.FC<SkeletonProps> = React.memo((rawProps) => {
78
82
  );
79
83
  });
80
84
 
81
- Skeleton.displayName = 'Skeleton';
85
+ Skeleton.displayName = 'Skeleton';
@@ -0,0 +1,16 @@
1
+ import type { StyleProp, ViewProps, ViewStyle } from 'react-native';
2
+
3
+ import type { SkeletonBaseProps } from './Skeleton.base';
4
+
5
+ export type {
6
+ SkeletonAnimation,
7
+ SkeletonBaseProps,
8
+ SkeletonIntensity,
9
+ SkeletonVariant,
10
+ } from './Skeleton.base';
11
+
12
+ /** The native `Skeleton`: the shared contract, plus a `View`'s own props. */
13
+ export type SkeletonProps = SkeletonBaseProps &
14
+ Omit<ViewProps, keyof SkeletonBaseProps | 'style'> & {
15
+ style?: StyleProp<ViewStyle>;
16
+ };
@@ -1,19 +1,16 @@
1
- export type SkeletonVariant = 'text' | 'circular' | 'rectangular' | 'wave';
2
- export type SkeletonAnimation = 'pulse' | 'wave' | false;
3
- export type SkeletonIntensity = 'low' | 'medium' | 'high';
1
+ import type React from 'react';
4
2
 
5
- export interface SkeletonProps {
6
- variant?: SkeletonVariant;
7
- animation?: SkeletonAnimation;
8
- width?: number | string;
9
- height?: number | string;
10
- count?: number;
11
- spacing?: number;
12
- borderRadius?: number | string;
3
+ import type { SkeletonBaseProps } from './Skeleton.base';
4
+
5
+ export type {
6
+ SkeletonAnimation,
7
+ SkeletonBaseProps,
8
+ SkeletonIntensity,
9
+ SkeletonVariant,
10
+ } from './Skeleton.base';
11
+
12
+ /** The web `Skeleton`: the shared contract, plus the DOM's own two styling hooks. */
13
+ export interface SkeletonProps extends SkeletonBaseProps {
13
14
  className?: string;
14
- intensity?: SkeletonIntensity;
15
- glassmorphism?: boolean;
16
- shimmer?: boolean;
17
- 'data-testid'?: string;
18
15
  style?: React.CSSProperties;
19
- }
16
+ }