@12-apps/ui 6.19.1 → 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 (677) hide show
  1. package/NATIVE.md +6 -1
  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 +123 -116
  116. package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +2 -2
  117. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +4 -4
  118. package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +2 -2
  119. package/dist/_internal/components/layout/Skeleton/Skeleton.base.js +1 -0
  120. package/dist/_internal/components/layout/Skeleton/Skeleton.base.js.map +1 -0
  121. package/dist/_internal/components/layout/Skeleton/Skeleton.helpers.js +5 -3
  122. package/dist/_internal/components/layout/Skeleton/Skeleton.js +5 -3
  123. package/dist/_internal/components/layout/Skeleton/Skeleton.metrics.js +36 -0
  124. package/dist/_internal/components/layout/Skeleton/Skeleton.metrics.js.map +1 -0
  125. package/dist/_internal/components/layout/Skeleton/Skeleton.styles.js +2 -1
  126. package/dist/_internal/components/layout/index.js +16 -15
  127. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +5 -5
  128. package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +2 -2
  129. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +4 -4
  130. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +2 -2
  131. package/dist/_internal/components/navigation/Pagination/Pagination.js +2 -2
  132. package/dist/_internal/components/navigation/Tabs/Tabs.js +2 -2
  133. package/dist/_internal/components/navigation/index.js +16 -16
  134. package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +2 -2
  135. package/dist/_internal/components/utility/index.js +2 -2
  136. package/dist/_internal/icons/Icon.js +2 -2
  137. package/dist/_internal/icons/paths.generated.js +1 -1
  138. package/dist/_internal/platform/animation.js +31 -0
  139. package/dist/_internal/platform/animation.js.map +1 -0
  140. package/dist/_internal/platform/web-keys.js +10 -0
  141. package/dist/_internal/platform/web-keys.js.map +1 -0
  142. package/dist/_internal/social-login-button/social-login-button.js +3 -3
  143. package/dist/_internal/tokens/mui-type.js +2 -1
  144. package/dist/_internal/tokens/mui-type.js.map +1 -1
  145. package/dist/_internal/user-avatar/user-avatar.js +7 -5
  146. package/dist/charts.js +11 -11
  147. package/dist/{chunk-P7FQUGED.js → chunk-23FCBIUN.js} +8 -8
  148. package/dist/{chunk-SL4NFGOL.js → chunk-24BUCMQA.js} +4 -4
  149. package/dist/{chunk-4SXZSSVV.js → chunk-2EKALM6P.js} +3 -3
  150. package/dist/{chunk-ZRFRU545.js → chunk-2ZDTGI5V.js} +7 -7
  151. package/dist/{chunk-HR7YTBR7.js → chunk-3AOOI2NR.js} +4 -4
  152. package/dist/chunk-3ZVUNSFF.js +32 -0
  153. package/dist/chunk-3ZVUNSFF.js.map +1 -0
  154. package/dist/{chunk-KKYW3LU7.js → chunk-47UD6DZ4.js} +2 -2
  155. package/dist/{chunk-ZOUWHGV3.js → chunk-4MGFUPQT.js} +4 -4
  156. package/dist/{chunk-LYNJJV2X.js → chunk-4SQFO4GW.js} +58 -40
  157. package/dist/chunk-4SQFO4GW.js.map +1 -0
  158. package/dist/{chunk-4FRZDSRD.js → chunk-4WK2RTVY.js} +3 -3
  159. package/dist/{chunk-HAFE43QJ.js → chunk-5JEOLUWJ.js} +6 -2
  160. package/dist/chunk-5JEOLUWJ.js.map +1 -0
  161. package/dist/{chunk-LDE4ELB5.js → chunk-5ZF3VASA.js} +7 -7
  162. package/dist/{chunk-JE6RZ5L6.js → chunk-5ZOJLYD2.js} +4 -4
  163. package/dist/{chunk-MMZAGB64.js → chunk-6C5D6O3D.js} +4 -2
  164. package/dist/chunk-6C5D6O3D.js.map +1 -0
  165. package/dist/{chunk-E5ZHW4I5.js → chunk-6IUTT6BK.js} +3 -3
  166. package/dist/{chunk-WPR2HS5B.js → chunk-74EZ565M.js} +8 -8
  167. package/dist/{chunk-BVZVH3ZN.js → chunk-74OZ5KVR.js} +5 -5
  168. package/dist/{chunk-PMS3H3OO.js → chunk-76GZ55IC.js} +7 -7
  169. package/dist/{chunk-QIV73V2X.js → chunk-7BYFC2MR.js} +36 -28
  170. package/dist/chunk-7BYFC2MR.js.map +1 -0
  171. package/dist/{chunk-DLFOEXUP.js → chunk-7EESF76V.js} +2 -2
  172. package/dist/{chunk-HKZHEK3Z.js → chunk-7JWXLDRH.js} +3 -3
  173. package/dist/{chunk-OR7UH2ZQ.js → chunk-7P2HZLEG.js} +3 -3
  174. package/dist/{chunk-6DXYCXH4.js → chunk-7RZ4WOQW.js} +2 -2
  175. package/dist/{chunk-EMNGIYH6.js → chunk-7TZ6OC5T.js} +5 -5
  176. package/dist/{chunk-HXYXDQ7U.js → chunk-7WDPC46N.js} +4 -2
  177. package/dist/chunk-7WDPC46N.js.map +1 -0
  178. package/dist/{chunk-CDJPDZCA.js → chunk-AEGX66N7.js} +2 -2
  179. package/dist/{chunk-65DLYC4S.js → chunk-AVGTTWTE.js} +4 -4
  180. package/dist/{chunk-C6XESZ3R.js → chunk-B2A4DG77.js} +6 -6
  181. package/dist/{chunk-VOOPGAQO.js → chunk-B7BZAIHL.js} +2 -2
  182. package/dist/{chunk-DZN3JF5E.js → chunk-BBC4KT5G.js} +4 -4
  183. package/dist/chunk-BF4FYOAR.js +23 -0
  184. package/dist/chunk-BF4FYOAR.js.map +1 -0
  185. package/dist/{chunk-FWCUELBU.js → chunk-BILE3A7F.js} +2 -2
  186. package/dist/{chunk-UEJQQVP2.js → chunk-BLT5ZBVL.js} +4 -4
  187. package/dist/chunk-BRMGHMYB.js +45 -0
  188. package/dist/chunk-BRMGHMYB.js.map +1 -0
  189. package/dist/{chunk-ISSJNFJV.js → chunk-C52BELLW.js} +2 -2
  190. package/dist/{chunk-BPYPUEM5.js → chunk-CZJLWCEG.js} +2 -2
  191. package/dist/{chunk-WZUNBSS7.js → chunk-DVUPIVI2.js} +4 -4
  192. package/dist/chunk-E46PG577.js +78 -0
  193. package/dist/chunk-E46PG577.js.map +1 -0
  194. package/dist/{chunk-L6KEVPXN.js → chunk-E4FGKZID.js} +20 -9
  195. package/dist/chunk-E4FGKZID.js.map +1 -0
  196. package/dist/{chunk-EXJBPKGW.js → chunk-EGRFMPGD.js} +4 -4
  197. package/dist/{chunk-XFUNJYFT.js → chunk-EPNUVSNK.js} +7 -7
  198. package/dist/{chunk-H2EQVMU3.js → chunk-EX3PSZLV.js} +2 -2
  199. package/dist/{chunk-4Q7HWRR2.js → chunk-EZSEAYYT.js} +52 -72
  200. package/dist/chunk-EZSEAYYT.js.map +1 -0
  201. package/dist/{chunk-LIOVN5IM.js → chunk-F2DOTCF3.js} +2 -2
  202. package/dist/chunk-FAITHWIO.js +73 -0
  203. package/dist/chunk-FAITHWIO.js.map +1 -0
  204. package/dist/{chunk-64IEKEMQ.js → chunk-FGLV6BXQ.js} +4 -4
  205. package/dist/{chunk-L65LF6LN.js → chunk-FP4R47TM.js} +2 -2
  206. package/dist/{chunk-NQHOHQCY.js → chunk-FPWB5ILF.js} +16 -8
  207. package/dist/chunk-FPWB5ILF.js.map +1 -0
  208. package/dist/{chunk-7AR2R7TV.js → chunk-G5ZVD5IJ.js} +4 -4
  209. package/dist/{chunk-SHQWIDD5.js → chunk-GJQYM3PM.js} +4 -4
  210. package/dist/{chunk-7WL24VNI.js → chunk-HDNK7BAX.js} +5 -5
  211. package/dist/{chunk-X5MPHXG5.js → chunk-HEG7JIBM.js} +4 -4
  212. package/dist/{chunk-HKFMPEXJ.js → chunk-HI2OFZSZ.js} +17 -10
  213. package/dist/chunk-HI2OFZSZ.js.map +1 -0
  214. package/dist/{chunk-ZIOCRSHU.js → chunk-HSAH5QUQ.js} +3 -3
  215. package/dist/{chunk-B443IIQG.js → chunk-IE7ISTLQ.js} +4 -4
  216. package/dist/{chunk-NFHS77NE.js → chunk-IH4CX43Q.js} +2 -2
  217. package/dist/{chunk-72UYVJBQ.js → chunk-IJIT5HQP.js} +2 -2
  218. package/dist/{chunk-KPQAPQH6.js → chunk-J2KSG754.js} +10 -8
  219. package/dist/chunk-J2KSG754.js.map +1 -0
  220. package/dist/{chunk-AP4FLCLA.js → chunk-J54WH74M.js} +4 -4
  221. package/dist/{chunk-5HOJSVQH.js → chunk-JB7JE4QZ.js} +2 -2
  222. package/dist/{chunk-QJJUTBKZ.js → chunk-KQ74QU55.js} +2 -2
  223. package/dist/chunk-KU6VHNRV.js +68 -0
  224. package/dist/chunk-KU6VHNRV.js.map +1 -0
  225. package/dist/chunk-KVEHH4SA.js +85 -0
  226. package/dist/chunk-KVEHH4SA.js.map +1 -0
  227. package/dist/{chunk-YLDS5FOQ.js → chunk-KZSKI2R3.js} +2 -2
  228. package/dist/{chunk-IIOEQRXX.js → chunk-LAHDFBDE.js} +2 -2
  229. package/dist/{chunk-BUDXR3EV.js → chunk-LKVIZNUM.js} +5 -5
  230. package/dist/{chunk-OAXAF4VY.js → chunk-LMJBINWN.js} +12 -12
  231. package/dist/{chunk-SFAP5EH5.js → chunk-LUMF63BM.js} +4 -4
  232. package/dist/{chunk-KADJNWTQ.js → chunk-LZRURORY.js} +3 -3
  233. package/dist/{chunk-CLNTJM3F.js → chunk-M7OHXNLF.js} +2 -2
  234. package/dist/{chunk-UXQW6ZIN.js → chunk-MBYO2F4Y.js} +5 -5
  235. package/dist/{chunk-ZHEJLUCX.js → chunk-MHV5Y5MR.js} +30 -17
  236. package/dist/chunk-MHV5Y5MR.js.map +1 -0
  237. package/dist/{chunk-MCRIT46W.js → chunk-MY5VNNSP.js} +4 -4
  238. package/dist/{chunk-XELVDPKL.js → chunk-NFAKRI4S.js} +4 -4
  239. package/dist/{chunk-KSF7TLXH.js → chunk-NHSMLVNC.js} +6 -6
  240. package/dist/{chunk-ES2RN7YV.js → chunk-NRUYYGDZ.js} +2 -2
  241. package/dist/{chunk-ZGEBIC5X.js → chunk-OLVZ6TOV.js} +13 -9
  242. package/dist/chunk-OLVZ6TOV.js.map +1 -0
  243. package/dist/{chunk-MQUU2XZB.js → chunk-OQFSYMHJ.js} +2 -2
  244. package/dist/{chunk-M3RIC6JI.js → chunk-OQXOYHIV.js} +4 -4
  245. package/dist/{chunk-PC3ZFERM.js → chunk-PC5FFEIY.js} +2 -2
  246. package/dist/{chunk-SOHDPFOB.js → chunk-PHCSPHDH.js} +2 -2
  247. package/dist/{chunk-OZWQNFG6.js → chunk-PODGTNXS.js} +3 -3
  248. package/dist/{chunk-IPE5FFFD.js → chunk-PUBPZOQJ.js} +2 -2
  249. package/dist/{chunk-GBFGZJB5.js → chunk-Q4NOI2CR.js} +5 -5
  250. package/dist/{chunk-IRDGC7FK.js → chunk-QZWKC3AP.js} +13 -7
  251. package/dist/chunk-QZWKC3AP.js.map +1 -0
  252. package/dist/{chunk-GOWBYHYW.js → chunk-R6SBP5M5.js} +4 -4
  253. package/dist/{chunk-DTKMBI7B.js → chunk-R7MX5KPJ.js} +4 -4
  254. package/dist/{chunk-NECUCG2S.js → chunk-RQDN4BN5.js} +14 -14
  255. package/dist/{chunk-5SYD23V4.js → chunk-SKZHOWTS.js} +4 -4
  256. package/dist/{chunk-Y6KPZQPI.js → chunk-SOCKK67R.js} +4 -4
  257. package/dist/{chunk-GCJLMX63.js → chunk-VCTKJHXD.js} +2 -2
  258. package/dist/{chunk-QZPNQWS2.js → chunk-VEFDL77X.js} +2 -2
  259. package/dist/{chunk-WEH5TCPE.js → chunk-VJFH2AXT.js} +8 -8
  260. package/dist/{chunk-S7HRED4D.js → chunk-VLHGBFR6.js} +3 -3
  261. package/dist/{chunk-RLC46NIW.js → chunk-VMNSGE2G.js} +3 -1
  262. package/dist/chunk-VMNSGE2G.js.map +1 -0
  263. package/dist/{chunk-HP2ODXNA.js → chunk-VR5HDUBK.js} +2 -2
  264. package/dist/{chunk-RBGOGTT2.js → chunk-W2UTDN4T.js} +4 -4
  265. package/dist/{chunk-N4WANJI3.js → chunk-WBVHRLIS.js} +4 -4
  266. package/dist/{chunk-XXJRT6BP.js → chunk-WMALDOF5.js} +4 -4
  267. package/dist/{chunk-MHFJBNDP.js → chunk-WO52KYSU.js} +8 -8
  268. package/dist/{chunk-ZBOFBRZC.js → chunk-WX7VWW3W.js} +2 -2
  269. package/dist/{chunk-J4W4TQPC.js → chunk-X24P3ZYW.js} +6 -6
  270. package/dist/{chunk-X2J6MRJW.js → chunk-YFHIESMD.js} +2 -2
  271. package/dist/{chunk-72NOM3O2.js → chunk-YK2PETUP.js} +2 -2
  272. package/dist/{chunk-CRNQVWIT.js → chunk-Z4GWXTZV.js} +4 -4
  273. package/dist/{chunk-SG6VULKS.js → chunk-ZEBJT5JZ.js} +3 -3
  274. package/dist/chunk-ZEG2LNBY.js +68 -0
  275. package/dist/chunk-ZEG2LNBY.js.map +1 -0
  276. package/dist/{chunk-JZKOJZ6V.js → chunk-ZOW2CCMO.js} +26 -25
  277. package/dist/chunk-ZOW2CCMO.js.map +1 -0
  278. package/dist/{chunk-3HWL4AW4.js → chunk-ZTF5C2GA.js} +22 -10
  279. package/dist/chunk-ZTF5C2GA.js.map +1 -0
  280. package/dist/data-display/AsyncStateContainer.js +8 -7
  281. package/dist/data-display/Avatar.js +8 -2
  282. package/dist/data-display/Badge.js +12 -6
  283. package/dist/data-display/CardKit.js +7 -7
  284. package/dist/data-display/Carousel.js +2 -2
  285. package/dist/data-display/Chart.js +11 -11
  286. package/dist/data-display/Chip.js +4 -2
  287. package/dist/data-display/DataGrid.js +3 -3
  288. package/dist/data-display/DataViews.js +66 -65
  289. package/dist/data-display/EmptyState.js +2 -2
  290. package/dist/data-display/HoverCard.js +3 -3
  291. package/dist/data-display/LazyImage.js +6 -4
  292. package/dist/data-display/Lightbox.js +5 -5
  293. package/dist/data-display/LoadingState.js +5 -4
  294. package/dist/data-display/MapPreview.js +4 -4
  295. package/dist/data-display/Progress.js +8 -3
  296. package/dist/data-display/SectionOnboarding.js +3 -3
  297. package/dist/data-display/Sheet.js +2 -2
  298. package/dist/data-display/StatCard.js +6 -4
  299. package/dist/data-display/Table.js +3 -3
  300. package/dist/feedback/ConfirmAction.js +6 -6
  301. package/dist/feedback/TutorialOverlay.js +2 -2
  302. package/dist/form/AddressAutocomplete.js +7 -7
  303. package/dist/form/Autocomplete.js +2 -2
  304. package/dist/form/Button.js +2 -2
  305. package/dist/form/Calendar.js +4 -4
  306. package/dist/form/CategorySelect.js +10 -10
  307. package/dist/form/CepField.js +3 -3
  308. package/dist/form/CodeEditor.js +3 -3
  309. package/dist/form/DateRangePicker.js +7 -7
  310. package/dist/form/Input.js +2 -2
  311. package/dist/form/Menubar.js +2 -2
  312. package/dist/form/RichTextEditor.js +2 -2
  313. package/dist/form/total-form.js +30 -30
  314. package/dist/icons.js +2 -2
  315. package/dist/layout/ContentToolbar.js +10 -10
  316. package/dist/layout/ScrollArea.js +2 -2
  317. package/dist/layout/SettingsLayout.js +6 -6
  318. package/dist/layout/Skeleton.js +5 -3
  319. package/dist/native/chunks/{chunk-V4DQTC5L.js → chunk-HSIND52T.js} +3 -2
  320. package/dist/native/chunks/chunk-HSIND52T.js.map +1 -0
  321. package/dist/native/chunks/chunk-MLQIOKQZ.js +30 -0
  322. package/dist/native/chunks/chunk-MLQIOKQZ.js.map +1 -0
  323. package/dist/native/chunks/{chunk-YQGNMAJN.js → chunk-Q52IDAF2.js} +6 -4
  324. package/dist/native/chunks/chunk-Q52IDAF2.js.map +1 -0
  325. package/dist/native/data-display/Alert.js +7 -7
  326. package/dist/native/data-display/Avatar.js +451 -0
  327. package/dist/native/data-display/Avatar.js.map +1 -0
  328. package/dist/native/data-display/Badge.js +418 -0
  329. package/dist/native/data-display/Badge.js.map +1 -0
  330. package/dist/native/data-display/Chip.js +374 -0
  331. package/dist/native/data-display/Chip.js.map +1 -0
  332. package/dist/native/data-display/EmptyState.js +9 -9
  333. package/dist/native/data-display/ErrorState.js +9 -9
  334. package/dist/native/data-display/LoadingState.js +4 -4
  335. package/dist/native/data-display/Progress.js +432 -0
  336. package/dist/native/data-display/Progress.js.map +1 -0
  337. package/dist/native/icons.js +2 -2
  338. package/dist/native/layout/Skeleton.js +214 -0
  339. package/dist/native/layout/Skeleton.js.map +1 -0
  340. package/dist/navigation/AppHeader.js +9 -9
  341. package/dist/navigation/NavigationMenu.js +4 -4
  342. package/dist/navigation/Pagination.js +2 -2
  343. package/dist/navigation/Tabs.js +2 -2
  344. package/dist/social-login-button.js +3 -3
  345. package/dist/types/components/data-display/Avatar/Avatar.base.d.ts +87 -0
  346. package/dist/types/components/data-display/Avatar/Avatar.base.d.ts.map +1 -0
  347. package/dist/types/components/data-display/Avatar/Avatar.d.ts.map +1 -1
  348. package/dist/types/components/data-display/Avatar/Avatar.helpers.d.ts +37 -0
  349. package/dist/types/components/data-display/Avatar/Avatar.helpers.d.ts.map +1 -0
  350. package/dist/types/components/data-display/Avatar/Avatar.metrics.d.ts +113 -0
  351. package/dist/types/components/data-display/Avatar/Avatar.metrics.d.ts.map +1 -0
  352. package/dist/types/components/data-display/Avatar/Avatar.types.d.ts +4 -68
  353. package/dist/types/components/data-display/Avatar/Avatar.types.d.ts.map +1 -1
  354. package/dist/types/components/data-display/Avatar/Avatar.view.d.ts +2 -2
  355. package/dist/types/components/data-display/Avatar/Avatar.view.d.ts.map +1 -1
  356. package/dist/types/components/data-display/Avatar/index.d.ts +1 -1
  357. package/dist/types/components/data-display/Avatar/index.d.ts.map +1 -1
  358. package/dist/types/components/data-display/Badge/Badge.animations.d.ts.map +1 -1
  359. package/dist/types/components/data-display/Badge/Badge.base.d.ts +101 -0
  360. package/dist/types/components/data-display/Badge/Badge.base.d.ts.map +1 -0
  361. package/dist/types/components/data-display/Badge/Badge.d.ts.map +1 -1
  362. package/dist/types/components/data-display/Badge/Badge.helpers.d.ts +10 -4
  363. package/dist/types/components/data-display/Badge/Badge.helpers.d.ts.map +1 -1
  364. package/dist/types/components/data-display/Badge/Badge.metrics.d.ts +111 -0
  365. package/dist/types/components/data-display/Badge/Badge.metrics.d.ts.map +1 -0
  366. package/dist/types/components/data-display/Badge/Badge.styles.d.ts +1 -4
  367. package/dist/types/components/data-display/Badge/Badge.styles.d.ts.map +1 -1
  368. package/dist/types/components/data-display/Badge/Badge.types.d.ts +4 -81
  369. package/dist/types/components/data-display/Badge/Badge.types.d.ts.map +1 -1
  370. package/dist/types/components/data-display/Badge/Badge.variants.d.ts.map +1 -1
  371. package/dist/types/components/data-display/Badge/BadgeContent.d.ts.map +1 -1
  372. package/dist/types/components/data-display/Badge/index.d.ts +1 -1
  373. package/dist/types/components/data-display/Badge/index.d.ts.map +1 -1
  374. package/dist/types/components/data-display/Chip/Chip.base.d.ts +81 -0
  375. package/dist/types/components/data-display/Chip/Chip.base.d.ts.map +1 -0
  376. package/dist/types/components/data-display/Chip/Chip.d.ts.map +1 -1
  377. package/dist/types/components/data-display/Chip/Chip.helpers.d.ts +14 -28
  378. package/dist/types/components/data-display/Chip/Chip.helpers.d.ts.map +1 -1
  379. package/dist/types/components/data-display/Chip/Chip.metrics.d.ts +61 -0
  380. package/dist/types/components/data-display/Chip/Chip.metrics.d.ts.map +1 -0
  381. package/dist/types/components/data-display/Chip/Chip.styles.d.ts +30 -0
  382. package/dist/types/components/data-display/Chip/Chip.styles.d.ts.map +1 -0
  383. package/dist/types/components/data-display/Chip/Chip.types.d.ts +4 -67
  384. package/dist/types/components/data-display/Chip/Chip.types.d.ts.map +1 -1
  385. package/dist/types/components/data-display/Chip/index.d.ts +1 -1
  386. package/dist/types/components/data-display/Chip/index.d.ts.map +1 -1
  387. package/dist/types/components/data-display/Progress/Progress.base.d.ts +72 -0
  388. package/dist/types/components/data-display/Progress/Progress.base.d.ts.map +1 -0
  389. package/dist/types/components/data-display/Progress/Progress.d.ts.map +1 -1
  390. package/dist/types/components/data-display/Progress/Progress.helpers.d.ts +15 -3
  391. package/dist/types/components/data-display/Progress/Progress.helpers.d.ts.map +1 -1
  392. package/dist/types/components/data-display/Progress/Progress.metrics.d.ts +91 -0
  393. package/dist/types/components/data-display/Progress/Progress.metrics.d.ts.map +1 -0
  394. package/dist/types/components/data-display/Progress/Progress.styles.d.ts.map +1 -1
  395. package/dist/types/components/data-display/Progress/Progress.types.d.ts +4 -48
  396. package/dist/types/components/data-display/Progress/Progress.types.d.ts.map +1 -1
  397. package/dist/types/components/data-display/Progress/index.d.ts +1 -1
  398. package/dist/types/components/data-display/Progress/index.d.ts.map +1 -1
  399. package/dist/types/components/layout/Skeleton/Skeleton.base.d.ts +37 -0
  400. package/dist/types/components/layout/Skeleton/Skeleton.base.d.ts.map +1 -0
  401. package/dist/types/components/layout/Skeleton/Skeleton.d.ts.map +1 -1
  402. package/dist/types/components/layout/Skeleton/Skeleton.helpers.d.ts +13 -3
  403. package/dist/types/components/layout/Skeleton/Skeleton.helpers.d.ts.map +1 -1
  404. package/dist/types/components/layout/Skeleton/Skeleton.metrics.d.ts +68 -0
  405. package/dist/types/components/layout/Skeleton/Skeleton.metrics.d.ts.map +1 -0
  406. package/dist/types/components/layout/Skeleton/Skeleton.styles.d.ts +1 -1
  407. package/dist/types/components/layout/Skeleton/Skeleton.styles.d.ts.map +1 -1
  408. package/dist/types/components/layout/Skeleton/Skeleton.types.d.ts +5 -15
  409. package/dist/types/components/layout/Skeleton/Skeleton.types.d.ts.map +1 -1
  410. package/dist/types/components/layout/Skeleton/index.d.ts +1 -1
  411. package/dist/types/components/layout/Skeleton/index.d.ts.map +1 -1
  412. package/dist/types/icons/paths.generated.d.ts +2 -0
  413. package/dist/types/icons/paths.generated.d.ts.map +1 -1
  414. package/dist/types/platform/animation.d.ts +14 -0
  415. package/dist/types/platform/animation.d.ts.map +1 -0
  416. package/dist/types/platform/web-keys.d.ts +25 -0
  417. package/dist/types/platform/web-keys.d.ts.map +1 -0
  418. package/dist/types/tokens/mui-type.d.ts +1 -1
  419. package/dist/types/tokens/mui-type.d.ts.map +1 -1
  420. package/dist/types-native/components/data-display/Avatar/Avatar.base.d.ts +87 -0
  421. package/dist/types-native/components/data-display/Avatar/Avatar.base.d.ts.map +1 -0
  422. package/dist/types-native/components/data-display/Avatar/Avatar.helpers.d.ts +37 -0
  423. package/dist/types-native/components/data-display/Avatar/Avatar.helpers.d.ts.map +1 -0
  424. package/dist/types-native/components/data-display/Avatar/Avatar.look.native.d.ts +25 -0
  425. package/dist/types-native/components/data-display/Avatar/Avatar.look.native.d.ts.map +1 -0
  426. package/dist/types-native/components/data-display/Avatar/Avatar.metrics.d.ts +113 -0
  427. package/dist/types-native/components/data-display/Avatar/Avatar.metrics.d.ts.map +1 -0
  428. package/dist/types-native/components/data-display/Avatar/Avatar.native.d.ts +19 -0
  429. package/dist/types-native/components/data-display/Avatar/Avatar.native.d.ts.map +1 -0
  430. package/dist/types-native/components/data-display/Avatar/Avatar.parts.native.d.ts +69 -0
  431. package/dist/types-native/components/data-display/Avatar/Avatar.parts.native.d.ts.map +1 -0
  432. package/dist/types-native/components/data-display/Avatar/Avatar.types.native.d.ts +24 -0
  433. package/dist/types-native/components/data-display/Avatar/Avatar.types.native.d.ts.map +1 -0
  434. package/dist/types-native/components/data-display/Avatar/index.native.d.ts +3 -0
  435. package/dist/types-native/components/data-display/Avatar/index.native.d.ts.map +1 -0
  436. package/dist/types-native/components/data-display/Badge/Badge.base.d.ts +101 -0
  437. package/dist/types-native/components/data-display/Badge/Badge.base.d.ts.map +1 -0
  438. package/dist/types-native/components/data-display/Badge/Badge.helpers.d.ts +19 -0
  439. package/dist/types-native/components/data-display/Badge/Badge.helpers.d.ts.map +1 -0
  440. package/dist/types-native/components/data-display/Badge/Badge.look.native.d.ts +31 -0
  441. package/dist/types-native/components/data-display/Badge/Badge.look.native.d.ts.map +1 -0
  442. package/dist/types-native/components/data-display/Badge/Badge.metrics.d.ts +111 -0
  443. package/dist/types-native/components/data-display/Badge/Badge.metrics.d.ts.map +1 -0
  444. package/dist/types-native/components/data-display/Badge/Badge.native.d.ts +10 -0
  445. package/dist/types-native/components/data-display/Badge/Badge.native.d.ts.map +1 -0
  446. package/dist/types-native/components/data-display/Badge/Badge.types.native.d.ts +8 -0
  447. package/dist/types-native/components/data-display/Badge/Badge.types.native.d.ts.map +1 -0
  448. package/dist/types-native/components/data-display/Badge/BadgeContent.native.d.ts +20 -0
  449. package/dist/types-native/components/data-display/Badge/BadgeContent.native.d.ts.map +1 -0
  450. package/dist/types-native/components/data-display/Badge/index.native.d.ts +3 -0
  451. package/dist/types-native/components/data-display/Badge/index.native.d.ts.map +1 -0
  452. package/dist/types-native/components/data-display/Chip/Chip.base.d.ts +81 -0
  453. package/dist/types-native/components/data-display/Chip/Chip.base.d.ts.map +1 -0
  454. package/dist/types-native/components/data-display/Chip/Chip.helpers.d.ts +22 -0
  455. package/dist/types-native/components/data-display/Chip/Chip.helpers.d.ts.map +1 -0
  456. package/dist/types-native/components/data-display/Chip/Chip.look.native.d.ts +29 -0
  457. package/dist/types-native/components/data-display/Chip/Chip.look.native.d.ts.map +1 -0
  458. package/dist/types-native/components/data-display/Chip/Chip.metrics.d.ts +61 -0
  459. package/dist/types-native/components/data-display/Chip/Chip.metrics.d.ts.map +1 -0
  460. package/dist/types-native/components/data-display/Chip/Chip.native.d.ts +11 -0
  461. package/dist/types-native/components/data-display/Chip/Chip.native.d.ts.map +1 -0
  462. package/dist/types-native/components/data-display/Chip/Chip.types.native.d.ts +20 -0
  463. package/dist/types-native/components/data-display/Chip/Chip.types.native.d.ts.map +1 -0
  464. package/dist/types-native/components/data-display/Chip/index.native.d.ts +3 -0
  465. package/dist/types-native/components/data-display/Chip/index.native.d.ts.map +1 -0
  466. package/dist/types-native/components/data-display/Progress/Progress.base.d.ts +72 -0
  467. package/dist/types-native/components/data-display/Progress/Progress.base.d.ts.map +1 -0
  468. package/dist/types-native/components/data-display/Progress/Progress.helpers.d.ts +18 -0
  469. package/dist/types-native/components/data-display/Progress/Progress.helpers.d.ts.map +1 -0
  470. package/dist/types-native/components/data-display/Progress/Progress.look.native.d.ts +28 -0
  471. package/dist/types-native/components/data-display/Progress/Progress.look.native.d.ts.map +1 -0
  472. package/dist/types-native/components/data-display/Progress/Progress.metrics.d.ts +91 -0
  473. package/dist/types-native/components/data-display/Progress/Progress.metrics.d.ts.map +1 -0
  474. package/dist/types-native/components/data-display/Progress/Progress.native.d.ts +10 -0
  475. package/dist/types-native/components/data-display/Progress/Progress.native.d.ts.map +1 -0
  476. package/dist/types-native/components/data-display/Progress/Progress.types.native.d.ts +8 -0
  477. package/dist/types-native/components/data-display/Progress/Progress.types.native.d.ts.map +1 -0
  478. package/dist/types-native/components/data-display/Progress/index.native.d.ts +3 -0
  479. package/dist/types-native/components/data-display/Progress/index.native.d.ts.map +1 -0
  480. package/dist/types-native/components/layout/Skeleton/Skeleton.base.d.ts +37 -0
  481. package/dist/types-native/components/layout/Skeleton/Skeleton.base.d.ts.map +1 -0
  482. package/dist/types-native/components/layout/Skeleton/Skeleton.helpers.d.ts +16 -0
  483. package/dist/types-native/components/layout/Skeleton/Skeleton.helpers.d.ts.map +1 -0
  484. package/dist/types-native/components/layout/Skeleton/Skeleton.metrics.d.ts +68 -0
  485. package/dist/types-native/components/layout/Skeleton/Skeleton.metrics.d.ts.map +1 -0
  486. package/dist/types-native/components/layout/Skeleton/Skeleton.native.d.ts +38 -0
  487. package/dist/types-native/components/layout/Skeleton/Skeleton.native.d.ts.map +1 -0
  488. package/dist/types-native/components/layout/Skeleton/Skeleton.types.native.d.ts +8 -0
  489. package/dist/types-native/components/layout/Skeleton/Skeleton.types.native.d.ts.map +1 -0
  490. package/dist/types-native/components/layout/Skeleton/index.native.d.ts +3 -0
  491. package/dist/types-native/components/layout/Skeleton/index.native.d.ts.map +1 -0
  492. package/dist/types-native/icons/paths.generated.d.ts +2 -0
  493. package/dist/types-native/icons/paths.generated.d.ts.map +1 -1
  494. package/dist/types-native/platform/animation.d.ts +14 -0
  495. package/dist/types-native/platform/animation.d.ts.map +1 -0
  496. package/dist/types-native/platform/web-keys.d.ts +25 -0
  497. package/dist/types-native/platform/web-keys.d.ts.map +1 -0
  498. package/dist/types-native/tokens/mui-type.d.ts +1 -1
  499. package/dist/types-native/tokens/mui-type.d.ts.map +1 -1
  500. package/dist/user-avatar.js +7 -5
  501. package/dist/utility/InstallPrompt.js +2 -2
  502. package/package.json +21 -1
  503. package/src/components/data-display/Avatar/Avatar.base.ts +108 -0
  504. package/src/components/data-display/Avatar/Avatar.helpers.ts +54 -0
  505. package/src/components/data-display/Avatar/Avatar.look.native.ts +123 -0
  506. package/src/components/data-display/Avatar/Avatar.metrics.ts +111 -0
  507. package/src/components/data-display/Avatar/Avatar.native.tsx +190 -0
  508. package/src/components/data-display/Avatar/Avatar.parts.native.tsx +243 -0
  509. package/src/components/data-display/Avatar/Avatar.tsx +34 -36
  510. package/src/components/data-display/Avatar/Avatar.types.native.ts +39 -0
  511. package/src/components/data-display/Avatar/Avatar.types.ts +12 -81
  512. package/src/components/data-display/Avatar/Avatar.view.tsx +61 -41
  513. package/src/components/data-display/Avatar/NATIVE-NOTES.md +11 -0
  514. package/src/components/data-display/Avatar/index.native.ts +10 -0
  515. package/src/components/data-display/Avatar/index.ts +8 -1
  516. package/src/components/data-display/Badge/Badge.animations.ts +11 -9
  517. package/src/components/data-display/Badge/Badge.base.ts +138 -0
  518. package/src/components/data-display/Badge/Badge.helpers.ts +18 -7
  519. package/src/components/data-display/Badge/Badge.look.native.ts +174 -0
  520. package/src/components/data-display/Badge/Badge.metrics.ts +116 -0
  521. package/src/components/data-display/Badge/Badge.native.tsx +212 -0
  522. package/src/components/data-display/Badge/Badge.styles.ts +63 -74
  523. package/src/components/data-display/Badge/Badge.tsx +12 -6
  524. package/src/components/data-display/Badge/Badge.types.native.ts +16 -0
  525. package/src/components/data-display/Badge/Badge.types.ts +27 -113
  526. package/src/components/data-display/Badge/Badge.variants.ts +20 -9
  527. package/src/components/data-display/Badge/BadgeContent.native.tsx +78 -0
  528. package/src/components/data-display/Badge/BadgeContent.tsx +8 -8
  529. package/src/components/data-display/Badge/NATIVE-NOTES.md +11 -0
  530. package/src/components/data-display/Badge/index.native.ts +8 -0
  531. package/src/components/data-display/Badge/index.ts +7 -1
  532. package/src/components/data-display/Chip/Chip.base.ts +99 -0
  533. package/src/components/data-display/Chip/Chip.helpers.ts +49 -0
  534. package/src/components/data-display/Chip/Chip.look.native.ts +163 -0
  535. package/src/components/data-display/Chip/Chip.metrics.ts +102 -0
  536. package/src/components/data-display/Chip/Chip.native.tsx +269 -0
  537. package/src/components/data-display/Chip/{Chip.helpers.tsx → Chip.styles.tsx} +23 -51
  538. package/src/components/data-display/Chip/Chip.tsx +10 -11
  539. package/src/components/data-display/Chip/Chip.types.native.ts +28 -0
  540. package/src/components/data-display/Chip/Chip.types.ts +5 -84
  541. package/src/components/data-display/Chip/NATIVE-NOTES.md +10 -0
  542. package/src/components/data-display/Chip/chip.md +1 -1
  543. package/src/components/data-display/Chip/index.native.ts +8 -0
  544. package/src/components/data-display/Chip/index.ts +1 -1
  545. package/src/components/data-display/Progress/NATIVE-NOTES.md +10 -0
  546. package/src/components/data-display/Progress/Progress.base.ts +86 -0
  547. package/src/components/data-display/Progress/Progress.helpers.ts +29 -8
  548. package/src/components/data-display/Progress/Progress.look.native.ts +111 -0
  549. package/src/components/data-display/Progress/Progress.metrics.ts +101 -0
  550. package/src/components/data-display/Progress/Progress.native.tsx +387 -0
  551. package/src/components/data-display/Progress/Progress.styles.ts +31 -17
  552. package/src/components/data-display/Progress/Progress.tsx +7 -6
  553. package/src/components/data-display/Progress/Progress.types.native.ts +11 -0
  554. package/src/components/data-display/Progress/Progress.types.ts +6 -58
  555. package/src/components/data-display/Progress/index.native.ts +7 -0
  556. package/src/components/data-display/Progress/index.ts +6 -1
  557. package/src/components/layout/Skeleton/NATIVE-NOTES.md +8 -0
  558. package/src/components/layout/Skeleton/Skeleton.base.ts +37 -0
  559. package/src/components/layout/Skeleton/Skeleton.helpers.ts +24 -8
  560. package/src/components/layout/Skeleton/Skeleton.metrics.ts +81 -0
  561. package/src/components/layout/Skeleton/Skeleton.native.tsx +271 -0
  562. package/src/components/layout/Skeleton/Skeleton.styles.ts +25 -25
  563. package/src/components/layout/Skeleton/Skeleton.tsx +9 -5
  564. package/src/components/layout/Skeleton/Skeleton.types.native.ts +16 -0
  565. package/src/components/layout/Skeleton/Skeleton.types.ts +13 -16
  566. package/src/components/layout/Skeleton/index.native.ts +8 -0
  567. package/src/components/layout/Skeleton/index.ts +7 -1
  568. package/src/icons/glyphs.json +2 -0
  569. package/src/icons/paths.generated.ts +2 -0
  570. package/src/platform/animation.ts +53 -0
  571. package/src/platform/web-keys.ts +28 -0
  572. package/src/tokens/mui-type.ts +2 -1
  573. package/dist/chunk-3HWL4AW4.js.map +0 -1
  574. package/dist/chunk-4Q7HWRR2.js.map +0 -1
  575. package/dist/chunk-FS4X3VDA.js +0 -78
  576. package/dist/chunk-FS4X3VDA.js.map +0 -1
  577. package/dist/chunk-HAFE43QJ.js.map +0 -1
  578. package/dist/chunk-HKFMPEXJ.js.map +0 -1
  579. package/dist/chunk-HXYXDQ7U.js.map +0 -1
  580. package/dist/chunk-IRDGC7FK.js.map +0 -1
  581. package/dist/chunk-JZKOJZ6V.js.map +0 -1
  582. package/dist/chunk-KPQAPQH6.js.map +0 -1
  583. package/dist/chunk-L6KEVPXN.js.map +0 -1
  584. package/dist/chunk-LYNJJV2X.js.map +0 -1
  585. package/dist/chunk-MMZAGB64.js.map +0 -1
  586. package/dist/chunk-NQHOHQCY.js.map +0 -1
  587. package/dist/chunk-QIV73V2X.js.map +0 -1
  588. package/dist/chunk-RLC46NIW.js.map +0 -1
  589. package/dist/chunk-ZGEBIC5X.js.map +0 -1
  590. package/dist/chunk-ZHEJLUCX.js.map +0 -1
  591. package/dist/native/chunks/chunk-V4DQTC5L.js.map +0 -1
  592. package/dist/native/chunks/chunk-YQGNMAJN.js.map +0 -1
  593. /package/dist/{chunk-P7FQUGED.js.map → chunk-23FCBIUN.js.map} +0 -0
  594. /package/dist/{chunk-SL4NFGOL.js.map → chunk-24BUCMQA.js.map} +0 -0
  595. /package/dist/{chunk-4SXZSSVV.js.map → chunk-2EKALM6P.js.map} +0 -0
  596. /package/dist/{chunk-ZRFRU545.js.map → chunk-2ZDTGI5V.js.map} +0 -0
  597. /package/dist/{chunk-HR7YTBR7.js.map → chunk-3AOOI2NR.js.map} +0 -0
  598. /package/dist/{chunk-KKYW3LU7.js.map → chunk-47UD6DZ4.js.map} +0 -0
  599. /package/dist/{chunk-ZOUWHGV3.js.map → chunk-4MGFUPQT.js.map} +0 -0
  600. /package/dist/{chunk-4FRZDSRD.js.map → chunk-4WK2RTVY.js.map} +0 -0
  601. /package/dist/{chunk-LDE4ELB5.js.map → chunk-5ZF3VASA.js.map} +0 -0
  602. /package/dist/{chunk-JE6RZ5L6.js.map → chunk-5ZOJLYD2.js.map} +0 -0
  603. /package/dist/{chunk-E5ZHW4I5.js.map → chunk-6IUTT6BK.js.map} +0 -0
  604. /package/dist/{chunk-WPR2HS5B.js.map → chunk-74EZ565M.js.map} +0 -0
  605. /package/dist/{chunk-BVZVH3ZN.js.map → chunk-74OZ5KVR.js.map} +0 -0
  606. /package/dist/{chunk-PMS3H3OO.js.map → chunk-76GZ55IC.js.map} +0 -0
  607. /package/dist/{chunk-DLFOEXUP.js.map → chunk-7EESF76V.js.map} +0 -0
  608. /package/dist/{chunk-HKZHEK3Z.js.map → chunk-7JWXLDRH.js.map} +0 -0
  609. /package/dist/{chunk-OR7UH2ZQ.js.map → chunk-7P2HZLEG.js.map} +0 -0
  610. /package/dist/{chunk-6DXYCXH4.js.map → chunk-7RZ4WOQW.js.map} +0 -0
  611. /package/dist/{chunk-EMNGIYH6.js.map → chunk-7TZ6OC5T.js.map} +0 -0
  612. /package/dist/{chunk-CDJPDZCA.js.map → chunk-AEGX66N7.js.map} +0 -0
  613. /package/dist/{chunk-65DLYC4S.js.map → chunk-AVGTTWTE.js.map} +0 -0
  614. /package/dist/{chunk-C6XESZ3R.js.map → chunk-B2A4DG77.js.map} +0 -0
  615. /package/dist/{chunk-VOOPGAQO.js.map → chunk-B7BZAIHL.js.map} +0 -0
  616. /package/dist/{chunk-DZN3JF5E.js.map → chunk-BBC4KT5G.js.map} +0 -0
  617. /package/dist/{chunk-FWCUELBU.js.map → chunk-BILE3A7F.js.map} +0 -0
  618. /package/dist/{chunk-UEJQQVP2.js.map → chunk-BLT5ZBVL.js.map} +0 -0
  619. /package/dist/{chunk-ISSJNFJV.js.map → chunk-C52BELLW.js.map} +0 -0
  620. /package/dist/{chunk-BPYPUEM5.js.map → chunk-CZJLWCEG.js.map} +0 -0
  621. /package/dist/{chunk-WZUNBSS7.js.map → chunk-DVUPIVI2.js.map} +0 -0
  622. /package/dist/{chunk-EXJBPKGW.js.map → chunk-EGRFMPGD.js.map} +0 -0
  623. /package/dist/{chunk-XFUNJYFT.js.map → chunk-EPNUVSNK.js.map} +0 -0
  624. /package/dist/{chunk-H2EQVMU3.js.map → chunk-EX3PSZLV.js.map} +0 -0
  625. /package/dist/{chunk-LIOVN5IM.js.map → chunk-F2DOTCF3.js.map} +0 -0
  626. /package/dist/{chunk-64IEKEMQ.js.map → chunk-FGLV6BXQ.js.map} +0 -0
  627. /package/dist/{chunk-L65LF6LN.js.map → chunk-FP4R47TM.js.map} +0 -0
  628. /package/dist/{chunk-7AR2R7TV.js.map → chunk-G5ZVD5IJ.js.map} +0 -0
  629. /package/dist/{chunk-SHQWIDD5.js.map → chunk-GJQYM3PM.js.map} +0 -0
  630. /package/dist/{chunk-7WL24VNI.js.map → chunk-HDNK7BAX.js.map} +0 -0
  631. /package/dist/{chunk-X5MPHXG5.js.map → chunk-HEG7JIBM.js.map} +0 -0
  632. /package/dist/{chunk-ZIOCRSHU.js.map → chunk-HSAH5QUQ.js.map} +0 -0
  633. /package/dist/{chunk-B443IIQG.js.map → chunk-IE7ISTLQ.js.map} +0 -0
  634. /package/dist/{chunk-NFHS77NE.js.map → chunk-IH4CX43Q.js.map} +0 -0
  635. /package/dist/{chunk-72UYVJBQ.js.map → chunk-IJIT5HQP.js.map} +0 -0
  636. /package/dist/{chunk-AP4FLCLA.js.map → chunk-J54WH74M.js.map} +0 -0
  637. /package/dist/{chunk-5HOJSVQH.js.map → chunk-JB7JE4QZ.js.map} +0 -0
  638. /package/dist/{chunk-QJJUTBKZ.js.map → chunk-KQ74QU55.js.map} +0 -0
  639. /package/dist/{chunk-YLDS5FOQ.js.map → chunk-KZSKI2R3.js.map} +0 -0
  640. /package/dist/{chunk-IIOEQRXX.js.map → chunk-LAHDFBDE.js.map} +0 -0
  641. /package/dist/{chunk-BUDXR3EV.js.map → chunk-LKVIZNUM.js.map} +0 -0
  642. /package/dist/{chunk-OAXAF4VY.js.map → chunk-LMJBINWN.js.map} +0 -0
  643. /package/dist/{chunk-SFAP5EH5.js.map → chunk-LUMF63BM.js.map} +0 -0
  644. /package/dist/{chunk-KADJNWTQ.js.map → chunk-LZRURORY.js.map} +0 -0
  645. /package/dist/{chunk-CLNTJM3F.js.map → chunk-M7OHXNLF.js.map} +0 -0
  646. /package/dist/{chunk-UXQW6ZIN.js.map → chunk-MBYO2F4Y.js.map} +0 -0
  647. /package/dist/{chunk-MCRIT46W.js.map → chunk-MY5VNNSP.js.map} +0 -0
  648. /package/dist/{chunk-XELVDPKL.js.map → chunk-NFAKRI4S.js.map} +0 -0
  649. /package/dist/{chunk-KSF7TLXH.js.map → chunk-NHSMLVNC.js.map} +0 -0
  650. /package/dist/{chunk-ES2RN7YV.js.map → chunk-NRUYYGDZ.js.map} +0 -0
  651. /package/dist/{chunk-MQUU2XZB.js.map → chunk-OQFSYMHJ.js.map} +0 -0
  652. /package/dist/{chunk-M3RIC6JI.js.map → chunk-OQXOYHIV.js.map} +0 -0
  653. /package/dist/{chunk-PC3ZFERM.js.map → chunk-PC5FFEIY.js.map} +0 -0
  654. /package/dist/{chunk-SOHDPFOB.js.map → chunk-PHCSPHDH.js.map} +0 -0
  655. /package/dist/{chunk-OZWQNFG6.js.map → chunk-PODGTNXS.js.map} +0 -0
  656. /package/dist/{chunk-IPE5FFFD.js.map → chunk-PUBPZOQJ.js.map} +0 -0
  657. /package/dist/{chunk-GBFGZJB5.js.map → chunk-Q4NOI2CR.js.map} +0 -0
  658. /package/dist/{chunk-GOWBYHYW.js.map → chunk-R6SBP5M5.js.map} +0 -0
  659. /package/dist/{chunk-DTKMBI7B.js.map → chunk-R7MX5KPJ.js.map} +0 -0
  660. /package/dist/{chunk-NECUCG2S.js.map → chunk-RQDN4BN5.js.map} +0 -0
  661. /package/dist/{chunk-5SYD23V4.js.map → chunk-SKZHOWTS.js.map} +0 -0
  662. /package/dist/{chunk-Y6KPZQPI.js.map → chunk-SOCKK67R.js.map} +0 -0
  663. /package/dist/{chunk-GCJLMX63.js.map → chunk-VCTKJHXD.js.map} +0 -0
  664. /package/dist/{chunk-QZPNQWS2.js.map → chunk-VEFDL77X.js.map} +0 -0
  665. /package/dist/{chunk-WEH5TCPE.js.map → chunk-VJFH2AXT.js.map} +0 -0
  666. /package/dist/{chunk-S7HRED4D.js.map → chunk-VLHGBFR6.js.map} +0 -0
  667. /package/dist/{chunk-HP2ODXNA.js.map → chunk-VR5HDUBK.js.map} +0 -0
  668. /package/dist/{chunk-RBGOGTT2.js.map → chunk-W2UTDN4T.js.map} +0 -0
  669. /package/dist/{chunk-N4WANJI3.js.map → chunk-WBVHRLIS.js.map} +0 -0
  670. /package/dist/{chunk-XXJRT6BP.js.map → chunk-WMALDOF5.js.map} +0 -0
  671. /package/dist/{chunk-MHFJBNDP.js.map → chunk-WO52KYSU.js.map} +0 -0
  672. /package/dist/{chunk-ZBOFBRZC.js.map → chunk-WX7VWW3W.js.map} +0 -0
  673. /package/dist/{chunk-J4W4TQPC.js.map → chunk-X24P3ZYW.js.map} +0 -0
  674. /package/dist/{chunk-X2J6MRJW.js.map → chunk-YFHIESMD.js.map} +0 -0
  675. /package/dist/{chunk-72NOM3O2.js.map → chunk-YK2PETUP.js.map} +0 -0
  676. /package/dist/{chunk-CRNQVWIT.js.map → chunk-Z4GWXTZV.js.map} +0 -0
  677. /package/dist/{chunk-SG6VULKS.js.map → chunk-ZEBJT5JZ.js.map} +0 -0
