@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
@@ -0,0 +1,432 @@
1
+ import {
2
+ useLoopedProgress
3
+ } from "../chunks/chunk-MLQIOKQZ.js";
4
+ import {
5
+ MUI_TYPE
6
+ } from "../chunks/chunk-HSIND52T.js";
7
+ import {
8
+ useUiTheme
9
+ } from "../chunks/chunk-YTHR4Y5P.js";
10
+ import {
11
+ GREY,
12
+ alpha,
13
+ contrastText
14
+ } from "../chunks/chunk-P3PL4WBO.js";
15
+
16
+ // src/components/data-display/Progress/Progress.native.tsx
17
+ import * as React from "react";
18
+ import {
19
+ Animated,
20
+ Easing,
21
+ StyleSheet,
22
+ Text as RNText,
23
+ View
24
+ } from "react-native";
25
+ import Svg, { Circle } from "react-native-svg";
26
+
27
+ // src/components/data-display/Progress/Progress.helpers.ts
28
+ var PROGRESS_DEFAULTS = {
29
+ variant: "linear",
30
+ size: "md",
31
+ color: "primary",
32
+ glow: false,
33
+ pulse: false,
34
+ showLabel: false,
35
+ segments: 10,
36
+ thickness: 4,
37
+ dataTestId: "progress"
38
+ };
39
+ var definedProps = (props) => Object.fromEntries(
40
+ Object.entries(props).filter(([, value]) => value !== void 0)
41
+ );
42
+ var resolveProgressProps = (props) => ({ ...PROGRESS_DEFAULTS, ...definedProps(props) });
43
+ var progressLabelText = (label, showLabel, displayValue) => label || (showLabel ? `${Math.round(displayValue)}%` : "");
44
+ var progressFraction = (value) => Number.isFinite(value) ? Math.min(100, Math.max(0, value)) : 0;
45
+
46
+ // src/components/data-display/Progress/Progress.metrics.ts
47
+ var PROGRESS_SIZES = {
48
+ xs: { height: 2, circularSize: 24, fontSize: 10 },
49
+ sm: { height: 4, circularSize: 32, fontSize: 12 },
50
+ md: { height: 6, circularSize: 40, fontSize: 14 },
51
+ lg: { height: 8, circularSize: 48, fontSize: 16 },
52
+ xl: { height: 10, circularSize: 56, fontSize: 18 }
53
+ };
54
+ var TRACK_ALPHA = 0.1;
55
+ var LABEL_FONT_WEIGHT = 600;
56
+ var LABEL_MARGIN_TOP_UNITS = 1;
57
+ var SEGMENT_GAP_UNITS = 0.5;
58
+ var GLASS_BAR_ALPHA = 0.8;
59
+ var GLASS_BAR_BORDER_ALPHA = 0.3;
60
+ var BAR_GLOW = { blur: 10, spread: 2, alpha: 0.4 };
61
+ var SEGMENT_GLOW = { blur: 6, spread: 1, alpha: 0.4 };
62
+ var CIRCULAR_GLOW = { blur: 8, alpha: 0.6 };
63
+ var PULSE = { durationMs: 2e3, dip: 0.7 };
64
+ var CIRCULAR_VIEWBOX = 44;
65
+ var CIRCULAR_ROTATION_DEG = -90;
66
+ var circularCircumference = (thickness) => 2 * Math.PI * ((CIRCULAR_VIEWBOX - thickness) / 2);
67
+ var circularDashOffset = (value, thickness) => (100 - value) / 100 * circularCircumference(thickness);
68
+ var CIRCULAR_INDETERMINATE = { arc: 0.25, rotationMs: 1400 };
69
+ var LINEAR_INDETERMINATE = { width: 0.35, durationMs: 2100 };
70
+ function progressPalette(theme, color) {
71
+ if (color === "neutral") {
72
+ return {
73
+ light: GREY[300],
74
+ main: GREY[500],
75
+ dark: GREY[700],
76
+ contrastText: contrastText(GREY[500])
77
+ };
78
+ }
79
+ return theme.palette[color];
80
+ }
81
+
82
+ // src/components/data-display/Progress/Progress.look.native.ts
83
+ var glowShadow = (main, { blur, spread, alpha: a }) => `0 0 ${blur}px ${spread}px ${alpha(main, a)}`;
84
+ function trackStyle(theme, size, color) {
85
+ const { height } = PROGRESS_SIZES[size];
86
+ return {
87
+ width: "100%",
88
+ height,
89
+ borderRadius: height / 2,
90
+ backgroundColor: alpha(progressPalette(theme, color).main, TRACK_ALPHA),
91
+ // The bar inherits the track's radius on the web; here it is clipped to it.
92
+ overflow: "hidden"
93
+ };
94
+ }
95
+ function barPaint(variant, palette) {
96
+ switch (variant) {
97
+ case "gradient":
98
+ return { backgroundColor: palette.main };
99
+ case "glass":
100
+ return {
101
+ backgroundColor: alpha(palette.main, GLASS_BAR_ALPHA),
102
+ borderWidth: 1,
103
+ borderColor: alpha(palette.main, GLASS_BAR_BORDER_ALPHA)
104
+ };
105
+ default:
106
+ return { backgroundColor: palette.main };
107
+ }
108
+ }
109
+ function barStyle(theme, a) {
110
+ const palette = progressPalette(theme, a.color);
111
+ const { height } = PROGRESS_SIZES[a.size];
112
+ return {
113
+ height: "100%",
114
+ borderRadius: height / 2,
115
+ ...barPaint(a.variant, palette),
116
+ ...a.glow ? { boxShadow: glowShadow(palette.main, BAR_GLOW) } : {}
117
+ };
118
+ }
119
+ function segmentStyle(theme, a) {
120
+ const palette = progressPalette(theme, a.color);
121
+ const { height } = PROGRESS_SIZES[a.size];
122
+ return {
123
+ flex: 1,
124
+ height,
125
+ borderRadius: height / 2,
126
+ backgroundColor: a.filled ? palette.main : alpha(palette.main, TRACK_ALPHA),
127
+ ...a.glow && a.filled ? { boxShadow: glowShadow(palette.main, SEGMENT_GLOW) } : {}
128
+ };
129
+ }
130
+ function circularGlowStyle(theme, color) {
131
+ const main = progressPalette(theme, color).main;
132
+ return { boxShadow: `0 0 ${CIRCULAR_GLOW.blur}px ${alpha(main, CIRCULAR_GLOW.alpha)}` };
133
+ }
134
+ function labelStyle(theme, size, muted = false) {
135
+ const fontSize = PROGRESS_SIZES[size].fontSize;
136
+ const caption = MUI_TYPE.caption;
137
+ return {
138
+ fontFamily: theme.typography.fontFamily,
139
+ fontSize,
140
+ lineHeight: fontSize * caption.lineHeight,
141
+ letterSpacing: fontSize * caption.letterSpacingEm,
142
+ fontWeight: String(LABEL_FONT_WEIGHT),
143
+ textAlign: "center",
144
+ color: muted ? theme.palette.text.secondary : theme.palette.text.primary
145
+ };
146
+ }
147
+
148
+ // src/components/data-display/Progress/Progress.native.tsx
149
+ import { jsx, jsxs } from "react/jsx-runtime";
150
+ var valueAria = (value) => value === void 0 ? {} : { "aria-valuenow": Math.round(value), "aria-valuemin": 0, "aria-valuemax": 100 };
151
+ function usePulseStyle(enabled) {
152
+ const progress = useLoopedProgress(enabled, {
153
+ durationMs: PULSE.durationMs,
154
+ easing: PULSE_EASING
155
+ });
156
+ if (!enabled) return null;
157
+ return {
158
+ opacity: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, PULSE.dip, 1] })
159
+ };
160
+ }
161
+ var PULSE_EASING = Easing.inOut(Easing.ease);
162
+ function ProgressLabel({
163
+ size,
164
+ label,
165
+ testID,
166
+ muted = false,
167
+ spaced = false
168
+ }) {
169
+ const theme = useUiTheme();
170
+ return /* @__PURE__ */ jsx(
171
+ RNText,
172
+ {
173
+ testID,
174
+ style: [
175
+ labelStyle(theme, size, muted),
176
+ spaced ? { marginTop: theme.spacing(LABEL_MARGIN_TOP_UNITS) } : null
177
+ ],
178
+ children: label
179
+ }
180
+ );
181
+ }
182
+ function useSweepStyle(enabled) {
183
+ const width = `${LINEAR_INDETERMINATE.width * 100}%`;
184
+ const progress = useLoopedProgress(enabled, {
185
+ durationMs: LINEAR_INDETERMINATE.durationMs,
186
+ // `left` is a layout property, which the native driver cannot animate.
187
+ useNativeDriver: false
188
+ });
189
+ if (!enabled) return null;
190
+ return {
191
+ position: "absolute",
192
+ top: 0,
193
+ bottom: 0,
194
+ width,
195
+ left: progress.interpolate({ inputRange: [0, 1], outputRange: [`-${width}`, "100%"] })
196
+ };
197
+ }
198
+ function LinearView({
199
+ variant,
200
+ size,
201
+ color,
202
+ glow,
203
+ pulse,
204
+ showLabel,
205
+ displayValue,
206
+ displayLabel,
207
+ value,
208
+ testID,
209
+ elementTestID,
210
+ style,
211
+ containerRef,
212
+ rest
213
+ }) {
214
+ const theme = useUiTheme();
215
+ const pulseStyle = usePulseStyle(pulse);
216
+ const sweep = useSweepStyle(value === void 0);
217
+ return /* @__PURE__ */ jsxs(View, { ref: containerRef, testID, style: [styles.block, style], children: [
218
+ /* @__PURE__ */ jsx(
219
+ View,
220
+ {
221
+ testID: elementTestID,
222
+ role: "progressbar",
223
+ ...valueAria(value),
224
+ style: trackStyle(theme, size, color),
225
+ ...rest,
226
+ children: /* @__PURE__ */ jsx(
227
+ Animated.View,
228
+ {
229
+ style: [
230
+ barStyle(theme, { variant, size, color, glow }),
231
+ sweep ?? { width: `${progressFraction(displayValue)}%` },
232
+ pulseStyle
233
+ ]
234
+ }
235
+ )
236
+ }
237
+ ),
238
+ showLabel ? /* @__PURE__ */ jsx(ProgressLabel, { size, label: displayLabel, testID: `${testID}-label`, spaced: true }) : null
239
+ ] });
240
+ }
241
+ function useSpinStyle(enabled) {
242
+ const progress = useLoopedProgress(enabled, {
243
+ durationMs: CIRCULAR_INDETERMINATE.rotationMs
244
+ });
245
+ if (!enabled) {
246
+ return { transform: [{ rotate: `${CIRCULAR_ROTATION_DEG}deg` }] };
247
+ }
248
+ return {
249
+ transform: [
250
+ { rotate: progress.interpolate({ inputRange: [0, 1], outputRange: ["0deg", "360deg"] }) }
251
+ ]
252
+ };
253
+ }
254
+ function CircularDial({
255
+ diameter,
256
+ thickness,
257
+ stroke,
258
+ dashOffset
259
+ }) {
260
+ const half = CIRCULAR_VIEWBOX / 2;
261
+ return /* @__PURE__ */ jsx(
262
+ Svg,
263
+ {
264
+ width: diameter,
265
+ height: diameter,
266
+ viewBox: `${half} ${half} ${CIRCULAR_VIEWBOX} ${CIRCULAR_VIEWBOX}`,
267
+ children: /* @__PURE__ */ jsx(
268
+ Circle,
269
+ {
270
+ cx: CIRCULAR_VIEWBOX,
271
+ cy: CIRCULAR_VIEWBOX,
272
+ r: (CIRCULAR_VIEWBOX - thickness) / 2,
273
+ fill: "none",
274
+ stroke,
275
+ strokeWidth: thickness,
276
+ strokeDasharray: circularCircumference(thickness),
277
+ strokeDashoffset: dashOffset
278
+ }
279
+ )
280
+ }
281
+ );
282
+ }
283
+ function CircularView({
284
+ size,
285
+ color,
286
+ glow,
287
+ pulse,
288
+ showLabel,
289
+ displayValue,
290
+ displayLabel,
291
+ value,
292
+ testID,
293
+ elementTestID,
294
+ style,
295
+ containerRef,
296
+ rest,
297
+ thickness,
298
+ circularSize
299
+ }) {
300
+ const theme = useUiTheme();
301
+ const indeterminate = value === void 0;
302
+ const pulseStyle = usePulseStyle(pulse);
303
+ const spin = useSpinStyle(indeterminate);
304
+ const diameter = circularSize || PROGRESS_SIZES[size].circularSize;
305
+ const box = { width: diameter, height: diameter };
306
+ return /* @__PURE__ */ jsxs(View, { ref: containerRef, testID, style: [styles.inline, style], children: [
307
+ /* @__PURE__ */ jsx(
308
+ Animated.View,
309
+ {
310
+ testID: elementTestID,
311
+ role: "progressbar",
312
+ ...valueAria(value),
313
+ style: [box, glow ? circularGlowStyle(theme, color) : null, pulseStyle],
314
+ ...rest,
315
+ children: /* @__PURE__ */ jsx(Animated.View, { style: [box, spin], children: /* @__PURE__ */ jsx(
316
+ CircularDial,
317
+ {
318
+ diameter,
319
+ thickness,
320
+ stroke: progressPalette(theme, color).main,
321
+ dashOffset: indeterminate ? circularCircumference(thickness) * (1 - CIRCULAR_INDETERMINATE.arc) : circularDashOffset(displayValue, thickness)
322
+ }
323
+ ) })
324
+ }
325
+ ),
326
+ showLabel && !indeterminate ? /* @__PURE__ */ jsx(View, { style: [StyleSheet.absoluteFill, styles.centre], children: /* @__PURE__ */ jsx(ProgressLabel, { size, label: displayLabel, testID: `${testID}-label`, muted: true }) }) : null
327
+ ] });
328
+ }
329
+ function SegmentedView({
330
+ size,
331
+ color,
332
+ glow,
333
+ pulse,
334
+ showLabel,
335
+ displayValue,
336
+ displayLabel,
337
+ testID,
338
+ elementTestID,
339
+ style,
340
+ containerRef,
341
+ rest,
342
+ segments
343
+ }) {
344
+ const theme = useUiTheme();
345
+ const pulseStyle = usePulseStyle(pulse);
346
+ const filled = Math.floor(progressFraction(displayValue) / 100 * segments);
347
+ return /* @__PURE__ */ jsxs(View, { ref: containerRef, testID: elementTestID, style: [styles.block, style], ...rest, children: [
348
+ /* @__PURE__ */ jsx(
349
+ View,
350
+ {
351
+ testID: `${testID}-segments-container`,
352
+ style: [styles.segments, { gap: theme.spacing(SEGMENT_GAP_UNITS) }],
353
+ children: Array.from({ length: segments }, (_, index) => /* @__PURE__ */ jsx(
354
+ Animated.View,
355
+ {
356
+ testID: `${testID}-segment-${index}`,
357
+ style: [
358
+ segmentStyle(theme, { size, color, filled: index < filled, glow }),
359
+ index < filled ? pulseStyle : null
360
+ ]
361
+ },
362
+ `segment-${index}`
363
+ ))
364
+ }
365
+ ),
366
+ showLabel ? /* @__PURE__ */ jsx(ProgressLabel, { size, label: displayLabel, testID: `${testID}-label`, spaced: true }) : null
367
+ ] });
368
+ }
369
+ var Progress = React.forwardRef((rawProps, ref) => {
370
+ const {
371
+ variant,
372
+ size,
373
+ color,
374
+ glow,
375
+ pulse,
376
+ showLabel,
377
+ label,
378
+ segments,
379
+ thickness,
380
+ circularSize,
381
+ value,
382
+ dataTestId,
383
+ testID,
384
+ style,
385
+ "data-testid": elementId,
386
+ ...rest
387
+ } = resolveProgressProps(rawProps);
388
+ const displayValue = value || 0;
389
+ const base = testID ?? dataTestId;
390
+ const shared = {
391
+ size,
392
+ color,
393
+ glow,
394
+ pulse,
395
+ showLabel,
396
+ displayValue,
397
+ displayLabel: progressLabelText(label, showLabel, displayValue),
398
+ value,
399
+ testID: base,
400
+ elementTestID: base,
401
+ style,
402
+ containerRef: ref,
403
+ rest
404
+ };
405
+ if (variant === "circular") {
406
+ return /* @__PURE__ */ jsx(
407
+ CircularView,
408
+ {
409
+ ...shared,
410
+ elementTestID: elementId ?? `${base}-circular`,
411
+ thickness,
412
+ circularSize
413
+ }
414
+ );
415
+ }
416
+ if (variant === "segmented") {
417
+ return /* @__PURE__ */ jsx(SegmentedView, { ...shared, elementTestID: elementId ?? base, segments });
418
+ }
419
+ return /* @__PURE__ */ jsx(LinearView, { ...shared, elementTestID: elementId ?? `${base}-linear`, variant });
420
+ });
421
+ Progress.displayName = "Progress";
422
+ var styles = StyleSheet.create({
423
+ block: { width: "100%" },
424
+ /** MUI's `display: inline-flex` on the circular wrapper. */
425
+ inline: { position: "relative", alignSelf: "flex-start" },
426
+ centre: { alignItems: "center", justifyContent: "center" },
427
+ segments: { flexDirection: "row", width: "100%" }
428
+ });
429
+ export {
430
+ Progress
431
+ };
432
+ //# sourceMappingURL=Progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/data-display/Progress/Progress.native.tsx","../../../src/components/data-display/Progress/Progress.helpers.ts","../../../src/components/data-display/Progress/Progress.metrics.ts","../../../src/components/data-display/Progress/Progress.look.native.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n Easing,\n StyleSheet,\n Text as RNText,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from 'react-native';\nimport Svg, { Circle } from 'react-native-svg';\n\nimport { progressFraction, progressLabelText, resolveProgressProps } from './Progress.helpers';\nimport {\n barStyle,\n circularGlowStyle,\n labelStyle,\n segmentStyle,\n trackStyle,\n} from './Progress.look.native';\nimport {\n CIRCULAR_INDETERMINATE,\n CIRCULAR_ROTATION_DEG,\n CIRCULAR_VIEWBOX,\n LABEL_MARGIN_TOP_UNITS,\n LINEAR_INDETERMINATE,\n PROGRESS_SIZES,\n PULSE,\n SEGMENT_GAP_UNITS,\n circularCircumference,\n circularDashOffset,\n progressPalette,\n} from './Progress.metrics';\nimport type { ProgressProps, ProgressSize, ProgressVariant } from './Progress.types.native';\nimport { useLoopedProgress } from '../../../platform/animation';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\ntype ValueAria = Pick<ViewProps, 'aria-valuenow' | 'aria-valuemin' | 'aria-valuemax'>;\n\n/** MUI names the value only when it knows it; an indeterminate bar reports none. */\nconst valueAria = (value: number | undefined): ValueAria =>\n value === undefined\n ? {}\n : { 'aria-valuenow': Math.round(value), 'aria-valuemin': 0, 'aria-valuemax': 100 };\n\n/** MUI's `pulseAnimation`, as an opacity the caller can merge into a style. */\nfunction usePulseStyle(enabled: boolean): { opacity: Animated.AnimatedInterpolation<number> } | null {\n const progress = useLoopedProgress(enabled, {\n durationMs: PULSE.durationMs,\n easing: PULSE_EASING,\n });\n if (!enabled) return null;\n return {\n opacity: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, PULSE.dip, 1] }),\n };\n}\n\nconst PULSE_EASING = Easing.inOut(Easing.ease);\n\ninterface ViewArgs {\n size: ProgressSize;\n color: ColorValue;\n glow: boolean;\n pulse: boolean;\n showLabel: boolean;\n displayValue: number;\n displayLabel: string;\n /** Absent means indeterminate — the bar animates rather than reporting progress. */\n value?: number;\n /** The component's own id; the parts derive theirs from it. */\n testID: string;\n /** The id the addressed element takes — the caller's `data-testid` when they gave one. */\n elementTestID: string;\n style?: StyleProp<ViewStyle>;\n containerRef?: React.Ref<View>;\n rest: ViewProps;\n}\n\nfunction ProgressLabel({\n size,\n label,\n testID,\n muted = false,\n spaced = false,\n}: {\n size: ProgressSize;\n label: string;\n testID: string;\n muted?: boolean;\n spaced?: boolean;\n}): React.JSX.Element {\n const theme = useUiTheme();\n return (\n <RNText\n testID={testID}\n style={[\n labelStyle(theme, size, muted),\n spaced ? { marginTop: theme.spacing(LABEL_MARGIN_TOP_UNITS) } : null,\n ]}\n >\n {label}\n </RNText>\n );\n}\n\n/**\n * MUI's `bar1Indeterminate`: a third of the track crossing it every 2.1s.\n * Two bars on the web, one here — `NATIVE-NOTES.md` records the difference.\n */\nfunction useSweepStyle(enabled: boolean): Animated.WithAnimatedValue<ViewStyle> | null {\n const width = `${LINEAR_INDETERMINATE.width * 100}%` as const;\n const progress = useLoopedProgress(enabled, {\n durationMs: LINEAR_INDETERMINATE.durationMs,\n // `left` is a layout property, which the native driver cannot animate.\n useNativeDriver: false,\n });\n if (!enabled) return null;\n return {\n position: 'absolute',\n top: 0,\n bottom: 0,\n width,\n left: progress.interpolate({ inputRange: [0, 1], outputRange: [`-${width}`, '100%'] }),\n };\n}\n\nfunction LinearView({\n variant,\n size,\n color,\n glow,\n pulse,\n showLabel,\n displayValue,\n displayLabel,\n value,\n testID,\n elementTestID,\n style,\n containerRef,\n rest,\n}: ViewArgs & { variant: ProgressVariant }): React.JSX.Element {\n const theme = useUiTheme();\n const pulseStyle = usePulseStyle(pulse);\n const sweep = useSweepStyle(value === undefined);\n\n return (\n <View ref={containerRef} testID={testID} style={[styles.block, style]}>\n <View\n testID={elementTestID}\n role=\"progressbar\"\n {...valueAria(value)}\n style={trackStyle(theme, size, color)}\n {...rest}\n >\n <Animated.View\n style={[\n barStyle(theme, { variant, size, color, glow }),\n sweep ?? { width: `${progressFraction(displayValue)}%` },\n pulseStyle,\n ]}\n />\n </View>\n {showLabel ? (\n <ProgressLabel size={size} label={displayLabel} testID={`${testID}-label`} spaced />\n ) : null}\n </View>\n );\n}\n\n/** MUI's `circular-rotate`: one turn every 1.4s behind an arc that never closes. */\nfunction useSpinStyle(enabled: boolean): Animated.WithAnimatedValue<ViewStyle> {\n const progress = useLoopedProgress(enabled, {\n durationMs: CIRCULAR_INDETERMINATE.rotationMs,\n });\n if (!enabled) {\n return { transform: [{ rotate: `${CIRCULAR_ROTATION_DEG}deg` }] };\n }\n return {\n transform: [\n { rotate: progress.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] }) },\n ],\n };\n}\n\nfunction CircularDial({\n diameter,\n thickness,\n stroke,\n dashOffset,\n}: {\n diameter: number;\n thickness: number;\n stroke: string;\n dashOffset: number;\n}): React.JSX.Element {\n const half = CIRCULAR_VIEWBOX / 2;\n return (\n <Svg\n width={diameter}\n height={diameter}\n viewBox={`${half} ${half} ${CIRCULAR_VIEWBOX} ${CIRCULAR_VIEWBOX}`}\n >\n <Circle\n cx={CIRCULAR_VIEWBOX}\n cy={CIRCULAR_VIEWBOX}\n r={(CIRCULAR_VIEWBOX - thickness) / 2}\n fill=\"none\"\n stroke={stroke}\n strokeWidth={thickness}\n strokeDasharray={circularCircumference(thickness)}\n strokeDashoffset={dashOffset}\n />\n </Svg>\n );\n}\n\nfunction CircularView({\n size,\n color,\n glow,\n pulse,\n showLabel,\n displayValue,\n displayLabel,\n value,\n testID,\n elementTestID,\n style,\n containerRef,\n rest,\n thickness,\n circularSize,\n}: ViewArgs & { thickness: number; circularSize?: number }): React.JSX.Element {\n const theme = useUiTheme();\n const indeterminate = value === undefined;\n const pulseStyle = usePulseStyle(pulse);\n const spin = useSpinStyle(indeterminate);\n const diameter = circularSize || PROGRESS_SIZES[size].circularSize;\n const box = { width: diameter, height: diameter };\n\n return (\n <View ref={containerRef} testID={testID} style={[styles.inline, style]}>\n <Animated.View\n testID={elementTestID}\n role=\"progressbar\"\n {...valueAria(value)}\n style={[box, glow ? circularGlowStyle(theme, color) : null, pulseStyle]}\n {...rest}\n >\n <Animated.View style={[box, spin]}>\n <CircularDial\n diameter={diameter}\n thickness={thickness}\n stroke={progressPalette(theme, color).main}\n dashOffset={\n indeterminate\n ? circularCircumference(thickness) * (1 - CIRCULAR_INDETERMINATE.arc)\n : circularDashOffset(displayValue, thickness)\n }\n />\n </Animated.View>\n </Animated.View>\n {showLabel && !indeterminate ? (\n <View style={[StyleSheet.absoluteFill, styles.centre]}>\n <ProgressLabel size={size} label={displayLabel} testID={`${testID}-label`} muted />\n </View>\n ) : null}\n </View>\n );\n}\n\nfunction SegmentedView({\n size,\n color,\n glow,\n pulse,\n showLabel,\n displayValue,\n displayLabel,\n testID,\n elementTestID,\n style,\n containerRef,\n rest,\n segments,\n}: ViewArgs & { segments: number }): React.JSX.Element {\n const theme = useUiTheme();\n const pulseStyle = usePulseStyle(pulse);\n const filled = Math.floor((progressFraction(displayValue) / 100) * segments);\n\n return (\n <View ref={containerRef} testID={elementTestID} style={[styles.block, style]} {...rest}>\n <View\n testID={`${testID}-segments-container`}\n style={[styles.segments, { gap: theme.spacing(SEGMENT_GAP_UNITS) }]}\n >\n {Array.from({ length: segments }, (_, index) => (\n <Animated.View\n key={`segment-${index}`}\n testID={`${testID}-segment-${index}`}\n style={[\n segmentStyle(theme, { size, color, filled: index < filled, glow }),\n index < filled ? pulseStyle : null,\n ]}\n />\n ))}\n </View>\n {showLabel ? (\n <ProgressLabel size={size} label={displayLabel} testID={`${testID}-label`} spaced />\n ) : null}\n </View>\n );\n}\n\n/**\n * The native `Progress`: the same track, bar, dial and segments the MUI half\n * draws, on `View`s and a `react-native-svg` arc.\n */\nexport const Progress = React.forwardRef<View, ProgressProps>((rawProps, ref) => {\n const {\n variant,\n size,\n color,\n glow,\n pulse,\n showLabel,\n label,\n segments,\n thickness,\n circularSize,\n value,\n dataTestId,\n testID,\n style,\n 'data-testid': elementId,\n ...rest\n } = resolveProgressProps(rawProps);\n const displayValue = value || 0;\n // `testID` is React Native's spelling of `dataTestId` and names the component;\n // `data-testid` names the ELEMENT, which is where the web puts it.\n const base = testID ?? dataTestId;\n const shared: ViewArgs = {\n size,\n color,\n glow,\n pulse,\n showLabel,\n displayValue,\n displayLabel: progressLabelText(label, showLabel, displayValue),\n value,\n testID: base,\n elementTestID: base,\n style,\n containerRef: ref,\n rest,\n };\n\n if (variant === 'circular') {\n return (\n <CircularView\n {...shared}\n elementTestID={elementId ?? `${base}-circular`}\n thickness={thickness}\n circularSize={circularSize}\n />\n );\n }\n\n if (variant === 'segmented') {\n return <SegmentedView {...shared} elementTestID={elementId ?? base} segments={segments} />;\n }\n\n return <LinearView {...shared} elementTestID={elementId ?? `${base}-linear`} variant={variant} />;\n});\n\nProgress.displayName = 'Progress';\n\nconst styles = StyleSheet.create({\n block: { width: '100%' },\n /** MUI's `display: inline-flex` on the circular wrapper. */\n inline: { position: 'relative', alignSelf: 'flex-start' },\n centre: { alignItems: 'center', justifyContent: 'center' },\n segments: { flexDirection: 'row', width: '100%' },\n});\n","import type { ProgressBaseProps } from './Progress.base';\n\ntype ProgressDefaultedKeys =\n | 'variant'\n | 'size'\n | 'color'\n | 'glow'\n | 'pulse'\n | 'showLabel'\n | 'segments'\n | 'thickness'\n | 'dataTestId';\n\n/**\n * Generic over the renderer's own props: the web and the native `Progress`\n * carry different extras (MUI's `LinearProgress` props against a `View`'s), and\n * both come back out untouched.\n */\ntype ResolvedProgressProps<P extends ProgressBaseProps> = P &\n Required<Pick<ProgressBaseProps, ProgressDefaultedKeys>>;\n\nconst PROGRESS_DEFAULTS: Required<Pick<ProgressBaseProps, ProgressDefaultedKeys>> = {\n variant: 'linear',\n size: 'md',\n color: 'primary',\n glow: false,\n pulse: false,\n showLabel: false,\n segments: 10,\n thickness: 4,\n dataTestId: 'progress',\n};\n\n// Strips explicitly-undefined props before the merge, so `size={undefined}` still\n// falls back to the default exactly as a destructuring default would.\nconst definedProps = <P extends ProgressBaseProps>(props: P): Partial<P> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<P>;\n\nexport const resolveProgressProps = <P extends ProgressBaseProps>(\n props: P,\n): ResolvedProgressProps<P> =>\n ({ ...PROGRESS_DEFAULTS, ...definedProps(props) }) as ResolvedProgressProps<P>;\n\n/**\n * The label the caller asked for, or the rounded percentage when they only\n * asked for one. Empty when there is nothing to show.\n */\nexport const progressLabelText = (\n label: string | undefined,\n showLabel: boolean,\n displayValue: number,\n): string => label || (showLabel ? `${Math.round(displayValue)}%` : '');\n\n/** How much of the track the bar covers, 0 to 100 — a value outside that is clamped. */\nexport const progressFraction = (value: number): number =>\n Number.isFinite(value) ? Math.min(100, Math.max(0, value)) : 0;\n","import type { ProgressSize } from './Progress.base';\nimport { contrastText, GREY, type UiPaletteColor, type UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Progress` RENDERERS DRAW WITH.\n *\n * `Progress.styles.ts` (web, emotion over MUI's `LinearProgress` and\n * `CircularProgress`) and `Progress.native.tsx` (React Native, with\n * `react-native-svg` for the arc) read this one table. The web turns the px\n * into rem and the shadows into CSS strings; native uses the numbers.\n *\n * The `CIRCULAR_*` group is MUI's OWN geometry, restated because the native\n * half draws the arc itself: a 44-unit viewBox whose circle is inset by the\n * stroke, with the value expressed as a dash offset — the same arithmetic\n * MUI's `CircularProgress` runs, so the two draw the same sweep.\n */\nexport interface ProgressSizeMetrics {\n /** The linear track's height, in px. The bar's radius is half of it. */\n height: number;\n /** The circular variant's diameter, in px. */\n circularSize: number;\n /** The label's type size, in px. */\n fontSize: number;\n}\n\nexport const PROGRESS_SIZES: Record<ProgressSize, ProgressSizeMetrics> = {\n xs: { height: 2, circularSize: 24, fontSize: 10 },\n sm: { height: 4, circularSize: 32, fontSize: 12 },\n md: { height: 6, circularSize: 40, fontSize: 14 },\n lg: { height: 8, circularSize: 48, fontSize: 16 },\n xl: { height: 10, circularSize: 56, fontSize: 18 },\n};\n\n/** The unfilled track, and an unfilled segment: the hue at a tenth. */\nexport const TRACK_ALPHA = 0.1;\n\n/** The label is MUI's `caption` at the size's own step, in semibold. */\nexport const LABEL_FONT_WEIGHT = 600;\n/** `mt: 1` between a linear or segmented bar and its label. */\nexport const LABEL_MARGIN_TOP_UNITS = 1;\n/** `gap: 0.5` between segments. */\nexport const SEGMENT_GAP_UNITS = 0.5;\n\n/** `glass`: the hue at 80% behind a 10px blur, inside a 30% hairline. */\nexport const GLASS_BAR_ALPHA = 0.8;\nexport const GLASS_BAR_BORDER_ALPHA = 0.3;\nexport const GLASS_BLUR_PX = 10;\n\n/** `glow` on a bar: `0 0 10px 2px alpha(main, 0.4)` and a 1.1 brightness lift. */\nexport const BAR_GLOW = { blur: 10, spread: 2, alpha: 0.4 } as const;\nexport const GLOW_BRIGHTNESS = 1.1;\n/** `glow` on a filled segment: the same shadow, one step tighter. */\nexport const SEGMENT_GLOW = { blur: 6, spread: 1, alpha: 0.4 } as const;\n/** `glow` on the circular arc: `drop-shadow(0 0 8px alpha(main, 0.6))`. */\nexport const CIRCULAR_GLOW = { blur: 8, alpha: 0.6 } as const;\n\n/** MUI's `pulseAnimation`: opacity 1 → 0.7 → 1, every two seconds. */\nexport const PULSE = { durationMs: 2000, dip: 0.7 } as const;\n\n/** `transition: all 0.3s ease` on the bar and on every segment. */\nexport const TRANSITION_MS = 300;\n\n/* ── MUI's `CircularProgress`, restated for the renderer that has no MUI ──── */\n\n/** MUI's `SIZE`: the arc is drawn in a 44-unit box and scaled to the px size. */\nexport const CIRCULAR_VIEWBOX = 44;\n/** MUI puts the determinate arc's start at twelve o'clock. */\nexport const CIRCULAR_ROTATION_DEG = -90;\n/** The circumference of the circle a `thickness` leaves room for. */\nexport const circularCircumference = (thickness: number): number =>\n 2 * Math.PI * ((CIRCULAR_VIEWBOX - thickness) / 2);\n/** MUI's `strokeDashoffset`: the share of the circumference still to run. */\nexport const circularDashOffset = (value: number, thickness: number): number =>\n ((100 - value) / 100) * circularCircumference(thickness);\n\n/**\n * MUI's indeterminate `CircularProgress` never closes the ring: it draws\n * roughly a fifth of it and spins. One turn every 1.4s, as MUI's\n * `circular-rotate` keyframes do.\n */\nexport const CIRCULAR_INDETERMINATE = { arc: 0.25, rotationMs: 1400 } as const;\n/** MUI's `bar1Indeterminate` keyframes: 2.1s a lap, over about a third of the track. */\nexport const LINEAR_INDETERMINATE = { width: 0.35, durationMs: 2100 } as const;\n\n/**\n * `neutral` has no palette slot of its own in MUI, so `Progress.styles.ts` has\n * always drawn it from three greys; `danger` is MUI's `error`, which is what\n * the shared theme calls `danger`. Same colours here.\n */\nexport function progressPalette(theme: UiTheme, color: ColorValue): UiPaletteColor {\n if (color === 'neutral') {\n return {\n light: GREY[300],\n main: GREY[500],\n dark: GREY[700],\n contrastText: contrastText(GREY[500]),\n };\n }\n return theme.palette[color];\n}\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport type { ProgressSize, ProgressVariant } from './Progress.base';\nimport {\n BAR_GLOW,\n CIRCULAR_GLOW,\n GLASS_BAR_ALPHA,\n GLASS_BAR_BORDER_ALPHA,\n LABEL_FONT_WEIGHT,\n PROGRESS_SIZES,\n SEGMENT_GLOW,\n TRACK_ALPHA,\n progressPalette,\n} from './Progress.metrics';\nimport { MUI_TYPE } from '../../../tokens/mui-type';\nimport { alpha } from '../../../tokens/color';\nimport type { UiPaletteColor, UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/** `0 0 <blur>px <spread>px alpha(main, a)`, the string both renderers write. */\nconst glowShadow = (\n main: string,\n { blur, spread, alpha: a }: { blur: number; spread: number; alpha: number },\n): string => `0 0 ${blur}px ${spread}px ${alpha(main, a)}`;\n\n/** The unfilled track a linear bar runs in. */\nexport function trackStyle(theme: UiTheme, size: ProgressSize, color: ColorValue): ViewStyle {\n const { height } = PROGRESS_SIZES[size];\n return {\n width: '100%',\n height,\n borderRadius: height / 2,\n backgroundColor: alpha(progressPalette(theme, color).main, TRACK_ALPHA),\n // The bar inherits the track's radius on the web; here it is clipped to it.\n overflow: 'hidden',\n };\n}\n\n/**\n * What the web's `barVariantStyles` paint. `gradient` is the one honest gap:\n * React Native core has no gradient fill, so it takes the first stop.\n */\nfunction barPaint(variant: ProgressVariant, palette: UiPaletteColor): ViewStyle {\n switch (variant) {\n case 'gradient':\n return { backgroundColor: palette.main };\n case 'glass':\n return {\n backgroundColor: alpha(palette.main, GLASS_BAR_ALPHA),\n borderWidth: 1,\n borderColor: alpha(palette.main, GLASS_BAR_BORDER_ALPHA),\n };\n default:\n return { backgroundColor: palette.main };\n }\n}\n\n/** The bar itself: the variant's paint, the glow, and the height of its track. */\nexport function barStyle(\n theme: UiTheme,\n a: { variant: ProgressVariant; size: ProgressSize; color: ColorValue; glow: boolean },\n): ViewStyle {\n const palette = progressPalette(theme, a.color);\n const { height } = PROGRESS_SIZES[a.size];\n return {\n height: '100%',\n borderRadius: height / 2,\n ...barPaint(a.variant, palette),\n ...(a.glow ? { boxShadow: glowShadow(palette.main, BAR_GLOW) } : {}),\n };\n}\n\n/** One segment of the segmented variant: filled with the hue, or a tenth of it. */\nexport function segmentStyle(\n theme: UiTheme,\n a: { size: ProgressSize; color: ColorValue; filled: boolean; glow: boolean },\n): ViewStyle {\n const palette = progressPalette(theme, a.color);\n const { height } = PROGRESS_SIZES[a.size];\n return {\n flex: 1,\n height,\n borderRadius: height / 2,\n backgroundColor: a.filled ? palette.main : alpha(palette.main, TRACK_ALPHA),\n ...(a.glow && a.filled ? { boxShadow: glowShadow(palette.main, SEGMENT_GLOW) } : {}),\n };\n}\n\n/** The circular arc's glow: the web's `drop-shadow`, as a box shadow round the dial. */\nexport function circularGlowStyle(theme: UiTheme, color: ColorValue): ViewStyle {\n const main = progressPalette(theme, color).main;\n return { boxShadow: `0 0 ${CIRCULAR_GLOW.blur}px ${alpha(main, CIRCULAR_GLOW.alpha)}` };\n}\n\n/**\n * The label: MUI's `caption` ratios at the size's own step, in semibold. The\n * circular variant sets it in the muted ink, as `color=\"text.secondary\"` does.\n */\nexport function labelStyle(theme: UiTheme, size: ProgressSize, muted = false): TextStyle {\n const fontSize = PROGRESS_SIZES[size].fontSize;\n const caption = MUI_TYPE.caption;\n return {\n fontFamily: theme.typography.fontFamily,\n fontSize,\n lineHeight: fontSize * caption.lineHeight,\n letterSpacing: fontSize * caption.letterSpacingEm,\n fontWeight: String(LABEL_FONT_WEIGHT) as TextStyle['fontWeight'],\n textAlign: 'center',\n color: muted ? theme.palette.text.secondary : theme.palette.text.primary,\n };\n}\n"],"mappings":"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","names":[]}
@@ -4,9 +4,9 @@ import {
4
4
  ICON_SIZES,
5
5
  Icon,
6
6
  iconSize
7
- } from "./chunks/chunk-YQGNMAJN.js";
8
- import "./chunks/chunk-5WLOVHKK.js";
7
+ } from "./chunks/chunk-Q52IDAF2.js";
9
8
  import "./chunks/chunk-M4DTJDWU.js";