@@ -0,0 +1,28 @@
1
+ /**
2
+ * KEY EVENTS REACT NATIVE DOES NOT DECLARE.
3
+ *
4
+ * There is no `onKeyDown` on React Native's `ViewProps` or `PressableProps`,
5
+ * because there is no keyboard behind a `View` on a device. react-native-web
6
+ * DOES forward one to the DOM, and a component that stands in for a native
7
+ * control — a chip that removes on Delete, a listbox option that activates on
8
+ * Space — carries those conventions as part of its contract on the web.
9
+ *
10
+ * `webKeyDown` spreads the handler onto a react-native element without that
11
+ * element's props type having to know it, the way `./aria.ts` does for the
12
+ * `aria-*` attributes React Native leaves out. On a device it is simply never
13
+ * called, which is the honest outcome: the gesture is the input there.
14
+ *
15
+ * The event is typed structurally rather than as a DOM `KeyboardEvent`, because
16
+ * the native type program is checked WITHOUT the DOM lib.
17
+ */
18
+ export interface WebKeyEvent {
19
+ key: string;
20
+ preventDefault: () => void;
21
+ }
22
+
23
+ export type WebKeyHandler = (event: WebKeyEvent) => void;
24
+
25
+ /** `{ onKeyDown }` as something JSX can spread onto a react-native element. */
26
+ export function webKeyDown(handler: WebKeyHandler | undefined): object {
27
+ return handler === undefined ? {} : { onKeyDown: handler };
28
+ }
@@ -15,7 +15,7 @@ import type { UiTheme } from './theme';
15
15
  * halves and not these; each component that reads this records that as a