9
+ import "./chunks/chunk-5WLOVHKK.js";
10
10
  import "./chunks/chunk-YTHR4Y5P.js";
11
11
  import "./chunks/chunk-P3PL4WBO.js";
12
12
  export {
@@ -30,6 +30,7 @@ var CONTAINER_PADDING_UNITS = {
30
30
  xl: 6
31
31
  };
32
32
  var CONTAINER_DEFAULT_PADDING = "md";
33
+ var CONTAINER_PADDED_VERTICAL_UNITS = 8;
33
34
  var CONTAINER_COMPACT_PADDING_UNITS = 2;
34
35
  var CONTAINER_COMPACT_BELOW = 600;
35
36
  var isMaxWidthKey = (value) => value in CONTAINER_MAX_WIDTHS;
@@ -42,7 +43,11 @@ function resolveContainerMaxWidth(variant, maxWidth) {
42
43
  function containerPaddingUnits(padding, compact) {
43
44
  if (compact) return CONTAINER_COMPACT_PADDING_UNITS;
44
45
  const units = CONTAINER_PADDING_UNITS[padding];
45
- return units || CONTAINER_PADDING_UNITS[CONTAINER_DEFAULT_PADDING];
46
+ return units ?? CONTAINER_PADDING_UNITS[CONTAINER_DEFAULT_PADDING];
47
+ }
48
+ function containerVerticalUnits(variant, padding, compact) {
49
+ if (variant !== "padded") return containerPaddingUnits(padding, compact);
50
+ return compact ? CONTAINER_COMPACT_PADDING_UNITS : CONTAINER_PADDED_VERTICAL_UNITS;
46
51
  }
47
52
 
48
53
  // src/components/layout/Container/Container.native.tsx
@@ -56,6 +61,7 @@ function containerStyle(theme, a) {
56
61
  marginRight: "auto",
57
62
  maxWidth: limit === false ? void 0 : CONTAINER_MAX_WIDTHS[limit],
58
63
  padding: theme.spacing(containerPaddingUnits(a.padding, compact)),
64
+ paddingVertical: theme.spacing(containerVerticalUnits(a.variant, a.padding, compact)),
59
65
  ...a.variant === "centered" ? { alignItems: "center", justifyContent: "center", minHeight: a.window.height } : null
60
66
  };
61
67
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/layout/Container/Container.native.tsx","../../../src/components/layout/Container/Container.metrics.ts"],"sourcesContent":["import * as React from 'react';\nimport { View, useWindowDimensions, type ViewStyle } from 'react-native';\n\nimport {\n CONTAINER_COMPACT_BELOW,\n CONTAINER_MAX_WIDTHS,\n containerPaddingUnits,\n resolveContainerMaxWidth,\n} from './Container.metrics';\nimport type { ContainerMaxWidth, ContainerPadding, ContainerProps, ContainerVariant } from './Container.types.native';\nimport { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { UiTheme } from '../../../tokens/theme';\n\nexport interface ContainerStyleArgs {\n variant: ContainerVariant;\n maxWidth: ContainerMaxWidth | string;\n padding: ContainerPadding;\n responsive: boolean;\n /** The window, for the two things CSS answers with a media query and `100vh`. */\n window: { width: number; height: number };\n}\n\n/**\n * The style MUI's `Container` plus the web `sx` paint, in absolute numbers.\n *\n * `width: 100%` between auto margins is MUI's own centring rule; `maxWidth` is\n * the breakpoint the web applies under `min-width` (below it the column is\n * narrower anyway); the `responsive` media query becomes a window-width test;\n * `centered`'s `100vh` becomes the window height. `padded` and `padding=\"none\"`\n * paint what the web paints — see `containerPaddingUnits`.\n */\nexport function containerStyle(theme: UiTheme, a: ContainerStyleArgs): ViewStyle {\n const compact = a.responsive && a.window.width < CONTAINER_COMPACT_BELOW;\n const limit = resolveContainerMaxWidth(a.variant, a.maxWidth);\n return {\n width: '100%',\n marginLeft: 'auto',\n marginRight: 'auto',\n maxWidth: limit === false ? undefined : CONTAINER_MAX_WIDTHS[limit],\n padding: theme.spacing(containerPaddingUnits(a.padding, compact)),\n ...(a.variant === 'centered'\n ? { alignItems: 'center', justifyContent: 'center', minHeight: a.window.height }\n : null),\n };\n}\n\n/** The native `Container`: a `View` sized by the same rules MUI's `Container` and the web `sx` apply. */\nexport const Container = React.forwardRef<View, ContainerProps>(\n ({ children, maxWidth = 'lg', variant = 'default', padding = 'md', responsive = true, style, ...others }, ref) => {\n const theme = useUiTheme();\n const window = useWindowDimensions();\n const resolved = React.useMemo(\n () => containerStyle(theme, { variant, maxWidth, padding, responsive, window }),\n [theme, variant, maxWidth, padding, responsive, window],\n );\n\n return (\n <View\n ref={ref}\n style={[resolved, style]}\n testID={resolveTestId(others, 'container')}\n {...withoutTestIdProps(others)}\n >\n {children}\n </View>\n );\n },\n);\n\nContainer.displayName = 'Container';\n","import type { ContainerMaxWidth, ContainerPadding, ContainerVariant } from './Container.base';\n\n/**\n * THE NUMBERS BOTH `Container` RENDERERS DRAW WITH.\n *\n * `Container.tsx` used to hold these as `theme.spacing(…)` calls and MUI's\n * breakpoint names inside the component; the native renderer has no MUI\n * breakpoints to name, so the values live here in SPACING UNITS and px, and\n * each renderer multiplies the units out through its own `theme.spacing`.\n */\nexport type ContainerMaxWidthKey = Exclude<ContainerMaxWidth, false>;\n\n/**\n * MUI's default breakpoints, which its `Container` reads as `max-width`\n * (`xs` is `Math.max(values.xs, 444)`). MUI applies each under\n * `min-width: <breakpoint>`, but below it the column is `width: 100%` and\n * narrower anyway, so a plain `maxWidth` paints the same.\n */\nexport const CONTAINER_MAX_WIDTHS: Record<ContainerMaxWidthKey, number> = {\n xs: 444,\n sm: 600,\n md: 900,\n lg: 1200,\n xl: 1536,\n};\n\nexport const CONTAINER_DEFAULT_MAX_WIDTH: ContainerMaxWidthKey = 'lg';\n/** The `centered` variant reads at `md`, whatever `maxWidth` says. */\nexport const CONTAINER_CENTERED_MAX_WIDTH: ContainerMaxWidthKey = 'md';\n\nexport const CONTAINER_PADDING_UNITS: Record<ContainerPadding, number> = {\n none: 0,\n xs: 1,\n sm: 2,\n md: 3,\n lg: 4,\n xl: 6,\n};\n\nexport const CONTAINER_DEFAULT_PADDING: ContainerPadding = 'md';\n\n/** What `variant=\"padded\"` declares above and below, in spacing units. */\nexport const CONTAINER_PADDED_VERTICAL_UNITS = 8;\n\n/** Under {@link CONTAINER_COMPACT_BELOW}, a `responsive` container tightens to this. */\nexport const CONTAINER_COMPACT_PADDING_UNITS = 2;\n\n/** MUI's `sm` breakpoint: `theme.breakpoints.down('sm')` is `max-width: 599.95px`. */\nexport const CONTAINER_COMPACT_BELOW = 600;\n\nconst isMaxWidthKey = (value: string): value is ContainerMaxWidthKey => value in CONTAINER_MAX_WIDTHS;\n\n/**\n * The breakpoint the column is limited to, or `false` for none. `fluid` drops\n * the limit, `centered` fixes it at `md`, and a string outside the vocabulary\n * reads as the default — the rules `Container.tsx` has always applied.\n */\nexport function resolveContainerMaxWidth(\n variant: ContainerVariant,\n maxWidth: ContainerMaxWidth | string,\n): ContainerMaxWidthKey | false {\n if (variant === 'fluid') return false;\n if (variant === 'centered') return CONTAINER_CENTERED_MAX_WIDTH;\n if (typeof maxWidth === 'string' && isMaxWidthKey(maxWidth)) return maxWidth;\n return maxWidth === false ? false : CONTAINER_DEFAULT_MAX_WIDTH;\n}\n\n/**\n * The inset every side of the container is PAINTED with, in spacing units.\n *\n * This is the web's painted result, not its declared intent, and two of its\n * rules are worth knowing before reaching for them:\n *\n * - `padding=\"none\"` paints the default. The web reads its map with `||`, so\n * `none`'s 0 falls through to `md`.\n * - `variant=\"padded\"` paints the same inset as `default`. The web declares its\n * {@link CONTAINER_PADDED_VERTICAL_UNITS} above and below BEFORE the\n * `padding` shorthand, which therefore overrides them.\n *\n * Both renderers read this one function so they agree today; either fix is a\n * change to the web's emitted CSS and to this function, made together.\n */\nexport function containerPaddingUnits(padding: ContainerPadding | string, compact: boolean): number {\n if (compact) return CONTAINER_COMPACT_PADDING_UNITS;\n const units = (CONTAINER_PADDING_UNITS as Record<string, number | undefined>)[padding];\n return units || CONTAINER_PADDING_UNITS[CONTAINER_DEFAULT_PADDING];\n}\n"],"mappings":";;;;;;;;;;AAAA,YAAY,WAAW;AACvB,SAAS,MAAM,2BAA2C;;;ACiBnD,IAAM,uBAA6D;AAAA,EACxE,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,8BAAoD;AAE1D,IAAM,+BAAqD;AAE3D,IAAM,0BAA4D;AAAA,EACvE,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,4BAA8C;AAMpD,IAAM,kCAAkC;AAGxC,IAAM,0BAA0B;AAEvC,IAAM,gBAAgB,CAAC,UAAiD,SAAS;AAO1E,SAAS,yBACd,SACA,UAC8B;AAC9B,MAAI,YAAY,QAAS,QAAO;AAChC,MAAI,YAAY,WAAY,QAAO;AACnC,MAAI,OAAO,aAAa,YAAY,cAAc,QAAQ,EAAG,QAAO;AACpE,SAAO,aAAa,QAAQ,QAAQ;AACtC;AAiBO,SAAS,sBAAsB,SAAoC,SAA0B;AAClG,MAAI,QAAS,QAAO;AACpB,QAAM,QAAS,wBAA+D,OAAO;AACrF,SAAO,SAAS,wBAAwB,yBAAyB;AACnE;;;AD5BM;AA1BC,SAAS,eAAe,OAAgB,GAAkC;AAC/E,QAAM,UAAU,EAAE,cAAc,EAAE,OAAO,QAAQ;AACjD,QAAM,QAAQ,yBAAyB,EAAE,SAAS,EAAE,QAAQ;AAC5D,SAAO;AAAA,IACL,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,UAAU,UAAU,QAAQ,SAAY,qBAAqB,KAAK;AAAA,IAClE,SAAS,MAAM,QAAQ,sBAAsB,EAAE,SAAS,OAAO,CAAC;AAAA,IAChE,GAAI,EAAE,YAAY,aACd,EAAE,YAAY,UAAU,gBAAgB,UAAU,WAAW,EAAE,OAAO,OAAO,IAC7E;AAAA,EACN;AACF;AAGO,IAAM,YAAkB;AAAA,EAC7B,CAAC,EAAE,UAAU,WAAW,MAAM,UAAU,WAAW,UAAU,MAAM,aAAa,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ;AAChH,UAAM,QAAQ,WAAW;AACzB,UAAM,SAAS,oBAAoB;AACnC,UAAM,WAAiB;AAAA,MACrB,MAAM,eAAe,OAAO,EAAE,SAAS,UAAU,SAAS,YAAY,OAAO,CAAC;AAAA,MAC9E,CAAC,OAAO,SAAS,UAAU,SAAS,YAAY,MAAM;AAAA,IACxD;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAO,CAAC,UAAU,KAAK;AAAA,QACvB,QAAQ,cAAc,QAAQ,WAAW;AAAA,QACxC,GAAG,mBAAmB,MAAM;AAAA,QAE5B;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,UAAU,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/layout/Container/Container.native.tsx","../../../src/components/layout/Container/Container.metrics.ts"],"sourcesContent":["import * as React from 'react';\nimport { View, useWindowDimensions, type ViewStyle } from 'react-native';\n\nimport {\n CONTAINER_COMPACT_BELOW,\n CONTAINER_MAX_WIDTHS,\n containerPaddingUnits,\n containerVerticalUnits,\n resolveContainerMaxWidth,\n} from './Container.metrics';\nimport type { ContainerMaxWidth, ContainerPadding, ContainerProps, ContainerVariant } from './Container.types.native';\nimport { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { UiTheme } from '../../../tokens/theme';\n\nexport interface ContainerStyleArgs {\n variant: ContainerVariant;\n maxWidth: ContainerMaxWidth | string;\n padding: ContainerPadding;\n responsive: boolean;\n /** The window, for the two things CSS answers with a media query and `100vh`. */\n window: { width: number; height: number };\n}\n\n/**\n * The style MUI's `Container` plus the web `sx` paint, in absolute numbers.\n *\n * `width: 100%` between auto margins is MUI's own centring rule; `maxWidth` is\n * the breakpoint the web applies under `min-width` (below it the column is\n * narrower anyway); the `responsive` media query becomes a window-width test;\n * `centered`'s `100vh` becomes the window height. `padded`'s vertical inset\n * and `padding=\"none\"`'s zero come from the same two functions the web reads.\n */\nexport function containerStyle(theme: UiTheme, a: ContainerStyleArgs): ViewStyle {\n const compact = a.responsive && a.window.width < CONTAINER_COMPACT_BELOW;\n const limit = resolveContainerMaxWidth(a.variant, a.maxWidth);\n return {\n width: '100%',\n marginLeft: 'auto',\n marginRight: 'auto',\n maxWidth: limit === false ? undefined : CONTAINER_MAX_WIDTHS[limit],\n padding: theme.spacing(containerPaddingUnits(a.padding, compact)),\n paddingVertical: theme.spacing(containerVerticalUnits(a.variant, a.padding, compact)),\n ...(a.variant === 'centered'\n ? { alignItems: 'center', justifyContent: 'center', minHeight: a.window.height }\n : null),\n };\n}\n\n/** The native `Container`: a `View` sized by the same rules MUI's `Container` and the web `sx` apply. */\nexport const Container = React.forwardRef<View, ContainerProps>(\n ({ children, maxWidth = 'lg', variant = 'default', padding = 'md', responsive = true, style, ...others }, ref) => {\n const theme = useUiTheme();\n const window = useWindowDimensions();\n const resolved = React.useMemo(\n () => containerStyle(theme, { variant, maxWidth, padding, responsive, window }),\n [theme, variant, maxWidth, padding, responsive, window],\n );\n\n return (\n <View\n ref={ref}\n style={[resolved, style]}\n testID={resolveTestId(others, 'container')}\n {...withoutTestIdProps(others)}\n >\n {children}\n </View>\n );\n },\n);\n\nContainer.displayName = 'Container';\n","import type { ContainerMaxWidth, ContainerPadding, ContainerVariant } from './Container.base';\n\n/**\n * THE NUMBERS BOTH `Container` RENDERERS DRAW WITH.\n *\n * `Container.tsx` used to hold these as `theme.spacing(…)` calls and MUI's\n * breakpoint names inside the component; the native renderer has no MUI\n * breakpoints to name, so the values live here in SPACING UNITS and px, and\n * each renderer multiplies the units out through its own `theme.spacing`.\n */\nexport type ContainerMaxWidthKey = Exclude<ContainerMaxWidth, false>;\n\n/**\n * MUI's default breakpoints, which its `Container` reads as `max-width`\n * (`xs` is `Math.max(values.xs, 444)`). MUI applies each under\n * `min-width: <breakpoint>`, but below it the column is `width: 100%` and\n * narrower anyway, so a plain `maxWidth` paints the same.\n */\nexport const CONTAINER_MAX_WIDTHS: Record<ContainerMaxWidthKey, number> = {\n xs: 444,\n sm: 600,\n md: 900,\n lg: 1200,\n xl: 1536,\n};\n\nexport const CONTAINER_DEFAULT_MAX_WIDTH: ContainerMaxWidthKey = 'lg';\n/** The `centered` variant reads at `md`, whatever `maxWidth` says. */\nexport const CONTAINER_CENTERED_MAX_WIDTH: ContainerMaxWidthKey = 'md';\n\nexport const CONTAINER_PADDING_UNITS: Record<ContainerPadding, number> = {\n none: 0,\n xs: 1,\n sm: 2,\n md: 3,\n lg: 4,\n xl: 6,\n};\n\nexport const CONTAINER_DEFAULT_PADDING: ContainerPadding = 'md';\n\n/** What `variant=\"padded\"` declares above and below, in spacing units. */\nexport const CONTAINER_PADDED_VERTICAL_UNITS = 8;\n\n/** Under {@link CONTAINER_COMPACT_BELOW}, a `responsive` container tightens to this. */\nexport const CONTAINER_COMPACT_PADDING_UNITS = 2;\n\n/** MUI's `sm` breakpoint: `theme.breakpoints.down('sm')` is `max-width: 599.95px`. */\nexport const CONTAINER_COMPACT_BELOW = 600;\n\nconst isMaxWidthKey = (value: string): value is ContainerMaxWidthKey => value in CONTAINER_MAX_WIDTHS;\n\n/**\n * The breakpoint the column is limited to, or `false` for none. `fluid` drops\n * the limit, `centered` fixes it at `md`, and a string outside the vocabulary\n * reads as the default — the rules `Container.tsx` has always applied.\n */\nexport function resolveContainerMaxWidth(\n variant: ContainerVariant,\n maxWidth: ContainerMaxWidth | string,\n): ContainerMaxWidthKey | false {\n if (variant === 'fluid') return false;\n if (variant === 'centered') return CONTAINER_CENTERED_MAX_WIDTH;\n if (typeof maxWidth === 'string' && isMaxWidthKey(maxWidth)) return maxWidth;\n return maxWidth === false ? false : CONTAINER_DEFAULT_MAX_WIDTH;\n}\n\n/**\n * The inset every side of the container is painted with, in spacing units.\n *\n * `??`, not `||`: `none` is 0, and 0 is falsy. Reading the map with `||` sent\n * `padding=\"none\"` through to the `md` default, so the one value a caller\n * would reach for to remove the inset was the one value that could not.\n * A word outside the vocabulary still reads as the default.\n */\nexport function containerPaddingUnits(padding: ContainerPadding | string, compact: boolean): number {\n if (compact) return CONTAINER_COMPACT_PADDING_UNITS;\n const units = (CONTAINER_PADDING_UNITS as Record<string, number | undefined>)[padding];\n return units ?? CONTAINER_PADDING_UNITS[CONTAINER_DEFAULT_PADDING];\n}\n\n/**\n * What `variant=\"padded\"` paints above and below, in spacing units — the\n * horizontal inset stays whatever `padding` says.\n *\n * The variant used to paint nothing of its own: the web declared these before\n * the `padding` shorthand, which overrode them, and the native half copied the\n * painted result so the two would agree. Now both read this.\n *\n * A `responsive` container under {@link CONTAINER_COMPACT_BELOW} compacts, as\n * every other inset does; a tall vertical inset is the first thing a phone\n * cannot spare.\n */\nexport function containerVerticalUnits(\n variant: ContainerVariant,\n padding: ContainerPadding | string,\n compact: boolean,\n): number {\n if (variant !== 'padded') return containerPaddingUnits(padding, compact);\n return compact ? CONTAINER_COMPACT_PADDING_UNITS : CONTAINER_PADDED_VERTICAL_UNITS;\n}\n"],"mappings":";;;;;;;;;;AAAA,YAAY,WAAW;AACvB,SAAS,MAAM,2BAA2C;;;ACiBnD,IAAM,uBAA6D;AAAA,EACxE,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,8BAAoD;AAE1D,IAAM,+BAAqD;AAE3D,IAAM,0BAA4D;AAAA,EACvE,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,4BAA8C;AAGpD,IAAM,kCAAkC;AAGxC,IAAM,kCAAkC;AAGxC,IAAM,0BAA0B;AAEvC,IAAM,gBAAgB,CAAC,UAAiD,SAAS;AAO1E,SAAS,yBACd,SACA,UAC8B;AAC9B,MAAI,YAAY,QAAS,QAAO;AAChC,MAAI,YAAY,WAAY,QAAO;AACnC,MAAI,OAAO,aAAa,YAAY,cAAc,QAAQ,EAAG,QAAO;AACpE,SAAO,aAAa,QAAQ,QAAQ;AACtC;AAUO,SAAS,sBAAsB,SAAoC,SAA0B;AAClG,MAAI,QAAS,QAAO;AACpB,QAAM,QAAS,wBAA+D,OAAO;AACrF,SAAO,SAAS,wBAAwB,yBAAyB;AACnE;AAcO,SAAS,uBACd,SACA,SACA,SACQ;AACR,MAAI,YAAY,SAAU,QAAO,sBAAsB,SAAS,OAAO;AACvE,SAAO,UAAU,kCAAkC;AACrD;;;ADxCM;AA3BC,SAAS,eAAe,OAAgB,GAAkC;AAC/E,QAAM,UAAU,EAAE,cAAc,EAAE,OAAO,QAAQ;AACjD,QAAM,QAAQ,yBAAyB,EAAE,SAAS,EAAE,QAAQ;AAC5D,SAAO;AAAA,IACL,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,UAAU,UAAU,QAAQ,SAAY,qBAAqB,KAAK;AAAA,IAClE,SAAS,MAAM,QAAQ,sBAAsB,EAAE,SAAS,OAAO,CAAC;AAAA,IAChE,iBAAiB,MAAM,QAAQ,uBAAuB,EAAE,SAAS,EAAE,SAAS,OAAO,CAAC;AAAA,IACpF,GAAI,EAAE,YAAY,aACd,EAAE,YAAY,UAAU,gBAAgB,UAAU,WAAW,EAAE,OAAO,OAAO,IAC7E;AAAA,EACN;AACF;AAGO,IAAM,YAAkB;AAAA,EAC7B,CAAC,EAAE,UAAU,WAAW,MAAM,UAAU,WAAW,UAAU,MAAM,aAAa,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ;AAChH,UAAM,QAAQ,WAAW;AACzB,UAAM,SAAS,oBAAoB;AACnC,UAAM,WAAiB;AAAA,MACrB,MAAM,eAAe,OAAO,EAAE,SAAS,UAAU,SAAS,YAAY,OAAO,CAAC;AAAA,MAC9E,CAAC,OAAO,SAAS,UAAU,SAAS,YAAY,MAAM;AAAA,IACxD;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAO,CAAC,UAAU,KAAK;AAAA,QACvB,QAAQ,cAAc,QAAQ,WAAW;AAAA,QACxC,GAAG,mBAAmB,MAAM;AAAA,QAE5B;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,UAAU,cAAc;","names":[]}