16
16
  * known gap in its `NATIVE-NOTES.md`.
17
17
  */
18
- export type MuiTypeVariantName = 'h6' | 'body1' | 'body2';
18
+ export type MuiTypeVariantName = 'h6' | 'body1' | 'body2' | 'caption';
19
19
 
20
20
  export interface MuiTypeVariant {
21
21
  fontSize: number;
@@ -28,6 +28,7 @@ export const MUI_TYPE: Record<MuiTypeVariantName, MuiTypeVariant> = {
28
28
  h6: { fontSize: 20, lineHeight: 1.6, fontWeight: 500, letterSpacingEm: 0.0075 },
29
29
  body1: { fontSize: 16, lineHeight: 1.5, fontWeight: 400, letterSpacingEm: 0.00938 },
30
30
  body2: { fontSize: 14, lineHeight: 1.43, fontWeight: 400, letterSpacingEm: 0.01071 },
31
+ caption: { fontSize: 12, lineHeight: 1.66, fontWeight: 400, letterSpacingEm: 0.03333 },
31
32
  };
32
33
 
33
34
  /** MUI's `theme.typography.fontWeightMedium`, which several web styles name outright. */
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Badge/Badge.variants.ts"],"sourcesContent":["import type { CSSObject, Theme } from '@mui/material/styles/index.js';\nimport { alpha } from '@mui/material/styles/index.js';\n\nimport type { BadgePalette, BadgeSizeStyles } from './Badge.styles';\n\nconst BADGE_VARIANTS: Record<\n string,\n (theme: Theme, colorPalette: BadgePalette, sizeStyles: BadgeSizeStyles) => CSSObject\n> = {\n default: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: colorPalette.main,\n color:\n colorPalette.contrastText || theme.palette.getContrastText?.(colorPalette.main) || '#fff',\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: sizeStyles.fontSize,\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2 }),\n dot: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: colorPalette.main,\n width: sizeStyles.dotSize,\n height: sizeStyles.dotSize,\n minWidth: sizeStyles.dotSize,\n borderRadius: '50%',\n padding: 0 }),\n count: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: colorPalette.main,\n color:\n colorPalette.contrastText || theme.palette.getContrastText?.(colorPalette.main) || '#fff',\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: sizeStyles.fontSize,\n padding: sizeStyles.padding,\n borderRadius: '50%' }),\n gradient: (theme, colorPalette, sizeStyles) => ({\n background: `linear-gradient(135deg, ${colorPalette.main} 0%, ${colorPalette.dark || colorPalette.main} 100%)`,\n color: '#fff',\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: sizeStyles.fontSize,\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2 }),\n glass: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: alpha(colorPalette.main, 0.1),\n backdropFilter: 'blur(10px) saturate(200%)',\n WebkitBackdropFilter: 'blur(10px) saturate(200%)',\n border: `1px solid ${alpha(colorPalette.main, 0.2)}`,\n color: colorPalette.main,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: sizeStyles.fontSize,\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2,\n boxShadow: `inset 0 1px 1px ${alpha(theme.palette.common.white, 0.1)}` }),\n outline: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: 'transparent',\n border: `2px solid ${colorPalette.main}`,\n color: colorPalette.main,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: sizeStyles.fontSize,\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2 }),\n secondary: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: alpha(colorPalette.main, 0.15),\n color: colorPalette.main,\n border: `1px solid ${alpha(colorPalette.main, 0.3)}`,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: sizeStyles.fontSize,\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2 }),\n destructive: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: theme.palette.error.main,\n color: theme.palette.error.contrastText,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: sizeStyles.fontSize,\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2,\n fontWeight: 700 }),\n success: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: theme.palette.success.main,\n color: theme.palette.success.contrastText,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: sizeStyles.fontSize,\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2 }),\n warning: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: theme.palette.warning.main,\n color: theme.palette.warning.contrastText,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: sizeStyles.fontSize,\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2 }) };\n\nexport const badgeVariantStyles = (\n theme: Theme,\n colorPalette: BadgePalette,\n sizeStyles: BadgeSizeStyles,\n customVariant?: string,\n): CSSObject =>\n customVariant ? (BADGE_VARIANTS[customVariant]?.(theme, colorPalette, sizeStyles) ?? {}) : {};\n\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Badge/Badge.styles.ts"],"sourcesContent":["import { alpha } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport {\n bounceAnimation,\n fadeInScaleAnimation,\n glowPulseAnimation,\n pulseAnimation,\n shimmerAnimation } from './Badge.animations';\nimport { badgeVariantStyles } from './Badge.variants';\nimport type { BadgeSize, BadgeVariant } from './Badge.types';\n\nexport type BadgePalette = {\n main: string;\n light?: string;\n dark?: string;\n contrastText?: string;\n};\nexport type BadgeSizeStyles = ReturnType<typeof getSizeStyles>;\n\nconst getColorFromTheme = (theme: Theme, color: string) => {\n const colorMap: Record<string, ReturnType<typeof theme.palette.augmentColor>> = {\n primary: theme.palette.primary,\n secondary: theme.palette.secondary,\n success: theme.palette.success,\n warning: theme.palette.warning,\n info: theme.palette.info,\n // `danger`, the house word the prop actually takes. Keyed on MUI's `error`\n // it matched nothing and fell through to the default.\n danger: theme.palette.error,\n neutral: {\n main: theme.palette.grey[600],\n light: theme.palette.grey[400],\n dark: theme.palette.grey[800],\n contrastText: theme.palette.getContrastText(theme.palette.grey[600]) } };\n\n return colorMap[color] || theme.palette.primary;\n};\n\nexport const getSizeStyles = (size: BadgeSize) => {\n const sizeMap: Record<\n BadgeSize,\n {\n minWidth: number;\n height: number;\n fontSize: string;\n padding: string;\n dotSize: number;\n iconSize: string;\n }\n > = {\n xs: {\n minWidth: 14,\n height: 14,\n fontSize: '0.5rem',\n padding: '0 3px',\n dotSize: 6,\n iconSize: '0.625rem' },\n sm: {\n minWidth: 16,\n height: 16,\n fontSize: '0.625rem',\n padding: '0 4px',\n dotSize: 8,\n iconSize: '0.75rem' },\n md: {\n minWidth: 20,\n height: 20,\n fontSize: '0.75rem',\n padding: '0 6px',\n dotSize: 10,\n iconSize: '0.875rem' },\n lg: {\n minWidth: 24,\n height: 24,\n fontSize: '0.875rem',\n padding: '0 8px',\n dotSize: 12,\n iconSize: '1rem' },\n xl: {\n minWidth: 28,\n height: 28,\n fontSize: '1rem',\n padding: '0 10px',\n dotSize: 14,\n iconSize: '1.125rem' } };\n\n return sizeMap[size] || sizeMap.md;\n};\n\nexport const getAnchorOrigin = (position: string) => {\n const positionMap: Record<string, { vertical: 'top' | 'bottom'; horizontal: 'left' | 'right' }> =\n {\n 'top-right': { vertical: 'top', horizontal: 'right' },\n 'top-left': { vertical: 'top', horizontal: 'left' },\n 'bottom-right': { vertical: 'bottom', horizontal: 'right' },\n 'bottom-left': { vertical: 'bottom', horizontal: 'left' } };\n\n return positionMap[position] || positionMap['top-right'];\n};\n\n// Exactly one variant applies, so a lookup replaces ten mutually exclusive\n// spreads inside the style object.\n// The glow effect needs the badge colour as bare RGB components for a CSS\n// variable, and the palette hands them over as hex or rgb().\nconst rgbValuesOf = (color: string): string => {\n if (color.startsWith('#')) {\n const hex = color.slice(1);\n const [r, g, b] = [0, 2, 4].map((offset) => parseInt(hex.slice(offset, offset + 2), 16));\n return `${r}, ${g}, ${b}`;\n }\n\n const match = color.match(/\\d+/g);\n if (match) return `${match[0]}, ${match[1]}, ${match[2]}`;\n return '255, 255, 255';\n};\n\n// Glow and pulse combine into a third, distinct treatment rather than stacking.\nconst badgeLightingStyles = ({\n glow,\n pulse,\n colorPalette }: {\n glow?: boolean;\n pulse?: boolean;\n colorPalette: BadgePalette;\n}): CSSObject => ({\n // Glow effect\n ...(glow &&\n !pulse && {\n boxShadow: `0 0 15px 3px ${alpha(colorPalette.main, 0.5)}`,\n filter: 'brightness(1.1)',\n '&:hover': {\n boxShadow: `0 0 20px 4px ${alpha(colorPalette.main, 0.6)}` } }),\n\n // Pulse animation\n ...(pulse &&\n !glow && {\n animation: `${pulseAnimation} 2s ease-in-out infinite` }),\n\n // Both glow and pulse\n ...(glow &&\n pulse && {\n animation: `${glowPulseAnimation} 2s ease-in-out infinite, ${pulseAnimation} 2s ease-in-out infinite`,\n filter: 'brightness(1.1)',\n }),\n\n});\n\nconst badgeAnimationStyles = ({\n animate,\n bounce,\n shimmer,\n glow: _glow,\n pulse: _pulse,\n customVariant,\n colorPalette,\n theme }: {\n animate?: boolean;\n bounce?: boolean;\n shimmer?: boolean;\n glow?: boolean;\n pulse?: boolean;\n customVariant?: BadgeVariant;\n colorPalette: BadgePalette;\n theme: Theme;\n}): CSSObject => ({\n ...(animate &&\n !bounce && {\n animation: `${fadeInScaleAnimation} 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55)` }),\n\n // Bounce animation\n ...(bounce && {\n animation: `${bounceAnimation} 1s ease-in-out` }),\n\n // Shimmer effect\n ...(shimmer && {\n background:\n customVariant === 'gradient'\n ? `linear-gradient(135deg, ${colorPalette.main} 0%, ${colorPalette.dark || colorPalette.main} 100%)`\n : colorPalette.main,\n backgroundSize: shimmer ? '1000px 100%' : 'auto',\n position: 'relative',\n overflow: 'hidden',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n background: `linear-gradient(\n 90deg,\n transparent,\n ${alpha(theme.palette.common.white, 0.4)},\n transparent\n )`,\n animation: `${shimmerAnimation} 3s infinite` } }) });\n\n// The badge chip's own styling, lifted out so the styled() callback just\n// forwards its props.\ninterface BadgeStyleArgs {\n theme: Theme;\n customVariant?: BadgeVariant;\n customSize?: BadgeSize;\n customColor?: string;\n glow?: boolean;\n pulse?: boolean;\n animate?: boolean;\n shimmer?: boolean;\n bounce?: boolean;\n hasIcon?: boolean;\n}\n\nexport const badgeStyles = ({\n theme,\n customVariant,\n customSize = 'md',\n customColor = 'primary',\n glow,\n pulse,\n animate,\n shimmer,\n bounce,\n hasIcon }: BadgeStyleArgs): CSSObject => {\n const colorPalette = getColorFromTheme(theme, customColor);\n const sizeStyles = getSizeStyles(customSize);\n\n return {\n '--glow-color': rgbValuesOf(colorPalette.main),\n '& .MuiBadge-badge': {\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n fontWeight: 600,\n border: `2px solid ${theme.palette.background.paper}`,\n letterSpacing: '0.025em',\n textTransform:\n customVariant === 'gradient' || customVariant === 'glass' ? 'uppercase' : 'none',\n willChange: 'transform, opacity',\n backfaceVisibility: 'hidden',\n\n // Outline variant\n\n // Destructive variant\n\n // Warning variant\n\n // Adjust padding when icon is present\n ...badgeVariantStyles(theme, colorPalette, sizeStyles, customVariant),\n ...(hasIcon && {\n paddingLeft: sizeStyles.padding.split(' ')[1],\n display: 'inline-flex',\n alignItems: 'center',\n gap: '2px',\n }),\n\n // Animation on mount\n ...badgeAnimationStyles({\n animate,\n bounce,\n shimmer,\n glow,\n pulse,\n customVariant,\n colorPalette,\n theme }),\n ...badgeLightingStyles({ glow, pulse, colorPalette }),\n\n '&:not(.MuiBadge-dot):hover': {\n transform: 'scale(1.1)',\n zIndex: 1 } } };\n}\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,aAAa;AAoBtB,IAAM,oBAAoB,CAAC,OAAc,UAAkB;AACzD,QAAM,WAA0E;AAAA,IAC9E,SAAS,MAAM,QAAQ;AAAA,IACvB,WAAW,MAAM,QAAQ;AAAA,IACzB,SAAS,MAAM,QAAQ;AAAA,IACvB,SAAS,MAAM,QAAQ;AAAA,IACvB,MAAM,MAAM,QAAQ;AAAA;AAAA;AAAA,IAGpB,QAAQ,MAAM,QAAQ;AAAA,IACtB,SAAS;AAAA,MACP,MAAM,MAAM,QAAQ,KAAK,GAAG;AAAA,MAC5B,OAAO,MAAM,QAAQ,KAAK,GAAG;AAAA,MAC7B,MAAM,MAAM,QAAQ,KAAK,GAAG;AAAA,MAC5B,cAAc,MAAM,QAAQ,gBAAgB,MAAM,QAAQ,KAAK,GAAG,CAAC;AAAA,IAAE;AAAA,EAAE;AAE3E,SAAO,SAAS,KAAK,KAAK,MAAM,QAAQ;AAC1C;AAEO,IAAM,gBAAgB,CAAC,SAAoB;AAChD,QAAM,UAUF;AAAA,IACF,IAAI;AAAA,MACF,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,MACT,UAAU;AAAA,IAAW;AAAA,IACvB,IAAI;AAAA,MACF,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,MACT,UAAU;AAAA,IAAU;AAAA,IACtB,IAAI;AAAA,MACF,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,MACT,UAAU;AAAA,IAAW;AAAA,IACvB,IAAI;AAAA,MACF,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,MACT,UAAU;AAAA,IAAO;AAAA,IACnB,IAAI;AAAA,MACF,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,MACT,UAAU;AAAA,IAAW;AAAA,EAAE;AAE3B,SAAO,QAAQ,IAAI,KAAK,QAAQ;AAClC;AAEO,IAAM,kBAAkB,CAAC,aAAqB;AACnD,QAAM,cACJ;AAAA,IACE,aAAa,EAAE,UAAU,OAAO,YAAY,QAAQ;AAAA,IACpD,YAAY,EAAE,UAAU,OAAO,YAAY,OAAO;AAAA,IAClD,gBAAgB,EAAE,UAAU,UAAU,YAAY,QAAQ;AAAA,IAC1D,eAAe,EAAE,UAAU,UAAU,YAAY,OAAO;AAAA,EAAE;AAE9D,SAAO,YAAY,QAAQ,KAAK,YAAY,WAAW;AACzD;AAMA,IAAM,cAAc,CAAC,UAA0B;AAC7C,MAAI,MAAM,WAAW,GAAG,GAAG;AACzB,UAAM,MAAM,MAAM,MAAM,CAAC;AACzB,UAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,SAAS,IAAI,MAAM,QAAQ,SAAS,CAAC,GAAG,EAAE,CAAC;AACvF,WAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AAAA,EACzB;AAEA,QAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,MAAI,MAAO,QAAO,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;AACvD,SAAO;AACT;AAGA,IAAM,sBAAsB,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAa,OAIG;AAAA;AAAA,EAEZ,GAAI,QACF,CAAC,SAAS;AAAA,IACR,WAAW,gBAAgB,MAAM,aAAa,MAAM,GAAG,CAAC;AAAA,IACxD,QAAQ;AAAA,IACR,WAAW;AAAA,MACT,WAAW,gBAAgB,MAAM,aAAa,MAAM,GAAG,CAAC;AAAA,IAAG;AAAA,EAAE;AAAA;AAAA,EAGnE,GAAI,SACF,CAAC,QAAQ;AAAA,IACP,WAAW,GAAG,cAAc;AAAA,EAA2B;AAAA;AAAA,EAG3D,GAAI,QACF,SAAS;AAAA,IACP,WAAW,GAAG,kBAAkB,6BAA6B,cAAc;AAAA,IAC3E,QAAQ;AAAA,EACV;AAER;AAEA,IAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAM,OASU;AAAA,EACZ,GAAI,WACF,CAAC,UAAU;AAAA,IACT,WAAW,GAAG,oBAAoB;AAAA,EAA+C;AAAA;AAAA,EAGrF,GAAI,UAAU;AAAA,IACZ,WAAW,GAAG,eAAe;AAAA,EAAkB;AAAA;AAAA,EAGjD,GAAI,WAAW;AAAA,IACb,YACE,kBAAkB,aACd,2BAA2B,aAAa,IAAI,QAAQ,aAAa,QAAQ,aAAa,IAAI,WAC1F,aAAa;AAAA,IACnB,gBAAgB,UAAU,gBAAgB;AAAA,IAC1C,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA;AAAA;AAAA,cAGR,MAAM,MAAM,QAAQ,OAAO,OAAO,GAAG,CAAC;AAAA;AAAA;AAAA,MAG1C,WAAW,GAAG,gBAAgB;AAAA,IAAe;AAAA,EAAE;AAAG;AAiBrD,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAQ,MAAiC;AACzC,QAAM,eAAe,kBAAkB,OAAO,WAAW;AACzD,QAAM,aAAa,cAAc,UAAU;AAE3C,SAAO;AAAA,IACL,gBAAgB,YAAY,aAAa,IAAI;AAAA,IAC7C,qBAAqB;AAAA,MACnB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,QAAQ,aAAa,MAAM,QAAQ,WAAW,KAAK;AAAA,MACnD,eAAe;AAAA,MACf,eACE,kBAAkB,cAAc,kBAAkB,UAAU,cAAc;AAAA,MAC5E,YAAY;AAAA,MACZ,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,MASpB,GAAG,mBAAmB,OAAO,cAAc,YAAY,aAAa;AAAA,MACpE,GAAI,WAAW;AAAA,QACb,aAAa,WAAW,QAAQ,MAAM,GAAG,EAAE,CAAC;AAAA,QAC5C,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,KAAK;AAAA,MACP;AAAA;AAAA,MAGA,GAAG,qBAAqB;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAM,CAAC;AAAA,MACT,GAAG,oBAAoB,EAAE,MAAM,OAAO,aAAa,CAAC;AAAA,MAEpD,8BAA8B;AAAA,QAC5B,WAAW;AAAA,QACX,QAAQ;AAAA,MAAE;AAAA,IAAE;AAAA,EAAE;AACtB;","names":[]}
@@ -1,78 +0,0 @@
1
- // src/components/data-display/Chip/Chip.helpers.tsx
2
- import Avatar from "@mui/material/Avatar/index.js";
3
- import React from "react";
4
- import { jsx } from "react/jsx-runtime";
5
- var makeTestId = (dataTestId) => (suffix) => dataTestId ? `${dataTestId}-${suffix}` : `chip-${suffix}`;
6
- var DELETE_KEYS = /* @__PURE__ */ new Set(["Delete", "Backspace"]);
7
- var ACTIVATE_KEYS = /* @__PURE__ */ new Set(["Enter", " "]);
8
- var makeKeyDownHandler = ({ disabled, deletable, selectable, onClick, onDelete }) => (event) => {
9
- if (disabled) return;
10
- if (DELETE_KEYS.has(event.key) && deletable && onDelete) {
11
- event.preventDefault();
12
- onDelete();
13
- return;
14
- }
15
- if (ACTIVATE_KEYS.has(event.key) && (onClick || selectable)) {
16
- event.preventDefault();
17
- onClick?.();
18
- }
19
- };
20
- var avatarFor = (avatar, avatarSrc) => {
21
- if (avatar && React.isValidElement(avatar)) {
22
- return avatar;
23
- }
24
- if (avatarSrc) {
25
- return /* @__PURE__ */ jsx(Avatar, { src: avatarSrc, sx: { width: 24, height: 24 } });
26
- }
27
- return void 0;
28
- };
29
- var chipStyles = ({
30
- variant,
31
- selected,
32
- clickable,
33
- disabled
34
- }) => {
35
- const lifts = clickable && !disabled;
36
- return {
37
- // Enhanced styling for outlined variant
38
- ...variant === "outlined" && {
39
- borderWidth: "1px",
40
- borderStyle: "solid",
41
- backgroundColor: "transparent"
42
- },
43
- ...selected && variant === "outlined" && {
44
- backgroundColor: (theme) => theme.palette.action.selected
45
- },
46
- "&:hover": {
47
- ...lifts && {
48
- transform: "translateY(-1px)",
49
- boxShadow: (theme) => theme.palette.mode === "dark" ? "0 4px 12px rgba(0, 0, 0, 0.3)" : "0 4px 12px rgba(0, 0, 0, 0.15)"
50
- }
51
- },
52
- "&:active": {
53
- ...lifts && {
54
- transform: "translateY(0px)"
55
- }
56
- },
57
- transition: "all 0.2s cubic-bezier(0.4, 0, 0.2, 1)"
58
- };
59
- };
60
- var chipRole = (selectable, onClick) => {
61
- if (selectable) return "option";
62
- return onClick ? "button" : void 0;
63
- };
64
- var isClickable = (disabled, onClick, selectable) => !disabled && (Boolean(onClick) || Boolean(selectable));
65
- var iconWithTestId = (icon, testId) => icon && React.isValidElement(icon) ? React.cloneElement(icon, {
66
- "data-testid": testId
67
- }) : void 0;
68
-
69
- export {
70
- makeTestId,
71
- makeKeyDownHandler,
72
- avatarFor,
73
- chipStyles,
74
- chipRole,
75
- isClickable,
76
- iconWithTestId
77
- };
78
- //# sourceMappingURL=chunk-FS4X3VDA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Chip/Chip.helpers.tsx"],"sourcesContent":["import Avatar from '@mui/material/Avatar/index.js';\nimport type { SxProps, Theme } from '@mui/material/styles/index.js';\nimport type { KeyboardEvent, ReactElement } from 'react';\nimport React from 'react';\n\nimport type { ChipProps } from './Chip.types';\n\nexport const makeTestId =\n (dataTestId?: string) =>\n (suffix: string): string =>\n dataTestId ? `${dataTestId}-${suffix}` : `chip-${suffix}`;\n\ninterface KeyHandlerArgs {\n disabled?: boolean;\n deletable?: boolean;\n selectable?: boolean;\n onClick?: () => void;\n onDelete?: () => void;\n}\n\nconst DELETE_KEYS = new Set(['Delete', 'Backspace']);\nconst ACTIVATE_KEYS = new Set(['Enter', ' ']);\n\n/**\n * A chip is not a native control, so the two keyboard conventions it stands in for\n * are wired by hand: Delete/Backspace removes it, Enter/Space activates it.\n */\nexport const makeKeyDownHandler =\n ({ disabled, deletable, selectable, onClick, onDelete }: KeyHandlerArgs) =>\n (event: KeyboardEvent): void => {\n if (disabled) return;\n\n if (DELETE_KEYS.has(event.key) && deletable && onDelete) {\n event.preventDefault();\n onDelete();\n return;\n }\n\n if (ACTIVATE_KEYS.has(event.key) && (onClick || selectable)) {\n event.preventDefault();\n onClick?.();\n }\n };\n\nexport const avatarFor = (\n avatar: ChipProps['avatar'],\n avatarSrc?: string,\n): ReactElement | undefined => {\n if (avatar && React.isValidElement(avatar)) {\n return avatar;\n }\n if (avatarSrc) {\n return <Avatar src={avatarSrc} sx={{ width: 24, height: 24 }} />;\n }\n return undefined;\n};\n\ninterface ChipStyleArgs {\n variant: ChipProps['variant'];\n selected?: boolean;\n clickable?: boolean;\n disabled?: boolean;\n}\n\n/**\n * Selection styling uses SEMANTIC palette tokens (not hardcoded rgba). A filled\n * selected chip keeps MUI's solid `color.main` + contrast text (clear active\n * state); an outlined selected chip gets a subtle theme-driven `action.selected`\n * tint so it reads as active without muddying the fill.\n */\nexport const chipStyles = ({\n variant,\n selected,\n clickable,\n disabled,\n}: ChipStyleArgs): SxProps<Theme> => {\n const lifts = clickable && !disabled;\n\n return {\n // Enhanced styling for outlined variant\n ...(variant === 'outlined' && {\n borderWidth: '1px',\n borderStyle: 'solid',\n backgroundColor: 'transparent',\n }),\n ...(selected &&\n variant === 'outlined' && {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n }),\n '&:hover': {\n ...(lifts && {\n transform: 'translateY(-1px)',\n boxShadow: (theme: Theme) =>\n theme.palette.mode === 'dark'\n ? '0 4px 12px rgba(0, 0, 0, 0.3)'\n : '0 4px 12px rgba(0, 0, 0, 0.15)',\n }),\n },\n '&:active': {\n ...(lifts && {\n transform: 'translateY(0px)',\n }),\n },\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n };\n};\n\n/** `option` when the chip belongs to a selectable set, `button` when it merely acts. */\nexport const chipRole = (\n selectable?: boolean,\n onClick?: () => void,\n): 'option' | 'button' | undefined => {\n if (selectable) return 'option';\n return onClick ? 'button' : undefined;\n};\n\nexport const isClickable = (\n disabled?: boolean,\n onClick?: () => void,\n selectable?: boolean,\n): boolean => !disabled && (Boolean(onClick) || Boolean(selectable));\n\nexport const iconWithTestId = (\n icon: ChipProps['icon'],\n testId: string,\n): ReactElement | undefined =>\n icon && React.isValidElement(icon)\n ? React.cloneElement(icon as ReactElement, {\n 'data-testid': testId,\n } as Record<string, unknown>)\n : undefined;\n"],"mappings":";AAAA,OAAO,YAAY;AAGnB,OAAO,WAAW;AAiDP;AA7CJ,IAAM,aACX,CAAC,eACD,CAAC,WACC,aAAa,GAAG,UAAU,IAAI,MAAM,KAAK,QAAQ,MAAM;AAU3D,IAAM,cAAc,oBAAI,IAAI,CAAC,UAAU,WAAW,CAAC;AACnD,IAAM,gBAAgB,oBAAI,IAAI,CAAC,SAAS,GAAG,CAAC;AAMrC,IAAM,qBACX,CAAC,EAAE,UAAU,WAAW,YAAY,SAAS,SAAS,MACtD,CAAC,UAA+B;AAC9B,MAAI,SAAU;AAEd,MAAI,YAAY,IAAI,MAAM,GAAG,KAAK,aAAa,UAAU;AACvD,UAAM,eAAe;AACrB,aAAS;AACT;AAAA,EACF;AAEA,MAAI,cAAc,IAAI,MAAM,GAAG,MAAM,WAAW,aAAa;AAC3D,UAAM,eAAe;AACrB,cAAU;AAAA,EACZ;AACF;AAEK,IAAM,YAAY,CACvB,QACA,cAC6B;AAC7B,MAAI,UAAU,MAAM,eAAe,MAAM,GAAG;AAC1C,WAAO;AAAA,EACT;AACA,MAAI,WAAW;AACb,WAAO,oBAAC,UAAO,KAAK,WAAW,IAAI,EAAE,OAAO,IAAI,QAAQ,GAAG,GAAG;AAAA,EAChE;AACA,SAAO;AACT;AAeO,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAqC;AACnC,QAAM,QAAQ,aAAa,CAAC;AAE5B,SAAO;AAAA;AAAA,IAEL,GAAI,YAAY,cAAc;AAAA,MAC5B,aAAa;AAAA,MACb,aAAa;AAAA,MACb,iBAAiB;AAAA,IACnB;AAAA,IACA,GAAI,YACF,YAAY,cAAc;AAAA,MACxB,iBAAiB,CAAC,UAAiB,MAAM,QAAQ,OAAO;AAAA,IAC1D;AAAA,IACF,WAAW;AAAA,MACT,GAAI,SAAS;AAAA,QACX,WAAW;AAAA,QACX,WAAW,CAAC,UACV,MAAM,QAAQ,SAAS,SACnB,kCACA;AAAA,MACR;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV,GAAI,SAAS;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,YAAY;AAAA,EACd;AACF;AAGO,IAAM,WAAW,CACtB,YACA,YACoC;AACpC,MAAI,WAAY,QAAO;AACvB,SAAO,UAAU,WAAW;AAC9B;AAEO,IAAM,cAAc,CACzB,UACA,SACA,eACY,CAAC,aAAa,QAAQ,OAAO,KAAK,QAAQ,UAAU;AAE3D,IAAM,iBAAiB,CAC5B,MACA,WAEA,QAAQ,MAAM,eAAe,IAAI,IAC7B,MAAM,aAAa,MAAsB;AAAA,EACvC,eAAe;AACjB,CAA4B,IAC5B;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Progress/Progress.helpers.ts"],"sourcesContent":["import type { ProgressProps } from './Progress.types';\n\ntype ProgressDefaultedKeys =\n | 'variant'\n | 'size'\n | 'color'\n | 'glow'\n | 'pulse'\n | 'showLabel'\n | 'segments'\n | 'thickness'\n | 'dataTestId';\n\ntype ResolvedProgressProps = ProgressProps &\n Required<Pick<ProgressProps, ProgressDefaultedKeys>>;\n\nconst PROGRESS_DEFAULTS: Pick<ProgressProps, 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 = (props: ProgressProps): Partial<ProgressProps> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<ProgressProps>;\n\nexport const resolveProgressProps = (props: ProgressProps): ResolvedProgressProps =>\n ({ ...PROGRESS_DEFAULTS, ...definedProps(props) }) as ResolvedProgressProps;\n"],"mappings":";AAgBA,IAAM,oBAAgE;AAAA,EACpE,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,UAAU;AAAA,EACV,WAAW;AAAA,EACX,YAAY;AACd;AAIA,IAAM,eAAe,CAAC,UACpB,OAAO;AAAA,EACL,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AACjE;AAEK,IAAM,uBAAuB,CAAC,WAClC,EAAE,GAAG,mBAAmB,GAAG,aAAa,KAAK,EAAE;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Badge/Badge.animations.ts"],"sourcesContent":["import { keyframes } from '@mui/material/styles/index.js';\n\nexport const pulseAnimation = keyframes`\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 70% {\n transform: scale(1.2);\n opacity: 0.7;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n`;\n\n// Define bounce animation\nexport const bounceAnimation = keyframes`\n 0%, 20%, 50%, 80%, 100% {\n transform: translateY(0) scale(1);\n }\n 40% {\n transform: translateY(-8px) scale(1.05);\n }\n 60% {\n transform: translateY(-4px) scale(1.02);\n }\n`;\n\n// Define shimmer animation\nexport const shimmerAnimation = keyframes`\n 0% {\n background-position: -1000px 0;\n }\n 100% {\n background-position: 1000px 0;\n }\n`;\n\n// Define fade in animation with scale\nexport const fadeInScaleAnimation = keyframes`\n 0% {\n opacity: 0;\n transform: scale(0.5);\n }\n 50% {\n transform: scale(1.1);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n`;\n\n// Define glow pulse animation\nexport const glowPulseAnimation = keyframes`\n 0% {\n box-shadow: 0 0 5px 2px rgba(var(--glow-color), 0.4);\n }\n 50% {\n box-shadow: 0 0 20px 4px rgba(var(--glow-color), 0.8);\n }\n 100% {\n box-shadow: 0 0 5px 2px rgba(var(--glow-color), 0.4);\n }\n`;\n"],"mappings":";AAAA,SAAS,iBAAiB;AAEnB,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBvB,IAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaxB,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUzB,IAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAe7B,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/Skeleton/Skeleton.helpers.ts"],"sourcesContent":["import type { SkeletonProps } from './Skeleton.types';\n\ntype SkeletonDefaultedKeys =\n | 'variant'\n | 'animation'\n | 'count'\n | 'spacing'\n | 'intensity'\n | 'glassmorphism'\n | 'shimmer';\n\ntype ResolvedSkeletonProps = SkeletonProps &\n Required<Pick<SkeletonProps, SkeletonDefaultedKeys>>;\n\nconst SKELETON_DEFAULTS: Pick<SkeletonProps, SkeletonDefaultedKeys> = {\n variant: 'text',\n animation: 'pulse',\n count: 1,\n spacing: 1,\n intensity: 'medium',\n glassmorphism: false,\n shimmer: false,\n};\n\n// Strips explicitly-undefined props before the merge, so `count={undefined}` still\n// falls back to the default exactly as a destructuring default would.\nconst definedProps = (props: SkeletonProps): Partial<SkeletonProps> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<SkeletonProps>;\n\nexport const resolveSkeletonProps = (props: SkeletonProps): ResolvedSkeletonProps =>\n ({ ...SKELETON_DEFAULTS, ...definedProps(props) }) as ResolvedSkeletonProps;\n"],"mappings":";AAcA,IAAM,oBAAgE;AAAA,EACpE,SAAS;AAAA,EACT,WAAW;AAAA,EACX,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,eAAe;AAAA,EACf,SAAS;AACX;AAIA,IAAM,eAAe,CAAC,UACpB,OAAO;AAAA,EACL,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AACjE;AAEK,IAAM,uBAAuB,CAAC,WAClC,EAAE,GAAG,mBAAmB,GAAG,aAAa,KAAK,EAAE;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/Skeleton/Skeleton.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport MuiSkeleton from '@mui/material/Skeleton/index.js';\nimport Stack from '@mui/material/Stack/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { resolveSkeletonProps } from './Skeleton.helpers';\nimport {\n defaultDimensions,\n muiAnimationFor,\n muiVariantFor,\n skeletonStyles,\n} from './Skeleton.styles';\nimport type { SkeletonProps } from './Skeleton.types';\n\nexport const Skeleton: React.FC<SkeletonProps> = React.memo((rawProps) => {\n const {\n variant,\n animation,\n width,\n height,\n count,\n spacing,\n borderRadius,\n className,\n intensity,\n glassmorphism,\n shimmer,\n 'data-testid': dataTestId,\n style,\n ...props\n } = resolveSkeletonProps(rawProps);\n const theme = useTheme();\n\n const defaults = defaultDimensions(variant);\n const finalWidth = width ?? defaults.width;\n const finalHeight = height ?? defaults.height;\n\n // Handle edge case: count of 0 should render nothing\n if (count === 0) {\n return null;\n }\n\n const singleSkeleton = (\n <MuiSkeleton\n variant={muiVariantFor(variant)}\n animation={muiAnimationFor(variant, animation)}\n width={finalWidth}\n height={finalHeight}\n sx={skeletonStyles(theme, {\n intensity,\n borderRadius,\n glassmorphism,\n shimmer,\n style,\n })}\n className={className}\n data-testid={dataTestId}\n aria-hidden=\"true\"\n {...props}\n />\n );\n\n if (count === 1) {\n return singleSkeleton;\n }\n\n return (\n <Stack spacing={spacing}>\n {Array.from({ length: count }).map((_, index) => (\n <Box key={`skeleton-${index}`}>\n {React.cloneElement(singleSkeleton, {\n 'data-testid': dataTestId ? `${dataTestId}-${index}` : undefined,\n })}\n </Box>\n ))}\n </Stack>\n );\n});\n\nSkeleton.displayName = 'Skeleton';"],"mappings":";;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,OAAO,iBAAiB;AACxB,OAAO,WAAW;AAClB,SAAS,gBAAgB;AACzB,OAAO,WAAW;AAwCd;AA7BG,IAAM,WAAoC,MAAM,KAAK,CAAC,aAAa;AACxE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA,GAAG;AAAA,EACL,IAAI,qBAAqB,QAAQ;AACjC,QAAM,QAAQ,SAAS;AAEvB,QAAM,WAAW,kBAAkB,OAAO;AAC1C,QAAM,aAAa,SAAS,SAAS;AACrC,QAAM,cAAc,UAAU,SAAS;AAGvC,MAAI,UAAU,GAAG;AACf,WAAO;AAAA,EACT;AAEA,QAAM,iBACJ;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,cAAc,OAAO;AAAA,MAC9B,WAAW,gBAAgB,SAAS,SAAS;AAAA,MAC7C,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,IAAI,eAAe,OAAO;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,MACD;AAAA,MACA,eAAa;AAAA,MACb,eAAY;AAAA,MACX,GAAG;AAAA;AAAA,EACN;AAGF,MAAI,UAAU,GAAG;AACf,WAAO;AAAA,EACT;AAEA,SACE,oBAAC,SAAM,SACJ,gBAAM,KAAK,EAAE,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,UACrC,oBAAC,OACE,gBAAM,aAAa,gBAAgB;AAAA,IAClC,eAAe,aAAa,GAAG,UAAU,IAAI,KAAK,KAAK;AAAA,EACzD,CAAC,KAHO,YAAY,KAAK,EAI3B,CACD,GACH;AAEJ,CAAC;AAED,SAAS,cAAc;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/Skeleton/Skeleton.styles.ts"],"sourcesContent":["import { alpha } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport type { SkeletonProps } from './Skeleton.types';\n\ntype SkeletonVariant = NonNullable<SkeletonProps['variant']>;\ntype SkeletonIntensity = NonNullable<SkeletonProps['intensity']>;\n\n/** `wave` is our own name for a rectangle that animates; MUI has no such variant. */\nexport const muiVariantFor = (\n variant: SkeletonVariant,\n): 'circular' | 'rectangular' | 'text' => {\n switch (variant) {\n case 'circular':\n return 'circular';\n case 'rectangular':\n case 'wave':\n return 'rectangular';\n default:\n return 'text';\n }\n};\n\nexport const muiAnimationFor = (\n variant: SkeletonVariant,\n animation: SkeletonProps['animation'],\n) => {\n if (variant === 'wave') return 'wave';\n return animation;\n};\n\nexport const defaultDimensions = (\n variant: SkeletonVariant,\n): { width: number | string; height: number | undefined } => {\n switch (variant) {\n case 'circular':\n return { width: 40, height: 40 };\n case 'rectangular':\n case 'wave':\n return { width: '100%', height: 40 };\n default:\n return { width: '100%', height: undefined };\n }\n};\n\nconst INTENSITY_OPACITY: Record<SkeletonIntensity, number> = {\n low: 0.11,\n medium: 0.13,\n high: 0.15,\n};\n\nconst intensityOpacity = (intensity: SkeletonIntensity): number =>\n INTENSITY_OPACITY[intensity] ?? INTENSITY_OPACITY.medium;\n\nconst glassmorphismStyles = (theme: Theme): CSSObject => ({\n background: `linear-gradient(135deg,\n ${alpha(theme.palette.background.paper, 0.8)} 0%,\n ${alpha(theme.palette.background.paper, 0.4)} 100%)`,\n backdropFilter: 'blur(20px)',\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n boxShadow: `0 8px 32px 0 ${alpha(theme.palette.common.black, 0.1)}`,\n});\n\n// The sweep is a pseudo-element sliding across the box, so the box has to clip it\n// and establish a positioning context — hence `position`/`overflow` below.\nconst shimmerStyles = (theme: Theme): CSSObject => ({\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n background: `linear-gradient(\n 90deg,\n transparent,\n ${alpha(theme.palette.common.white, 0.3)},\n transparent\n )`,\n transform: 'translateX(-100%)',\n animation: 'shimmer 2s infinite',\n },\n '@keyframes shimmer': {\n '100%': {\n transform: 'translateX(100%)',\n },\n },\n});\n\ninterface SkeletonStyleArgs {\n intensity: SkeletonIntensity;\n borderRadius?: number | string;\n glassmorphism: boolean;\n shimmer: boolean;\n style?: React.CSSProperties;\n}\n\nexport const skeletonStyles = (\n theme: Theme,\n { intensity, borderRadius, glassmorphism, shimmer, style }: SkeletonStyleArgs,\n): CSSObject => ({\n borderRadius,\n backgroundColor: alpha(\n theme.palette.mode === 'dark' ? theme.palette.common.white : theme.palette.text.primary,\n intensityOpacity(intensity),\n ),\n ...(shimmer && {\n position: 'relative' as const,\n overflow: 'hidden' as const,\n }),\n ...(glassmorphism ? glassmorphismStyles(theme) : {}),\n ...(shimmer ? shimmerStyles(theme) : {}),\n ...style,\n});\n"],"mappings":";AAAA,SAAS,aAAa;AASf,IAAM,gBAAgB,CAC3B,YACwC;AACxC,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,kBAAkB,CAC7B,SACA,cACG;AACH,MAAI,YAAY,OAAQ,QAAO;AAC/B,SAAO;AACT;AAEO,IAAM,oBAAoB,CAC/B,YAC2D;AAC3D,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO,EAAE,OAAO,IAAI,QAAQ,GAAG;AAAA,IACjC,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,OAAO,QAAQ,QAAQ,GAAG;AAAA,IACrC;AACE,aAAO,EAAE,OAAO,QAAQ,QAAQ,OAAU;AAAA,EAC9C;AACF;AAEA,IAAM,oBAAuD;AAAA,EAC3D,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AACR;AAEA,IAAM,mBAAmB,CAAC,cACxB,kBAAkB,SAAS,KAAK,kBAAkB;AAEpD,IAAM,sBAAsB,CAAC,WAA6B;AAAA,EACxD,YAAY;AAAA,UACJ,MAAM,MAAM,QAAQ,WAAW,OAAO,GAAG,CAAC;AAAA,UAC1C,MAAM,MAAM,QAAQ,WAAW,OAAO,GAAG,CAAC;AAAA,EAClD,gBAAgB;AAAA,EAChB,QAAQ,aAAa,MAAM,MAAM,QAAQ,SAAS,GAAG,CAAC;AAAA,EACtD,WAAW,gBAAgB,MAAM,MAAM,QAAQ,OAAO,OAAO,GAAG,CAAC;AACnE;AAIA,IAAM,gBAAgB,CAAC,WAA6B;AAAA,EAClD,YAAY;AAAA,IACV,SAAS;AAAA,IACT,UAAU;AAAA,IACV,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,YAAY;AAAA;AAAA;AAAA,YAGJ,MAAM,MAAM,QAAQ,OAAO,OAAO,GAAG,CAAC;AAAA;AAAA;AAAA,IAG9C,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AAAA,EACA,sBAAsB;AAAA,IACpB,QAAQ;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAUO,IAAM,iBAAiB,CAC5B,OACA,EAAE,WAAW,cAAc,eAAe,SAAS,MAAM,OAC1C;AAAA,EACf;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM,QAAQ,SAAS,SAAS,MAAM,QAAQ,OAAO,QAAQ,MAAM,QAAQ,KAAK;AAAA,IAChF,iBAAiB,SAAS;AAAA,EAC5B;AAAA,EACA,GAAI,WAAW;AAAA,IACb,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AAAA,EACA,GAAI,gBAAgB,oBAAoB,KAAK,IAAI,CAAC;AAAA,EAClD,GAAI,UAAU,cAAc,KAAK,IAAI,CAAC;AAAA,EACtC,GAAG;AACL;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Progress/Progress.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport LinearProgress from '@mui/material/LinearProgress/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, styled, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { resolveProgressProps } from './Progress.helpers';\nimport {\n barEmphasisStyles,\n barVariantStyles,\n circularEmphasisStyles,\n getColorFromTheme,\n getSizeStyles,\n pulseAnimation,\n} from './Progress.styles';\nimport type { ProgressProps, ProgressSize, ProgressVariant } from './Progress.types';\n\nconst StyledLinearProgress = styled(LinearProgress, {\n shouldForwardProp: (prop) =>\n !['customVariant', 'customSize', 'customColor', 'glow', 'pulse'].includes(prop as string),\n})<{\n customVariant?: ProgressVariant;\n customSize?: ProgressSize;\n customColor?: string;\n glow?: boolean;\n pulse?: boolean;\n}>(({ theme, customVariant, customSize, customColor = 'primary', glow, pulse }) => {\n const colorPalette = getColorFromTheme(theme, customColor);\n const sizeStyles = getSizeStyles(customSize);\n\n return {\n height: sizeStyles.height,\n borderRadius: sizeStyles.height / 2,\n backgroundColor: alpha(colorPalette.main, 0.1),\n\n '& .MuiLinearProgress-bar': {\n borderRadius: 'inherit',\n transition: 'all 0.3s ease',\n ...barVariantStyles(customVariant, colorPalette),\n ...barEmphasisStyles(colorPalette, glow, pulse),\n },\n };\n});\n\nconst StyledCircularProgress = styled(CircularProgress, {\n shouldForwardProp: (prop) => !['customColor', 'glow', 'pulse'].includes(prop as string),\n})<{\n customColor?: string;\n glow?: boolean;\n pulse?: boolean;\n}>(({ theme, customColor = 'primary', glow, pulse }) => {\n const colorPalette = getColorFromTheme(theme, customColor);\n\n return {\n color: colorPalette.main,\n ...circularEmphasisStyles(colorPalette, glow, pulse),\n };\n});\n\nconst SegmentedProgress: React.FC<{\n value?: number;\n segments: number;\n color: string;\n size: ProgressSize;\n glow: boolean;\n pulse: boolean;\n dataTestId?: string;\n}> = ({ value = 0, segments, color, size, glow, pulse, dataTestId }) => {\n const theme = useTheme();\n const colorPalette = getColorFromTheme(theme, color);\n const sizeStyles = getSizeStyles(size);\n const filledSegments = Math.floor((value / 100) * segments);\n\n return (\n <Box sx={{ display: 'flex', gap: 0.5, width: '100%' }} data-testid={`${dataTestId}-segments-container`}>\n {Array.from({ length: segments }, (_, index) => (\n <Box\n key={index}\n data-testid={`${dataTestId}-segment-${index}`}\n sx={{\n flex: 1,\n height: sizeStyles.height,\n borderRadius: sizeStyles.height / 2,\n backgroundColor:\n index < filledSegments ? colorPalette.main : alpha(colorPalette.main, 0.1),\n transition: 'all 0.3s ease',\n ...(glow &&\n index < filledSegments && {\n boxShadow: `0 0 6px 1px ${alpha(colorPalette.main, 0.4)}`,\n }),\n ...(pulse &&\n index < filledSegments && {\n animation: `${pulseAnimation} 2s infinite`,\n }),\n }}\n />\n ))}\n </Box>\n );\n};\n\ninterface ViewProps {\n size: ProgressSize;\n color: string;\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 dataTestId: string;\n}\n\nconst ProgressLabel: React.FC<{ size: ProgressSize; label: string; testId: string }> = ({\n size,\n label,\n testId,\n}) => (\n <Typography\n variant=\"caption\"\n sx={{\n display: 'block',\n textAlign: 'center',\n mt: 1,\n fontSize: getSizeStyles(size).fontSize,\n fontWeight: 600,\n }}\n data-testid={testId}\n >\n {label}\n </Typography>\n);\n\nconst CircularView = React.forwardRef<\n HTMLDivElement,\n ViewProps & { thickness: number; circularSize?: number }\n>(\n (\n {\n size,\n color,\n glow,\n pulse,\n showLabel,\n displayValue,\n displayLabel,\n value,\n dataTestId,\n thickness,\n circularSize,\n ...props\n },\n ref,\n ) => {\n const sizeStyles = getSizeStyles(size);\n\n return (\n <Box ref={ref} sx={{ position: 'relative', display: 'inline-flex' }} data-testid={dataTestId}>\n <StyledCircularProgress\n variant={value !== undefined ? 'determinate' : 'indeterminate'}\n value={displayValue}\n size={circularSize || sizeStyles.circularSize}\n thickness={thickness}\n customColor={color}\n glow={glow}\n pulse={pulse}\n data-testid={`${dataTestId}-circular`}\n {...props}\n />\n {showLabel && value !== undefined && (\n <Box\n sx={{\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n position: 'absolute',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Typography\n variant=\"caption\"\n component=\"div\"\n color=\"text.secondary\"\n sx={{ fontSize: sizeStyles.fontSize, fontWeight: 600 }}\n data-testid={`${dataTestId}-label`}\n >\n {displayLabel}\n </Typography>\n </Box>\n )}\n </Box>\n );\n },\n);\n\nCircularView.displayName = 'ProgressCircularView';\n\nconst SegmentedView = React.forwardRef<HTMLDivElement, ViewProps & { segments: number }>(\n (\n { size, color, glow, pulse, showLabel, displayValue, displayLabel, dataTestId, segments, value: _value, ...props },\n ref,\n ) => (\n <Box ref={ref} sx={{ width: '100%' }} data-testid={dataTestId} {...props}>\n <SegmentedProgress\n value={displayValue}\n segments={segments}\n color={color}\n size={size}\n glow={glow}\n pulse={pulse}\n dataTestId={dataTestId}\n />\n {showLabel && (\n <ProgressLabel size={size} label={displayLabel} testId={`${dataTestId}-label`} />\n )}\n </Box>\n ),\n);\n\nSegmentedView.displayName = 'ProgressSegmentedView';\n\nconst LinearView = React.forwardRef<HTMLDivElement, ViewProps & { variant: ProgressVariant }>(\n (\n { size, color, glow, pulse, showLabel, displayValue, displayLabel, value, dataTestId, variant, ...props },\n ref,\n ) => (\n <Box ref={ref} sx={{ width: '100%' }} data-testid={dataTestId}>\n <StyledLinearProgress\n variant={value !== undefined ? 'determinate' : 'indeterminate'}\n value={displayValue}\n customVariant={variant}\n customSize={size}\n customColor={color}\n glow={glow}\n pulse={pulse}\n data-testid={`${dataTestId}-linear`}\n {...props}\n />\n {showLabel && (\n <ProgressLabel size={size} label={displayLabel} testId={`${dataTestId}-label`} />\n )}\n </Box>\n ),\n);\n\nLinearView.displayName = 'ProgressLinearView';\n\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n (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 // LinearProgressProps carries a `ref` typed for its own element; the\n // forwarded one below is the ref that matters.\n ref: _ref,\n ...props\n } = resolveProgressProps(rawProps);\n const displayValue = value || 0;\n const shared = {\n size,\n color,\n glow,\n pulse,\n showLabel,\n displayValue,\n displayLabel: label || (showLabel ? `${Math.round(displayValue)}%` : ''),\n value,\n dataTestId,\n ...props,\n };\n\n if (variant === 'circular') {\n return (\n <CircularView ref={ref} {...shared} thickness={thickness} circularSize={circularSize} />\n );\n }\n\n if (variant === 'segmented') {\n return <SegmentedView ref={ref} {...shared} segments={segments} />;\n }\n\n return <LinearView ref={ref} {...shared} variant={variant} />;\n },\n);\n\nProgress.displayName = 'Progress';\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Badge/Badge.tsx"],"sourcesContent":["import MuiBadge from '@mui/material/Badge/index.js';\nimport Zoom from '@mui/material/Zoom/index.js';\nimport { styled } from '@mui/material/styles/index.js';\nimport React, { useEffect,useState } from 'react';\n\nimport {\n badgeStyles,\n getAnchorOrigin } from './Badge.styles';\nimport {\n badgeContentOf,\n definedAria,\n formatCount,\n resolveBadgeProps } from './Badge.helpers';\nimport type { ResolvedBadgeProps } from './Badge.helpers';\nimport { buildBadgeContent } from './BadgeContent';\nimport type { BadgeProps, BadgeSize, BadgeVariant } from './Badge.types';\nexport type { BadgeProps } from './Badge.types';\n\n// Define pulse animation\nconst StyledBadge = styled(MuiBadge, {\n shouldForwardProp: (prop) =>\n ![\n 'customVariant',\n 'customSize',\n 'customColor',\n 'glow',\n 'pulse',\n 'animate',\n 'shimmer',\n 'bounce',\n 'hasIcon',\n ].includes(prop as string) })<{\n customVariant?: BadgeVariant;\n customSize?: BadgeSize;\n customColor?: string;\n glow?: boolean;\n pulse?: boolean;\n animate?: boolean;\n shimmer?: boolean;\n bounce?: boolean;\n hasIcon?: boolean;\n}>(({\n theme,\n customVariant,\n customSize = 'md',\n customColor = 'primary',\n glow,\n pulse,\n animate,\n shimmer,\n bounce,\n hasIcon }) => {\n return badgeStyles({\n theme,\n customVariant,\n customSize,\n customColor,\n glow,\n pulse,\n animate,\n shimmer,\n bounce,\n hasIcon });\n});\n\nconst CLOSE_DELAY_MS = 300;\nconst ANIMATION_MS = 1000;\n\n// A one-shot flag so bounce/animate run on mount and then stop.\nconst useMountAnimation = (enabled: boolean) => {\n const [isAnimating, setIsAnimating] = useState(false);\n\n useEffect(() => {\n if (!enabled) return;\n\n setIsAnimating(true);\n const timer = window.setTimeout(() => setIsAnimating(false), ANIMATION_MS);\n return () => window.clearTimeout(timer);\n }, [enabled]);\n\n return isAnimating;\n};\n\n// The chip itself. Local because StyledBadge cannot cross a module boundary\n// (TS2742).\nconst BadgeSurface: React.FC<\n ResolvedBadgeProps & {\n innerRef: React.Ref<HTMLSpanElement>;\n isVisible: boolean;\n isAnimating: boolean;\n shouldBeInvisible: boolean;\n finalBadgeContent: React.ReactNode;\n aria: Record<string, string | boolean>;\n rest: Record<string, unknown>;\n }\n> = ({ innerRef, isVisible, isAnimating, shouldBeInvisible, finalBadgeContent, aria, rest, ...p }) => {\n const testId = p['data-testid'];\n\n return (\n <Zoom in={isVisible} timeout={CLOSE_DELAY_MS}>\n <StyledBadge\n ref={innerRef}\n className={p.className}\n customVariant={p.variant}\n customSize={p.size}\n customColor={p.color}\n glow={p.glow}\n pulse={p.pulse}\n animate={p.animate}\n shimmer={p.shimmer}\n bounce={p.bounce && isAnimating}\n hasIcon={Boolean(p.icon)}\n badgeContent={finalBadgeContent}\n variant={p.variant === 'dot' ? 'dot' : 'standard'}\n anchorOrigin={getAnchorOrigin(p.position)}\n invisible={shouldBeInvisible}\n data-testid={testId || 'badge'}\n slotProps={{\n badge: {\n ...aria,\n // @ts-expect-error - MUI Badge slotProps doesn't include data-testid in types, but it works at runtime\n 'data-testid': testId ? `${testId}-content-wrapper` : 'badge-content-wrapper' } }}\n {...rest}\n >\n {p.children}\n </StyledBadge>\n </Zoom>\n );\n};\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>((componentProps, ref) => {\n const resolved = resolveBadgeProps(componentProps);\n const {\n variant,\n size,\n color: _color,\n glow: _glow,\n pulse: _pulse,\n animate,\n shimmer: _shimmer,\n bounce,\n max,\n showZero,\n position: _position,\n children: _children,\n invisible,\n closable,\n onClose,\n icon,\n 'aria-label': ariaLabel,\n 'aria-live': ariaLive = 'polite',\n 'aria-atomic': ariaAtomic = true,\n 'data-testid': dataTestId,\n className: _className,\n content: _content,\n badgeContent: _badgeContent,\n ...props\n } = resolved;\n\n const [isVisible, setIsVisible] = useState(true);\n const isAnimating = useMountAnimation(animate || bounce);\n\n const handleClose = (event: React.MouseEvent) => {\n event.stopPropagation();\n setIsVisible(false);\n // Let the Zoom finish before telling the caller.\n window.setTimeout(() => onClose?.(), CLOSE_DELAY_MS);\n };\n\n const rawContent = badgeContentOf(resolved);\n const finalBadgeContent = buildBadgeContent({\n variant,\n size,\n icon,\n closable,\n dataTestId,\n baseContent: variant === 'count' ? formatCount(rawContent, { max, showZero }) : rawContent,\n onClose: handleClose });\n\n // A count that formatted away leaves nothing worth showing.\n const shouldBeInvisible =\n invisible || (variant === 'count' && finalBadgeContent === null && !showZero) || !isVisible;\n\n return (\n <BadgeSurface\n {...resolved}\n innerRef={ref}\n isVisible={isVisible}\n isAnimating={isAnimating}\n shouldBeInvisible={shouldBeInvisible}\n finalBadgeContent={finalBadgeContent}\n aria={definedAria({\n 'aria-label': ariaLabel,\n 'aria-live': ariaLive,\n 'aria-atomic': ariaAtomic })}\n rest={props as unknown as Record<string, unknown>}\n />\n );\n});\n\nBadge.displayName = 'Badge';\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Avatar/Avatar.view.tsx"],"sourcesContent":["import MuiAvatar from '@mui/material/Avatar/index.js';\nimport Badge from '@mui/material/Badge/index.js';\nimport Fade from '@mui/material/Fade/index.js';\nimport { alpha, useTheme, styled } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { pulseAnimation, rotateAnimation, scaleInAnimation, shimmerAnimation } from './Avatar.animations';\nimport type { AvatarSize, AvatarStatus } from './Avatar.types';\n\nexport type ContentType = 'children' | 'fallback' | 'icon' | 'default';\n\n\ninterface PaletteLike {\n main: string;\n contrastText?: string;\n light?: string;\n dark?: string;\n}\n\nconst getColorFromTheme = (theme: Theme, color: string): PaletteLike => {\n const colorMap: Record<string, PaletteLike> = {\n primary: theme.palette.primary,\n secondary: theme.palette.secondary,\n success: theme.palette.success,\n warning: theme.palette.warning,\n info: theme.palette.info,\n // `danger`, not `error`. This map was keyed on MUI's word while the prop\n // took the house one, so `danger` matched nothing and fell through to\n // primary — a red avatar rendering blue, silently.\n danger: theme.palette.error,\n neutral: { main: theme.palette.grey[700], contrastText: '#fff' },\n };\n\n return colorMap[color] || theme.palette.primary;\n};\n\ninterface SizeStyle {\n width: number;\n height: number;\n fontSize: string;\n}\n\nconst getSizeStyles = (size: AvatarSize): SizeStyle => {\n const sizeMap: Record<AvatarSize, SizeStyle> = {\n xs: { width: 24, height: 24, fontSize: '0.75rem' },\n sm: { width: 32, height: 32, fontSize: '0.875rem' },\n md: { width: 40, height: 40, fontSize: '1rem' },\n lg: { width: 48, height: 48, fontSize: '1.125rem' },\n xl: { width: 64, height: 64, fontSize: '1.5rem' },\n xxl: { width: 80, height: 80, fontSize: '2rem' },\n };\n\n return sizeMap[size] || sizeMap.md;\n};\n\nconst getStatusColor = (status: AvatarStatus, theme: Theme): string => {\n const statusColorMap: Record<AvatarStatus, string> = {\n online: theme.palette.success.main,\n offline: theme.palette.grey[500],\n away: theme.palette.warning.main,\n busy: theme.palette.error.main,\n };\n\n return statusColorMap[status] || statusColorMap.offline;\n};\n\n/** Hover/active lift, only when the avatar is interactive. */\nconst interactiveStyles = (interactive: boolean | undefined, main: string): CSSObject =>\n interactive\n ? {\n '&:hover': {\n transform: 'scale(1.1) translateY(-2px)',\n boxShadow: `0 8px 20px ${alpha(main, 0.3)}`,\n filter: 'brightness(1.1)',\n zIndex: 10,\n },\n '&:active': { transform: 'scale(1.05)' },\n }\n : {};\n\n/** Shimmer gradient while the image loads. */\nconst loadingStyles = (isLoading: boolean | undefined, main: string): CSSObject =>\n isLoading\n ? {\n background: `linear-gradient(\n 90deg,\n ${alpha(main, 0.6)},\n ${alpha(main, 0.8)},\n ${alpha(main, 0.6)}\n )`,\n backgroundSize: '200% 100%',\n animation: `${shimmerAnimation} 1.5s ease-in-out infinite`,\n }\n : {};\n\n/** Corner radius per shape variant (circle/status are round). */\nconst variantRadius = (variant: string | undefined, theme: Theme): CSSObject => {\n if (variant === 'square') return { borderRadius: 0 };\n if (variant === 'rounded') return { borderRadius: theme.spacing(1) };\n return { borderRadius: '50%' };\n};\n\n/** Paper ring when bordered (e.g. inside an AvatarGroup). */\nconst borderedStyles = (bordered: boolean | undefined, theme: Theme): CSSObject =>\n bordered\n ? {\n border: `2px solid ${theme.palette.background.paper}`,\n boxShadow: `0 0 0 1px ${alpha(theme.palette.divider, 0.2)}`,\n }\n : {};\n\n/** Glow adds the halo; pulse adds the expanding ring — either or both. */\nconst glowPulseStyles = (\n glow: boolean | undefined,\n pulse: boolean | undefined,\n main: string,\n): CSSObject => {\n const styles: CSSObject = {};\n if (glow) {\n styles.boxShadow = `0 0 20px 5px ${alpha(main, 0.4)} !important`;\n styles.filter = 'brightness(1.05)';\n }\n if (pulse) {\n styles.position = 'relative';\n styles['&::after'] = {\n content: '\"\"',\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: '100%',\n height: '100%',\n borderRadius: 'inherit',\n transform: 'translate(-50%, -50%)',\n backgroundColor: main,\n opacity: 0.3,\n animation: `${pulseAnimation} 2s infinite`,\n pointerEvents: 'none',\n zIndex: -1,\n };\n }\n return styles;\n};\n\ninterface StyledAvatarProps {\n customVariant?: string;\n customSize?: AvatarSize;\n customColor?: string;\n glow?: boolean;\n pulse?: boolean;\n bordered?: boolean;\n isLoading?: boolean;\n hasError?: boolean;\n interactive?: boolean;\n}\n\nconst STYLED_AVATAR_PROPS = [\n 'customVariant',\n 'customSize',\n 'customColor',\n 'glow',\n 'pulse',\n 'bordered',\n 'isLoading',\n 'hasError',\n 'interactive',\n];\n\nconst StyledAvatar = styled(MuiAvatar, {\n shouldForwardProp: (prop) => !STYLED_AVATAR_PROPS.includes(prop as string),\n})<StyledAvatarProps>(\n ({\n theme,\n customVariant,\n customSize = 'md',\n customColor = 'primary',\n glow,\n pulse,\n bordered,\n isLoading,\n hasError,\n interactive,\n }) => {\n const palette = getColorFromTheme(theme, customColor);\n return {\n ...getSizeStyles(customSize),\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n position: 'relative',\n overflow: 'visible',\n animation: `${scaleInAnimation} 0.3s ease-out`,\n cursor: interactive ? 'pointer' : 'default',\n backgroundColor: hasError ? theme.palette.error.main : palette.main,\n color: hasError ? theme.palette.error.contrastText : (palette.contrastText ?? '#fff'),\n ...interactiveStyles(interactive, palette.main),\n ...loadingStyles(isLoading, palette.main),\n ...variantRadius(customVariant, theme),\n ...borderedStyles(bordered, theme),\n ...glowPulseStyles(glow, pulse, palette.main),\n '&:focus-visible': {\n outline: `3px solid ${alpha(palette.main, 0.5)}`,\n outlineOffset: 2,\n },\n };\n },\n);\n\nconst LoadingOverlay = styled('div')<{ size: AvatarSize }>(({ theme, size }) => {\n const sizeStyles = getSizeStyles(size);\n return {\n position: 'absolute',\n top: 0,\n left: 0,\n width: sizeStyles.width,\n height: sizeStyles.height,\n borderRadius: 'inherit',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: alpha(theme.palette.background.paper, 0.7),\n backdropFilter: 'blur(2px)',\n '& .loading-spinner': {\n width: sizeStyles.width * 0.4,\n height: sizeStyles.height * 0.4,\n border: `2px solid ${alpha(theme.palette.primary.main, 0.3)}`,\n borderTopColor: theme.palette.primary.main,\n borderRadius: '50%',\n animation: `${rotateAnimation} 0.8s linear infinite`,\n },\n };\n});\n\nconst StatusBadge = styled(Badge, {\n shouldForwardProp: (prop) => !['statusColor', 'avatarSize'].includes(prop as string),\n})<{\n statusColor?: string;\n avatarSize?: AvatarSize;\n}>(({ theme, statusColor, avatarSize = 'md' }) => {\n const sizeStyles = getSizeStyles(avatarSize);\n const badgeSize = Math.max(8, sizeStyles.width * 0.2);\n\n return {\n '& .MuiBadge-badge': {\n backgroundColor: statusColor || theme.palette.success.main,\n color: statusColor || theme.palette.success.main,\n width: badgeSize,\n height: badgeSize,\n borderRadius: '50%',\n border: `2px solid ${theme.palette.background.paper}`,\n '&::after': {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n backgroundColor: 'currentColor',\n content: '\"\"',\n },\n },\n };\n});\n\nexport interface AvatarViewProps {\n mounted: boolean;\n variant: string;\n size: AvatarSize;\n color: string;\n glow: boolean;\n pulse: boolean;\n bordered: boolean;\n showSpinner: boolean;\n imageError: boolean;\n clickable: boolean;\n imgSrc?: string;\n alt?: string;\n ariaLabel: string;\n content: React.ReactNode;\n contentType: ContentType;\n className?: string;\n dataTestId?: string;\n status?: AvatarStatus;\n forwardedRef: React.Ref<HTMLDivElement>;\n onClick: (event: React.MouseEvent<HTMLDivElement>) => void;\n handleImageError: React.ReactEventHandler;\n handleImageLoad: () => void;\n rest: Record<string, unknown>;\n}\n\n/** The avatar box itself: the styled MUI avatar plus the loading overlay. */\nfunction AvatarSurface(props: AvatarViewProps): React.JSX.Element {\n const { showSpinner, dataTestId, clickable } = props;\n const testId = (suffix: string): string | undefined =>\n dataTestId ? `${dataTestId}-${suffix}` : undefined;\n\n return (\n <Fade in={props.mounted} timeout={300}>\n <div style={{ position: 'relative', display: 'inline-block' }}>\n <StyledAvatar\n ref={props.forwardedRef}\n className={props.className}\n customVariant={props.variant}\n customSize={props.size}\n customColor={props.color}\n glow={props.glow}\n pulse={props.pulse}\n bordered={props.bordered}\n isLoading={showSpinner}\n hasError={props.imageError}\n interactive={clickable}\n src={props.imgSrc}\n alt={props.alt}\n onClick={props.onClick}\n tabIndex={clickable ? 0 : undefined}\n role={clickable ? 'button' : undefined}\n aria-label={props.ariaLabel}\n data-testid={dataTestId}\n {...props.rest}\n // Load/error fire on the inner <img>, not the root — and don't bubble.\n // Wiring them via the img slot lets `imageLoading` actually clear (else\n // the spinner overlays the avatar forever whenever `src` is set). Keep\n // after {...props.rest} so a consumer-supplied slotProps can't override\n // and detach these handlers.\n slotProps={{ img: { onError: props.handleImageError, onLoad: props.handleImageLoad } }}\n >\n {showSpinner ? null : (\n <span data-testid={testId(props.contentType)}>{props.content}</span>\n )}\n </StyledAvatar>\n {showSpinner && (\n <LoadingOverlay size={props.size} data-testid={testId('loading')}>\n <div className=\"loading-spinner\" data-testid={testId('loading-spinner')} />\n </LoadingOverlay>\n )}\n </div>\n </Fade>\n );\n}\n\n/** Presentational avatar: the surface, wrapped in a status dot badge when requested. */\nexport function AvatarView(props: AvatarViewProps): React.JSX.Element {\n const theme = useTheme();\n const surface = <AvatarSurface {...props} />;\n\n if (props.variant === 'status' && props.status) {\n return (\n <StatusBadge\n overlap=\"circular\"\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n variant=\"dot\"\n statusColor={getStatusColor(props.status, theme)}\n avatarSize={props.size}\n data-testid={props.dataTestId ? `${props.dataTestId}-badge` : undefined}\n >\n {surface}\n </StatusBadge>\n );\n }\n\n return surface;\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Badge/Badge.helpers.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport type { BadgeProps } from './Badge.types';\n\ntype BadgeDefaultedKeys =\n | 'variant'\n | 'size'\n | 'color'\n | 'glow'\n | 'pulse'\n | 'animate'\n | 'shimmer'\n | 'bounce'\n | 'max'\n | 'showZero'\n | 'position'\n | 'closable';\n\nexport type ResolvedBadgeProps = BadgeProps & Required<Pick<BadgeProps, BadgeDefaultedKeys>>;\n\nconst BADGE_DEFAULTS: Pick<BadgeProps, BadgeDefaultedKeys> = {\n variant: 'default',\n size: 'md',\n color: 'primary',\n glow: false,\n pulse: false,\n animate: true,\n shimmer: false,\n bounce: false,\n max: 99,\n showZero: false,\n position: 'top-right',\n closable: false,\n};\n\n// Strips explicitly-undefined props before the merge, so `prop={undefined}` still\n// falls back to the default exactly as a destructuring default would. Applied as\n// a merge rather than destructuring defaults, which would otherwise put twelve\n// branches into the component's own complexity budget.\nexport const resolveBadgeProps = (props: BadgeProps): ResolvedBadgeProps =>\n ({\n ...BADGE_DEFAULTS,\n ...(Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<BadgeProps>),\n }) as ResolvedBadgeProps;\n\n// `content` supersedes the older `badgeContent` prop.\nexport const badgeContentOf = (props: Pick<BadgeProps, 'content' | 'badgeContent'>): ReactNode => {\n if (props.content !== undefined) return props.content;\n if (props.badgeContent !== undefined) return props.badgeContent;\n return null;\n};\n\n// Counts cap at `max` and, unless showZero is set, a zero renders nothing.\nexport const formatCount = (\n count: ReactNode,\n { max, showZero }: { max: number; showZero: boolean },\n): ReactNode => {\n if (typeof count !== 'number') return count;\n if (count === 0 && !showZero) return null;\n if (count > max) return `${max}+`;\n return count;\n};\n\n// MUI spreads these straight onto the badge span, where an explicit undefined\n// would render as an empty attribute.\nexport const definedAria = (\n aria: Record<string, string | boolean | undefined>,\n): Record<string, string | boolean> =>\n Object.fromEntries(Object.entries(aria).filter(([, value]) => value !== undefined)) as Record<\n string,\n string | boolean\n >;\n"],"mappings":";AAoBA,IAAM,iBAAuD;AAAA,EAC3D,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AACZ;AAMO,IAAM,oBAAoB,CAAC,WAC/B;AAAA,EACC,GAAG;AAAA,EACH,GAAI,OAAO;AAAA,IACT,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AAAA,EACjE;AACF;AAGK,IAAM,iBAAiB,CAAC,UAAmE;AAChG,MAAI,MAAM,YAAY,OAAW,QAAO,MAAM;AAC9C,MAAI,MAAM,iBAAiB,OAAW,QAAO,MAAM;AACnD,SAAO;AACT;AAGO,IAAM,cAAc,CACzB,OACA,EAAE,KAAK,SAAS,MACF;AACd,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI,UAAU,KAAK,CAAC,SAAU,QAAO;AACrC,MAAI,QAAQ,IAAK,QAAO,GAAG,GAAG;AAC9B,SAAO;AACT;AAIO,IAAM,cAAc,CACzB,SAEA,OAAO,YAAY,OAAO,QAAQ,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS,CAAC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Chip/Chip.tsx"],"sourcesContent":["import CancelIcon from '@mui/icons-material/Cancel';\nimport MuiChip from '@mui/material/Chip/index.js';\nimport { forwardRef } from 'react';\n\nimport {\n avatarFor,\n chipRole,\n chipStyles,\n iconWithTestId,\n isClickable,\n makeKeyDownHandler,\n makeTestId,\n} from './Chip.helpers';\nimport type { ChipProps } from './Chip.types';\n\n/** MUI draws two chip sizes; ours are the house abbreviations for them. */\nconst muiSizeFor = (size: NonNullable<ChipProps['size']>): 'small' | 'medium' =>\n size === 'xs' || size === 'sm' ? 'small' : 'medium';\n\ntype MuiChipColor =\n | 'primary'\n | 'secondary'\n | 'error'\n | 'info'\n | 'success'\n | 'warning'\n | 'default';\n\n/**\n * `danger` and `neutral` are ours; the rest are MUI's own names already.\n *\n * The same boundary translation `Button` performs, and it must stay a\n * translation rather than a cast: a cast is what let `danger` through untouched\n * and had MUI silently fall back to grey.\n *\n * `neutral` maps to `default`, not to `inherit` as it does on a button. A chip's\n * unaccented state is a real palette entry with its own fill; `inherit` would\n * take the surrounding text colour and paint a chip that reads as disabled.\n */\nconst muiColorFor = (color: NonNullable<ChipProps['color']>): MuiChipColor => {\n if (color === 'danger') return 'error';\n return color === 'neutral' ? 'default' : color;\n};\n\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>(({\n label,\n variant = 'filled',\n size = 'md',\n color = 'primary',\n avatarSrc,\n avatar,\n icon,\n selected,\n selectable,\n deletable,\n disabled,\n onClick,\n onDelete,\n className,\n dataTestId,\n ...props\n}, ref) => {\n const testId = makeTestId(dataTestId);\n const clickable = isClickable(disabled, onClick, selectable);\n\n return (\n <MuiChip\n ref={ref}\n label={<span data-testid={testId('label')}>{label}</span>}\n variant={variant}\n size={muiSizeFor(size)}\n color={muiColorFor(color)}\n avatar={avatarFor(avatar, avatarSrc)}\n icon={iconWithTestId(icon, testId('icon'))}\n onDelete={deletable ? onDelete : undefined}\n deleteIcon={deletable ? <CancelIcon data-testid={testId('delete')} /> : undefined}\n disabled={disabled}\n clickable={clickable}\n onClick={clickable ? onClick : undefined}\n onKeyDown={makeKeyDownHandler({ disabled, deletable, selectable, onClick, onDelete })}\n className={className}\n role={chipRole(selectable, onClick)}\n aria-selected={selectable ? selected : undefined}\n data-testid={dataTestId || 'chip'}\n sx={chipStyles({ variant, selected, clickable, disabled })}\n {...props}\n />\n );\n});\n\nChip.displayName = 'Chip';\n"],"mappings":";;;;;;;;;;;AAAA,OAAO,gBAAgB;AACvB,OAAO,aAAa;AACpB,SAAS,kBAAkB;AAkEd;AApDb,IAAM,aAAa,CAAC,SAClB,SAAS,QAAQ,SAAS,OAAO,UAAU;AAsB7C,IAAM,cAAc,CAAC,UAAyD;AAC5E,MAAI,UAAU,SAAU,QAAO;AAC/B,SAAO,UAAU,YAAY,YAAY;AAC3C;AAEO,IAAM,OAAO,WAAsC,CAAC;AAAA,EACzD;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAG,QAAQ;AACT,QAAM,SAAS,WAAW,UAAU;AACpC,QAAM,YAAY,YAAY,UAAU,SAAS,UAAU;AAE3D,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO,oBAAC,UAAK,eAAa,OAAO,OAAO,GAAI,iBAAM;AAAA,MAClD;AAAA,MACA,MAAM,WAAW,IAAI;AAAA,MACrB,OAAO,YAAY,KAAK;AAAA,MACxB,QAAQ,UAAU,QAAQ,SAAS;AAAA,MACnC,MAAM,eAAe,MAAM,OAAO,MAAM,CAAC;AAAA,MACzC,UAAU,YAAY,WAAW;AAAA,MACjC,YAAY,YAAY,oBAAC,cAAW,eAAa,OAAO,QAAQ,GAAG,IAAK;AAAA,MACxE;AAAA,MACA;AAAA,MACA,SAAS,YAAY,UAAU;AAAA,MAC/B,WAAW,mBAAmB,EAAE,UAAU,WAAW,YAAY,SAAS,SAAS,CAAC;AAAA,MACpF;AAAA,MACA,MAAM,SAAS,YAAY,OAAO;AAAA,MAClC,iBAAe,aAAa,WAAW;AAAA,MACvC,eAAa,cAAc;AAAA,MAC3B,IAAI,WAAW,EAAE,SAAS,UAAU,WAAW,SAAS,CAAC;AAAA,MACxD,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAED,KAAK,cAAc;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Avatar/Avatar.tsx"],"sourcesContent":["import BrokenImage from '@mui/icons-material/BrokenImage';\nimport Person from '@mui/icons-material/Person';\nimport { styled } from '@mui/material/styles/index.js';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport type { AvatarProps } from './Avatar.types';\nimport { AvatarView, type AvatarViewProps, type ContentType } from './Avatar.view';\n\n/** Applied via a single spread so no per-field default inflates cyclomatic complexity. */\nconst AVATAR_DEFAULTS = {\n variant: 'circle',\n size: 'md',\n glow: false,\n pulse: false,\n bordered: false,\n color: 'primary',\n loading: false,\n interactive: false,\n showFallbackOnError: true,\n animationDelay: 0,\n} satisfies Partial<AvatarProps>;\n\n/**\n * Pick what renders inside the avatar. On an image error (with fallback enabled)\n * the fallback/icon/broken-image wins; otherwise children → fallback → icon → the\n * default person glyph.\n */\nfunction resolveContent(args: {\n children?: React.ReactNode;\n fallback?: React.ReactNode;\n icon?: React.ReactNode;\n imageError: boolean;\n showFallbackOnError: boolean;\n}): { content: React.ReactNode; contentType: ContentType } {\n const { children, fallback, icon, imageError, showFallbackOnError } = args;\n if (imageError && showFallbackOnError) {\n if (fallback) return { content: fallback, contentType: 'fallback' };\n if (icon) return { content: icon, contentType: 'icon' };\n return { content: <BrokenImage />, contentType: 'icon' };\n }\n if (children) return { content: children, contentType: 'children' };\n if (fallback) return { content: fallback, contentType: 'fallback' };\n if (icon) return { content: icon, contentType: 'icon' };\n return { content: <Person />, contentType: 'default' };\n}\n\n/** Fades the avatar in after `animationDelay`ms. */\nfunction useMountedFade(animationDelay: number): boolean {\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n const timer = window.setTimeout(() => setMounted(true), animationDelay);\n return () => window.clearTimeout(timer);\n }, [animationDelay]);\n return mounted;\n}\n\ninterface ImageState {\n imageError: boolean;\n imageLoading: boolean;\n handleImageError: React.ReactEventHandler;\n handleImageLoad: () => void;\n}\n\n/**\n * Tracks the `<img>` load lifecycle. `imageLoading` starts true whenever there is\n * a `src` and clears on load/error — the handlers must be wired to the actual img\n * (via `slotProps.img` in the view), since load/error don't bubble to the root.\n */\nfunction useImageState(src: string | undefined, onError?: React.ReactEventHandler): ImageState {\n const [imageError, setImageError] = useState(false);\n const [imageLoading, setImageLoading] = useState(!!src);\n\n useEffect(() => {\n setImageError(false);\n setImageLoading(!!src);\n }, [src]);\n\n const handleImageError = useCallback<React.ReactEventHandler>(\n (event) => {\n setImageError(true);\n setImageLoading(false);\n onError?.(event);\n },\n [onError],\n );\n\n const handleImageLoad = useCallback(() => setImageLoading(false), []);\n\n return { imageError, imageLoading, handleImageError, handleImageLoad };\n}\n\n/** Normalizes props (defaults + rest passthrough) and derives everything the view needs. */\nfunction useAvatarModel(raw: AvatarProps, ref: React.Ref<HTMLDivElement>): AvatarViewProps {\n const {\n variant,\n size,\n glow,\n pulse,\n status,\n fallback,\n icon,\n bordered,\n color,\n src,\n alt,\n children,\n loading,\n onError,\n onClick,\n interactive,\n showFallbackOnError,\n animationDelay,\n className,\n dataTestId,\n ...rest\n } = { ...AVATAR_DEFAULTS, ...raw };\n\n const mounted = useMountedFade(animationDelay);\n const { imageError, imageLoading, handleImageError, handleImageLoad } = useImageState(src, onError);\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => onClick?.(event),\n [onClick],\n );\n const { content, contentType } = resolveContent({\n children,\n fallback,\n icon,\n imageError,\n showFallbackOnError,\n });\n\n return {\n mounted,\n variant,\n size,\n color,\n glow,\n pulse,\n bordered,\n showSpinner: loading || imageLoading,\n imageError,\n clickable: interactive || !!onClick,\n imgSrc: imageError ? undefined : src,\n alt,\n ariaLabel: (rest['aria-label'] as string) || alt || 'Avatar',\n content,\n contentType,\n className,\n dataTestId,\n status,\n forwardedRef: ref,\n onClick: handleClick,\n handleImageError,\n handleImageLoad,\n rest,\n };\n}\n\nexport const Avatar = React.forwardRef<HTMLDivElement, AvatarProps>((props, ref) => (\n <AvatarView {...useAvatarModel(props, ref)} />\n));\n\nAvatar.displayName = 'Avatar';\n\nconst AvatarGroupContainer = styled('div')<{ overlap?: number }>(({ theme, overlap = 8 }) => ({\n display: 'flex',\n alignItems: 'center',\n '& > *': {\n marginLeft: -overlap,\n transition: 'all 0.3s ease',\n position: 'relative',\n border: `2px solid ${theme.palette.background.paper}`,\n '&:hover': {\n zIndex: 100,\n transform: 'scale(1.1) translateY(-4px)',\n },\n '&:first-of-type': {\n marginLeft: 0,\n },\n },\n}));\n\n// Export AvatarGroup for grouped avatars\nexport const AvatarGroup: React.FC<{\n children: React.ReactNode;\n max?: number;\n overlap?: number;\n className?: string;\n dataTestId?: string;\n}> = ({ children, max = 4, overlap = 8, className, dataTestId }) => {\n const childrenArray = React.Children.toArray(children);\n const visibleChildren = max ? childrenArray.slice(0, max) : childrenArray;\n const remainingCount = childrenArray.length - visibleChildren.length;\n\n return (\n <AvatarGroupContainer overlap={overlap} className={className} data-testid={dataTestId}>\n {visibleChildren}\n {remainingCount > 0 && (\n <Avatar\n size={(visibleChildren[0] as React.ReactElement<AvatarProps>)?.props?.size || 'md'}\n color=\"neutral\"\n fallback={`+${remainingCount}`}\n bordered\n dataTestId={dataTestId ? `${dataTestId}-overflow` : undefined}\n />\n )}\n </AvatarGroupContainer>\n );\n};\n\nAvatarGroup.displayName = 'AvatarGroup';\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/icons/paths.generated.ts"],"sourcesContent":["// GENERATED by scripts/generate-icon-paths.mjs from src/icons/glyphs.json.\n// Do not edit: run `pnpm icons:generate`; `pnpm icons:check` fails CI on drift.\n//\n// Each entry is the `d` of every <path> in the matching @mui/icons-material\n// module, in a 24x24 viewBox — the SAME geometry the web renders through\n// SvgIcon, so the native Icon draws the identical glyph.\n\n/** Path data per glyph, in a 0 0 24 24 viewBox. */\nexport const ICON_PATHS = {\n Add: [\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z\"],\n ArrowBack: [\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z\"],\n ArrowDownward: [\"m20 12-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8z\"],\n ArrowForward: [\"m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z\"],\n ArrowUpward: [\"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z\"],\n Check: [\"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"],\n CheckCircle: [\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z\"],\n ChevronLeft: [\"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z\"],\n ChevronRight: [\"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"],\n Close: [\"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"],\n ContentCopy: [\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z\"],\n Delete: [\"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z\"],\n Edit: [\"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z\"],\n Error: [\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z\"],\n ErrorOutline: [\"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8\"],\n ExpandLess: [\"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z\"],\n ExpandMore: [\"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"],\n FilterList: [\"M10 18h4v-2h-4zM3 6v2h18V6zm3 7h12v-2H6z\"],\n Info: [\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z\"],\n InfoOutlined: [\"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8\"],\n KeyboardArrowDown: [\"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z\"],\n KeyboardArrowUp: [\"M7.41 15.41 12 10.83l4.59 4.58L18 14l-6-6-6 6z\"],\n Menu: [\"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z\"],\n MoreHoriz: [\"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2\"],\n MoreVert: [\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2\"],\n NavigateBefore: [\"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z\"],\n NavigateNext: [\"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"],\n Person: [\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4\"],\n Refresh: [\"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4z\"],\n Remove: [\"M19 13H5v-2h14z\"],\n Save: [\"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3m3-10H5V5h10z\"],\n Search: [\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14\"],\n Settings: [\"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6\"],\n Visibility: [\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3\"],\n VisibilityOff: [\"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z\"],\n Warning: [\"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z\"],\n WarningAmber: [\"M12 5.99 19.53 19H4.47zM12 2 1 21h22z\",\"M13 16h-2v2h2zm0-6h-2v5h2z\"],\n} as const;\n\nexport type IconName = keyof typeof ICON_PATHS;\n\nexport const ICON_NAMES = Object.keys(ICON_PATHS) as readonly IconName[];\n"],"mappings":";AAQO,IAAM,aAAa;AAAA,EACxB,KAAK,CAAC,mCAAmC;AAAA,EACzC,WAAW,CAAC,2DAA2D;AAAA,EACvE,eAAe,CAAC,2DAA2D;AAAA,EAC3E,cAAc,CAAC,0DAA0D;AAAA,EACzE,aAAa,CAAC,yDAAyD;AAAA,EACvE,OAAO,CAAC,mDAAmD;AAAA,EAC3D,aAAa,CAAC,gHAAgH;AAAA,EAC9H,aAAa,CAAC,+CAA+C;AAAA,EAC7D,cAAc,CAAC,gDAAgD;AAAA,EAC/D,OAAO,CAAC,uGAAuG;AAAA,EAC/G,aAAa,CAAC,2HAA2H;AAAA,EACzI,QAAQ,CAAC,0EAA0E;AAAA,EACnF,MAAM,CAAC,kIAAkI;AAAA,EACzI,OAAO,CAAC,6FAA6F;AAAA,EACrG,cAAc,CAAC,uKAAuK;AAAA,EACtL,YAAY,CAAC,+CAA+C;AAAA,EAC5D,YAAY,CAAC,8CAA8C;AAAA,EAC3D,YAAY,CAAC,0CAA0C;AAAA,EACvD,MAAM,CAAC,6FAA6F;AAAA,EACpG,cAAc,CAAC,oJAAoJ;AAAA,EACnK,mBAAmB,CAAC,+CAA+C;AAAA,EACnE,iBAAiB,CAAC,gDAAgD;AAAA,EAClE,MAAM,CAAC,yCAAyC;AAAA,EAChD,WAAW,CAAC,kJAAkJ;AAAA,EAC9J,UAAU,CAAC,gJAAgJ;AAAA,EAC3J,gBAAgB,CAAC,+CAA+C;AAAA,EAChE,cAAc,CAAC,gDAAgD;AAAA,EAC/D,QAAQ,CAAC,6GAA6G;AAAA,EACtH,SAAS,CAAC,iMAAiM;AAAA,EAC3M,QAAQ,CAAC,iBAAiB;AAAA,EAC1B,MAAM,CAAC,wIAAwI;AAAA,EAC/I,QAAQ,CAAC,mOAAmO;AAAA,EAC5O,UAAU,CAAC,irBAAirB;AAAA,EAC5rB,YAAY,CAAC,gNAAgN;AAAA,EAC7N,eAAe,CAAC,0eAA0e;AAAA,EAC1f,SAAS,CAAC,2CAA2C;AAAA,EACrD,cAAc,CAAC,yCAAwC,4BAA4B;AACrF;AAIO,IAAM,aAAa,OAAO,KAAK,UAAU;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Badge/BadgeContent.tsx"],"sourcesContent":["import CloseIcon from '@mui/icons-material/Close';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport type { FC, ReactNode } from 'react';\nimport React from 'react';\n\nimport { getSizeStyles } from './Badge.styles';\nimport type { BadgeSize } from './Badge.types';\n\n// CLOSE_ICON_SIZES already exists in Badge.tsx; the size lookup lives here now.\nconst CLOSE_ICON_SIZES: Record<string, string> = {\n xs: '0.5rem',\n sm: '0.625rem',\n md: '0.75rem',\n lg: '0.875rem',\n};\n\nconst makeTestId =\n (dataTestId?: string) =>\n (suffix: string): string =>\n dataTestId ? `${dataTestId}-${suffix}` : `badge-${suffix}`;\n\nconst BadgeIcon: FC<{ icon: ReactNode; size: BadgeSize; testId: string }> = ({\n icon,\n size,\n testId,\n}) => (\n <span\n key=\"icon\"\n data-testid={testId}\n style={{\n fontSize: getSizeStyles(size).iconSize,\n display: 'inline-flex',\n alignItems: 'center',\n }}\n >\n {icon}\n </span>\n);\n\nconst BadgeCloseButton: FC<{ size: BadgeSize; testId: string; onClose: (e: React.MouseEvent) => void }> = ({\n size,\n testId,\n onClose,\n}) => (\n <IconButton\n key=\"close\"\n size=\"small\"\n onClick={onClose}\n data-testid={testId}\n sx={{\n p: 0,\n ml: 0.5,\n color: 'inherit',\n '& svg': { fontSize: CLOSE_ICON_SIZES[size] ?? CLOSE_ICON_SIZES.lg },\n '&:hover': { opacity: 0.8 },\n }}\n >\n <CloseIcon />\n </IconButton>\n);\n\n// The badge's inner run: optional icon, the content itself, optional close\n// button. A dot badge shows none of it.\nexport const buildBadgeContent = ({\n variant,\n size,\n icon,\n closable,\n dataTestId,\n baseContent,\n onClose,\n}: {\n variant: string;\n size: BadgeSize;\n icon?: ReactNode;\n closable?: boolean;\n dataTestId?: string;\n baseContent: ReactNode;\n onClose: (e: React.MouseEvent) => void;\n}): ReactNode => {\n if (variant === 'dot') return '';\n\n const testId = makeTestId(dataTestId);\n const parts: ReactNode[] = [];\n\n if (icon) parts.push(<BadgeIcon key=\"icon\" icon={icon} size={size} testId={testId('icon')} />);\n\n if (baseContent !== null && baseContent !== undefined) {\n parts.push(\n <span key=\"content\" data-testid={testId('content')}>\n {baseContent}\n </span>,\n );\n }\n\n if (closable && !variant.includes('dot')) {\n parts.push(\n <BadgeCloseButton key=\"close\" size={size} testId={testId('close')} onClose={onClose} />,\n );\n }\n\n if (parts.length === 0) return null;\n\n return (\n <span style={{ display: 'inline-flex', alignItems: 'center', gap: '2px' }}>{parts}</span>\n );\n};\n"],"mappings":";;;;;AAAA,OAAO,eAAe;AACtB,OAAO,gBAAgB;AAyBrB;AAjBF,IAAM,mBAA2C;AAAA,EAC/C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,IAAM,aACJ,CAAC,eACD,CAAC,WACC,aAAa,GAAG,UAAU,IAAI,MAAM,KAAK,SAAS,MAAM;AAE5D,IAAM,YAAsE,CAAC;AAAA,EAC3E;AAAA,EACA;AAAA,EACA;AACF,MACE;AAAA,EAAC;AAAA;AAAA,IAEC,eAAa;AAAA,IACb,OAAO;AAAA,MACL,UAAU,cAAc,IAAI,EAAE;AAAA,MAC9B,SAAS;AAAA,MACT,YAAY;AAAA,IACd;AAAA,IAEC;AAAA;AAAA,EARG;AASN;AAGF,IAAM,mBAAoG,CAAC;AAAA,EACzG;AAAA,EACA;AAAA,EACA;AACF,MACE;AAAA,EAAC;AAAA;AAAA,IAEC,MAAK;AAAA,IACL,SAAS;AAAA,IACT,eAAa;AAAA,IACb,IAAI;AAAA,MACF,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,SAAS,EAAE,UAAU,iBAAiB,IAAI,KAAK,iBAAiB,GAAG;AAAA,MACnE,WAAW,EAAE,SAAS,IAAI;AAAA,IAC5B;AAAA,IAEA,8BAAC,aAAU;AAAA;AAAA,EAZP;AAaN;AAKK,IAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAQiB;AACf,MAAI,YAAY,MAAO,QAAO;AAE9B,QAAM,SAAS,WAAW,UAAU;AACpC,QAAM,QAAqB,CAAC;AAE5B,MAAI,KAAM,OAAM,KAAK,oBAAC,aAAqB,MAAY,MAAY,QAAQ,OAAO,MAAM,KAApD,MAAuD,CAAE;AAE7F,MAAI,gBAAgB,QAAQ,gBAAgB,QAAW;AACrD,UAAM;AAAA,MACJ,oBAAC,UAAmB,eAAa,OAAO,SAAS,GAC9C,yBADO,SAEV;AAAA,IACF;AAAA,EACF;AAEA,MAAI,YAAY,CAAC,QAAQ,SAAS,KAAK,GAAG;AACxC,UAAM;AAAA,MACJ,oBAAC,oBAA6B,MAAY,QAAQ,OAAO,OAAO,GAAG,WAA7C,OAA+D;AAAA,IACvF;AAAA,EACF;AAEA,MAAI,MAAM,WAAW,EAAG,QAAO;AAE/B,SACE,oBAAC,UAAK,OAAO,EAAE,SAAS,eAAe,YAAY,UAAU,KAAK,MAAM,GAAI,iBAAM;AAEtF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Progress/Progress.styles.ts"],"sourcesContent":["import type { PaletteColor, CSSObject, Theme } from '@mui/material/styles/index.js';\nimport { alpha, keyframes } from '@mui/material/styles/index.js';\n\nimport type { ProgressSize, ProgressVariant } from './Progress.types';\n\n// Define pulse animation\nexport const pulseAnimation = keyframes`\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.7;\n }\n 100% {\n opacity: 1;\n }\n`;\n\nexport const getColorFromTheme = (theme: Theme, color: string): PaletteColor => {\n // Handle special case for neutral (grey) which is a Color, not PaletteColor\n if (color === 'neutral') {\n return {\n light: theme.palette.grey[300],\n main: theme.palette.grey[500],\n dark: theme.palette.grey[700],\n contrastText: theme.palette.getContrastText(theme.palette.grey[500]),\n };\n }\n\n const colorMap: Record<string, PaletteColor> = {\n primary: theme.palette.primary,\n secondary: theme.palette.secondary,\n success: theme.palette.success,\n warning: theme.palette.warning,\n error: theme.palette.error,\n info: theme.palette.info,\n danger: theme.palette.error, // Add danger alias\n };\n\n // Ensure we always return a valid color object with main and dark properties\n return colorMap[color] || theme.palette.primary;\n};\n\nconst SIZE_MAP: Record<ProgressSize, { height: number; circularSize: number; fontSize: string }> = {\n xs: { height: 2, circularSize: 24, fontSize: '0.625rem' },\n sm: { height: 4, circularSize: 32, fontSize: '0.75rem' },\n md: { height: 6, circularSize: 40, fontSize: '0.875rem' },\n lg: { height: 8, circularSize: 48, fontSize: '1rem' },\n xl: { height: 10, circularSize: 56, fontSize: '1.125rem' },\n};\n\nexport const getSizeStyles = (size?: ProgressSize) => SIZE_MAP[size as ProgressSize] || SIZE_MAP.md;\n\nexport const barVariantStyles = (\n variant: ProgressVariant | undefined,\n colorPalette: PaletteColor,\n): CSSObject => {\n switch (variant) {\n case 'linear':\n return { backgroundColor: colorPalette.main };\n case 'gradient':\n return {\n background: `linear-gradient(90deg, ${colorPalette.main} 0%, ${colorPalette.dark || colorPalette.main} 100%)`,\n };\n case 'glass':\n return {\n backgroundColor: alpha(colorPalette.main, 0.8),\n backdropFilter: 'blur(10px)',\n border: `1px solid ${alpha(colorPalette.main, 0.3)}`,\n };\n default:\n return {};\n }\n};\n\n// glow and pulse are independent flags. The three combinations used to be spelled\n// out one by one, but each is just the union of whichever flags are set.\nexport const barEmphasisStyles = (\n colorPalette: PaletteColor,\n glow?: boolean,\n pulse?: boolean,\n): CSSObject => ({\n ...(glow && {\n boxShadow: `0 0 10px 2px ${alpha(colorPalette.main, 0.4)}`,\n filter: 'brightness(1.1)',\n }),\n ...(pulse && {\n animation: `${pulseAnimation} 2s infinite`,\n }),\n});\n\nexport const circularEmphasisStyles = (\n colorPalette: PaletteColor,\n glow?: boolean,\n pulse?: boolean,\n): CSSObject => ({\n ...(glow && {\n filter: `drop-shadow(0 0 8px ${alpha(colorPalette.main, 0.6)})`,\n }),\n ...(pulse && {\n animation: `${pulseAnimation} 2s infinite`,\n }),\n});\n"],"mappings":";AACA,SAAS,OAAO,iBAAiB;AAK1B,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYvB,IAAM,oBAAoB,CAAC,OAAc,UAAgC;AAE9E,MAAI,UAAU,WAAW;AACvB,WAAO;AAAA,MACL,OAAO,MAAM,QAAQ,KAAK,GAAG;AAAA,MAC7B,MAAM,MAAM,QAAQ,KAAK,GAAG;AAAA,MAC5B,MAAM,MAAM,QAAQ,KAAK,GAAG;AAAA,MAC5B,cAAc,MAAM,QAAQ,gBAAgB,MAAM,QAAQ,KAAK,GAAG,CAAC;AAAA,IACrE;AAAA,EACF;AAEA,QAAM,WAAyC;AAAA,IAC7C,SAAS,MAAM,QAAQ;AAAA,IACvB,WAAW,MAAM,QAAQ;AAAA,IACzB,SAAS,MAAM,QAAQ;AAAA,IACvB,SAAS,MAAM,QAAQ;AAAA,IACvB,OAAO,MAAM,QAAQ;AAAA,IACrB,MAAM,MAAM,QAAQ;AAAA,IACpB,QAAQ,MAAM,QAAQ;AAAA;AAAA,EACxB;AAGA,SAAO,SAAS,KAAK,KAAK,MAAM,QAAQ;AAC1C;AAEA,IAAM,WAA6F;AAAA,EACjG,IAAI,EAAE,QAAQ,GAAG,cAAc,IAAI,UAAU,WAAW;AAAA,EACxD,IAAI,EAAE,QAAQ,GAAG,cAAc,IAAI,UAAU,UAAU;AAAA,EACvD,IAAI,EAAE,QAAQ,GAAG,cAAc,IAAI,UAAU,WAAW;AAAA,EACxD,IAAI,EAAE,QAAQ,GAAG,cAAc,IAAI,UAAU,OAAO;AAAA,EACpD,IAAI,EAAE,QAAQ,IAAI,cAAc,IAAI,UAAU,WAAW;AAC3D;AAEO,IAAM,gBAAgB,CAAC,SAAwB,SAAS,IAAoB,KAAK,SAAS;AAE1F,IAAM,mBAAmB,CAC9B,SACA,iBACc;AACd,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO,EAAE,iBAAiB,aAAa,KAAK;AAAA,IAC9C,KAAK;AACH,aAAO;AAAA,QACL,YAAY,0BAA0B,aAAa,IAAI,QAAQ,aAAa,QAAQ,aAAa,IAAI;AAAA,MACvG;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB,MAAM,aAAa,MAAM,GAAG;AAAA,QAC7C,gBAAgB;AAAA,QAChB,QAAQ,aAAa,MAAM,aAAa,MAAM,GAAG,CAAC;AAAA,MACpD;AAAA,IACF;AACE,aAAO,CAAC;AAAA,EACZ;AACF;AAIO,IAAM,oBAAoB,CAC/B,cACA,MACA,WACe;AAAA,EACf,GAAI,QAAQ;AAAA,IACV,WAAW,gBAAgB,MAAM,aAAa,MAAM,GAAG,CAAC;AAAA,IACxD,QAAQ;AAAA,EACV;AAAA,EACA,GAAI,SAAS;AAAA,IACX,WAAW,GAAG,cAAc;AAAA,EAC9B;AACF;AAEO,IAAM,yBAAyB,CACpC,cACA,MACA,WACe;AAAA,EACf,GAAI,QAAQ;AAAA,IACV,QAAQ,uBAAuB,MAAM,aAAa,MAAM,GAAG,CAAC;AAAA,EAC9D;AAAA,EACA,GAAI,SAAS;AAAA,IACX,WAAW,GAAG,cAAc;AAAA,EAC9B;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/tokens/mui-type.ts"],"sourcesContent":["import type { UiTheme } from './theme';\n\n/**\n * MUI'S DEFAULT `Typography` VARIANTS, AS NUMBERS.\n *\n * Several web components render a title or a message BY NAME —\n * `<Typography variant=\"h6\">` — and let MUI's theme turn the name into a\n * size. The native halves have no MUI theme, so they need the numbers MUI's\n * `createTypography` produces for those names. These are those numbers, for\n * the variants the ported components use: `fontSize` in px, `lineHeight` as\n * a ratio, `letterSpacing` in em exactly as MUI rounds it\n * (`round(letterSpacing / size)`, five decimals).\n *\n * Only the DEFAULTS. A host that re-themes `typography.h6` moves the web\n * halves and not these; each component that reads this records that as a\n * known gap in its `NATIVE-NOTES.md`.\n */\nexport type MuiTypeVariantName = 'h6' | 'body1' | 'body2';\n\nexport interface MuiTypeVariant {\n fontSize: number;\n lineHeight: number;\n fontWeight: 400 | 500;\n letterSpacingEm: number;\n}\n\nexport const MUI_TYPE: Record<MuiTypeVariantName, MuiTypeVariant> = {\n h6: { fontSize: 20, lineHeight: 1.6, fontWeight: 500, letterSpacingEm: 0.0075 },\n body1: { fontSize: 16, lineHeight: 1.5, fontWeight: 400, letterSpacingEm: 0.00938 },\n body2: { fontSize: 14, lineHeight: 1.43, fontWeight: 400, letterSpacingEm: 0.01071 },\n};\n\n/** MUI's `theme.typography.fontWeightMedium`, which several web styles name outright. */\nexport const MUI_FONT_WEIGHT_MEDIUM = 500;\n\n/** A variant multiplied out for a renderer whose `lineHeight` and `letterSpacing` are absolute. */\nexport interface MuiTypeStyle {\n fontFamily: string | undefined;\n fontSize: number;\n lineHeight: number;\n fontWeight: `${MuiTypeVariant['fontWeight']}`;\n letterSpacing: number;\n}\n\n/**\n * The variant as absolute numbers, in the theme's font. `fontSize` may be\n * overridden — the Alert's title is `body1` at 1.05rem — and the ratios\n * follow it, which is what the browser does with `em` and a unitless\n * line-height.\n */\nexport function muiTypeStyle(\n theme: Pick<UiTheme, 'typography'>,\n variant: MuiTypeVariantName,\n fontSize: number = MUI_TYPE[variant].fontSize,\n): MuiTypeStyle {\n const step = MUI_TYPE[variant];\n return {\n fontFamily: theme.typography.fontFamily,\n fontSize,\n lineHeight: fontSize * step.lineHeight,\n fontWeight: `${step.fontWeight}`,\n letterSpacing: fontSize * step.letterSpacingEm,\n };\n}\n"],"mappings":";AA0BO,IAAM,WAAuD;AAAA,EAClE,IAAI,EAAE,UAAU,IAAI,YAAY,KAAK,YAAY,KAAK,iBAAiB,MAAO;AAAA,EAC9E,OAAO,EAAE,UAAU,IAAI,YAAY,KAAK,YAAY,KAAK,iBAAiB,OAAQ;AAAA,EAClF,OAAO,EAAE,UAAU,IAAI,YAAY,MAAM,YAAY,KAAK,iBAAiB,QAAQ;AACrF;AAGO,IAAM,yBAAyB;AAiB/B,SAAS,aACd,OACA,SACA,WAAmB,SAAS,OAAO,EAAE,UACvB;AACd,QAAM,OAAO,SAAS,OAAO;AAC7B,SAAO;AAAA,IACL,YAAY,MAAM,WAAW;AAAA,IAC7B;AAAA,IACA,YAAY,WAAW,KAAK;AAAA,IAC5B,YAAY,GAAG,KAAK,UAAU;AAAA,IAC9B,eAAe,WAAW,KAAK;AAAA,EACjC;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/icons/Icon.types.ts","../../../src/icons/paths.generated.ts","../../../src/icons/Icon.native.tsx","../../../src/icons/icon-color.ts"],"sourcesContent":["import type { IconName } from './paths.generated';\nimport type { ColorValue, SizeValue } from '../tokens/vocabulary';\n\nexport type { IconName };\n\n/**\n * The glyph sizes, in px. `md` is MUI's `SvgIcon` default (24) and `sm` its\n * `small` (20); the rest continue the house scale in 4px steps either side.\n */\nexport const ICON_SIZES: Record<SizeValue, number> = {\n xs: 16,\n sm: 20,\n md: 24,\n lg: 32,\n xl: 40,\n};\n\nexport interface IconBaseProps {\n /** Which glyph. The list is `src/icons/glyphs.json`; both renderers draw the same paths. */\n name: IconName;\n /** A step of the house scale, or an exact px size. */\n size?: SizeValue | number;\n /**\n * A house colour, `inherit` (the surrounding text's colour on the web, the\n * theme's primary text on native, which has no `currentColor`), or any CSS\n * colour string.\n */\n color?: ColorValue | 'inherit' | string;\n /**\n * The name a screen reader gives the glyph. Omit for a decorative icon: it\n * is then hidden from assistive technology on both renderers.\n */\n label?: string;\n testID?: string;\n dataTestId?: string;\n}\n\n/** The px size for either spelling of `size`. */\nexport const iconSize = (size: SizeValue | number | undefined): number =>\n typeof size === 'number' ? size : ICON_SIZES[size ?? 'md'];\n","// GENERATED by scripts/generate-icon-paths.mjs from src/icons/glyphs.json.\n// Do not edit: run `pnpm icons:generate`; `pnpm icons:check` fails CI on drift.\n//\n// Each entry is the `d` of every <path> in the matching @mui/icons-material\n// module, in a 24x24 viewBox — the SAME geometry the web renders through\n// SvgIcon, so the native Icon draws the identical glyph.\n\n/** Path data per glyph, in a 0 0 24 24 viewBox. */\nexport const ICON_PATHS = {\n Add: [\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z\"],\n ArrowBack: [\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z\"],\n ArrowDownward: [\"m20 12-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8z\"],\n ArrowForward: [\"m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z\"],\n ArrowUpward: [\"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z\"],\n Check: [\"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"],\n CheckCircle: [\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z\"],\n ChevronLeft: [\"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z\"],\n ChevronRight: [\"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"],\n Close: [\"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"],\n ContentCopy: [\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z\"],\n Delete: [\"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z\"],\n Edit: [\"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z\"],\n Error: [\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z\"],\n ErrorOutline: [\"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8\"],\n ExpandLess: [\"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z\"],\n ExpandMore: [\"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"],\n FilterList: [\"M10 18h4v-2h-4zM3 6v2h18V6zm3 7h12v-2H6z\"],\n Info: [\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z\"],\n InfoOutlined: [\"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8\"],\n KeyboardArrowDown: [\"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z\"],\n KeyboardArrowUp: [\"M7.41 15.41 12 10.83l4.59 4.58L18 14l-6-6-6 6z\"],\n Menu: [\"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z\"],\n MoreHoriz: [\"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2\"],\n MoreVert: [\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2\"],\n NavigateBefore: [\"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z\"],\n NavigateNext: [\"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"],\n Person: [\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4\"],\n Refresh: [\"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4z\"],\n Remove: [\"M19 13H5v-2h14z\"],\n Save: [\"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3m3-10H5V5h10z\"],\n Search: [\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14\"],\n Settings: [\"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6\"],\n Visibility: [\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3\"],\n VisibilityOff: [\"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z\"],\n Warning: [\"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z\"],\n WarningAmber: [\"M12 5.99 19.53 19H4.47zM12 2 1 21h22z\",\"M13 16h-2v2h2zm0-6h-2v5h2z\"],\n} as const;\n\nexport type IconName = keyof typeof ICON_PATHS;\n\nexport const ICON_NAMES = Object.keys(ICON_PATHS) as readonly IconName[];\n","import * as React from 'react';\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport Svg, { Path } from 'react-native-svg';\n\nimport { iconFill } from './icon-color';\nimport { iconSize, type IconBaseProps } from './Icon.types';\nimport { ICON_PATHS } from './paths.generated';\nimport { resolveTestId } from '../platform/test-id';\nimport { useUiTheme } from '../provider/use-ui-theme.native';\n\nexport interface IconProps extends IconBaseProps {\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * The native `Icon`: `react-native-svg` drawing the same generated path the web\n * `SvgIcon` draws, in the same 24-unit box, at the same px size.\n */\nexport function Icon({ name, size, color, label, style, ...rest }: IconProps): React.JSX.Element {\n const theme = useUiTheme();\n const px = iconSize(size);\n const fill = iconFill(theme, color, theme.palette.text.primary);\n const testId = resolveTestId(rest, `icon-${name}`);\n\n return (\n <Svg\n width={px}\n height={px}\n viewBox=\"0 0 24 24\"\n fill={fill}\n style={style}\n testID={testId}\n role=\"img\"\n aria-label={label}\n aria-hidden={!label}\n >\n {ICON_PATHS[name].map((d) => (\n <Path key={d} d={d} fill={fill} />\n ))}\n </Svg>\n );\n}\n\nIcon.displayName = 'Icon';\n","import { COLOR_VALUES, type ColorValue } from '../tokens/vocabulary';\nimport type { UiTheme } from '../tokens/theme';\n\nconst isColorValue = (color: string): color is ColorValue =>\n (COLOR_VALUES as readonly string[]).includes(color);\n\n/**\n * The fill for an icon's `color` prop, on either renderer.\n *\n * A house colour resolves to the palette slot's `main`; `inherit` is the\n * caller's problem (the web passes `currentColor`, native the text colour); any\n * other string is taken as a CSS colour and passed through.\n */\nexport function iconFill(theme: UiTheme, color: string | undefined, inherit: string): string {\n if (color === undefined || color === 'inherit') return inherit;\n if (isColorValue(color)) {\n return color === 'neutral' ? theme.palette.text.secondary : theme.palette[color].main;\n }\n return color;\n}\n"],"mappings":"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","names":[]}