@12-apps/ui 6.33.1 → 6.35.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 (1887) hide show
  1. package/dist/_internal/components/data-display/Alert/Alert.js +6 -3
  2. package/dist/_internal/components/data-display/Alert/Alert.metrics.js +2 -1
  3. package/dist/_internal/components/data-display/Alert/Alert.styles.js +5 -2
  4. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +5 -1
  5. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +12 -8
  6. package/dist/_internal/components/data-display/Avatar/Avatar.js +6 -9
  7. package/dist/_internal/components/data-display/Avatar/Avatar.metrics.js +2 -1
  8. package/dist/_internal/components/data-display/Avatar/Avatar.view.js +5 -8
  9. package/dist/_internal/components/data-display/Badge/Badge.animations.js +2 -9
  10. package/dist/_internal/components/data-display/Badge/Badge.js +16 -6
  11. package/dist/_internal/components/data-display/Badge/Badge.metrics.js +1 -8
  12. package/dist/_internal/components/data-display/Badge/Badge.styles.js +14 -4
  13. package/dist/_internal/components/data-display/Badge/Badge.variants.js +5 -8
  14. package/dist/_internal/components/data-display/Badge/BadgeContent.js +15 -5
  15. package/dist/_internal/components/data-display/Banner/Banner.js +6 -3
  16. package/dist/_internal/components/data-display/Banner/Banner.styles.js +5 -2
  17. package/dist/_internal/components/data-display/CardKit/CardKebab.js +8 -5
  18. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +7 -4
  19. package/dist/_internal/components/data-display/CardKit/list-card-parts.js +2 -1
  20. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +16 -13
  21. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +12 -9
  22. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +6 -4
  23. package/dist/_internal/components/data-display/Carousel/Carousel.js +9 -7
  24. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +5 -3
  25. package/dist/_internal/components/data-display/Carousel/Carousel.slide.js +4 -1
  26. package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +5 -3
  27. package/dist/_internal/components/data-display/Chart/Chart.js +9 -7
  28. package/dist/_internal/components/data-display/Chart/SpecChart.js +10 -8
  29. package/dist/_internal/components/data-display/Chart/chart-context.js +6 -4
  30. package/dist/_internal/components/data-display/Chart/chart-internals.js +5 -3
  31. package/dist/_internal/components/data-display/Chart/chart-renderers.js +8 -6
  32. package/dist/_internal/components/data-display/Chip/Chip.js +5 -2
  33. package/dist/_internal/components/data-display/Chip/Chip.styles.js +4 -1
  34. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  35. package/dist/_internal/components/data-display/DataViews/DataViewsBoard.js +3 -2
  36. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +75 -72
  37. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +100 -97
  38. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +11 -8
  39. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +16 -13
  40. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +20 -17
  41. package/dist/_internal/components/data-display/DataViews/base-card.js +13 -10
  42. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +15 -12
  43. package/dist/_internal/components/data-display/DataViews/base-list-card-gutters.js +5 -9
  44. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +11 -8
  45. package/dist/_internal/components/data-display/DataViews/base-list-card.js +22 -19
  46. package/dist/_internal/components/data-display/DataViews/card-surface.js +5 -9
  47. package/dist/_internal/components/data-display/DataViews/data-views-bar-controls.js +2 -1
  48. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +24 -21
  49. package/dist/_internal/components/data-display/DataViews/data-views-columns-tab.js +3 -2
  50. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +9 -6
  51. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +14 -11
  52. package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +8 -5
  53. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +8 -5
  54. package/dist/_internal/components/data-display/DataViews/data-views-export.js +8 -5
  55. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +32 -29
  56. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +19 -16
  57. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +8 -5
  58. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +70 -67
  59. package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +3 -2
  60. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +37 -34
  61. package/dist/_internal/components/data-display/DataViews/data-views-layout-context.js +7 -3
  62. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +15 -14
  63. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +21 -18
  64. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +4 -3
  65. package/dist/_internal/components/data-display/DataViews/data-views-preset-chips.js +2 -1
  66. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +5 -4
  67. package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +9 -5
  68. package/dist/_internal/components/data-display/DataViews/data-views-scopes.js +2 -1
  69. package/dist/_internal/components/data-display/DataViews/data-views-search.js +2 -1
  70. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +8 -5
  71. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +27 -24
  72. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +38 -35
  73. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +26 -23
  74. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +8 -5
  75. package/dist/_internal/components/data-display/DataViews/list-card-cells.js +2 -1
  76. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +9 -5
  77. package/dist/_internal/components/data-display/DataViews/save-view-preview.js +3 -2
  78. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +13 -10
  79. package/dist/_internal/components/data-display/DescriptionItem/DescriptionItem.js +3 -2
  80. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +3 -2
  81. package/dist/_internal/components/data-display/EmptyState/EmptyState.metrics.js +2 -1
  82. package/dist/_internal/components/data-display/ErrorState/ErrorState.js +2 -1
  83. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +18 -15
  84. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +13 -10
  85. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +23 -21
  86. package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +7 -4
  87. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +6 -3
  88. package/dist/_internal/components/data-display/HoverCard/HoverCard.styles.js +4 -1
  89. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +6 -2
  90. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.styles.js +5 -1
  91. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +7 -4
  92. package/dist/_internal/components/data-display/Lightbox/Lightbox.constants.js +5 -1
  93. package/dist/_internal/components/data-display/Lightbox/Lightbox.hooks.js +6 -2
  94. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +12 -8
  95. package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +6 -2
  96. package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +7 -3
  97. package/dist/_internal/components/data-display/Lightbox/LightboxStage.js +6 -2
  98. package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +6 -2
  99. package/dist/_internal/components/data-display/Lightbox/useLightbox.js +7 -3
  100. package/dist/_internal/components/data-display/LoadingState/LoadingState.js +7 -4
  101. package/dist/_internal/components/data-display/MapPreview/MapDecorations.js +6 -2
  102. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
  103. package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +6 -2
  104. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +12 -9
  105. package/dist/_internal/components/data-display/MapPreview/MapTiles.js +5 -2
  106. package/dist/_internal/components/data-display/MapPreview/StaticMapView.js +8 -4
  107. package/dist/_internal/components/data-display/MapPreview/mapSurface.js +4 -1
  108. package/dist/_internal/components/data-display/Popover/Popover.js +4 -1
  109. package/dist/_internal/components/data-display/Progress/Progress.js +5 -2
  110. package/dist/_internal/components/data-display/Progress/Progress.styles.js +4 -1
  111. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +8 -4
  112. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +6 -4
  113. package/dist/_internal/components/data-display/Sheet/Sheet.js +8 -6
  114. package/dist/_internal/components/data-display/Sheet/Sheet.parts.js +4 -1
  115. package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +5 -3
  116. package/dist/_internal/components/data-display/StatCard/StatCard.js +8 -4
  117. package/dist/_internal/components/data-display/Stepper/Stepper.js +5 -1
  118. package/dist/_internal/components/data-display/Table/Table.js +3 -2
  119. package/dist/_internal/components/data-display/Table/Table.styles.js +2 -1
  120. package/dist/_internal/components/data-display/Timeline/Timeline.js +6 -2
  121. package/dist/_internal/components/data-display/Timeline/TimelineRow.js +5 -1
  122. package/dist/_internal/components/data-display/TimingDiagram/TimingDiagram.js +6 -2
  123. package/dist/_internal/components/data-display/TimingDiagram/TimingDiagram.views.js +5 -1
  124. package/dist/_internal/components/data-display/Tooltip/Tooltip.js +5 -1
  125. package/dist/_internal/components/data-display/index.js +89 -87
  126. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +7 -3
  127. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +6 -2
  128. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +10 -7
  129. package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +7 -3
  130. package/dist/_internal/components/feedback/Dialog/Dialog.js +6 -3
  131. package/dist/_internal/components/feedback/Dialog/Dialog.metrics.js +3 -1
  132. package/dist/_internal/components/feedback/Dialog/Dialog.styles.js +5 -2
  133. package/dist/_internal/components/feedback/Modal/Modal.js +5 -2
  134. package/dist/_internal/components/feedback/Modal/Modal.styles.js +4 -1
  135. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +10 -7
  136. package/dist/_internal/components/feedback/Sonner/Sonner.js +6 -2
  137. package/dist/_internal/components/feedback/Sonner/SonnerToast.js +5 -1
  138. package/dist/_internal/components/feedback/StackedModal/StackedModal.js +6 -3
  139. package/dist/_internal/components/feedback/StackedModal/StackedModal.parts.js +5 -2
  140. package/dist/_internal/components/feedback/StackedModal/StackedModal.styles.js +4 -1
  141. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +5 -2
  142. package/dist/_internal/components/feedback/TutorialOverlay/TutorialStepBody.js +4 -1
  143. package/dist/_internal/components/feedback/index.js +29 -26
  144. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +4 -4
  145. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +10 -9
  146. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +3 -2
  147. package/dist/_internal/components/form/AddressAutocomplete/AddressOption.js +2 -1
  148. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
  149. package/dist/_internal/components/form/Button/Button.js +6 -3
  150. package/dist/_internal/components/form/Button/Button.metrics.js +2 -1
  151. package/dist/_internal/components/form/Button/Button.styles.js +5 -2
  152. package/dist/_internal/components/form/Calendar/Calendar.hooks.js +2 -2
  153. package/dist/_internal/components/form/Calendar/Calendar.js +3 -3
  154. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +11 -8
  155. package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +5 -2
  156. package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +5 -2
  157. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +7 -4
  158. package/dist/_internal/components/form/CategorySelect/CategoryQuickActions.js +2 -1
  159. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +6 -3
  160. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +15 -12
  161. package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +4 -1
  162. package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +5 -2
  163. package/dist/_internal/components/form/CepField/CepField.js +8 -5
  164. package/dist/_internal/components/form/Checkbox/Checkbox.js +4 -8
  165. package/dist/_internal/components/form/Checkbox/Checkbox.metrics.js +3 -3
  166. package/dist/_internal/components/form/CodeEditor/CodeEditor.hooks.js +5 -2
  167. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +7 -4
  168. package/dist/_internal/components/form/CodeEditor/CodeEditor.monaco.js +4 -1
  169. package/dist/_internal/components/form/CodeEditor/CodeEditorToolbar.js +2 -1
  170. package/dist/_internal/components/form/Command/Command.js +7 -5
  171. package/dist/_internal/components/form/Command/Command.styles.js +5 -3
  172. package/dist/_internal/components/form/CreatableSelect/CreatableSelect.js +3 -2
  173. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +7 -6
  174. package/dist/_internal/components/form/DateRangePicker/DateRangePickerQuickList.js +2 -1
  175. package/dist/_internal/components/form/Form/Form.js +2 -1
  176. package/dist/_internal/components/form/HeaderActions/HeaderActions.js +3 -2
  177. package/dist/_internal/components/form/HeaderButton/HeaderButton.js +2 -1
  178. package/dist/_internal/components/form/Input/Input.js +5 -3
  179. package/dist/_internal/components/form/Input/Input.metrics.js +2 -1
  180. package/dist/_internal/components/form/Input/Input.styles.js +4 -2
  181. package/dist/_internal/components/form/InputOTP/InputOTP.js +5 -2
  182. package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +4 -1
  183. package/dist/_internal/components/form/Label/Label.js +6 -4
  184. package/dist/_internal/components/form/Label/Label.styles.js +5 -3
  185. package/dist/_internal/components/form/Menubar/Menubar.item.js +6 -4
  186. package/dist/_internal/components/form/Menubar/Menubar.js +8 -6
  187. package/dist/_internal/components/form/Menubar/Menubar.styles.js +5 -3
  188. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +7 -5
  189. package/dist/_internal/components/form/PasswordStrength/PasswordStrength.helpers.js +1 -1
  190. package/dist/_internal/components/form/PasswordStrength/PasswordStrength.js +3 -2
  191. package/dist/_internal/components/form/PhoneInput/PhoneInput.hooks.js +2 -2
  192. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +4 -3
  193. package/dist/_internal/components/form/RadioGroup/RadioGroup.js +6 -3
  194. package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +4 -1
  195. package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +5 -2
  196. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +3 -2
  197. package/dist/_internal/components/form/SearchPalette/SearchPalette.js +3 -2
  198. package/dist/_internal/components/form/SearchPalette/SearchPalette.parts.js +2 -1
  199. package/dist/_internal/components/form/Select/Select.js +5 -3
  200. package/dist/_internal/components/form/Select/Select.metrics.js +3 -2
  201. package/dist/_internal/components/form/Slider/Slider.js +6 -2
  202. package/dist/_internal/components/form/Slider/Slider.styles.js +5 -1
  203. package/dist/_internal/components/form/Switch/Switch.js +8 -5
  204. package/dist/_internal/components/form/Switch/Switch.metrics.js +2 -1
  205. package/dist/_internal/components/form/Switch/Switch.parts.js +6 -3
  206. package/dist/_internal/components/form/Switch/Switch.styles.js +5 -2
  207. package/dist/_internal/components/form/Textarea/Textarea.js +5 -2
  208. package/dist/_internal/components/form/Textarea/Textarea.styles.js +3 -1
  209. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +8 -3
  210. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js.map +1 -1
  211. package/dist/_internal/components/form/Toggle/Toggle.js +5 -2
  212. package/dist/_internal/components/form/Toggle/Toggle.styles.js +4 -1
  213. package/dist/_internal/components/form/ToggleGroup/ToggleGroup.js +4 -1
  214. package/dist/_internal/components/form/UploadButton/UploadButton.js +3 -2
  215. package/dist/_internal/components/form/UploadButton/UploadButton.parts.js +2 -1
  216. package/dist/_internal/components/form/index.js +78 -76
  217. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +16 -13
  218. package/dist/_internal/components/form/total-form/Fields/CepField.js +9 -6
  219. package/dist/_internal/components/form/total-form/Fields/SelectField.js +8 -5
  220. package/dist/_internal/components/form/total-form/Fields/TextField.js +8 -5
  221. package/dist/_internal/components/form/total-form/Fields/ToggleField.js +6 -3
  222. package/dist/_internal/components/form/total-form/Fields/index.js +32 -29
  223. package/dist/_internal/components/form/total-form/FormContainer.js +3 -2
  224. package/dist/_internal/components/form/total-form/SubmitButton.js +7 -4
  225. package/dist/_internal/components/index.js +241 -239
  226. package/dist/_internal/components/layout/Box/Box.js +7 -5
  227. package/dist/_internal/components/layout/Card/Card.js +6 -3
  228. package/dist/_internal/components/layout/Card/Card.metrics.js +3 -1
  229. package/dist/_internal/components/layout/Card/Card.styles.js +5 -2
  230. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +2 -1
  231. package/dist/_internal/components/layout/ContentToolbar/ContentToolbar.js +2 -1
  232. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +2 -1
  233. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +3 -2
  234. package/dist/_internal/components/layout/ContentToolbar/MultiSelectTriggers.js +2 -1
  235. package/dist/_internal/components/layout/ContentToolbar/SavedViewsMenu.js +2 -1
  236. package/dist/_internal/components/layout/ContentToolbar/SortByDropdown.js +2 -1
  237. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +2 -1
  238. package/dist/_internal/components/layout/Dashboard/Dashboard.js +5 -4
  239. package/dist/_internal/components/layout/Dashboard/DashboardParts.js +4 -3
  240. package/dist/_internal/components/layout/Drawer/Drawer.js +4 -1
  241. package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +7 -4
  242. package/dist/_internal/components/layout/ScrollArea/ScrollArea.styles.js +4 -1
  243. package/dist/_internal/components/layout/ScrollArea/ScrollViewport.js +5 -2
  244. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.items.js +3 -2
  245. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +8 -7
  246. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.rail.js +4 -3
  247. package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +5 -4
  248. package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.js +3 -2
  249. package/dist/_internal/components/layout/SettingsLayout/SettingsSectionHeader.js +2 -1
  250. package/dist/_internal/components/layout/SettingsLayout/SettingsStatusMarker.js +2 -1
  251. package/dist/_internal/components/layout/Sidebar/Sidebar.js +4 -1
  252. package/dist/_internal/components/layout/Skeleton/Skeleton.js +6 -3
  253. package/dist/_internal/components/layout/Skeleton/Skeleton.metrics.js +2 -1
  254. package/dist/_internal/components/layout/Skeleton/Skeleton.styles.js +5 -2
  255. package/dist/_internal/components/layout/Stack/Stack.js +8 -6
  256. package/dist/_internal/components/layout/TableFilter/TableFilter.js +2 -1
  257. package/dist/_internal/components/layout/index.js +30 -27
  258. package/dist/_internal/components/navigation/AppHeader/AppHeader.brand.js +2 -1
  259. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +15 -13
  260. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +6 -4
  261. package/dist/_internal/components/navigation/AppHeader/AppHeader.js +2 -1
  262. package/dist/_internal/components/navigation/Breadcrumbs/BreadcrumbEntry.js +6 -2
  263. package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.js +7 -3
  264. package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.styles.js +5 -1
  265. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +7 -3
  266. package/dist/_internal/components/navigation/CommandPalette/CommandPaletteResults.js +3 -2
  267. package/dist/_internal/components/navigation/CommandPalette/ShortcutChip.js +2 -1
  268. package/dist/_internal/components/navigation/ContextMenu/ContextMenu.js +5 -1
  269. package/dist/_internal/components/navigation/DropdownMenu/DropdownMenu.js +5 -1
  270. package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +8 -4
  271. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +10 -6
  272. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.shell.js +6 -2
  273. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.styles.js +3 -1
  274. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenuItem.js +6 -2
  275. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +8 -4
  276. package/dist/_internal/components/navigation/Pagination/Pagination.js +3 -2
  277. package/dist/_internal/components/navigation/Pagination/Pagination.styles.js +2 -1
  278. package/dist/_internal/components/navigation/Tabs/Tabs.js +3 -2
  279. package/dist/_internal/components/navigation/Tabs/Tabs.styles.js +2 -1
  280. package/dist/_internal/components/navigation/index.js +38 -36
  281. package/dist/_internal/components/typography/Blockquote/Blockquote.js +5 -1
  282. package/dist/_internal/components/typography/Code/Code.js +5 -1
  283. package/dist/_internal/components/typography/Heading/Heading.js +5 -3
  284. package/dist/_internal/components/typography/Heading/Heading.metrics.js +2 -1
  285. package/dist/_internal/components/typography/Heading/Heading.styles.js +4 -2
  286. package/dist/_internal/components/typography/Paragraph/Paragraph.js +2 -8
  287. package/dist/_internal/components/typography/Text/Text.js +2 -1
  288. package/dist/_internal/components/typography/index.js +10 -7
  289. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.js +6 -2
  290. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.styles.js +5 -1
  291. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +4 -1
  292. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +8 -4
  293. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +6 -2
  294. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +7 -3
  295. package/dist/_internal/components/utility/index.js +10 -6
  296. package/dist/_internal/icons/Icon.js +7 -5
  297. package/dist/_internal/provider/UiProvider.js +6 -4
  298. package/dist/_internal/provider/mui-bridge.js +5 -3
  299. package/dist/_internal/provider/use-ui-theme.js +6 -4
  300. package/dist/_internal/social-login-button/social-login-button.js +14 -11
  301. package/dist/_internal/tokens/ink.core.js +34 -0
  302. package/dist/_internal/tokens/ink.core.js.map +1 -0
  303. package/dist/_internal/tokens/ink.js +30 -0
  304. package/dist/_internal/tokens/ink.js.map +1 -0
  305. package/dist/_internal/user-avatar/user-avatar.js +14 -11
  306. package/dist/charts.js +10 -8
  307. package/dist/chunk-236V2GRH.js +281 -0
  308. package/dist/chunk-236V2GRH.js.map +1 -0
  309. package/dist/chunk-24NXQG5F.js +85 -0
  310. package/dist/chunk-24NXQG5F.js.map +1 -0
  311. package/dist/chunk-2AKQPXSJ.js +64 -0
  312. package/dist/chunk-2B76FIMN.js +206 -0
  313. package/dist/chunk-2B76FIMN.js.map +1 -0
  314. package/dist/chunk-2CTTASUD.js +169 -0
  315. package/dist/chunk-2E2WOBID.js +170 -0
  316. package/dist/chunk-2E2WOBID.js.map +1 -0
  317. package/dist/chunk-2HVNPWFV.js +116 -0
  318. package/dist/chunk-2HVNPWFV.js.map +1 -0
  319. package/dist/chunk-2NLYGZP3.js +156 -0
  320. package/dist/chunk-2NLYGZP3.js.map +1 -0
  321. package/dist/chunk-2OIP3T5O.js +65 -0
  322. package/dist/chunk-2OIP3T5O.js.map +1 -0
  323. package/dist/chunk-2PBT2HQH.js +293 -0
  324. package/dist/chunk-2PBT2HQH.js.map +1 -0
  325. package/dist/chunk-2PWVPTS3.js +293 -0
  326. package/dist/chunk-2PWVPTS3.js.map +1 -0
  327. package/dist/chunk-2TJOCI54.js +86 -0
  328. package/dist/chunk-2WGMMFGV.js +126 -0
  329. package/dist/chunk-2WGMMFGV.js.map +1 -0
  330. package/dist/chunk-2ZRZTGWP.js +230 -0
  331. package/dist/chunk-37VFEWEN.js +111 -0
  332. package/dist/chunk-37VFEWEN.js.map +1 -0
  333. package/dist/chunk-3A22SBIU.js +82 -0
  334. package/dist/chunk-3A22SBIU.js.map +1 -0
  335. package/dist/chunk-3CVTQZQJ.js +232 -0
  336. package/dist/chunk-3D6HXKZM.js +144 -0
  337. package/dist/chunk-3D6HXKZM.js.map +1 -0
  338. package/dist/chunk-3GQ6PNEM.js +51 -0
  339. package/dist/chunk-3GQ6PNEM.js.map +1 -0
  340. package/dist/chunk-3TVUW7QE.js +138 -0
  341. package/dist/chunk-3TVUW7QE.js.map +1 -0
  342. package/dist/chunk-3VMGE7CU.js +276 -0
  343. package/dist/chunk-3VMGE7CU.js.map +1 -0
  344. package/dist/chunk-4GYEIWQP.js +350 -0
  345. package/dist/chunk-4GYEIWQP.js.map +1 -0
  346. package/dist/chunk-4LQZH4PU.js +187 -0
  347. package/dist/chunk-4M34ALEP.js +155 -0
  348. package/dist/chunk-4WQ3YXQL.js +72 -0
  349. package/dist/chunk-56QVP2MU.js +96 -0
  350. package/dist/chunk-56QVP2MU.js.map +1 -0
  351. package/dist/chunk-57IB5NTM.js +195 -0
  352. package/dist/chunk-57IB5NTM.js.map +1 -0
  353. package/dist/chunk-57JY4OI2.js +195 -0
  354. package/dist/chunk-57JY4OI2.js.map +1 -0
  355. package/dist/chunk-5CKDRLRN.js +245 -0
  356. package/dist/chunk-5CKDRLRN.js.map +1 -0
  357. package/dist/chunk-5IXHJXJX.js +93 -0
  358. package/dist/chunk-5JSRM7WC.js +76 -0
  359. package/dist/chunk-5JSRM7WC.js.map +1 -0
  360. package/dist/chunk-5NFPO3YY.js +84 -0
  361. package/dist/chunk-5NFPO3YY.js.map +1 -0
  362. package/dist/chunk-5RP3KXC7.js +267 -0
  363. package/dist/chunk-5RP3KXC7.js.map +1 -0
  364. package/dist/chunk-5SJWDABY.js +266 -0
  365. package/dist/chunk-5SJWDABY.js.map +1 -0
  366. package/dist/chunk-5VWYCVXF.js +94 -0
  367. package/dist/chunk-5ZQUJ7LT.js +80 -0
  368. package/dist/chunk-5ZTQTJAJ.js +124 -0
  369. package/dist/chunk-65YAR3OZ.js +110 -0
  370. package/dist/chunk-65YAR3OZ.js.map +1 -0
  371. package/dist/chunk-6DC5SVHM.js +57 -0
  372. package/dist/chunk-6KL2CJBO.js +118 -0
  373. package/dist/chunk-6Q5GZUQ5.js +64 -0
  374. package/dist/chunk-6QLPSMTA.js +201 -0
  375. package/dist/chunk-6QLPSMTA.js.map +1 -0
  376. package/dist/chunk-6SKXV236.js +176 -0
  377. package/dist/chunk-6SKXV236.js.map +1 -0
  378. package/dist/chunk-6SS5C74Q.js +37 -0
  379. package/dist/chunk-6SS5C74Q.js.map +1 -0
  380. package/dist/chunk-6SYFPRTT.js +271 -0
  381. package/dist/chunk-6SYFPRTT.js.map +1 -0
  382. package/dist/chunk-6ZZGK5DT.js +78 -0
  383. package/dist/chunk-6ZZGK5DT.js.map +1 -0
  384. package/dist/chunk-72DKEBJM.js +110 -0
  385. package/dist/chunk-72DKEBJM.js.map +1 -0
  386. package/dist/chunk-73HBIIRB.js +134 -0
  387. package/dist/chunk-73HBIIRB.js.map +1 -0
  388. package/dist/chunk-7BZTZ2WG.js +149 -0
  389. package/dist/chunk-7BZTZ2WG.js.map +1 -0
  390. package/dist/chunk-7D7CJRL7.js +78 -0
  391. package/dist/chunk-7D7CJRL7.js.map +1 -0
  392. package/dist/chunk-7DN4UXJ3.js +76 -0
  393. package/dist/chunk-7DN4UXJ3.js.map +1 -0
  394. package/dist/chunk-7EQCZO56.js +67 -0
  395. package/dist/chunk-7EQCZO56.js.map +1 -0
  396. package/dist/chunk-7F7TTOYN.js +80 -0
  397. package/dist/chunk-7HFGVT3G.js +197 -0
  398. package/dist/chunk-7HFGVT3G.js.map +1 -0
  399. package/dist/chunk-7LIXQZBG.js +193 -0
  400. package/dist/chunk-7VJH4FYU.js +300 -0
  401. package/dist/chunk-7VJH4FYU.js.map +1 -0
  402. package/dist/chunk-7ZG7T2YN.js +92 -0
  403. package/dist/chunk-7ZWC5CKA.js +85 -0
  404. package/dist/chunk-7ZWC5CKA.js.map +1 -0
  405. package/dist/chunk-A2CTAEIS.js +269 -0
  406. package/dist/chunk-A2CTAEIS.js.map +1 -0
  407. package/dist/chunk-A2DYU5WN.js +60 -0
  408. package/dist/chunk-A4OCNJWW.js +16 -0
  409. package/dist/chunk-A6AKFPIQ.js +247 -0
  410. package/dist/chunk-AATIHNPI.js +312 -0
  411. package/dist/chunk-AATIHNPI.js.map +1 -0
  412. package/dist/chunk-AI7NVWIG.js +112 -0
  413. package/dist/chunk-AI7NVWIG.js.map +1 -0
  414. package/dist/chunk-AJSPLHG4.js +90 -0
  415. package/dist/chunk-AMTFP7QA.js +94 -0
  416. package/dist/chunk-AMTFP7QA.js.map +1 -0
  417. package/dist/chunk-AQSX3YH2.js +184 -0
  418. package/dist/chunk-B76QCDCE.js +226 -0
  419. package/dist/chunk-B76QCDCE.js.map +1 -0
  420. package/dist/chunk-BBXJQI4S.js +50 -0
  421. package/dist/chunk-BBXJQI4S.js.map +1 -0
  422. package/dist/chunk-BD2GGIGS.js +116 -0
  423. package/dist/chunk-BGYLL467.js +108 -0
  424. package/dist/chunk-BLJDCMFU.js +154 -0
  425. package/dist/chunk-BLJDCMFU.js.map +1 -0
  426. package/dist/chunk-BNU4RLEC.js +93 -0
  427. package/dist/chunk-BNU4RLEC.js.map +1 -0
  428. package/dist/chunk-BO2SDMNQ.js +46 -0
  429. package/dist/chunk-BR7RM3WR.js +79 -0
  430. package/dist/chunk-BXAL7OIS.js +347 -0
  431. package/dist/chunk-BXAL7OIS.js.map +1 -0
  432. package/dist/chunk-C6FRVGMC.js +176 -0
  433. package/dist/chunk-C6NI3FAV.js +109 -0
  434. package/dist/chunk-C7TCBAVX.js +55 -0
  435. package/dist/chunk-CJHP6E34.js +264 -0
  436. package/dist/chunk-CJHP6E34.js.map +1 -0
  437. package/dist/chunk-CMTR3WEA.js +283 -0
  438. package/dist/chunk-CMTR3WEA.js.map +1 -0
  439. package/dist/chunk-COYGTEN5.js +88 -0
  440. package/dist/chunk-COYGTEN5.js.map +1 -0
  441. package/dist/chunk-CPTY6UZ6.js +124 -0
  442. package/dist/chunk-CPTY6UZ6.js.map +1 -0
  443. package/dist/chunk-CRZXSZ5O.js +34 -0
  444. package/dist/chunk-CS3RKXT5.js +67 -0
  445. package/dist/chunk-CSTAQX2B.js +152 -0
  446. package/dist/chunk-CSTAQX2B.js.map +1 -0
  447. package/dist/chunk-CU4TF7C7.js +173 -0
  448. package/dist/chunk-CU4TF7C7.js.map +1 -0
  449. package/dist/chunk-CXMVNYBY.js +25 -0
  450. package/dist/chunk-CZT3AV7I.js +172 -0
  451. package/dist/chunk-CZT3AV7I.js.map +1 -0
  452. package/dist/chunk-D5SZXH7Q.js +148 -0
  453. package/dist/chunk-D5SZXH7Q.js.map +1 -0
  454. package/dist/chunk-D5X4FRYX.js +131 -0
  455. package/dist/chunk-DBCITC4P.js +127 -0
  456. package/dist/chunk-DFCQQN6P.js +175 -0
  457. package/dist/chunk-DFCQQN6P.js.map +1 -0
  458. package/dist/chunk-DHBYO7AO.js +148 -0
  459. package/dist/chunk-DHBYO7AO.js.map +1 -0
  460. package/dist/chunk-DMYBTD5Y.js +49 -0
  461. package/dist/chunk-DRE6DSJ7.js +30 -0
  462. package/dist/chunk-DYVAOEW4.js +230 -0
  463. package/dist/chunk-DYVAOEW4.js.map +1 -0
  464. package/dist/chunk-DZHN5FFX.js +150 -0
  465. package/dist/chunk-DZHN5FFX.js.map +1 -0
  466. package/dist/chunk-E6RYO4QZ.js +180 -0
  467. package/dist/chunk-E6RYO4QZ.js.map +1 -0
  468. package/dist/chunk-E6YBXAZN.js +266 -0
  469. package/dist/chunk-E6YBXAZN.js.map +1 -0
  470. package/dist/chunk-E7MSDXED.js +170 -0
  471. package/dist/chunk-E7MSDXED.js.map +1 -0
  472. package/dist/chunk-EDO2WS5B.js +318 -0
  473. package/dist/chunk-EDO2WS5B.js.map +1 -0
  474. package/dist/chunk-EFHIMCJN.js +181 -0
  475. package/dist/chunk-EFHIMCJN.js.map +1 -0
  476. package/dist/chunk-EFV5QJNM.js +158 -0
  477. package/dist/chunk-EFV5QJNM.js.map +1 -0
  478. package/dist/chunk-EFVOT3G5.js +96 -0
  479. package/dist/chunk-EL7CMURV.js +241 -0
  480. package/dist/chunk-EL7CMURV.js.map +1 -0
  481. package/dist/chunk-EMPVMZAB.js +49 -0
  482. package/dist/chunk-EMPVMZAB.js.map +1 -0
  483. package/dist/chunk-EOW2ECB3.js +107 -0
  484. package/dist/chunk-EXZSHZRS.js +39 -0
  485. package/dist/chunk-F5KEWLZK.js +68 -0
  486. package/dist/chunk-F7HQVKIR.js +223 -0
  487. package/dist/chunk-FQ6UW7IY.js +91 -0
  488. package/dist/chunk-FQ6UW7IY.js.map +1 -0
  489. package/dist/chunk-FXNYV5Z6.js +125 -0
  490. package/dist/chunk-FYTLKHEN.js +204 -0
  491. package/dist/chunk-FYTLKHEN.js.map +1 -0
  492. package/dist/chunk-GE2EKMDT.js +90 -0
  493. package/dist/chunk-GE2EKMDT.js.map +1 -0
  494. package/dist/chunk-GEXM6DNR.js +76 -0
  495. package/dist/chunk-GGWICBJD.js +58 -0
  496. package/dist/chunk-GIRRCEVH.js +116 -0
  497. package/dist/chunk-GN5EZPSL.js +195 -0
  498. package/dist/chunk-GN5EZPSL.js.map +1 -0
  499. package/dist/chunk-GUVBR62X.js +62 -0
  500. package/dist/chunk-GUW5BUK7.js +58 -0
  501. package/dist/chunk-GVGJMH77.js +86 -0
  502. package/dist/chunk-GVGJMH77.js.map +1 -0
  503. package/dist/chunk-GVLMG5WQ.js +143 -0
  504. package/dist/chunk-GVLMG5WQ.js.map +1 -0
  505. package/dist/chunk-GVLZZCSX.js +38 -0
  506. package/dist/chunk-GW64UQXI.js +213 -0
  507. package/dist/chunk-GW64UQXI.js.map +1 -0
  508. package/dist/chunk-GXCOXJS3.js +41 -0
  509. package/dist/chunk-H2YBVBPW.js +75 -0
  510. package/dist/chunk-H3B5PIM3.js +125 -0
  511. package/dist/chunk-H3B5PIM3.js.map +1 -0
  512. package/dist/chunk-H6YVO55T.js +62 -0
  513. package/dist/chunk-H6YVO55T.js.map +1 -0
  514. package/dist/chunk-HAQMKV5P.js +168 -0
  515. package/dist/chunk-HBICO6AX.js +218 -0
  516. package/dist/chunk-HBICO6AX.js.map +1 -0
  517. package/dist/chunk-HC5ZSCRG.js +139 -0
  518. package/dist/chunk-HC5ZSCRG.js.map +1 -0
  519. package/dist/chunk-HD6ZNARS.js +89 -0
  520. package/dist/chunk-HD6ZNARS.js.map +1 -0
  521. package/dist/chunk-HJWOB62A.js +276 -0
  522. package/dist/chunk-HJWOB62A.js.map +1 -0
  523. package/dist/chunk-HXEBKOSM.js +329 -0
  524. package/dist/chunk-HXEBKOSM.js.map +1 -0
  525. package/dist/chunk-I2CRLUS7.js +160 -0
  526. package/dist/chunk-I2CRLUS7.js.map +1 -0
  527. package/dist/chunk-I62ALI7F.js +208 -0
  528. package/dist/chunk-I62ALI7F.js.map +1 -0
  529. package/dist/chunk-I6EVBLFX.js +123 -0
  530. package/dist/chunk-I6EVBLFX.js.map +1 -0
  531. package/dist/chunk-IBGX6H4J.js +121 -0
  532. package/dist/chunk-IFSUKWE7.js +219 -0
  533. package/dist/chunk-IJFAF3A7.js +64 -0
  534. package/dist/chunk-IL7JZKXY.js +159 -0
  535. package/dist/chunk-IUCTYNIR.js +287 -0
  536. package/dist/chunk-IUCTYNIR.js.map +1 -0
  537. package/dist/chunk-IVIHRZEY.js +96 -0
  538. package/dist/chunk-IVIHRZEY.js.map +1 -0
  539. package/dist/chunk-IWOVENC3.js +83 -0
  540. package/dist/chunk-IYTBTK2M.js +170 -0
  541. package/dist/chunk-IYTBTK2M.js.map +1 -0
  542. package/dist/chunk-J4NXTSJY.js +223 -0
  543. package/dist/chunk-J4NXTSJY.js.map +1 -0
  544. package/dist/chunk-JCBIPBGZ.js +235 -0
  545. package/dist/chunk-JCBIPBGZ.js.map +1 -0
  546. package/dist/chunk-JFBEZXNL.js +88 -0
  547. package/dist/chunk-JFEEV3XI.js +132 -0
  548. package/dist/chunk-JH7EEJEQ.js +99 -0
  549. package/dist/chunk-JH7EEJEQ.js.map +1 -0
  550. package/dist/chunk-JHEGDDZQ.js +176 -0
  551. package/dist/chunk-JHEGDDZQ.js.map +1 -0
  552. package/dist/chunk-JOR6E23V.js +196 -0
  553. package/dist/chunk-JWK4GI2I.js +99 -0
  554. package/dist/chunk-JWK4GI2I.js.map +1 -0
  555. package/dist/chunk-JYRQBZEV.js +41 -0
  556. package/dist/chunk-K7WSPGI7.js +181 -0
  557. package/dist/chunk-K7WSPGI7.js.map +1 -0
  558. package/dist/chunk-KE5MX4PI.js +165 -0
  559. package/dist/chunk-KH25WUSX.js +131 -0
  560. package/dist/chunk-KH25WUSX.js.map +1 -0
  561. package/dist/chunk-KK57AHWS.js +39 -0
  562. package/dist/chunk-KLMP2BYC.js +63 -0
  563. package/dist/chunk-KLPTOVIX.js +52 -0
  564. package/dist/chunk-KLPTOVIX.js.map +1 -0
  565. package/dist/chunk-KLWW67WP.js +252 -0
  566. package/dist/chunk-KLWW67WP.js.map +1 -0
  567. package/dist/chunk-KTYZRAB7.js +108 -0
  568. package/dist/chunk-L4QCIUTJ.js +80 -0
  569. package/dist/chunk-L4QCIUTJ.js.map +1 -0
  570. package/dist/chunk-L4UP5VYS.js +273 -0
  571. package/dist/chunk-L4V2LRKH.js +161 -0
  572. package/dist/chunk-L7SFH3ED.js +171 -0
  573. package/dist/chunk-L7SFH3ED.js.map +1 -0
  574. package/dist/chunk-LDDN254Q.js +77 -0
  575. package/dist/chunk-LI6OLYUB.js +131 -0
  576. package/dist/chunk-LKMMJKXU.js +60 -0
  577. package/dist/chunk-LKMMJKXU.js.map +1 -0
  578. package/dist/chunk-LN46DSMF.js +90 -0
  579. package/dist/chunk-LN46DSMF.js.map +1 -0
  580. package/dist/chunk-LOJK733T.js +165 -0
  581. package/dist/chunk-LVEG6XQL.js +182 -0
  582. package/dist/chunk-LVEG6XQL.js.map +1 -0
  583. package/dist/chunk-LWRI6HGT.js +297 -0
  584. package/dist/chunk-LWRI6HGT.js.map +1 -0
  585. package/dist/chunk-M5BTIIL7.js +173 -0
  586. package/dist/chunk-M5BTIIL7.js.map +1 -0
  587. package/dist/chunk-MBSYD3ZU.js +82 -0
  588. package/dist/chunk-MBSYD3ZU.js.map +1 -0
  589. package/dist/chunk-MGC4QOMP.js +230 -0
  590. package/dist/chunk-MGC4QOMP.js.map +1 -0
  591. package/dist/chunk-MISZGWO7.js +210 -0
  592. package/dist/chunk-MISZGWO7.js.map +1 -0
  593. package/dist/chunk-MLBKACV6.js +308 -0
  594. package/dist/chunk-MLBKACV6.js.map +1 -0
  595. package/dist/chunk-MRB6GROF.js +328 -0
  596. package/dist/chunk-MRB6GROF.js.map +1 -0
  597. package/dist/chunk-MVKYNDT2.js +214 -0
  598. package/dist/chunk-MVKYNDT2.js.map +1 -0
  599. package/dist/chunk-MXZ43UCQ.js +53 -0
  600. package/dist/chunk-MZMGQKT3.js +203 -0
  601. package/dist/chunk-N3GAFIXG.js +93 -0
  602. package/dist/chunk-N3GAFIXG.js.map +1 -0
  603. package/dist/chunk-N6CSXHFJ.js +194 -0
  604. package/dist/chunk-NE6XUN5Z.js +41 -0
  605. package/dist/chunk-NEGCJNGJ.js +153 -0
  606. package/dist/chunk-NEGCJNGJ.js.map +1 -0
  607. package/dist/chunk-NIS523UM.js +26 -0
  608. package/dist/chunk-NNQLDFKG.js +151 -0
  609. package/dist/chunk-NNQLDFKG.js.map +1 -0
  610. package/dist/chunk-NPP44TQG.js +278 -0
  611. package/dist/chunk-NPP44TQG.js.map +1 -0
  612. package/dist/chunk-NSJVQ5YJ.js +117 -0
  613. package/dist/chunk-NSJVQ5YJ.js.map +1 -0
  614. package/dist/chunk-NVNZFT5X.js +269 -0
  615. package/dist/chunk-NVNZFT5X.js.map +1 -0
  616. package/dist/chunk-NXX3ZQKO.js +149 -0
  617. package/dist/chunk-NXX3ZQKO.js.map +1 -0
  618. package/dist/chunk-OATHOXIU.js +299 -0
  619. package/dist/chunk-OATHOXIU.js.map +1 -0
  620. package/dist/chunk-OGTTJKHI.js +59 -0
  621. package/dist/chunk-OOSD7363.js +249 -0
  622. package/dist/chunk-OOSD7363.js.map +1 -0
  623. package/dist/chunk-OWA7GPWR.js +86 -0
  624. package/dist/chunk-OWA7GPWR.js.map +1 -0
  625. package/dist/chunk-OYP27CYE.js +62 -0
  626. package/dist/chunk-P2UIXDEG.js +136 -0
  627. package/dist/chunk-P2UIXDEG.js.map +1 -0
  628. package/dist/chunk-P5JCOFK3.js +66 -0
  629. package/dist/chunk-P5JCOFK3.js.map +1 -0
  630. package/dist/chunk-PGGYZU7Q.js +65 -0
  631. package/dist/chunk-PGGYZU7Q.js.map +1 -0
  632. package/dist/chunk-PGNJCUDA.js +201 -0
  633. package/dist/chunk-PGNJCUDA.js.map +1 -0
  634. package/dist/chunk-PMP6WJJS.js +141 -0
  635. package/dist/chunk-PMP6WJJS.js.map +1 -0
  636. package/dist/chunk-PNLM35GU.js +159 -0
  637. package/dist/chunk-PYC4CWCQ.js +76 -0
  638. package/dist/chunk-PYC4CWCQ.js.map +1 -0
  639. package/dist/chunk-PYIASGI7.js +237 -0
  640. package/dist/chunk-PYIASGI7.js.map +1 -0
  641. package/dist/chunk-Q4BQYYPU.js +93 -0
  642. package/dist/chunk-Q4BQYYPU.js.map +1 -0
  643. package/dist/chunk-QAP3FW33.js +240 -0
  644. package/dist/chunk-QG73YT6D.js +82 -0
  645. package/dist/chunk-QG73YT6D.js.map +1 -0
  646. package/dist/chunk-QHUTSAFG.js +194 -0
  647. package/dist/chunk-QHUTSAFG.js.map +1 -0
  648. package/dist/chunk-QKMJUOVH.js +51 -0
  649. package/dist/chunk-QKMJUOVH.js.map +1 -0
  650. package/dist/chunk-QO6QWBDI.js +142 -0
  651. package/dist/chunk-QTWXVOPT.js +240 -0
  652. package/dist/chunk-QWHURFJ3.js +134 -0
  653. package/dist/chunk-QY4XNTNG.js +98 -0
  654. package/dist/chunk-QY4XNTNG.js.map +1 -0
  655. package/dist/chunk-R75DZ3AK.js +81 -0
  656. package/dist/chunk-RMCNEKBZ.js +19 -0
  657. package/dist/chunk-RNEYZTE4.js +24 -0
  658. package/dist/chunk-RNEYZTE4.js.map +1 -0
  659. package/dist/chunk-RNIU447I.js +175 -0
  660. package/dist/chunk-RNIU447I.js.map +1 -0
  661. package/dist/chunk-RORP6DWR.js +228 -0
  662. package/dist/chunk-RORP6DWR.js.map +1 -0
  663. package/dist/chunk-ROT57BP4.js +187 -0
  664. package/dist/chunk-ROT57BP4.js.map +1 -0
  665. package/dist/chunk-RV4Y4O67.js +103 -0
  666. package/dist/chunk-RV4Y4O67.js.map +1 -0
  667. package/dist/chunk-RWTFZ7J5.js +225 -0
  668. package/dist/chunk-SAIO6EBW.js +92 -0
  669. package/dist/chunk-SAIO6EBW.js.map +1 -0
  670. package/dist/chunk-SKX4NA6E.js +241 -0
  671. package/dist/chunk-SN2YMCTL.js +82 -0
  672. package/dist/chunk-SX3MEC3Q.js +127 -0
  673. package/dist/chunk-T3WHW7ZC.js +74 -0
  674. package/dist/chunk-TBF2CPJW.js +157 -0
  675. package/dist/chunk-TBF2CPJW.js.map +1 -0
  676. package/dist/chunk-TCAQOUIB.js +22 -0
  677. package/dist/chunk-TCAQOUIB.js.map +1 -0
  678. package/dist/chunk-TEUX42YW.js +156 -0
  679. package/dist/chunk-TFZI36UD.js +64 -0
  680. package/dist/chunk-TFZI36UD.js.map +1 -0
  681. package/dist/chunk-TIQXDPIX.js +46 -0
  682. package/dist/chunk-TIQXDPIX.js.map +1 -0
  683. package/dist/chunk-TOXTJ7MU.js +144 -0
  684. package/dist/chunk-TPQVLBTY.js +183 -0
  685. package/dist/chunk-TTAP5XFX.js +85 -0
  686. package/dist/chunk-TU3EGIKB.js +41 -0
  687. package/dist/chunk-U2IRCTAR.js +43 -0
  688. package/dist/chunk-U4H6MGVE.js +186 -0
  689. package/dist/chunk-U4H6MGVE.js.map +1 -0
  690. package/dist/chunk-UCA47HM7.js +21 -0
  691. package/dist/chunk-UCTJJYVC.js +120 -0
  692. package/dist/chunk-UFLTL2RJ.js +134 -0
  693. package/dist/chunk-ULIM42PE.js +98 -0
  694. package/dist/chunk-ULIM42PE.js.map +1 -0
  695. package/dist/chunk-UMP5MQ7X.js +303 -0
  696. package/dist/chunk-UMP5MQ7X.js.map +1 -0
  697. package/dist/chunk-UN5INW6K.js +86 -0
  698. package/dist/chunk-UO7ERXYX.js +288 -0
  699. package/dist/chunk-UUUMNJPP.js +222 -0
  700. package/dist/chunk-UUUMNJPP.js.map +1 -0
  701. package/dist/chunk-V3LOHY4N.js +215 -0
  702. package/dist/chunk-V3LOHY4N.js.map +1 -0
  703. package/dist/chunk-V5KKBMAT.js +86 -0
  704. package/dist/chunk-V5KKBMAT.js.map +1 -0
  705. package/dist/chunk-VAGHW3K2.js +64 -0
  706. package/dist/chunk-VDGJV7MP.js +114 -0
  707. package/dist/chunk-VDGJV7MP.js.map +1 -0
  708. package/dist/chunk-VFHGILXI.js +294 -0
  709. package/dist/chunk-VFHGILXI.js.map +1 -0
  710. package/dist/chunk-VR3U4QA5.js +186 -0
  711. package/dist/chunk-VR3U4QA5.js.map +1 -0
  712. package/dist/chunk-VRDNUY4H.js +138 -0
  713. package/dist/chunk-VV7MGILP.js +181 -0
  714. package/dist/chunk-VYSFKR32.js +97 -0
  715. package/dist/chunk-VYSFKR32.js.map +1 -0
  716. package/dist/chunk-VZAGBDZ2.js +107 -0
  717. package/dist/chunk-W3CLJ7JE.js +175 -0
  718. package/dist/chunk-W5ENK5CM.js +182 -0
  719. package/dist/chunk-WC3W36AM.js +73 -0
  720. package/dist/chunk-WNUZK7NS.js +308 -0
  721. package/dist/chunk-WNUZK7NS.js.map +1 -0
  722. package/dist/chunk-WTOYEWW6.js +145 -0
  723. package/dist/chunk-WTOYEWW6.js.map +1 -0
  724. package/dist/chunk-WVC3BG6J.js +91 -0
  725. package/dist/chunk-WW4N2LRM.js +170 -0
  726. package/dist/chunk-WYXNFH5Y.js +42 -0
  727. package/dist/chunk-WYXNFH5Y.js.map +1 -0
  728. package/dist/chunk-X2AKLDPW.js +28 -0
  729. package/dist/chunk-X4F32GUB.js +94 -0
  730. package/dist/chunk-X4F32GUB.js.map +1 -0
  731. package/dist/chunk-X4PS3E3V.js +40 -0
  732. package/dist/chunk-X4PS3E3V.js.map +1 -0
  733. package/dist/chunk-X7PVFAYJ.js +54 -0
  734. package/dist/chunk-XEYLYUDM.js +147 -0
  735. package/dist/chunk-XLYFOBBT.js +180 -0
  736. package/dist/chunk-XLYFOBBT.js.map +1 -0
  737. package/dist/chunk-XREYLKUX.js +270 -0
  738. package/dist/chunk-XREYLKUX.js.map +1 -0
  739. package/dist/chunk-XSMMFCMQ.js +183 -0
  740. package/dist/chunk-XWWFBH2G.js +148 -0
  741. package/dist/chunk-XZBCPL4N.js +266 -0
  742. package/dist/chunk-XZBCPL4N.js.map +1 -0
  743. package/dist/chunk-Y2E73IG2.js +294 -0
  744. package/dist/chunk-Y2E73IG2.js.map +1 -0
  745. package/dist/chunk-YDPUBGJ7.js +190 -0
  746. package/dist/chunk-YG2VQUZO.js +175 -0
  747. package/dist/chunk-YG2VQUZO.js.map +1 -0
  748. package/dist/chunk-YH37X6JT.js +183 -0
  749. package/dist/chunk-YH37X6JT.js.map +1 -0
  750. package/dist/chunk-YLBRXDYH.js +204 -0
  751. package/dist/chunk-YLBRXDYH.js.map +1 -0
  752. package/dist/chunk-YSKGLU2V.js +136 -0
  753. package/dist/chunk-YU647YW4.js +79 -0
  754. package/dist/chunk-YVUD3MY4.js +194 -0
  755. package/dist/chunk-Z35J5B6D.js +156 -0
  756. package/dist/chunk-Z35J5B6D.js.map +1 -0
  757. package/dist/chunk-ZHEZISMI.js +37 -0
  758. package/dist/chunk-ZMC3N23A.js +33 -0
  759. package/dist/chunk-ZQL5RXVE.js +108 -0
  760. package/dist/chunk-ZQL5RXVE.js.map +1 -0
  761. package/dist/chunk-ZTKLKOOO.js +204 -0
  762. package/dist/chunk-ZTKLKOOO.js.map +1 -0
  763. package/dist/chunk-ZTYUKEN3.js +128 -0
  764. package/dist/chunk-ZTYUKEN3.js.map +1 -0
  765. package/dist/chunk-ZUQIOWLN.js +153 -0
  766. package/dist/chunk-ZUQIOWLN.js.map +1 -0
  767. package/dist/chunk-ZW5K4XCQ.js +158 -0
  768. package/dist/chunk-ZWSS3K4F.js +206 -0
  769. package/dist/chunk-ZWSS3K4F.js.map +1 -0
  770. package/dist/chunk-ZXSUWFQX.js +175 -0
  771. package/dist/chunk-ZZM3DOEK.js +99 -0
  772. package/dist/data-display/Alert.js +6 -3
  773. package/dist/data-display/AlertDialog.js +5 -1
  774. package/dist/data-display/AsyncStateContainer.js +12 -8
  775. package/dist/data-display/Avatar.js +6 -9
  776. package/dist/data-display/Badge.js +16 -6
  777. package/dist/data-display/Banner.js +6 -3
  778. package/dist/data-display/CardKit.js +29 -26
  779. package/dist/data-display/Carousel.js +9 -7
  780. package/dist/data-display/Chart.js +10 -8
  781. package/dist/data-display/Chip.js +5 -2
  782. package/dist/data-display/DataGrid.js +2 -2
  783. package/dist/data-display/DataViews.js +117 -114
  784. package/dist/data-display/DescriptionItem.js +3 -2
  785. package/dist/data-display/EmptyState.js +3 -2
  786. package/dist/data-display/ErrorState.js +2 -1
  787. package/dist/data-display/FleetMap.js +23 -21
  788. package/dist/data-display/HoverCard.js +6 -3
  789. package/dist/data-display/InteractiveTooltip.js +6 -2
  790. package/dist/data-display/LazyImage.js +7 -4
  791. package/dist/data-display/Lightbox.js +12 -8
  792. package/dist/data-display/LoadingState.js +7 -4
  793. package/dist/data-display/MapPreview.js +12 -9
  794. package/dist/data-display/Popover.js +4 -1
  795. package/dist/data-display/Progress.js +5 -2
  796. package/dist/data-display/SectionOnboarding.js +8 -4
  797. package/dist/data-display/Sheet.js +8 -6
  798. package/dist/data-display/StatCard.js +8 -4
  799. package/dist/data-display/Stepper.js +5 -1
  800. package/dist/data-display/Table.js +3 -2
  801. package/dist/data-display/Timeline.js +6 -2
  802. package/dist/data-display/TimingDiagram.js +6 -2
  803. package/dist/data-display/Tooltip.js +5 -1
  804. package/dist/feedback/ConfirmAction.js +13 -10
  805. package/dist/feedback/Dialog.js +6 -3
  806. package/dist/feedback/Modal.js +5 -2
  807. package/dist/feedback/NotificationStatusNotice.js +10 -7
  808. package/dist/feedback/Sonner.js +6 -2
  809. package/dist/feedback/StackedModal.js +6 -3
  810. package/dist/feedback/TutorialOverlay.js +5 -2
  811. package/dist/form/AddressAutocomplete.js +10 -9
  812. package/dist/form/Autocomplete.js +2 -2
  813. package/dist/form/Button.js +6 -3
  814. package/dist/form/Calendar.js +3 -3
  815. package/dist/form/CategorySelect.js +15 -12
  816. package/dist/form/CepField.js +8 -5
  817. package/dist/form/Checkbox.js +4 -8
  818. package/dist/form/CodeEditor.js +7 -4
  819. package/dist/form/Command.js +7 -5
  820. package/dist/form/CreatableSelect.js +3 -2
  821. package/dist/form/DateRangePicker.js +11 -10
  822. package/dist/form/Form.js +2 -1
  823. package/dist/form/HeaderActions.js +3 -2
  824. package/dist/form/HeaderButton.js +2 -1
  825. package/dist/form/Input.js +5 -3
  826. package/dist/form/InputOTP.js +5 -2
  827. package/dist/form/Label.js +6 -4
  828. package/dist/form/Menubar.js +8 -6
  829. package/dist/form/PasswordStrength.js +3 -2
  830. package/dist/form/PhoneInput.js +4 -3
  831. package/dist/form/RadioGroup.js +6 -3
  832. package/dist/form/RichTextEditor.js +3 -2
  833. package/dist/form/SearchPalette.js +3 -2
  834. package/dist/form/Select.js +5 -3
  835. package/dist/form/Slider.js +6 -2
  836. package/dist/form/Switch.js +8 -5
  837. package/dist/form/Textarea.js +5 -2
  838. package/dist/form/Toggle.js +5 -2
  839. package/dist/form/ToggleGroup.js +4 -1
  840. package/dist/form/UploadButton.js +3 -2
  841. package/dist/form/total-form.js +35 -32
  842. package/dist/icons.js +7 -5
  843. package/dist/layout/Box.js +7 -5
  844. package/dist/layout/Card.js +6 -3
  845. package/dist/layout/ContentToolbar.js +11 -10
  846. package/dist/layout/Dashboard.js +5 -4
  847. package/dist/layout/Drawer.js +4 -1
  848. package/dist/layout/ScrollArea.js +7 -4
  849. package/dist/layout/SettingsLayout.js +9 -8
  850. package/dist/layout/Sidebar.js +4 -1
  851. package/dist/layout/Skeleton.js +6 -3
  852. package/dist/layout/Stack.js +8 -6
  853. package/dist/layout/TableFilter.js +2 -1
  854. package/dist/native/chunks/chunk-4ZAULIDG.js +339 -0
  855. package/dist/native/chunks/chunk-4ZAULIDG.js.map +1 -0
  856. package/dist/native/chunks/chunk-JBYDLWQA.js +295 -0
  857. package/dist/native/chunks/chunk-JBYDLWQA.js.map +1 -0
  858. package/dist/native/chunks/chunk-ONXKFA5Z.js +326 -0
  859. package/dist/native/chunks/chunk-ONXKFA5Z.js.map +1 -0
  860. package/dist/native/chunks/chunk-SZF56GVJ.js +218 -0
  861. package/dist/native/chunks/chunk-SZF56GVJ.js.map +1 -0
  862. package/dist/native/chunks/chunk-ZRQHLTYG.js +93 -0
  863. package/dist/native/chunks/chunk-ZRQHLTYG.js.map +1 -0
  864. package/dist/native/data-display/Alert.js +6 -3
  865. package/dist/native/data-display/Alert.js.map +1 -1
  866. package/dist/native/data-display/Avatar.js +7 -3
  867. package/dist/native/data-display/Avatar.js.map +1 -1
  868. package/dist/native/data-display/Badge.js +2 -8
  869. package/dist/native/data-display/Badge.js.map +1 -1
  870. package/dist/native/data-display/EmptyState.js +3 -2
  871. package/dist/native/data-display/ErrorState.js +2 -1
  872. package/dist/native/data-display/ErrorState.js.map +1 -1
  873. package/dist/native/data-display/FleetMap.js +4 -3
  874. package/dist/native/data-display/FleetMap.js.map +1 -1
  875. package/dist/native/feedback/Dialog.js +6 -3
  876. package/dist/native/feedback/Dialog.js.map +1 -1
  877. package/dist/native/form/Button.js +2 -1
  878. package/dist/native/form/Checkbox.js +4 -2
  879. package/dist/native/form/Checkbox.js.map +1 -1
  880. package/dist/native/form/Input.js +2 -1
  881. package/dist/native/form/Input.js.map +1 -1
  882. package/dist/native/form/Select.js +5 -2
  883. package/dist/native/form/Select.js.map +1 -1
  884. package/dist/native/form/Switch.js +15 -6
  885. package/dist/native/form/Switch.js.map +1 -1
  886. package/dist/native/layout/Card.js +8 -5
  887. package/dist/native/layout/Card.js.map +1 -1
  888. package/dist/native/layout/Skeleton.js +2 -1
  889. package/dist/native/tokens.js +30 -0
  890. package/dist/native/typography/Heading.js +4 -1
  891. package/dist/native/typography/Heading.js.map +1 -1
  892. package/dist/navigation/AppHeader.js +20 -18
  893. package/dist/navigation/Breadcrumbs.js +7 -3
  894. package/dist/navigation/CommandPalette.js +7 -3
  895. package/dist/navigation/ContextMenu.js +5 -1
  896. package/dist/navigation/DropdownMenu.js +5 -1
  897. package/dist/navigation/NavigationMenu.js +10 -6
  898. package/dist/navigation/Pagination.js +3 -2
  899. package/dist/navigation/Tabs.js +3 -2
  900. package/dist/provider.js +7 -5
  901. package/dist/social-login-button.js +14 -11
  902. package/dist/tokens.js +63 -9
  903. package/dist/types/components/data-display/Alert/Alert.d.ts.map +1 -1
  904. package/dist/types/components/data-display/Alert/Alert.metrics.d.ts.map +1 -1
  905. package/dist/types/components/data-display/Alert/Alert.styles.d.ts.map +1 -1
  906. package/dist/types/components/data-display/AlertDialog/AlertDialog.d.ts.map +1 -1
  907. package/dist/types/components/data-display/Avatar/Avatar.metrics.d.ts.map +1 -1
  908. package/dist/types/components/data-display/Avatar/Avatar.view.d.ts.map +1 -1
  909. package/dist/types/components/data-display/Badge/Badge.metrics.d.ts +1 -1
  910. package/dist/types/components/data-display/Badge/Badge.metrics.d.ts.map +1 -1
  911. package/dist/types/components/data-display/Badge/Badge.styles.d.ts +3 -2
  912. package/dist/types/components/data-display/Badge/Badge.styles.d.ts.map +1 -1
  913. package/dist/types/components/data-display/Badge/Badge.variants.d.ts.map +1 -1
  914. package/dist/types/components/data-display/Badge/BadgeContent.d.ts.map +1 -1
  915. package/dist/types/components/data-display/Banner/Banner.d.ts.map +1 -1
  916. package/dist/types/components/data-display/Banner/Banner.styles.d.ts.map +1 -1
  917. package/dist/types/components/data-display/CardKit/list-card-parts.d.ts.map +1 -1
  918. package/dist/types/components/data-display/Carousel/Carousel.parts.d.ts.map +1 -1
  919. package/dist/types/components/data-display/Carousel/Carousel.slide.d.ts.map +1 -1
  920. package/dist/types/components/data-display/Chart/Chart.d.ts.map +1 -1
  921. package/dist/types/components/data-display/Chart/chart-internals.d.ts +1 -1
  922. package/dist/types/components/data-display/Chart/chart-internals.d.ts.map +1 -1
  923. package/dist/types/components/data-display/Chart/chart-renderers.d.ts.map +1 -1
  924. package/dist/types/components/data-display/Chip/Chip.styles.d.ts.map +1 -1
  925. package/dist/types/components/data-display/DataViews/SaveViewModal.d.ts.map +1 -1
  926. package/dist/types/components/data-display/DataViews/base-card.d.ts.map +1 -1
  927. package/dist/types/components/data-display/DataViews/base-list-card-slots.d.ts.map +1 -1
  928. package/dist/types/components/data-display/DataViews/card-surface.d.ts.map +1 -1
  929. package/dist/types/components/data-display/DataViews/data-views-bar-controls.d.ts.map +1 -1
  930. package/dist/types/components/data-display/DataViews/data-views-columns-tab.d.ts.map +1 -1
  931. package/dist/types/components/data-display/DataViews/data-views-display-panel.d.ts.map +1 -1
  932. package/dist/types/components/data-display/DataViews/data-views-display-tabs.d.ts.map +1 -1
  933. package/dist/types/components/data-display/DataViews/data-views-export.d.ts.map +1 -1
  934. package/dist/types/components/data-display/DataViews/data-views-filter-panel.d.ts.map +1 -1
  935. package/dist/types/components/data-display/DataViews/data-views-grid-bodies.d.ts.map +1 -1
  936. package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts.map +1 -1
  937. package/dist/types/components/data-display/DataViews/data-views-more-filters.d.ts.map +1 -1
  938. package/dist/types/components/data-display/DataViews/data-views-preset-chips.d.ts.map +1 -1
  939. package/dist/types/components/data-display/DataViews/data-views-range-pill.d.ts.map +1 -1
  940. package/dist/types/components/data-display/DataViews/data-views-scopes.d.ts.map +1 -1
  941. package/dist/types/components/data-display/DataViews/data-views-search.d.ts.map +1 -1
  942. package/dist/types/components/data-display/DataViews/data-views-view-nav.d.ts.map +1 -1
  943. package/dist/types/components/data-display/DataViews/list-card-cells.d.ts.map +1 -1
  944. package/dist/types/components/data-display/EmptyState/EmptyState.metrics.d.ts +1 -1
  945. package/dist/types/components/data-display/EmptyState/EmptyState.metrics.d.ts.map +1 -1
  946. package/dist/types/components/data-display/ErrorState/ErrorState.d.ts.map +1 -1
  947. package/dist/types/components/data-display/HoverCard/HoverCard.styles.d.ts.map +1 -1
  948. package/dist/types/components/data-display/InteractiveTooltip/InteractiveTooltip.styles.d.ts +1 -1
  949. package/dist/types/components/data-display/InteractiveTooltip/InteractiveTooltip.styles.d.ts.map +1 -1
  950. package/dist/types/components/data-display/LazyImage/LazyImage.d.ts.map +1 -1
  951. package/dist/types/components/data-display/Lightbox/Lightbox.constants.d.ts +14 -13
  952. package/dist/types/components/data-display/Lightbox/Lightbox.constants.d.ts.map +1 -1
  953. package/dist/types/components/data-display/Lightbox/Lightbox.d.ts.map +1 -1
  954. package/dist/types/components/data-display/Lightbox/LightboxStage.d.ts.map +1 -1
  955. package/dist/types/components/data-display/Lightbox/LightboxThumbnails.d.ts.map +1 -1
  956. package/dist/types/components/data-display/MapPreview/MapDecorations.d.ts.map +1 -1
  957. package/dist/types/components/data-display/MapPreview/MapMarkers.d.ts.map +1 -1
  958. package/dist/types/components/data-display/MapPreview/mapSurface.d.ts.map +1 -1
  959. package/dist/types/components/data-display/Popover/Popover.d.ts.map +1 -1
  960. package/dist/types/components/data-display/Progress/Progress.styles.d.ts +1 -1
  961. package/dist/types/components/data-display/Progress/Progress.styles.d.ts.map +1 -1
  962. package/dist/types/components/data-display/Sheet/Sheet.parts.d.ts.map +1 -1
  963. package/dist/types/components/data-display/Sheet/Sheet.styles.d.ts.map +1 -1
  964. package/dist/types/components/data-display/StatCard/StatCard.d.ts.map +1 -1
  965. package/dist/types/components/data-display/Stepper/Stepper.d.ts.map +1 -1
  966. package/dist/types/components/data-display/Table/Table.styles.d.ts.map +1 -1
  967. package/dist/types/components/data-display/Timeline/TimelineRow.d.ts.map +1 -1
  968. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.d.ts.map +1 -1
  969. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.views.d.ts +3 -8
  970. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.views.d.ts.map +1 -1
  971. package/dist/types/components/data-display/Tooltip/Tooltip.d.ts.map +1 -1
  972. package/dist/types/components/feedback/Dialog/Dialog.metrics.d.ts.map +1 -1
  973. package/dist/types/components/feedback/Dialog/Dialog.styles.d.ts.map +1 -1
  974. package/dist/types/components/feedback/Modal/Modal.styles.d.ts.map +1 -1
  975. package/dist/types/components/feedback/Sonner/Sonner.d.ts.map +1 -1
  976. package/dist/types/components/feedback/Sonner/SonnerToast.d.ts.map +1 -1
  977. package/dist/types/components/feedback/StackedModal/StackedModal.styles.d.ts.map +1 -1
  978. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.d.ts.map +1 -1
  979. package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts.map +1 -1
  980. package/dist/types/components/form/AddressAutocomplete/AddressOption.d.ts.map +1 -1
  981. package/dist/types/components/form/Button/Button.d.ts.map +1 -1
  982. package/dist/types/components/form/Button/Button.metrics.d.ts.map +1 -1
  983. package/dist/types/components/form/Button/Button.styles.d.ts.map +1 -1
  984. package/dist/types/components/form/CategorySelect/CategoryPanelFoot.d.ts.map +1 -1
  985. package/dist/types/components/form/CategorySelect/CategoryPanelHead.d.ts.map +1 -1
  986. package/dist/types/components/form/CategorySelect/CategoryQuickActions.d.ts.map +1 -1
  987. package/dist/types/components/form/CategorySelect/CategorySelect.styles.d.ts +2 -2
  988. package/dist/types/components/form/CategorySelect/CategorySelect.styles.d.ts.map +1 -1
  989. package/dist/types/components/form/Checkbox/Checkbox.metrics.d.ts +1 -6
  990. package/dist/types/components/form/Checkbox/Checkbox.metrics.d.ts.map +1 -1
  991. package/dist/types/components/form/CodeEditor/CodeEditor.d.ts.map +1 -1
  992. package/dist/types/components/form/CodeEditor/CodeEditor.monaco.d.ts +2 -1
  993. package/dist/types/components/form/CodeEditor/CodeEditor.monaco.d.ts.map +1 -1
  994. package/dist/types/components/form/CodeEditor/CodeEditorToolbar.d.ts.map +1 -1
  995. package/dist/types/components/form/Command/Command.d.ts.map +1 -1
  996. package/dist/types/components/form/Command/Command.styles.d.ts +3 -2
  997. package/dist/types/components/form/Command/Command.styles.d.ts.map +1 -1
  998. package/dist/types/components/form/DateRangePicker/DateRangePickerQuickList.d.ts.map +1 -1
  999. package/dist/types/components/form/Form/Form.d.ts.map +1 -1
  1000. package/dist/types/components/form/HeaderButton/HeaderButton.d.ts.map +1 -1
  1001. package/dist/types/components/form/Input/Input.metrics.d.ts +2 -2
  1002. package/dist/types/components/form/Input/Input.metrics.d.ts.map +1 -1
  1003. package/dist/types/components/form/Input/Input.styles.d.ts.map +1 -1
  1004. package/dist/types/components/form/InputOTP/InputOTP.styles.d.ts.map +1 -1
  1005. package/dist/types/components/form/Label/Label.d.ts.map +1 -1
  1006. package/dist/types/components/form/Menubar/Menubar.item.d.ts.map +1 -1
  1007. package/dist/types/components/form/PasswordStrength/PasswordStrength.d.ts.map +1 -1
  1008. package/dist/types/components/form/PasswordStrength/PasswordStrength.helpers.d.ts +2 -2
  1009. package/dist/types/components/form/PasswordStrength/PasswordStrength.helpers.d.ts.map +1 -1
  1010. package/dist/types/components/form/PhoneInput/PhoneInput.d.ts.map +1 -1
  1011. package/dist/types/components/form/RadioGroup/RadioGroup.styles.d.ts.map +1 -1
  1012. package/dist/types/components/form/RichTextEditor/RichTextEditor.d.ts.map +1 -1
  1013. package/dist/types/components/form/SearchPalette/SearchPalette.parts.d.ts.map +1 -1
  1014. package/dist/types/components/form/Select/Select.d.ts.map +1 -1
  1015. package/dist/types/components/form/Select/Select.metrics.d.ts +1 -1
  1016. package/dist/types/components/form/Select/Select.metrics.d.ts.map +1 -1
  1017. package/dist/types/components/form/Slider/Slider.styles.d.ts.map +1 -1
  1018. package/dist/types/components/form/Switch/Switch.metrics.d.ts +3 -3
  1019. package/dist/types/components/form/Switch/Switch.metrics.d.ts.map +1 -1
  1020. package/dist/types/components/form/Switch/Switch.parts.d.ts.map +1 -1
  1021. package/dist/types/components/form/Switch/Switch.styles.d.ts.map +1 -1
  1022. package/dist/types/components/form/Textarea/Textarea.d.ts.map +1 -1
  1023. package/dist/types/components/form/Textarea/Textarea.styles.d.ts.map +1 -1
  1024. package/dist/types/components/form/Textarea/TextareaRichEditor.d.ts.map +1 -1
  1025. package/dist/types/components/form/Toggle/Toggle.styles.d.ts +1 -1
  1026. package/dist/types/components/form/Toggle/Toggle.styles.d.ts.map +1 -1
  1027. package/dist/types/components/form/ToggleGroup/ToggleGroup.d.ts.map +1 -1
  1028. package/dist/types/components/form/UploadButton/UploadButton.parts.d.ts.map +1 -1
  1029. package/dist/types/components/form/total-form/SubmitButton.d.ts.map +1 -1
  1030. package/dist/types/components/layout/Card/Card.metrics.d.ts +6 -5
  1031. package/dist/types/components/layout/Card/Card.metrics.d.ts.map +1 -1
  1032. package/dist/types/components/layout/Card/Card.styles.d.ts.map +1 -1
  1033. package/dist/types/components/layout/ContentToolbar/ColumnsMenu.d.ts.map +1 -1
  1034. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts.map +1 -1
  1035. package/dist/types/components/layout/ContentToolbar/FilterTrigger.d.ts.map +1 -1
  1036. package/dist/types/components/layout/ContentToolbar/MultiSelectDropdown.d.ts.map +1 -1
  1037. package/dist/types/components/layout/ContentToolbar/MultiSelectTriggers.d.ts.map +1 -1
  1038. package/dist/types/components/layout/ContentToolbar/SavedViewsMenu.d.ts.map +1 -1
  1039. package/dist/types/components/layout/ContentToolbar/SortByDropdown.d.ts.map +1 -1
  1040. package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts.map +1 -1
  1041. package/dist/types/components/layout/Dashboard/Dashboard.d.ts.map +1 -1
  1042. package/dist/types/components/layout/Dashboard/DashboardParts.d.ts.map +1 -1
  1043. package/dist/types/components/layout/Drawer/Drawer.d.ts.map +1 -1
  1044. package/dist/types/components/layout/ScrollArea/ScrollArea.styles.d.ts.map +1 -1
  1045. package/dist/types/components/layout/SettingsLayout/SettingsPanel.d.ts.map +1 -1
  1046. package/dist/types/components/layout/SettingsLayout/SettingsSectionChips.d.ts.map +1 -1
  1047. package/dist/types/components/layout/SettingsLayout/SettingsSectionHeader.d.ts.map +1 -1
  1048. package/dist/types/components/layout/SettingsLayout/SettingsStatusMarker.d.ts.map +1 -1
  1049. package/dist/types/components/layout/Sidebar/Sidebar.d.ts.map +1 -1
  1050. package/dist/types/components/layout/Skeleton/Skeleton.metrics.d.ts +4 -3
  1051. package/dist/types/components/layout/Skeleton/Skeleton.metrics.d.ts.map +1 -1
  1052. package/dist/types/components/layout/Skeleton/Skeleton.styles.d.ts.map +1 -1
  1053. package/dist/types/components/layout/TableFilter/TableFilter.d.ts.map +1 -1
  1054. package/dist/types/components/navigation/AppHeader/AppHeader.brand.d.ts.map +1 -1
  1055. package/dist/types/components/navigation/AppHeader/AppHeader.d.ts.map +1 -1
  1056. package/dist/types/components/navigation/AppHeader/AppHeader.identity.d.ts.map +1 -1
  1057. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbEntry.d.ts.map +1 -1
  1058. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  1059. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.styles.d.ts.map +1 -1
  1060. package/dist/types/components/navigation/CommandPalette/CommandPalette.d.ts.map +1 -1
  1061. package/dist/types/components/navigation/CommandPalette/CommandPaletteResults.d.ts.map +1 -1
  1062. package/dist/types/components/navigation/CommandPalette/ShortcutChip.d.ts.map +1 -1
  1063. package/dist/types/components/navigation/ContextMenu/ContextMenu.d.ts.map +1 -1
  1064. package/dist/types/components/navigation/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  1065. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.shell.d.ts.map +1 -1
  1066. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.styles.d.ts.map +1 -1
  1067. package/dist/types/components/navigation/NavigationMenu/NavigationMenuItem.d.ts.map +1 -1
  1068. package/dist/types/components/navigation/Pagination/Pagination.styles.d.ts.map +1 -1
  1069. package/dist/types/components/navigation/Tabs/Tabs.d.ts.map +1 -1
  1070. package/dist/types/components/navigation/Tabs/Tabs.styles.d.ts.map +1 -1
  1071. package/dist/types/components/typography/Blockquote/Blockquote.d.ts.map +1 -1
  1072. package/dist/types/components/typography/Code/Code.d.ts.map +1 -1
  1073. package/dist/types/components/typography/Heading/Heading.metrics.d.ts.map +1 -1
  1074. package/dist/types/components/typography/Heading/Heading.styles.d.ts.map +1 -1
  1075. package/dist/types/components/typography/Paragraph/Paragraph.d.ts.map +1 -1
  1076. package/dist/types/components/typography/Text/Text.d.ts.map +1 -1
  1077. package/dist/types/components/utility/AnimatedIcon/AnimatedIcon.styles.d.ts +2 -1
  1078. package/dist/types/components/utility/AnimatedIcon/AnimatedIcon.styles.d.ts.map +1 -1
  1079. package/dist/types/components/utility/WorkflowStep/WorkflowStep.helpers.d.ts.map +1 -1
  1080. package/dist/types/components/utility/WorkflowStep/WorkflowStep.parts.d.ts.map +1 -1
  1081. package/dist/types/icons/Icon.d.ts.map +1 -1
  1082. package/dist/types/social-login-button/social-login-button.d.ts.map +1 -1
  1083. package/dist/types/tokens/ink.core.d.ts +145 -0
  1084. package/dist/types/tokens/ink.core.d.ts.map +1 -0
  1085. package/dist/types/tokens/ink.d.ts +130 -0
  1086. package/dist/types/tokens/ink.d.ts.map +1 -0
  1087. package/dist/types/tokens/scales.d.ts +2 -0
  1088. package/dist/types/tokens/scales.d.ts.map +1 -1
  1089. package/dist/types-native/components/data-display/Alert/Alert.metrics.d.ts.map +1 -1
  1090. package/dist/types-native/components/data-display/Avatar/Avatar.metrics.d.ts.map +1 -1
  1091. package/dist/types-native/components/data-display/Badge/Badge.metrics.d.ts +1 -1
  1092. package/dist/types-native/components/data-display/Badge/Badge.metrics.d.ts.map +1 -1
  1093. package/dist/types-native/components/data-display/EmptyState/EmptyState.metrics.d.ts +1 -1
  1094. package/dist/types-native/components/data-display/EmptyState/EmptyState.metrics.d.ts.map +1 -1
  1095. package/dist/types-native/components/feedback/Dialog/Dialog.metrics.d.ts.map +1 -1
  1096. package/dist/types-native/components/form/Button/Button.metrics.d.ts.map +1 -1
  1097. package/dist/types-native/components/form/Checkbox/Checkbox.metrics.d.ts +1 -6
  1098. package/dist/types-native/components/form/Checkbox/Checkbox.metrics.d.ts.map +1 -1
  1099. package/dist/types-native/components/form/Input/Input.metrics.d.ts +2 -2
  1100. package/dist/types-native/components/form/Input/Input.metrics.d.ts.map +1 -1
  1101. package/dist/types-native/components/form/Select/Select.metrics.d.ts +1 -1
  1102. package/dist/types-native/components/form/Select/Select.metrics.d.ts.map +1 -1
  1103. package/dist/types-native/components/form/Switch/Switch.metrics.d.ts +3 -3
  1104. package/dist/types-native/components/form/Switch/Switch.metrics.d.ts.map +1 -1
  1105. package/dist/types-native/components/layout/Card/Card.metrics.d.ts +6 -5
  1106. package/dist/types-native/components/layout/Card/Card.metrics.d.ts.map +1 -1
  1107. package/dist/types-native/components/layout/Skeleton/Skeleton.metrics.d.ts +4 -3
  1108. package/dist/types-native/components/layout/Skeleton/Skeleton.metrics.d.ts.map +1 -1
  1109. package/dist/types-native/components/typography/Heading/Heading.metrics.d.ts.map +1 -1
  1110. package/dist/types-native/tokens/index.native.d.ts +1 -0
  1111. package/dist/types-native/tokens/index.native.d.ts.map +1 -1
  1112. package/dist/types-native/tokens/ink.core.d.ts +145 -0
  1113. package/dist/types-native/tokens/ink.core.d.ts.map +1 -0
  1114. package/dist/typography/Blockquote.js +5 -1
  1115. package/dist/typography/Code.js +5 -1
  1116. package/dist/typography/Heading.js +5 -3
  1117. package/dist/typography/Paragraph.js +2 -8
  1118. package/dist/typography/Text.js +2 -1
  1119. package/dist/user-avatar.js +14 -11
  1120. package/dist/utility/AnimatedIcon.js +6 -2
  1121. package/dist/utility/WorkflowStep.js +8 -4
  1122. package/package.json +1 -1
  1123. package/src/components/data-display/Alert/Alert.metrics.ts +4 -3
  1124. package/src/components/data-display/Alert/Alert.styles.tsx +7 -9
  1125. package/src/components/data-display/Alert/Alert.tsx +6 -4
  1126. package/src/components/data-display/AlertDialog/AlertDialog.tsx +5 -2
  1127. package/src/components/data-display/Avatar/Avatar.metrics.ts +4 -3
  1128. package/src/components/data-display/Avatar/Avatar.view.tsx +11 -6
  1129. package/src/components/data-display/Badge/Badge.metrics.ts +3 -7
  1130. package/src/components/data-display/Badge/Badge.styles.ts +9 -12
  1131. package/src/components/data-display/Badge/Badge.variants.ts +15 -13
  1132. package/src/components/data-display/Badge/BadgeContent.tsx +21 -17
  1133. package/src/components/data-display/Banner/Banner.styles.ts +6 -4
  1134. package/src/components/data-display/Banner/Banner.tsx +2 -1
  1135. package/src/components/data-display/CardKit/list-card-parts.tsx +6 -5
  1136. package/src/components/data-display/Carousel/Carousel.parts.tsx +4 -3
  1137. package/src/components/data-display/Carousel/Carousel.slide.tsx +9 -8
  1138. package/src/components/data-display/Carousel/Carousel.styles.ts +7 -7
  1139. package/src/components/data-display/Chart/Chart.tsx +5 -4
  1140. package/src/components/data-display/Chart/chart-context.ts +1 -1
  1141. package/src/components/data-display/Chart/chart-internals.ts +22 -18
  1142. package/src/components/data-display/Chart/chart-renderers.tsx +2 -1
  1143. package/src/components/data-display/Chip/Chip.styles.tsx +7 -5
  1144. package/src/components/data-display/DataViews/SaveViewModal.tsx +2 -1
  1145. package/src/components/data-display/DataViews/base-card.tsx +3 -1
  1146. package/src/components/data-display/DataViews/base-list-card-slots.tsx +4 -3
  1147. package/src/components/data-display/DataViews/card-surface.ts +2 -1
  1148. package/src/components/data-display/DataViews/data-views-bar-controls.tsx +4 -3
  1149. package/src/components/data-display/DataViews/data-views-columns-tab.tsx +3 -2
  1150. package/src/components/data-display/DataViews/data-views-display-panel.tsx +2 -1
  1151. package/src/components/data-display/DataViews/data-views-display-tabs.tsx +3 -2
  1152. package/src/components/data-display/DataViews/data-views-export.tsx +3 -2
  1153. package/src/components/data-display/DataViews/data-views-filter-panel.tsx +2 -1
  1154. package/src/components/data-display/DataViews/data-views-grid-bodies.tsx +3 -2
  1155. package/src/components/data-display/DataViews/data-views-more-fields.tsx +3 -2
  1156. package/src/components/data-display/DataViews/data-views-more-filters.tsx +3 -2
  1157. package/src/components/data-display/DataViews/data-views-preset-chips.tsx +2 -1
  1158. package/src/components/data-display/DataViews/data-views-range-pill.tsx +8 -7
  1159. package/src/components/data-display/DataViews/data-views-scopes.tsx +3 -2
  1160. package/src/components/data-display/DataViews/data-views-search.tsx +4 -3
  1161. package/src/components/data-display/DataViews/data-views-view-nav.tsx +4 -3
  1162. package/src/components/data-display/DataViews/list-card-cells.tsx +3 -2
  1163. package/src/components/data-display/EmptyState/EmptyState.metrics.ts +2 -2
  1164. package/src/components/data-display/ErrorState/ErrorState.tsx +2 -1
  1165. package/src/components/data-display/HoverCard/HoverCard.styles.ts +2 -1
  1166. package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.styles.ts +22 -19
  1167. package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.tsx +1 -1
  1168. package/src/components/data-display/LazyImage/LazyImage.tsx +2 -1
  1169. package/src/components/data-display/Lightbox/Lightbox.constants.ts +13 -8
  1170. package/src/components/data-display/Lightbox/Lightbox.tsx +3 -1
  1171. package/src/components/data-display/Lightbox/LightboxStage.tsx +2 -1
  1172. package/src/components/data-display/Lightbox/LightboxThumbnails.tsx +7 -4
  1173. package/src/components/data-display/MapPreview/MapDecorations.tsx +7 -5
  1174. package/src/components/data-display/MapPreview/MapMarkers.tsx +4 -2
  1175. package/src/components/data-display/MapPreview/mapSurface.ts +14 -13
  1176. package/src/components/data-display/Popover/Popover.tsx +2 -1
  1177. package/src/components/data-display/Progress/Progress.styles.ts +6 -10
  1178. package/src/components/data-display/Sheet/Sheet.parts.tsx +3 -2
  1179. package/src/components/data-display/Sheet/Sheet.styles.ts +6 -5
  1180. package/src/components/data-display/StatCard/StatCard.tsx +2 -1
  1181. package/src/components/data-display/Stepper/Stepper.tsx +7 -5
  1182. package/src/components/data-display/Table/Table.styles.ts +6 -5
  1183. package/src/components/data-display/Timeline/TimelineRow.tsx +9 -7
  1184. package/src/components/data-display/TimingDiagram/TimingDiagram.tsx +3 -2
  1185. package/src/components/data-display/TimingDiagram/TimingDiagram.views.tsx +61 -51
  1186. package/src/components/data-display/Tooltip/Tooltip.tsx +15 -13
  1187. package/src/components/feedback/Dialog/Dialog.metrics.ts +5 -3
  1188. package/src/components/feedback/Dialog/Dialog.styles.ts +3 -5
  1189. package/src/components/feedback/Modal/Modal.styles.ts +4 -2
  1190. package/src/components/feedback/Sonner/Sonner.tsx +3 -1
  1191. package/src/components/feedback/Sonner/SonnerToast.tsx +10 -7
  1192. package/src/components/feedback/StackedModal/StackedModal.styles.ts +8 -6
  1193. package/src/components/feedback/TutorialOverlay/TutorialOverlay.tsx +12 -9
  1194. package/src/components/feedback/TutorialOverlay/TutorialStepBody.tsx +10 -5
  1195. package/src/components/form/AddressAutocomplete/AddressOption.tsx +3 -2
  1196. package/src/components/form/Button/Button.metrics.ts +5 -4
  1197. package/src/components/form/Button/Button.styles.ts +23 -17
  1198. package/src/components/form/Button/Button.tsx +8 -5
  1199. package/src/components/form/CategorySelect/CategoryPanelFoot.tsx +4 -3
  1200. package/src/components/form/CategorySelect/CategoryPanelHead.tsx +7 -5
  1201. package/src/components/form/CategorySelect/CategoryQuickActions.tsx +2 -1
  1202. package/src/components/form/CategorySelect/CategorySelect.styles.ts +19 -17
  1203. package/src/components/form/Checkbox/Checkbox.metrics.ts +5 -4
  1204. package/src/components/form/Checkbox/Checkbox.tsx +2 -2
  1205. package/src/components/form/CodeEditor/CodeEditor.hooks.ts +1 -1
  1206. package/src/components/form/CodeEditor/CodeEditor.monaco.ts +25 -23
  1207. package/src/components/form/CodeEditor/CodeEditor.tsx +13 -6
  1208. package/src/components/form/CodeEditor/CodeEditorToolbar.tsx +3 -2
  1209. package/src/components/form/Command/Command.styles.ts +12 -8
  1210. package/src/components/form/Command/Command.tsx +5 -4
  1211. package/src/components/form/DateRangePicker/DateRangePickerQuickList.tsx +3 -2
  1212. package/src/components/form/Form/Form.tsx +3 -2
  1213. package/src/components/form/HeaderButton/HeaderButton.tsx +3 -1
  1214. package/src/components/form/Input/Input.metrics.ts +4 -3
  1215. package/src/components/form/Input/Input.styles.ts +2 -1
  1216. package/src/components/form/InputOTP/InputOTP.styles.ts +13 -16
  1217. package/src/components/form/Label/Label.styles.ts +6 -6
  1218. package/src/components/form/Label/Label.tsx +2 -1
  1219. package/src/components/form/Menubar/Menubar.item.tsx +2 -1
  1220. package/src/components/form/Menubar/Menubar.styles.ts +6 -6
  1221. package/src/components/form/PasswordStrength/PasswordStrength.helpers.tsx +10 -7
  1222. package/src/components/form/PasswordStrength/PasswordStrength.tsx +19 -9
  1223. package/src/components/form/PhoneInput/PhoneInput.tsx +3 -2
  1224. package/src/components/form/RadioGroup/RadioGroup.styles.ts +21 -28
  1225. package/src/components/form/RichTextEditor/RichTextEditor.tsx +2 -1
  1226. package/src/components/form/SearchPalette/SearchPalette.parts.tsx +6 -5
  1227. package/src/components/form/Select/Select.metrics.ts +2 -2
  1228. package/src/components/form/Select/Select.tsx +2 -1
  1229. package/src/components/form/Slider/Slider.styles.ts +19 -18
  1230. package/src/components/form/Switch/Switch.metrics.ts +11 -6
  1231. package/src/components/form/Switch/Switch.parts.tsx +2 -1
  1232. package/src/components/form/Switch/Switch.styles.ts +9 -14
  1233. package/src/components/form/Textarea/Textarea.styles.ts +4 -13
  1234. package/src/components/form/Textarea/Textarea.tsx +6 -5
  1235. package/src/components/form/Textarea/TextareaRichEditor.tsx +3 -2
  1236. package/src/components/form/Toggle/Toggle.styles.ts +21 -17
  1237. package/src/components/form/Toggle/Toggle.tsx +1 -1
  1238. package/src/components/form/ToggleGroup/ToggleGroup.tsx +9 -11
  1239. package/src/components/form/UploadButton/UploadButton.parts.tsx +2 -1
  1240. package/src/components/form/total-form/SubmitButton.tsx +2 -1
  1241. package/src/components/layout/Card/Card.metrics.ts +9 -6
  1242. package/src/components/layout/Card/Card.styles.ts +7 -6
  1243. package/src/components/layout/ContentToolbar/ColumnsMenu.tsx +3 -2
  1244. package/src/components/layout/ContentToolbar/ContentToolbar.tsx +3 -2
  1245. package/src/components/layout/ContentToolbar/FilterTrigger.tsx +3 -2
  1246. package/src/components/layout/ContentToolbar/MultiSelectDropdown.tsx +5 -4
  1247. package/src/components/layout/ContentToolbar/MultiSelectTriggers.tsx +10 -9
  1248. package/src/components/layout/ContentToolbar/SavedViewsMenu.tsx +10 -9
  1249. package/src/components/layout/ContentToolbar/SortByDropdown.tsx +6 -5
  1250. package/src/components/layout/ContentToolbar/ViewSelector.tsx +5 -4
  1251. package/src/components/layout/Dashboard/Dashboard.tsx +4 -3
  1252. package/src/components/layout/Dashboard/DashboardParts.tsx +2 -1
  1253. package/src/components/layout/Drawer/Drawer.tsx +2 -1
  1254. package/src/components/layout/ScrollArea/ScrollArea.styles.ts +6 -5
  1255. package/src/components/layout/SettingsLayout/SettingsPanel.tsx +2 -1
  1256. package/src/components/layout/SettingsLayout/SettingsSectionChips.tsx +2 -1
  1257. package/src/components/layout/SettingsLayout/SettingsSectionHeader.tsx +3 -2
  1258. package/src/components/layout/SettingsLayout/SettingsStatusMarker.tsx +2 -1
  1259. package/src/components/layout/Sidebar/Sidebar.tsx +2 -1
  1260. package/src/components/layout/Skeleton/Skeleton.metrics.ts +5 -3
  1261. package/src/components/layout/Skeleton/Skeleton.styles.ts +4 -3
  1262. package/src/components/layout/TableFilter/TableFilter.tsx +10 -9
  1263. package/src/components/navigation/AppHeader/AppHeader.brand.tsx +2 -1
  1264. package/src/components/navigation/AppHeader/AppHeader.identity.tsx +3 -2
  1265. package/src/components/navigation/AppHeader/AppHeader.tsx +2 -1
  1266. package/src/components/navigation/Breadcrumbs/BreadcrumbEntry.tsx +6 -4
  1267. package/src/components/navigation/Breadcrumbs/Breadcrumbs.styles.tsx +16 -14
  1268. package/src/components/navigation/Breadcrumbs/Breadcrumbs.tsx +2 -1
  1269. package/src/components/navigation/CommandPalette/CommandPalette.tsx +6 -4
  1270. package/src/components/navigation/CommandPalette/CommandPaletteResults.tsx +5 -4
  1271. package/src/components/navigation/CommandPalette/ShortcutChip.tsx +3 -1
  1272. package/src/components/navigation/ContextMenu/ContextMenu.tsx +12 -10
  1273. package/src/components/navigation/DropdownMenu/DropdownMenu.tsx +11 -9
  1274. package/src/components/navigation/NavigationMenu/NavigationMenu.shell.tsx +6 -5
  1275. package/src/components/navigation/NavigationMenu/NavigationMenu.styles.ts +8 -5
  1276. package/src/components/navigation/NavigationMenu/NavigationMenuItem.tsx +9 -6
  1277. package/src/components/navigation/Pagination/Pagination.styles.ts +3 -2
  1278. package/src/components/navigation/Tabs/Tabs.styles.ts +3 -2
  1279. package/src/components/navigation/Tabs/Tabs.tsx +3 -2
  1280. package/src/components/typography/Blockquote/Blockquote.tsx +12 -13
  1281. package/src/components/typography/Code/Code.tsx +16 -14
  1282. package/src/components/typography/Heading/Heading.metrics.ts +2 -1
  1283. package/src/components/typography/Heading/Heading.styles.ts +4 -7
  1284. package/src/components/typography/Paragraph/Paragraph.tsx +16 -12
  1285. package/src/components/typography/Text/Text.tsx +18 -12
  1286. package/src/components/utility/AnimatedIcon/AnimatedIcon.styles.ts +22 -19
  1287. package/src/components/utility/AnimatedIcon/AnimatedIcon.tsx +1 -1
  1288. package/src/components/utility/WorkflowStep/WorkflowStep.helpers.ts +6 -4
  1289. package/src/components/utility/WorkflowStep/WorkflowStep.parts.tsx +7 -5
  1290. package/src/icons/Icon.tsx +2 -2
  1291. package/src/social-login-button/social-login-button.tsx +53 -40
  1292. package/src/tokens/index.native.ts +2 -0
  1293. package/src/tokens/ink.core.ts +128 -0
  1294. package/src/tokens/ink.ts +170 -0
  1295. package/src/tokens/scales.ts +3 -0
  1296. package/dist/chunk-23FCBIUN.js +0 -288
  1297. package/dist/chunk-25R3ITGZ.js +0 -203
  1298. package/dist/chunk-2CEV746H.js +0 -46
  1299. package/dist/chunk-2CEV746H.js.map +0 -1
  1300. package/dist/chunk-2SKNSQCP.js +0 -83
  1301. package/dist/chunk-32HU5YFB.js +0 -293
  1302. package/dist/chunk-32HU5YFB.js.map +0 -1
  1303. package/dist/chunk-3CGLGOLO.js +0 -97
  1304. package/dist/chunk-3CGLGOLO.js.map +0 -1
  1305. package/dist/chunk-3E3JYKUK.js +0 -153
  1306. package/dist/chunk-3E3JYKUK.js.map +0 -1
  1307. package/dist/chunk-3EYRRVNT.js +0 -64
  1308. package/dist/chunk-3IYB3XY2.js +0 -51
  1309. package/dist/chunk-3IYB3XY2.js.map +0 -1
  1310. package/dist/chunk-3P4THDBM.js +0 -26
  1311. package/dist/chunk-3QNSTLGC.js +0 -138
  1312. package/dist/chunk-3SJZP7KH.js +0 -264
  1313. package/dist/chunk-3SJZP7KH.js.map +0 -1
  1314. package/dist/chunk-3T2I6BYA.js +0 -46
  1315. package/dist/chunk-3W2IS5RH.js +0 -139
  1316. package/dist/chunk-3W2IS5RH.js.map +0 -1
  1317. package/dist/chunk-4BEQADWC.js +0 -99
  1318. package/dist/chunk-4IVOHL32.js +0 -203
  1319. package/dist/chunk-4IVOHL32.js.map +0 -1
  1320. package/dist/chunk-4LMY5I5E.js +0 -85
  1321. package/dist/chunk-4M6CEQVK.js +0 -121
  1322. package/dist/chunk-4M6CEQVK.js.map +0 -1
  1323. package/dist/chunk-4MGFUPQT.js +0 -73
  1324. package/dist/chunk-4PIKOJZ4.js +0 -295
  1325. package/dist/chunk-4PIKOJZ4.js.map +0 -1
  1326. package/dist/chunk-4V7DBU4H.js +0 -133
  1327. package/dist/chunk-4V7DBU4H.js.map +0 -1
  1328. package/dist/chunk-4V7FNB7R.js +0 -108
  1329. package/dist/chunk-4Y65XEGO.js +0 -147
  1330. package/dist/chunk-4Y65XEGO.js.map +0 -1
  1331. package/dist/chunk-4YMIQ5DM.js +0 -62
  1332. package/dist/chunk-56MKBXSH.js +0 -107
  1333. package/dist/chunk-56MKBXSH.js.map +0 -1
  1334. package/dist/chunk-56SJYTIT.js +0 -55
  1335. package/dist/chunk-56SJYTIT.js.map +0 -1
  1336. package/dist/chunk-57C636A6.js +0 -79
  1337. package/dist/chunk-5BW7NCM5.js +0 -77
  1338. package/dist/chunk-5EIW2FZY.js +0 -20
  1339. package/dist/chunk-5EIW2FZY.js.map +0 -1
  1340. package/dist/chunk-5FA5S2YN.js +0 -125
  1341. package/dist/chunk-5QFEHSTR.js +0 -227
  1342. package/dist/chunk-5QFEHSTR.js.map +0 -1
  1343. package/dist/chunk-5RHMLOIA.js +0 -200
  1344. package/dist/chunk-5RHMLOIA.js.map +0 -1
  1345. package/dist/chunk-5SCZZFZR.js +0 -60
  1346. package/dist/chunk-5UWSDTZV.js +0 -176
  1347. package/dist/chunk-5UWSDTZV.js.map +0 -1
  1348. package/dist/chunk-5ZNU2U4D.js +0 -41
  1349. package/dist/chunk-5ZNU2U4D.js.map +0 -1
  1350. package/dist/chunk-62NFZR52.js +0 -225
  1351. package/dist/chunk-62NFZR52.js.map +0 -1
  1352. package/dist/chunk-65JHGT5F.js +0 -39
  1353. package/dist/chunk-67N6TH6E.js +0 -83
  1354. package/dist/chunk-67N6TH6E.js.map +0 -1
  1355. package/dist/chunk-6AN23E37.js +0 -268
  1356. package/dist/chunk-6AN23E37.js.map +0 -1
  1357. package/dist/chunk-6ANWFGLL.js +0 -183
  1358. package/dist/chunk-6I4BQRZ7.js +0 -196
  1359. package/dist/chunk-6I4BQRZ7.js.map +0 -1
  1360. package/dist/chunk-6M7CMILP.js +0 -34
  1361. package/dist/chunk-6MDBMCFK.js +0 -127
  1362. package/dist/chunk-6MDBMCFK.js.map +0 -1
  1363. package/dist/chunk-6Q6T3FW5.js +0 -92
  1364. package/dist/chunk-6Q6T3FW5.js.map +0 -1
  1365. package/dist/chunk-6V7D6GRX.js +0 -182
  1366. package/dist/chunk-6VP2L3DJ.js +0 -85
  1367. package/dist/chunk-6VP2L3DJ.js.map +0 -1
  1368. package/dist/chunk-6YLAVHV4.js +0 -240
  1369. package/dist/chunk-6YZLWM3K.js +0 -143
  1370. package/dist/chunk-6YZLWM3K.js.map +0 -1
  1371. package/dist/chunk-74LYLKO2.js +0 -210
  1372. package/dist/chunk-74LYLKO2.js.map +0 -1
  1373. package/dist/chunk-7A3G4W52.js +0 -64
  1374. package/dist/chunk-7FOOLP5H.js +0 -304
  1375. package/dist/chunk-7FOOLP5H.js.map +0 -1
  1376. package/dist/chunk-7FWXG2KF.js +0 -165
  1377. package/dist/chunk-7N4V3ARN.js +0 -53
  1378. package/dist/chunk-7TSQNYQO.js +0 -134
  1379. package/dist/chunk-7VN7LFBA.js +0 -80
  1380. package/dist/chunk-7WP2HRTW.js +0 -220
  1381. package/dist/chunk-7WP2HRTW.js.map +0 -1
  1382. package/dist/chunk-A4JH5FAL.js +0 -232
  1383. package/dist/chunk-AIRWM7KK.js +0 -194
  1384. package/dist/chunk-AJVYJZHI.js +0 -38
  1385. package/dist/chunk-AJXTVRQF.js +0 -90
  1386. package/dist/chunk-ANNDLY3M.js +0 -156
  1387. package/dist/chunk-AYRHW4DX.js +0 -54
  1388. package/dist/chunk-AZ4LLAAJ.js +0 -297
  1389. package/dist/chunk-AZ4LLAAJ.js.map +0 -1
  1390. package/dist/chunk-B3OMUMZO.js +0 -260
  1391. package/dist/chunk-B3OMUMZO.js.map +0 -1
  1392. package/dist/chunk-B64PPHUR.js +0 -137
  1393. package/dist/chunk-B64PPHUR.js.map +0 -1
  1394. package/dist/chunk-B6IURHSZ.js +0 -215
  1395. package/dist/chunk-B6IURHSZ.js.map +0 -1
  1396. package/dist/chunk-BEBLRL5D.js +0 -177
  1397. package/dist/chunk-BEBLRL5D.js.map +0 -1
  1398. package/dist/chunk-BIIAMH47.js +0 -168
  1399. package/dist/chunk-BM4CGQED.js +0 -193
  1400. package/dist/chunk-BM4ZPBBT.js +0 -88
  1401. package/dist/chunk-BRMGHMYB.js +0 -45
  1402. package/dist/chunk-BRMGHMYB.js.map +0 -1
  1403. package/dist/chunk-BTIBFR5L.js +0 -240
  1404. package/dist/chunk-BTVIHTAL.js +0 -107
  1405. package/dist/chunk-BTVIHTAL.js.map +0 -1
  1406. package/dist/chunk-BWB2MVWP.js +0 -301
  1407. package/dist/chunk-BWB2MVWP.js.map +0 -1
  1408. package/dist/chunk-C423YJGN.js +0 -116
  1409. package/dist/chunk-C53C7C2X.js +0 -74
  1410. package/dist/chunk-CDNJOA3N.js +0 -264
  1411. package/dist/chunk-CDNJOA3N.js.map +0 -1
  1412. package/dist/chunk-CJL5D2IT.js +0 -280
  1413. package/dist/chunk-CJL5D2IT.js.map +0 -1
  1414. package/dist/chunk-CMN26J5Y.js +0 -219
  1415. package/dist/chunk-CMTFAYDY.js +0 -90
  1416. package/dist/chunk-CMTFAYDY.js.map +0 -1
  1417. package/dist/chunk-CPNSVIIB.js +0 -103
  1418. package/dist/chunk-CPNSVIIB.js.map +0 -1
  1419. package/dist/chunk-CR4KC2K5.js +0 -180
  1420. package/dist/chunk-CR4KC2K5.js.map +0 -1
  1421. package/dist/chunk-CR5YQ3SR.js +0 -111
  1422. package/dist/chunk-CR5YQ3SR.js.map +0 -1
  1423. package/dist/chunk-CSWNPIQD.js +0 -107
  1424. package/dist/chunk-CZ5ZL63A.js +0 -247
  1425. package/dist/chunk-CZBONNPA.js +0 -137
  1426. package/dist/chunk-CZBONNPA.js.map +0 -1
  1427. package/dist/chunk-CZJLWCEG.js +0 -86
  1428. package/dist/chunk-D3IXNCEU.js +0 -167
  1429. package/dist/chunk-D3IXNCEU.js.map +0 -1
  1430. package/dist/chunk-DBS74X2C.js +0 -193
  1431. package/dist/chunk-DBS74X2C.js.map +0 -1
  1432. package/dist/chunk-DIWC6AQL.js +0 -173
  1433. package/dist/chunk-DIWC6AQL.js.map +0 -1
  1434. package/dist/chunk-DJEGLKW3.js +0 -109
  1435. package/dist/chunk-DJEGLKW3.js.map +0 -1
  1436. package/dist/chunk-DO3UNZAU.js +0 -269
  1437. package/dist/chunk-DO3UNZAU.js.map +0 -1
  1438. package/dist/chunk-DRADVLHZ.js +0 -34
  1439. package/dist/chunk-DRADVLHZ.js.map +0 -1
  1440. package/dist/chunk-E46PG577.js +0 -78
  1441. package/dist/chunk-E46PG577.js.map +0 -1
  1442. package/dist/chunk-E6OILRUU.js +0 -58
  1443. package/dist/chunk-ECZXTIDR.js +0 -39
  1444. package/dist/chunk-EDJDASXE.js +0 -109
  1445. package/dist/chunk-EE44OC4M.js +0 -131
  1446. package/dist/chunk-EEAQBPOW.js +0 -59
  1447. package/dist/chunk-EEAQBPOW.js.map +0 -1
  1448. package/dist/chunk-EKSSKQUW.js +0 -275
  1449. package/dist/chunk-EKSSKQUW.js.map +0 -1
  1450. package/dist/chunk-EPNUVSNK.js +0 -161
  1451. package/dist/chunk-EUDIQQWE.js +0 -76
  1452. package/dist/chunk-EUHVBR3J.js +0 -96
  1453. package/dist/chunk-EUHVBR3J.js.map +0 -1
  1454. package/dist/chunk-EWGVRRUF.js +0 -212
  1455. package/dist/chunk-EWGVRRUF.js.map +0 -1
  1456. package/dist/chunk-EWSGWLHN.js +0 -140
  1457. package/dist/chunk-EWSGWLHN.js.map +0 -1
  1458. package/dist/chunk-F4RR4666.js +0 -75
  1459. package/dist/chunk-F4RR4666.js.map +0 -1
  1460. package/dist/chunk-FA3TYWX2.js +0 -118
  1461. package/dist/chunk-FAITHWIO.js +0 -73
  1462. package/dist/chunk-FAITHWIO.js.map +0 -1
  1463. package/dist/chunk-FAQO245K.js +0 -121
  1464. package/dist/chunk-FAQO245K.js.map +0 -1
  1465. package/dist/chunk-FATRMNVN.js +0 -194
  1466. package/dist/chunk-FGKKLHKY.js +0 -146
  1467. package/dist/chunk-FGKKLHKY.js.map +0 -1
  1468. package/dist/chunk-FHA4G5XF.js +0 -165
  1469. package/dist/chunk-FPWB5ILF.js +0 -79
  1470. package/dist/chunk-FRW4SYZD.js +0 -79
  1471. package/dist/chunk-FRW4SYZD.js.map +0 -1
  1472. package/dist/chunk-FTCCYWF4.js +0 -242
  1473. package/dist/chunk-FTCCYWF4.js.map +0 -1
  1474. package/dist/chunk-FYFIND6O.js +0 -227
  1475. package/dist/chunk-FYFIND6O.js.map +0 -1
  1476. package/dist/chunk-FYLCSCMR.js +0 -166
  1477. package/dist/chunk-FYLCSCMR.js.map +0 -1
  1478. package/dist/chunk-G3KSCJS7.js +0 -181
  1479. package/dist/chunk-G73SDZ3T.js +0 -41
  1480. package/dist/chunk-G76H5PEM.js +0 -249
  1481. package/dist/chunk-G76H5PEM.js.map +0 -1
  1482. package/dist/chunk-GCWF5AQE.js +0 -58
  1483. package/dist/chunk-GGNHZ4GA.js +0 -174
  1484. package/dist/chunk-GGNHZ4GA.js.map +0 -1
  1485. package/dist/chunk-GJKBWVU2.js +0 -63
  1486. package/dist/chunk-GT7C6TSM.js +0 -170
  1487. package/dist/chunk-GXEB6MJA.js +0 -57
  1488. package/dist/chunk-GXEB6MJA.js.map +0 -1
  1489. package/dist/chunk-GY6KNVMI.js +0 -39
  1490. package/dist/chunk-GY6KNVMI.js.map +0 -1
  1491. package/dist/chunk-H37GIAAM.js +0 -79
  1492. package/dist/chunk-H37GIAAM.js.map +0 -1
  1493. package/dist/chunk-H57ZS6W2.js +0 -146
  1494. package/dist/chunk-H57ZS6W2.js.map +0 -1
  1495. package/dist/chunk-HJOABXKN.js +0 -43
  1496. package/dist/chunk-IBWVEARQ.js +0 -238
  1497. package/dist/chunk-IBWVEARQ.js.map +0 -1
  1498. package/dist/chunk-IDHZHOZW.js +0 -285
  1499. package/dist/chunk-IDHZHOZW.js.map +0 -1
  1500. package/dist/chunk-IE7ISTLQ.js +0 -167
  1501. package/dist/chunk-IE7ISTLQ.js.map +0 -1
  1502. package/dist/chunk-IFAEKIT2.js +0 -273
  1503. package/dist/chunk-IFAEKIT2.js.map +0 -1
  1504. package/dist/chunk-IGO5DC7D.js +0 -159
  1505. package/dist/chunk-IM76SSXI.js +0 -173
  1506. package/dist/chunk-IM76SSXI.js.map +0 -1
  1507. package/dist/chunk-IOEF32HX.js +0 -88
  1508. package/dist/chunk-IOEF32HX.js.map +0 -1
  1509. package/dist/chunk-IPPTOL53.js +0 -112
  1510. package/dist/chunk-IPPTOL53.js.map +0 -1
  1511. package/dist/chunk-IRLUM7XB.js +0 -81
  1512. package/dist/chunk-ISW5K72V.js +0 -230
  1513. package/dist/chunk-IZBDSPTW.js +0 -49
  1514. package/dist/chunk-IZBDSPTW.js.map +0 -1
  1515. package/dist/chunk-J6CSPDC7.js +0 -75
  1516. package/dist/chunk-JB67KPGM.js +0 -64
  1517. package/dist/chunk-JBMBFYFA.js +0 -94
  1518. package/dist/chunk-JDY37EML.js +0 -246
  1519. package/dist/chunk-JDY37EML.js.map +0 -1
  1520. package/dist/chunk-JGOXXKPY.js +0 -184
  1521. package/dist/chunk-JGOXXKPY.js.map +0 -1
  1522. package/dist/chunk-JIKWZDNK.js +0 -147
  1523. package/dist/chunk-JIKWZDNK.js.map +0 -1
  1524. package/dist/chunk-JLWAYBOP.js +0 -77
  1525. package/dist/chunk-JLWAYBOP.js.map +0 -1
  1526. package/dist/chunk-JN3PGXRJ.js +0 -225
  1527. package/dist/chunk-JO5GSRYQ.js +0 -49
  1528. package/dist/chunk-JPXG7IFW.js +0 -34
  1529. package/dist/chunk-JPXG7IFW.js.map +0 -1
  1530. package/dist/chunk-JRHZZTVV.js +0 -241
  1531. package/dist/chunk-JXNT5TUP.js +0 -142
  1532. package/dist/chunk-JYETSTOQ.js +0 -82
  1533. package/dist/chunk-JYETSTOQ.js.map +0 -1
  1534. package/dist/chunk-JZJOAGBG.js +0 -183
  1535. package/dist/chunk-JZJOAGBG.js.map +0 -1
  1536. package/dist/chunk-K2XK45HG.js +0 -92
  1537. package/dist/chunk-K6FCXPTS.js +0 -86
  1538. package/dist/chunk-K6FCXPTS.js.map +0 -1
  1539. package/dist/chunk-K7BBMXY7.js +0 -197
  1540. package/dist/chunk-K7BBMXY7.js.map +0 -1
  1541. package/dist/chunk-KAPKMVKR.js +0 -41
  1542. package/dist/chunk-KCBAPMLH.js +0 -147
  1543. package/dist/chunk-KJHQYPKT.js +0 -73
  1544. package/dist/chunk-KJHQYPKT.js.map +0 -1
  1545. package/dist/chunk-KMUSTQA6.js +0 -148
  1546. package/dist/chunk-KSLNO5NG.js +0 -150
  1547. package/dist/chunk-KSLNO5NG.js.map +0 -1
  1548. package/dist/chunk-L4D6YLLU.js +0 -118
  1549. package/dist/chunk-L4D6YLLU.js.map +0 -1
  1550. package/dist/chunk-LB2G6SD6.js +0 -275
  1551. package/dist/chunk-LB2G6SD6.js.map +0 -1
  1552. package/dist/chunk-LE7IHEU4.js +0 -41
  1553. package/dist/chunk-LGLHU55A.js +0 -340
  1554. package/dist/chunk-LGLHU55A.js.map +0 -1
  1555. package/dist/chunk-LLR42S6B.js +0 -223
  1556. package/dist/chunk-LNOYDMFD.js +0 -184
  1557. package/dist/chunk-LOLOFY4O.js +0 -172
  1558. package/dist/chunk-LOLOFY4O.js.map +0 -1
  1559. package/dist/chunk-LTEXWGK6.js +0 -176
  1560. package/dist/chunk-LUMF63BM.js +0 -274
  1561. package/dist/chunk-LUMF63BM.js.map +0 -1
  1562. package/dist/chunk-LWLVWM34.js +0 -28
  1563. package/dist/chunk-LYKV3C7B.js +0 -203
  1564. package/dist/chunk-LYKV3C7B.js.map +0 -1
  1565. package/dist/chunk-LYSSO6WC.js +0 -132
  1566. package/dist/chunk-LZHXF66R.js +0 -127
  1567. package/dist/chunk-MDR4WJOV.js +0 -115
  1568. package/dist/chunk-MDR4WJOV.js.map +0 -1
  1569. package/dist/chunk-MG73KW54.js +0 -266
  1570. package/dist/chunk-MG73KW54.js.map +0 -1
  1571. package/dist/chunk-MMPJ2MCE.js +0 -105
  1572. package/dist/chunk-MMPJ2MCE.js.map +0 -1
  1573. package/dist/chunk-MQZDTGGJ.js +0 -153
  1574. package/dist/chunk-MQZDTGGJ.js.map +0 -1
  1575. package/dist/chunk-MYYGXSXF.js +0 -177
  1576. package/dist/chunk-MYYGXSXF.js.map +0 -1
  1577. package/dist/chunk-N4JEQJBL.js +0 -93
  1578. package/dist/chunk-N74IYYRU.js +0 -183
  1579. package/dist/chunk-NARIG5FL.js +0 -98
  1580. package/dist/chunk-NARIG5FL.js.map +0 -1
  1581. package/dist/chunk-NFGVP3HN.js +0 -88
  1582. package/dist/chunk-NFGVP3HN.js.map +0 -1
  1583. package/dist/chunk-NKIAP6ZL.js +0 -173
  1584. package/dist/chunk-NKIAP6ZL.js.map +0 -1
  1585. package/dist/chunk-NM3E27GK.js +0 -292
  1586. package/dist/chunk-NM3E27GK.js.map +0 -1
  1587. package/dist/chunk-NMX3JAAB.js +0 -326
  1588. package/dist/chunk-NMX3JAAB.js.map +0 -1
  1589. package/dist/chunk-NNAACCN2.js +0 -19
  1590. package/dist/chunk-NU3EQX2L.js +0 -144
  1591. package/dist/chunk-O4PKQ46C.js +0 -273
  1592. package/dist/chunk-OFVYNUYV.js +0 -25
  1593. package/dist/chunk-OGPOTZAU.js +0 -232
  1594. package/dist/chunk-OGPOTZAU.js.map +0 -1
  1595. package/dist/chunk-OZAP2BEP.js +0 -192
  1596. package/dist/chunk-OZAP2BEP.js.map +0 -1
  1597. package/dist/chunk-OZZNC4YU.js +0 -100
  1598. package/dist/chunk-OZZNC4YU.js.map +0 -1
  1599. package/dist/chunk-P2PDDFMM.js +0 -200
  1600. package/dist/chunk-P2PDDFMM.js.map +0 -1
  1601. package/dist/chunk-P3L42CBB.js +0 -121
  1602. package/dist/chunk-P7GH32WG.js +0 -124
  1603. package/dist/chunk-P7GH32WG.js.map +0 -1
  1604. package/dist/chunk-PDLJOQO5.js +0 -62
  1605. package/dist/chunk-PDLJOQO5.js.map +0 -1
  1606. package/dist/chunk-PEWNWKDI.js +0 -91
  1607. package/dist/chunk-PEWNWKDI.js.map +0 -1
  1608. package/dist/chunk-PH5XJGKJ.js +0 -91
  1609. package/dist/chunk-PI5G6N6Q.js +0 -157
  1610. package/dist/chunk-PI5G6N6Q.js.map +0 -1
  1611. package/dist/chunk-PJ7NKK33.js +0 -124
  1612. package/dist/chunk-PLEZDLVU.js +0 -30
  1613. package/dist/chunk-PO2RWE7N.js +0 -131
  1614. package/dist/chunk-PPTF5X7K.js +0 -305
  1615. package/dist/chunk-PPTF5X7K.js.map +0 -1
  1616. package/dist/chunk-PRVK3U6U.js +0 -169
  1617. package/dist/chunk-PTP3CZL4.js +0 -133
  1618. package/dist/chunk-PTP3CZL4.js.map +0 -1
  1619. package/dist/chunk-Q444G5X7.js +0 -192
  1620. package/dist/chunk-Q444G5X7.js.map +0 -1
  1621. package/dist/chunk-Q725MACF.js +0 -78
  1622. package/dist/chunk-Q725MACF.js.map +0 -1
  1623. package/dist/chunk-QNHNFU7G.js +0 -134
  1624. package/dist/chunk-QQS3GQYS.js +0 -107
  1625. package/dist/chunk-QRUCR4YZ.js +0 -217
  1626. package/dist/chunk-QRUCR4YZ.js.map +0 -1
  1627. package/dist/chunk-QTZ7I6QS.js +0 -137
  1628. package/dist/chunk-QTZ7I6QS.js.map +0 -1
  1629. package/dist/chunk-QWCMLOYC.js +0 -21
  1630. package/dist/chunk-QXTO3G2T.js +0 -62
  1631. package/dist/chunk-QXTO3G2T.js.map +0 -1
  1632. package/dist/chunk-QYNCPS5W.js +0 -62
  1633. package/dist/chunk-R2G4MVPY.js +0 -61
  1634. package/dist/chunk-R2G4MVPY.js.map +0 -1
  1635. package/dist/chunk-R67J6JKT.js +0 -127
  1636. package/dist/chunk-RAWQMBX6.js +0 -77
  1637. package/dist/chunk-RAWQMBX6.js.map +0 -1
  1638. package/dist/chunk-RGCRXDGZ.js +0 -169
  1639. package/dist/chunk-RGCRXDGZ.js.map +0 -1
  1640. package/dist/chunk-RGKGBYT2.js +0 -289
  1641. package/dist/chunk-RGKGBYT2.js.map +0 -1
  1642. package/dist/chunk-RGMSTQ2J.js +0 -57
  1643. package/dist/chunk-RJXRZW66.js +0 -95
  1644. package/dist/chunk-RJXRZW66.js.map +0 -1
  1645. package/dist/chunk-RKCS6K36.js +0 -48
  1646. package/dist/chunk-RKCS6K36.js.map +0 -1
  1647. package/dist/chunk-RPMAWM6F.js +0 -82
  1648. package/dist/chunk-RRX6ZTNX.js +0 -59
  1649. package/dist/chunk-SBS7H6WY.js +0 -181
  1650. package/dist/chunk-SBS7H6WY.js.map +0 -1
  1651. package/dist/chunk-SGGDMTKP.js +0 -347
  1652. package/dist/chunk-SGGDMTKP.js.map +0 -1
  1653. package/dist/chunk-SLODUPES.js +0 -291
  1654. package/dist/chunk-SLODUPES.js.map +0 -1
  1655. package/dist/chunk-SMCLG2RA.js +0 -153
  1656. package/dist/chunk-SMCLG2RA.js.map +0 -1
  1657. package/dist/chunk-SQSFMZTF.js +0 -150
  1658. package/dist/chunk-SQSFMZTF.js.map +0 -1
  1659. package/dist/chunk-SVFA75FO.js +0 -80
  1660. package/dist/chunk-SVSOUC5S.js +0 -149
  1661. package/dist/chunk-SVSOUC5S.js.map +0 -1
  1662. package/dist/chunk-SVXHKIGJ.js +0 -201
  1663. package/dist/chunk-SVXHKIGJ.js.map +0 -1
  1664. package/dist/chunk-SZB2Z6QN.js +0 -273
  1665. package/dist/chunk-SZB2Z6QN.js.map +0 -1
  1666. package/dist/chunk-TBRAZK3Y.js +0 -175
  1667. package/dist/chunk-TJT4NSFN.js +0 -41
  1668. package/dist/chunk-TK36COCP.js +0 -16
  1669. package/dist/chunk-TO2NXDZA.js +0 -86
  1670. package/dist/chunk-TO2NXDZA.js.map +0 -1
  1671. package/dist/chunk-TTVKL3RD.js +0 -220
  1672. package/dist/chunk-TTVKL3RD.js.map +0 -1
  1673. package/dist/chunk-TUYN6XZI.js +0 -33
  1674. package/dist/chunk-TXHJX2NG.js +0 -108
  1675. package/dist/chunk-U437KFDI.js +0 -206
  1676. package/dist/chunk-U437KFDI.js.map +0 -1
  1677. package/dist/chunk-U7Q2Y6WG.js +0 -196
  1678. package/dist/chunk-UEWIIYGA.js +0 -64
  1679. package/dist/chunk-UJE7IKQ4.js +0 -96
  1680. package/dist/chunk-UMQN3BVV.js +0 -315
  1681. package/dist/chunk-UMQN3BVV.js.map +0 -1
  1682. package/dist/chunk-UQNB2W2I.js +0 -263
  1683. package/dist/chunk-UQNB2W2I.js.map +0 -1
  1684. package/dist/chunk-URWNRC2P.js +0 -158
  1685. package/dist/chunk-UTSGY3ON.js +0 -182
  1686. package/dist/chunk-UTSGY3ON.js.map +0 -1
  1687. package/dist/chunk-V6Z4XS3I.js +0 -62
  1688. package/dist/chunk-V6Z4XS3I.js.map +0 -1
  1689. package/dist/chunk-VF2XC76U.js +0 -191
  1690. package/dist/chunk-VF2XC76U.js.map +0 -1
  1691. package/dist/chunk-VLVMJDGD.js +0 -190
  1692. package/dist/chunk-VM3HRSAU.js +0 -79
  1693. package/dist/chunk-VM3HRSAU.js.map +0 -1
  1694. package/dist/chunk-VNHLYDTX.js +0 -172
  1695. package/dist/chunk-VNHLYDTX.js.map +0 -1
  1696. package/dist/chunk-VQBINZB7.js +0 -322
  1697. package/dist/chunk-VQBINZB7.js.map +0 -1
  1698. package/dist/chunk-VXGCB3GY.js +0 -81
  1699. package/dist/chunk-VXGCB3GY.js.map +0 -1
  1700. package/dist/chunk-W3FAKT3D.js +0 -167
  1701. package/dist/chunk-W3FAKT3D.js.map +0 -1
  1702. package/dist/chunk-W7HSGZGW.js +0 -155
  1703. package/dist/chunk-WIXUMFU7.js +0 -167
  1704. package/dist/chunk-WIXUMFU7.js.map +0 -1
  1705. package/dist/chunk-WJH743NG.js +0 -131
  1706. package/dist/chunk-WJH743NG.js.map +0 -1
  1707. package/dist/chunk-X2IJI2BG.js +0 -72
  1708. package/dist/chunk-X2QLWUND.js +0 -145
  1709. package/dist/chunk-X2QLWUND.js.map +0 -1
  1710. package/dist/chunk-X4XYUNRL.js +0 -55
  1711. package/dist/chunk-XCP5L665.js +0 -22
  1712. package/dist/chunk-XCP5L665.js.map +0 -1
  1713. package/dist/chunk-XI2BXMBX.js +0 -146
  1714. package/dist/chunk-XI2BXMBX.js.map +0 -1
  1715. package/dist/chunk-XJKMH3RX.js +0 -233
  1716. package/dist/chunk-XJKMH3RX.js.map +0 -1
  1717. package/dist/chunk-XLZBZSES.js +0 -91
  1718. package/dist/chunk-XLZBZSES.js.map +0 -1
  1719. package/dist/chunk-XPOQZI5X.js +0 -120
  1720. package/dist/chunk-XV2TDULR.js +0 -85
  1721. package/dist/chunk-XV2TDULR.js.map +0 -1
  1722. package/dist/chunk-XYXTEGIM.js +0 -67
  1723. package/dist/chunk-Y3ER5CJ2.js +0 -293
  1724. package/dist/chunk-Y3ER5CJ2.js.map +0 -1
  1725. package/dist/chunk-Y3IGYWGN.js +0 -171
  1726. package/dist/chunk-Y3IGYWGN.js.map +0 -1
  1727. package/dist/chunk-Y5UCOBQN.js +0 -37
  1728. package/dist/chunk-Y7ZS724A.js +0 -109
  1729. package/dist/chunk-Y7ZS724A.js.map +0 -1
  1730. package/dist/chunk-YBJZ536V.js +0 -93
  1731. package/dist/chunk-YBJZ536V.js.map +0 -1
  1732. package/dist/chunk-YJ4HM25H.js +0 -198
  1733. package/dist/chunk-YJ4HM25H.js.map +0 -1
  1734. package/dist/chunk-YKACSEES.js +0 -153
  1735. package/dist/chunk-YKACSEES.js.map +0 -1
  1736. package/dist/chunk-YNWAMTOT.js +0 -259
  1737. package/dist/chunk-YNWAMTOT.js.map +0 -1
  1738. package/dist/chunk-YRUCIKPO.js +0 -159
  1739. package/dist/chunk-Z6DULXSF.js +0 -261
  1740. package/dist/chunk-Z6DULXSF.js.map +0 -1
  1741. package/dist/chunk-ZA4U5GDU.js +0 -68
  1742. package/dist/chunk-ZADOIITM.js +0 -166
  1743. package/dist/chunk-ZADOIITM.js.map +0 -1
  1744. package/dist/chunk-ZB6BX4GO.js +0 -175
  1745. package/dist/chunk-ZDWU52DJ.js +0 -116
  1746. package/dist/chunk-ZNJ4RLZT.js +0 -136
  1747. package/dist/chunk-ZO27CDGB.js +0 -204
  1748. package/dist/chunk-ZO27CDGB.js.map +0 -1
  1749. package/dist/chunk-ZOW2CCMO.js +0 -88
  1750. package/dist/chunk-ZOW2CCMO.js.map +0 -1
  1751. package/dist/chunk-ZPIMPOHV.js +0 -187
  1752. package/dist/chunk-ZRHSIFWA.js +0 -113
  1753. package/dist/chunk-ZRHSIFWA.js.map +0 -1
  1754. package/dist/chunk-ZSXV3ERD.js +0 -82
  1755. package/dist/chunk-ZSXV3ERD.js.map +0 -1
  1756. package/dist/chunk-ZTZ6S5Q6.js +0 -86
  1757. package/dist/native/chunks/chunk-335WGKE6.js +0 -336
  1758. package/dist/native/chunks/chunk-335WGKE6.js.map +0 -1
  1759. package/dist/native/chunks/chunk-4KWFRDI2.js +0 -215
  1760. package/dist/native/chunks/chunk-4KWFRDI2.js.map +0 -1
  1761. package/dist/native/chunks/chunk-KIG4KY4W.js +0 -322
  1762. package/dist/native/chunks/chunk-KIG4KY4W.js.map +0 -1
  1763. package/dist/native/chunks/chunk-OI57L6WL.js +0 -292
  1764. package/dist/native/chunks/chunk-OI57L6WL.js.map +0 -1
  1765. /package/dist/{chunk-3EYRRVNT.js.map → chunk-2AKQPXSJ.js.map} +0 -0
  1766. /package/dist/{chunk-PRVK3U6U.js.map → chunk-2CTTASUD.js.map} +0 -0
  1767. /package/dist/{chunk-ZTZ6S5Q6.js.map → chunk-2TJOCI54.js.map} +0 -0
  1768. /package/dist/{chunk-ISW5K72V.js.map → chunk-2ZRZTGWP.js.map} +0 -0
  1769. /package/dist/{chunk-A4JH5FAL.js.map → chunk-3CVTQZQJ.js.map} +0 -0
  1770. /package/dist/{chunk-ZPIMPOHV.js.map → chunk-4LQZH4PU.js.map} +0 -0
  1771. /package/dist/{chunk-W7HSGZGW.js.map → chunk-4M34ALEP.js.map} +0 -0
  1772. /package/dist/{chunk-X2IJI2BG.js.map → chunk-4WQ3YXQL.js.map} +0 -0
  1773. /package/dist/{chunk-N4JEQJBL.js.map → chunk-5IXHJXJX.js.map} +0 -0
  1774. /package/dist/{chunk-JBMBFYFA.js.map → chunk-5VWYCVXF.js.map} +0 -0
  1775. /package/dist/{chunk-SVFA75FO.js.map → chunk-5ZQUJ7LT.js.map} +0 -0
  1776. /package/dist/{chunk-PJ7NKK33.js.map → chunk-5ZTQTJAJ.js.map} +0 -0
  1777. /package/dist/{chunk-RGMSTQ2J.js.map → chunk-6DC5SVHM.js.map} +0 -0
  1778. /package/dist/{chunk-FA3TYWX2.js.map → chunk-6KL2CJBO.js.map} +0 -0
  1779. /package/dist/{chunk-JB67KPGM.js.map → chunk-6Q5GZUQ5.js.map} +0 -0
  1780. /package/dist/{chunk-7VN7LFBA.js.map → chunk-7F7TTOYN.js.map} +0 -0
  1781. /package/dist/{chunk-BM4CGQED.js.map → chunk-7LIXQZBG.js.map} +0 -0
  1782. /package/dist/{chunk-K2XK45HG.js.map → chunk-7ZG7T2YN.js.map} +0 -0
  1783. /package/dist/{chunk-5SCZZFZR.js.map → chunk-A2DYU5WN.js.map} +0 -0
  1784. /package/dist/{chunk-TK36COCP.js.map → chunk-A4OCNJWW.js.map} +0 -0
  1785. /package/dist/{chunk-CZ5ZL63A.js.map → chunk-A6AKFPIQ.js.map} +0 -0
  1786. /package/dist/{chunk-AJXTVRQF.js.map → chunk-AJSPLHG4.js.map} +0 -0
  1787. /package/dist/{chunk-LNOYDMFD.js.map → chunk-AQSX3YH2.js.map} +0 -0
  1788. /package/dist/{chunk-C423YJGN.js.map → chunk-BD2GGIGS.js.map} +0 -0
  1789. /package/dist/{chunk-TXHJX2NG.js.map → chunk-BGYLL467.js.map} +0 -0
  1790. /package/dist/{chunk-3T2I6BYA.js.map → chunk-BO2SDMNQ.js.map} +0 -0
  1791. /package/dist/{chunk-FPWB5ILF.js.map → chunk-BR7RM3WR.js.map} +0 -0
  1792. /package/dist/{chunk-LTEXWGK6.js.map → chunk-C6FRVGMC.js.map} +0 -0
  1793. /package/dist/{chunk-EDJDASXE.js.map → chunk-C6NI3FAV.js.map} +0 -0
  1794. /package/dist/{chunk-X4XYUNRL.js.map → chunk-C7TCBAVX.js.map} +0 -0
  1795. /package/dist/{chunk-6M7CMILP.js.map → chunk-CRZXSZ5O.js.map} +0 -0
  1796. /package/dist/{chunk-XYXTEGIM.js.map → chunk-CS3RKXT5.js.map} +0 -0
  1797. /package/dist/{chunk-OFVYNUYV.js.map → chunk-CXMVNYBY.js.map} +0 -0
  1798. /package/dist/{chunk-PO2RWE7N.js.map → chunk-D5X4FRYX.js.map} +0 -0
  1799. /package/dist/{chunk-LZHXF66R.js.map → chunk-DBCITC4P.js.map} +0 -0
  1800. /package/dist/{chunk-JO5GSRYQ.js.map → chunk-DMYBTD5Y.js.map} +0 -0
  1801. /package/dist/{chunk-PLEZDLVU.js.map → chunk-DRE6DSJ7.js.map} +0 -0
  1802. /package/dist/{chunk-UJE7IKQ4.js.map → chunk-EFVOT3G5.js.map} +0 -0
  1803. /package/dist/{chunk-CSWNPIQD.js.map → chunk-EOW2ECB3.js.map} +0 -0
  1804. /package/dist/{chunk-65JHGT5F.js.map → chunk-EXZSHZRS.js.map} +0 -0
  1805. /package/dist/{chunk-ZA4U5GDU.js.map → chunk-F5KEWLZK.js.map} +0 -0
  1806. /package/dist/{chunk-LLR42S6B.js.map → chunk-F7HQVKIR.js.map} +0 -0
  1807. /package/dist/{chunk-5FA5S2YN.js.map → chunk-FXNYV5Z6.js.map} +0 -0
  1808. /package/dist/{chunk-EUDIQQWE.js.map → chunk-GEXM6DNR.js.map} +0 -0
  1809. /package/dist/{chunk-E6OILRUU.js.map → chunk-GGWICBJD.js.map} +0 -0
  1810. /package/dist/{chunk-ZDWU52DJ.js.map → chunk-GIRRCEVH.js.map} +0 -0
  1811. /package/dist/{chunk-QYNCPS5W.js.map → chunk-GUVBR62X.js.map} +0 -0
  1812. /package/dist/{chunk-GCWF5AQE.js.map → chunk-GUW5BUK7.js.map} +0 -0
  1813. /package/dist/{chunk-AJVYJZHI.js.map → chunk-GVLZZCSX.js.map} +0 -0
  1814. /package/dist/{chunk-KAPKMVKR.js.map → chunk-GXCOXJS3.js.map} +0 -0
  1815. /package/dist/{chunk-J6CSPDC7.js.map → chunk-H2YBVBPW.js.map} +0 -0
  1816. /package/dist/{chunk-BIIAMH47.js.map → chunk-HAQMKV5P.js.map} +0 -0
  1817. /package/dist/{chunk-P3L42CBB.js.map → chunk-IBGX6H4J.js.map} +0 -0
  1818. /package/dist/{chunk-CMN26J5Y.js.map → chunk-IFSUKWE7.js.map} +0 -0
  1819. /package/dist/{chunk-7A3G4W52.js.map → chunk-IJFAF3A7.js.map} +0 -0
  1820. /package/dist/{chunk-YRUCIKPO.js.map → chunk-IL7JZKXY.js.map} +0 -0
  1821. /package/dist/{chunk-2SKNSQCP.js.map → chunk-IWOVENC3.js.map} +0 -0
  1822. /package/dist/{chunk-BM4ZPBBT.js.map → chunk-JFBEZXNL.js.map} +0 -0
  1823. /package/dist/{chunk-LYSSO6WC.js.map → chunk-JFEEV3XI.js.map} +0 -0
  1824. /package/dist/{chunk-U7Q2Y6WG.js.map → chunk-JOR6E23V.js.map} +0 -0
  1825. /package/dist/{chunk-G73SDZ3T.js.map → chunk-JYRQBZEV.js.map} +0 -0
  1826. /package/dist/{chunk-FHA4G5XF.js.map → chunk-KE5MX4PI.js.map} +0 -0
  1827. /package/dist/{chunk-ECZXTIDR.js.map → chunk-KK57AHWS.js.map} +0 -0
  1828. /package/dist/{chunk-GJKBWVU2.js.map → chunk-KLMP2BYC.js.map} +0 -0
  1829. /package/dist/{chunk-4V7FNB7R.js.map → chunk-KTYZRAB7.js.map} +0 -0
  1830. /package/dist/{chunk-O4PKQ46C.js.map → chunk-L4UP5VYS.js.map} +0 -0
  1831. /package/dist/{chunk-EPNUVSNK.js.map → chunk-L4V2LRKH.js.map} +0 -0
  1832. /package/dist/{chunk-5BW7NCM5.js.map → chunk-LDDN254Q.js.map} +0 -0
  1833. /package/dist/{chunk-EE44OC4M.js.map → chunk-LI6OLYUB.js.map} +0 -0
  1834. /package/dist/{chunk-7FWXG2KF.js.map → chunk-LOJK733T.js.map} +0 -0
  1835. /package/dist/{chunk-7N4V3ARN.js.map → chunk-MXZ43UCQ.js.map} +0 -0
  1836. /package/dist/{chunk-25R3ITGZ.js.map → chunk-MZMGQKT3.js.map} +0 -0
  1837. /package/dist/{chunk-AIRWM7KK.js.map → chunk-N6CSXHFJ.js.map} +0 -0
  1838. /package/dist/{chunk-LE7IHEU4.js.map → chunk-NE6XUN5Z.js.map} +0 -0
  1839. /package/dist/{chunk-3P4THDBM.js.map → chunk-NIS523UM.js.map} +0 -0
  1840. /package/dist/{chunk-RRX6ZTNX.js.map → chunk-OGTTJKHI.js.map} +0 -0
  1841. /package/dist/{chunk-4YMIQ5DM.js.map → chunk-OYP27CYE.js.map} +0 -0
  1842. /package/dist/{chunk-IGO5DC7D.js.map → chunk-PNLM35GU.js.map} +0 -0
  1843. /package/dist/{chunk-6YLAVHV4.js.map → chunk-QAP3FW33.js.map} +0 -0
  1844. /package/dist/{chunk-JXNT5TUP.js.map → chunk-QO6QWBDI.js.map} +0 -0
  1845. /package/dist/{chunk-BTIBFR5L.js.map → chunk-QTWXVOPT.js.map} +0 -0
  1846. /package/dist/{chunk-7TSQNYQO.js.map → chunk-QWHURFJ3.js.map} +0 -0
  1847. /package/dist/{chunk-IRLUM7XB.js.map → chunk-R75DZ3AK.js.map} +0 -0
  1848. /package/dist/{chunk-NNAACCN2.js.map → chunk-RMCNEKBZ.js.map} +0 -0
  1849. /package/dist/{chunk-JN3PGXRJ.js.map → chunk-RWTFZ7J5.js.map} +0 -0
  1850. /package/dist/{chunk-JRHZZTVV.js.map → chunk-SKX4NA6E.js.map} +0 -0
  1851. /package/dist/{chunk-RPMAWM6F.js.map → chunk-SN2YMCTL.js.map} +0 -0
  1852. /package/dist/{chunk-R67J6JKT.js.map → chunk-SX3MEC3Q.js.map} +0 -0
  1853. /package/dist/{chunk-C53C7C2X.js.map → chunk-T3WHW7ZC.js.map} +0 -0
  1854. /package/dist/{chunk-ANNDLY3M.js.map → chunk-TEUX42YW.js.map} +0 -0
  1855. /package/dist/{chunk-NU3EQX2L.js.map → chunk-TOXTJ7MU.js.map} +0 -0
  1856. /package/dist/{chunk-N74IYYRU.js.map → chunk-TPQVLBTY.js.map} +0 -0
  1857. /package/dist/{chunk-4LMY5I5E.js.map → chunk-TTAP5XFX.js.map} +0 -0
  1858. /package/dist/{chunk-TJT4NSFN.js.map → chunk-TU3EGIKB.js.map} +0 -0
  1859. /package/dist/{chunk-HJOABXKN.js.map → chunk-U2IRCTAR.js.map} +0 -0
  1860. /package/dist/{chunk-QWCMLOYC.js.map → chunk-UCA47HM7.js.map} +0 -0
  1861. /package/dist/{chunk-XPOQZI5X.js.map → chunk-UCTJJYVC.js.map} +0 -0
  1862. /package/dist/{chunk-QNHNFU7G.js.map → chunk-UFLTL2RJ.js.map} +0 -0
  1863. /package/dist/{chunk-CZJLWCEG.js.map → chunk-UN5INW6K.js.map} +0 -0
  1864. /package/dist/{chunk-23FCBIUN.js.map → chunk-UO7ERXYX.js.map} +0 -0
  1865. /package/dist/{chunk-UEWIIYGA.js.map → chunk-VAGHW3K2.js.map} +0 -0
  1866. /package/dist/{chunk-3QNSTLGC.js.map → chunk-VRDNUY4H.js.map} +0 -0
  1867. /package/dist/{chunk-G3KSCJS7.js.map → chunk-VV7MGILP.js.map} +0 -0
  1868. /package/dist/{chunk-QQS3GQYS.js.map → chunk-VZAGBDZ2.js.map} +0 -0
  1869. /package/dist/{chunk-TBRAZK3Y.js.map → chunk-W3CLJ7JE.js.map} +0 -0
  1870. /package/dist/{chunk-6V7D6GRX.js.map → chunk-W5ENK5CM.js.map} +0 -0
  1871. /package/dist/{chunk-4MGFUPQT.js.map → chunk-WC3W36AM.js.map} +0 -0
  1872. /package/dist/{chunk-PH5XJGKJ.js.map → chunk-WVC3BG6J.js.map} +0 -0
  1873. /package/dist/{chunk-GT7C6TSM.js.map → chunk-WW4N2LRM.js.map} +0 -0
  1874. /package/dist/{chunk-LWLVWM34.js.map → chunk-X2AKLDPW.js.map} +0 -0
  1875. /package/dist/{chunk-AYRHW4DX.js.map → chunk-X7PVFAYJ.js.map} +0 -0
  1876. /package/dist/{chunk-KCBAPMLH.js.map → chunk-XEYLYUDM.js.map} +0 -0
  1877. /package/dist/{chunk-6ANWFGLL.js.map → chunk-XSMMFCMQ.js.map} +0 -0
  1878. /package/dist/{chunk-KMUSTQA6.js.map → chunk-XWWFBH2G.js.map} +0 -0
  1879. /package/dist/{chunk-VLVMJDGD.js.map → chunk-YDPUBGJ7.js.map} +0 -0
  1880. /package/dist/{chunk-ZNJ4RLZT.js.map → chunk-YSKGLU2V.js.map} +0 -0
  1881. /package/dist/{chunk-57C636A6.js.map → chunk-YU647YW4.js.map} +0 -0
  1882. /package/dist/{chunk-FATRMNVN.js.map → chunk-YVUD3MY4.js.map} +0 -0
  1883. /package/dist/{chunk-Y5UCOBQN.js.map → chunk-ZHEZISMI.js.map} +0 -0
  1884. /package/dist/{chunk-TUYN6XZI.js.map → chunk-ZMC3N23A.js.map} +0 -0
  1885. /package/dist/{chunk-URWNRC2P.js.map → chunk-ZW5K4XCQ.js.map} +0 -0
  1886. /package/dist/{chunk-ZB6BX4GO.js.map → chunk-ZXSUWFQX.js.map} +0 -0
  1887. /package/dist/{chunk-4BEQADWC.js.map → chunk-ZZM3DOEK.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/data-display/Alert/Alert.native.tsx","../../../src/components/data-display/Alert/Alert.helpers.ts","../../../src/components/data-display/Alert/Alert.metrics.ts","../../../src/components/data-display/Alert/Alert.look.native.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n Easing,\n type LayoutChangeEvent,\n Platform,\n Pressable,\n type Role,\n StyleSheet,\n Text as RNText,\n View,\n type ViewStyle,\n} from 'react-native';\n\nimport { resolveAlertProps, resolveAnnouncement, testIdFor, VARIANT_ICON } from './Alert.helpers';\nimport {\n actionSlotStyle,\n alertLook,\n closeButtonStyle,\n descriptionStyle,\n iconSlotStyle,\n messageSlotStyle,\n messageTextStyle,\n titleStyle,\n} from './Alert.look.native';\nimport { CLOSE_BUTTON, CLOSE_DELAY_MS, COLLAPSE_MS, FADE_IN, ICON_SLOT, ICON_SPIN, PULSE } from './Alert.metrics';\nimport type { AlertProps, AlertVariant } from './Alert.types.native';\nimport { Icon } from '../../../icons/Icon.native';\nimport { webAria } from '../../../platform/aria';\nimport { renderTextChildren } from '../../../platform/text-children';\nimport { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\n\ntype AnimatedStyle = Animated.WithAnimatedValue<ViewStyle>;\nconst nativeDriver = Platform.OS !== 'web';\n\n/** A 0→1 progress that starts on mount when `animate` is set, else sits at 1. */\nfunction useProgress(animate: boolean, duration: number): Animated.Value {\n const progress = React.useRef(new Animated.Value(animate ? 0 : 1)).current;\n React.useEffect(() => {\n if (!animate) return undefined;\n const timing = Animated.timing(progress, { toValue: 1, duration, easing: Easing.out(Easing.ease), useNativeDriver: nativeDriver });\n timing.start();\n return () => timing.stop();\n }, [animate, duration, progress]);\n return progress;\n}\n\n/** The web's `fadeInScale` keyframes: in from 0 opacity, 0.95 scale and 10px above, over 300ms. */\nfunction useFadeIn(animate: boolean): AnimatedStyle | undefined {\n const progress = useProgress(animate, FADE_IN.ms);\n if (!animate) return undefined;\n return {\n opacity: progress,\n transform: [\n { scale: progress.interpolate({ inputRange: [0, 1], outputRange: [FADE_IN.scale, 1] }) },\n { translateY: progress.interpolate({ inputRange: [0, 1], outputRange: [-FADE_IN.lift, 0] }) },\n ],\n };\n}\n\n/** The web's `iconRotate` keyframes: one full turn, 0.8 → 1.1 → 1, over 600ms. */\nfunction useIconSpin(animate: boolean): AnimatedStyle | undefined {\n const progress = useProgress(animate, ICON_SPIN.ms);\n if (!animate) return undefined;\n return {\n transform: [\n { rotate: progress.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] }) },\n { scale: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [ICON_SPIN.from, ICON_SPIN.mid, 1] }) },\n ],\n };\n}\n\n/** The web's `::after` pulse: a wash of the hue over the card, fading out every two seconds, behind the words. */\nfunction Pulse({ color, radius, testID }: { color: string; radius: number; testID: string }): React.JSX.Element {\n const progress = React.useRef(new Animated.Value(0)).current;\n React.useEffect(() => {\n const loop = Animated.loop(\n Animated.timing(progress, { toValue: 1, duration: PULSE.ms, easing: Easing.linear, useNativeDriver: nativeDriver }),\n );\n loop.start();\n return () => loop.stop();\n }, [progress]);\n return (\n <Animated.View\n testID={testID}\n aria-hidden\n style={[\n StyleSheet.absoluteFill,\n {\n pointerEvents: 'none',\n borderRadius: radius,\n backgroundColor: color,\n opacity: progress.interpolate({ inputRange: [0, 0.7, 1], outputRange: [PULSE.alpha, 0, 0] }),\n },\n ]}\n />\n );\n}\n\n/**\n * MUI's `Collapse`: open, it is a plain wrapper with its overflow visible (so\n * a glow can escape); closing, it clips and shrinks over 300ms, then says so.\n */\nfunction Collapse({ open, onCollapsed, children }: { open: boolean; onCollapsed: () => void; children: React.ReactNode }): React.JSX.Element {\n const [height, setHeight] = React.useState<number | null>(null);\n const progress = React.useRef(new Animated.Value(1)).current;\n React.useEffect(() => {\n if (open) return undefined;\n const timing = Animated.timing(progress, { toValue: 0, duration: COLLAPSE_MS, easing: Easing.inOut(Easing.ease), useNativeDriver: false });\n timing.start(({ finished }) => {\n if (finished) onCollapsed();\n });\n return () => timing.stop();\n }, [open, onCollapsed, progress]);\n const onLayout = (event: LayoutChangeEvent): void => {\n if (open) setHeight(event.nativeEvent.layout.height);\n };\n const shrink: AnimatedStyle = height == null ? {} : { maxHeight: progress.interpolate({ inputRange: [0, 1], outputRange: [0, height] }) };\n return (\n <Animated.View style={[{ overflow: open ? 'visible' : 'hidden', opacity: progress }, shrink]}>\n <View onLayout={onLayout}>{children}</View>\n </Animated.View>\n );\n}\n\ninterface IconSlotProps {\n variant: AlertVariant;\n icon: React.ReactNode;\n color: string;\n animate: boolean;\n testID: string;\n}\n\n/** The icon slot; `glass` and `gradient` have no glyph of their own, so theirs is empty unless an `icon` is given — as on the web. */\nfunction IconSlot({ variant, icon, color, animate, testID }: IconSlotProps): React.JSX.Element {\n const theme = useUiTheme();\n const spin = useIconSpin(animate);\n const glyph = VARIANT_ICON[variant];\n return (\n <Animated.View testID={testID} style={[iconSlotStyle(theme), spin]}>\n {icon || (glyph ? <Icon name={glyph} size={ICON_SLOT.size} color={color} /> : null)}\n </Animated.View>\n );\n}\n\nfunction CloseButton({ label, ink, onPress, testID }: { label: string | undefined; ink: string; onPress: () => void; testID: string }): React.JSX.Element {\n const theme = useUiTheme();\n return (\n <Pressable role=\"button\" aria-label={label} testID={testID} onPress={onPress} style={({ pressed }) => closeButtonStyle(theme, pressed)}>\n <Icon name=\"Close\" size={CLOSE_BUTTON.iconSize} color={ink} />\n </Pressable>\n );\n}\n\ninterface ContentProps {\n title?: string;\n description?: string;\n children?: React.ReactNode;\n ink: string;\n testId: string;\n}\n\nfunction AlertContent({ title, description, children, ink, testId }: ContentProps): React.JSX.Element {\n const theme = useUiTheme();\n return (\n <View style={messageSlotStyle(theme)}>\n {title ? (\n <RNText testID={testIdFor(testId, 'title')} style={titleStyle(theme, ink, Boolean(description))}>\n {title}\n </RNText>\n ) : null}\n {description ? (\n <RNText testID={testIdFor(testId, 'message')} style={descriptionStyle(theme, ink)}>\n {description}\n </RNText>\n ) : null}\n {renderTextChildren(children, messageTextStyle(theme, ink))}\n </View>\n );\n}\n\n/** The dismiss sequence the web runs: mark closing, fire `onClose` 200ms in, stay until the collapse has run. */\nfunction useDismiss(onClose: (() => void) | undefined): { open: boolean; gone: boolean; close: () => void; onCollapsed: () => void } {\n const [closing, setClosing] = React.useState(false);\n const [gone, setGone] = React.useState(false);\n const timer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n React.useEffect(() => () => {\n if (timer.current) clearTimeout(timer.current);\n }, []);\n const close = (): void => {\n setClosing(true);\n timer.current = setTimeout(() => onClose?.(), CLOSE_DELAY_MS);\n };\n const onCollapsed = React.useCallback(() => setGone(true), []);\n return { open: !closing, gone, close, onCollapsed };\n}\n\nexport const Alert = React.forwardRef<View, AlertProps>((alertProps, ref) => {\n const {\n variant, color, glow, pulse, icon, showIcon, onClose, title, description, children, animate,\n // `role`, `announce` and `aria-live` all leave here and are resolved\n // TOGETHER below, off `alertProps` — see `resolveAnnouncement`.\n role: _role, announce: _announce,\n 'aria-atomic': ariaAtomic, 'aria-live': _ariaLive, closable, closeLabel, style, ...others\n } = resolveAlertProps(alertProps);\n const theme = useUiTheme();\n const testId = resolveTestId(others, 'alert') as string;\n const rest = withoutTestIdProps(others);\n const look = alertLook(theme, { variant, color, glow, pulse });\n const fadeIn = useFadeIn(animate);\n const dismiss = useDismiss(onClose);\n const announcement = resolveAnnouncement(alertProps, variant);\n\n if (dismiss.gone) return null;\n return (\n <Collapse open={dismiss.open} onCollapsed={dismiss.onCollapsed}>\n <Animated.View\n ref={ref}\n role={announcement.role as Role}\n aria-live={announcement['aria-live']}\n {...webAria({ 'aria-atomic': ariaAtomic })}\n tabIndex={0}\n testID={testId}\n style={[look.root, fadeIn, style]}\n {...rest}\n >\n {pulse ? <Pulse color={look.palette.main} radius={look.root.borderRadius as number} testID={testIdFor(testId, 'pulse')} /> : null}\n {showIcon ? <IconSlot variant={variant} icon={icon} color={look.iconColor} animate={animate} testID={testIdFor(testId, 'icon')} /> : null}\n <AlertContent title={title} description={description} ink={look.ink} testId={testId}>\n {children}\n </AlertContent>\n {closable ? (\n <View style={actionSlotStyle(theme)}>\n <CloseButton label={closeLabel} ink={look.ink} onPress={dismiss.close} testID={testIdFor(testId, 'close')} />\n </View>\n ) : null}\n </Animated.View>\n </Collapse>\n );\n});\n\nAlert.displayName = 'Alert';\n","import type { AlertBaseFields, AlertVariant } from './Alert.base';\nimport type { IconName } from '../../../icons/Icon.types';\n\ntype AlertDefaultedKeys = 'variant' | 'glow' | 'pulse' | 'showIcon' | 'animate' | 'role' | 'aria-atomic';\n\nexport const ALERT_DEFAULTS: Required<Pick<AlertBaseFields, AlertDefaultedKeys>> & { closable: false } = {\n variant: 'info',\n glow: false,\n pulse: false,\n showIcon: true,\n closable: false,\n animate: true,\n role: 'alert',\n 'aria-atomic': 'true',\n};\n\n/**\n * Generic over the renderer's own props: the web and the native `Alert` pass\n * different extras through, and both come back out untouched.\n */\nexport type ResolvedAlertProps<P extends AlertBaseFields> = P &\n Required<Pick<AlertBaseFields, AlertDefaultedKeys>>;\n\n// Strips explicitly-undefined props before the merge so `prop={undefined}` still\n// falls back to the default, the way a destructuring default would.\nconst definedProps = <P extends AlertBaseFields>(props: P): Partial<P> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<P>;\n\n// Through `unknown`: `closable: false` in the defaults belongs to the dismiss\n// union rather than to `AlertBaseFields`, so TypeScript cannot see the merge as\n// comparable to `P` although every field of `P` survives it untouched.\nexport const resolveAlertProps = <P extends AlertBaseFields>(props: P): ResolvedAlertProps<P> =>\n ({ ...ALERT_DEFAULTS, ...definedProps(props) }) as unknown as ResolvedAlertProps<P>;\n\n/** `danger` announces itself; everything else waits its turn. */\nexport const defaultAriaLive = (variant: AlertVariant): 'polite' | 'assertive' =>\n variant === 'danger' ? 'assertive' : 'polite';\n\n/**\n * The ARIA role each `announce` level is spelled with.\n *\n * Both roles carry an IMPLICIT live setting, and that implicit one is what\n * assistive tech acts on — `alert` is assertive, `status` is polite. Pairing\n * them here is what stops `role` and `aria-live` from contradicting each\n * other, which they do by default: every alert is `role=\"alert\"` regardless of\n * variant, so an `info` alert asks to be polite in one attribute and to\n * interrupt in the other.\n */\nexport const ANNOUNCE_ROLE: Record<NonNullable<AlertBaseFields['announce']>, string> = {\n assertive: 'alert',\n polite: 'status',\n};\n\n/**\n * The two attributes that decide whether an alert interrupts, resolved TOGETHER.\n *\n * Both renderers therefore let `role` and `announce` leave their destructure\n * unused (`_role`, `_announce`) and call this instead — the first because the\n * defaults have already answered it, the second because it must never reach\n * the DOM.\n *\n * Reads the caller's own props rather than the defaulted ones, because the\n * whole question is which of them the caller actually spelled:\n * {@link ALERT_DEFAULTS} supplies `role: 'alert'` for everything, so after the\n * merge there is no longer any difference between an alert that asked to\n * interrupt and one that never mentioned it.\n *\n * Precedence, most specific first — an explicit `role` or `aria-live` beats\n * `announce`, so a call site that already spells either by hand is untouched:\n *\n * 1. `role` / `aria-live` as given;\n * 2. {@link AlertBaseFields.announce}, which supplies both;\n * 3. today's behaviour — `ALERT_DEFAULTS.role` and {@link defaultAriaLive}.\n *\n * With none of the three named, the result is byte-for-byte what it was before\n * `announce` existed.\n */\nexport const resolveAnnouncement = (\n props: Pick<AlertBaseFields, 'announce' | 'role' | 'aria-live'>,\n variant: AlertVariant,\n): { role: string; 'aria-live': 'polite' | 'assertive' | 'off' } => {\n const announce = props.announce;\n return {\n role: props.role ?? (announce === undefined ? ALERT_DEFAULTS.role : ANNOUNCE_ROLE[announce]),\n 'aria-live': props['aria-live'] ?? announce ?? defaultAriaLive(variant),\n };\n};\n\nexport const testIdFor = (base: string | undefined, suffix: string): string =>\n base ? `${base}-${suffix}` : `alert-${suffix}`;\n\n/**\n * The glyph each semantic variant carries, by the shared icon set's name.\n * `glass` and `gradient` carry none of their own: the web renders an empty\n * icon slot for them unless the caller passes an `icon`, and so does native.\n */\nexport const VARIANT_ICON: Partial<Record<AlertVariant, IconName>> = {\n info: 'Info',\n success: 'CheckCircle',\n warning: 'Warning',\n danger: 'Error',\n};\n","import type { AlertVariant } from './Alert.base';\nimport { alpha, darken, lighten } from '../../../tokens/color';\nimport { contrastText, type UiGreyStep, type UiTheme } from '../../../tokens/theme';\n\n/**\n * THE NUMBERS BOTH `Alert` RENDERERS DRAW WITH.\n *\n * `Alert.styles.tsx` / `Alert.tsx` (MUI) and `Alert.native.tsx` (React\n * Native) read this one table. Spacing is in SPACING UNITS where the web\n * writes `theme.spacing(n)`; durations are ms (the web turns them into `s`\n * through {@link seconds} so its emitted CSS is byte-for-byte what it was);\n * everything else is px, a ratio or an alpha. The hover, active and focus\n * numbers are here too although only the DOM can honour them — a number the\n * web draws with belongs in the table whether or not native can reach it.\n */\n\n/** The root: 12px corners, 14px 16px of padding, one 300ms curve for everything. */\nexport const ALERT_RADIUS_UNITS = 1.5;\nexport const ALERT_PADDING_UNITS = { vertical: 1.75, horizontal: 2 } as const;\nexport const ALERT_TRANSITION_MS = 300;\nexport const ALERT_EASING = 'cubic-bezier(0.4, 0, 0.2, 1)';\n\n/** Mount: the web's `fadeInScale` keyframes and the icon's `iconRotate`. */\nexport const FADE_IN = { ms: 300, scale: 0.95, lift: 10 } as const;\nexport const ICON_SPIN = { ms: 600, from: 0.8, mid: 1.1 } as const;\n/** Dismiss: MUI `Collapse` runs 300ms; `onClose` fires 200ms in. */\nexport const COLLAPSE_MS = 300;\nexport const CLOSE_DELAY_MS = 200;\n\n/** The message column: 8px between title, description and children; 0.95rem body on 1.5. */\nexport const MESSAGE_GAP_UNITS = 1;\nexport const MESSAGE_FONT_SIZE = 15.2;\nexport const MESSAGE_LINE_HEIGHT = 1.5;\n/** A control inside the message gets an edge: 4px above, a hairline at 0.45 of the hue. */\nexport const MESSAGE_BUTTON = { marginTopUnits: 0.5, borderAlpha: 0.45 } as const;\n\n/** The title: 1.05rem at 600; MUI's `AlertTitle` lifts it 2px; 4px below it when a description follows. */\nexport const TITLE = { fontSize: 16.8, fontWeight: 600, marginTop: -2, marginBottomUnits: 0.5 } as const;\n/** The description: 0.925rem, slightly faded. */\nexport const DESCRIPTION = { fontSize: 14.8, opacity: 0.9 } as const;\n\n/** The icon slot: MUI's 22px glyph at 0.9, 14px from the words, 2px down (MUI's 7px stays below). */\nexport const ICON_SLOT = { size: 22, opacity: 0.9, marginRightUnits: 1.75, paddingTopUnits: 0.25, paddingBottom: 7 } as const;\n/** The action slot: MUI's `4px 0 0 16px` with the 16px ours, pushed right, 8px into the padding. */\nexport const ACTION_SLOT = { paddingLeftUnits: 2, paddingTop: 4, marginRight: -8 } as const;\n/** The close button: MUI's small `IconButton` (5px padding, 18px glyph) at 0.7. */\nexport const CLOSE_BUTTON = { padding: 5, iconSize: 18, opacity: 0.7, washAlpha: 0.1 } as const;\n\n/**\n * A semantic Alert's surface and ink: an OPAQUE tint of the hue with a dark\n * ink of the same hue — MUI's own `standard` recipe, at its ratios. See\n * `semanticSurface` in `Alert.styles.tsx` for why not `alpha(main, 0.1)`.\n */\nexport const SEMANTIC_SURFACE = { tint: { light: 0.9, dark: 0.8 }, ink: 0.6, borderAlpha: 0.35 } as const;\n/** `glass`: 85% paper under a 20px blur, a 0.4 divider hairline. */\nexport const GLASS = { backgroundAlpha: 0.85, borderAlpha: 0.4, blur: 20, saturatePercent: 180 } as const;\n/**\n * `gradient`: light→dark at 0.9 along 135°, a 0.2 white shimmer sweeping 1000px every 3s.\n *\n * It carries no hover of its own, and that is load-bearing rather than an\n * omission. `alertVariantStyles` is spread AFTER the root's `'&:hover'` in the\n * same object literal, so a second `'&:hover'` key does not merge with it — it\n * REPLACES it. While this variant had one, `gradient` was the only alert that\n * brightened on hover while every other variant darkened, and the only one to\n * lose the shimmer reveal the root's hover performs.\n */\nexport const GRADIENT = {\n angleDeg: 135,\n stopAlpha: 0.9,\n shimmerAlpha: 0.2,\n shimmerMs: 3000,\n shimmerTravel: 1000,\n} as const;\n\n/** Emphasis: the glow's shadow and brightness, the pulse's wash. */\nexport const GLOW = { blur: 20, spread: 5, alpha: 0.3, brightness: 1.05 } as const;\nexport const PULSE = { alpha: 0.2, ms: 2000, spread: 10 } as const;\n\n/**\n * Pointer states — DOM only, kept so the web derives them.\n *\n * HOVER and ACTIVE carry NO geometry, and that is the point rather than an\n * omission. They used to lift the card 3px, scale it 1.01, grow a 20px shadow\n * and spin the icon 10deg at 1.15 — four things moving at once on a surface\n * that is not a control, which made a page of alerts twitch under the pointer.\n *\n * Both are a TINT now: a flat inset layer over the surface. Two mechanisms\n * came before it and each failed on a case the next had to fix. Dropping the\n * element's `opacity` composites toward the PAGE, so it inverted the hover on\n * a light tint (L* 95.0 idle, 89.1 hovered, 91.1 pressed) and vanished on a\n * dark one. A `filter: brightness()` fixed the direction but is MULTIPLICATIVE,\n * so it moved a near-black `glass` by four counts (ΔE76 1.71, under the JND)\n * and Banner's 10%-alpha wash by ΔE76 0.44. A layer is additive: it reads the\n * same on an opaque tint, a translucent wash and a gradient, and because it\n * paints above the background and below the content the ink keeps its own\n * contrast.\n */\nexport const HOVER = { tintAlpha: 0.06 } as const;\n\n/**\n * The press: a 20% tint LAYER, eased back fast.\n *\n * The layer is the point. The first attempt dropped the whole element's\n * opacity, which composites toward the PAGE and so behaves differently on\n * every surface it is asked about. Measured: over a light page it made a light\n * tint LIGHTER (L* 95.0 idle, 89.1 hovered, 91.1 pressed), so pushing the\n * surface looked like the pointer leaving; over a dark page it landed back on\n * the idle surface (ΔE76 0.82 on `glass`); on `gradient` it washed white body\n * copy to 2.31:1, under AA; and it diluted the ink during a text-selection\n * drag. A `brightness()` step instead of it fixed the direction but not the\n * reach — a multiplier does nothing to a near-black `glass` in dark mode\n * (ΔE76 1.71) and nothing to Banner's 10%-alpha wash (ΔE76 0.44), because it\n * scales only what the element already paints.\n *\n * An inset shadow at 100vmax is a flat tint over the whole surface: ADDITIVE,\n * so it reads the same on an opaque tint, a translucent wash and a gradient;\n * painted above the background and below the content, so the ink keeps its\n * own contrast; and animatable, which `background-image` is not.\n *\n * `ms` is 250 and not the 1000 first asked for, and the reason is that ONE\n * property carries both states. CSS runs a transition from the DESTINATION\n * state's declaration, and entering hover and releasing a press share that\n * destination — so they cannot have different durations without a second\n * animatable property, and both free pseudo-elements are already spent on the\n * `gradient` shimmer and the `pulse` wash. At 1000ms the hover inherited the\n * second: crossing an alert in 300ms peaked at a ≈ 0.024, under the JND, and\n * for ~360ms the alert you had just LEFT was darker than the one under the\n * pointer. A fast press-return is the smaller loss, and it is the call the\n * product owner made when shown both.\n */\nexport const ACTIVE = { tintAlpha: 0.2, ms: 250 } as const;\n\nexport const FOCUS = { ringWidth: 2, ringAlpha: 1, offset: 2 } as const;\n\n/** `neutral` has no palette slot; the web has always drawn it from three greys. */\nexport const NEUTRAL_GREY: Record<'main' | 'light' | 'dark', UiGreyStep> = { main: 500, light: 300, dark: 700 };\n\n/** A duration as the CSS the web has always emitted: `2000` → `2s`, `300` → `0.3s`. */\nexport const seconds = (ms: number): string => `${ms / 1000}s`;\n\n/** The palette shape the web's `getColorFromTheme` returns — a main plus optional shades. */\nexport interface AlertPalette {\n main: string;\n light?: string;\n dark?: string;\n}\n\n/**\n * The renderer-free twin of the web's `getColorFromTheme`: a variant or\n * colour name to its palette, `neutral` from the greys, anything unknown\n * (`glass`, `gradient`) to `info`.\n */\nexport function alertPalette(theme: UiTheme, key: string | undefined): AlertPalette {\n switch (key) {\n case 'info':\n case 'success':\n case 'warning':\n case 'danger':\n case 'primary':\n case 'secondary':\n return theme.palette[key];\n case 'neutral':\n return {\n main: theme.palette.grey[NEUTRAL_GREY.main],\n light: theme.palette.grey[NEUTRAL_GREY.light],\n dark: theme.palette.grey[NEUTRAL_GREY.dark],\n };\n default:\n return theme.palette.info;\n }\n}\n\n/** What a variant paints: its fill, its ink, its hairline if any, and the colour of its glyph. */\nexport interface AlertSurface {\n backgroundColor: string;\n color: string;\n borderColor?: string;\n iconColor: string;\n}\n\nexport const SEMANTIC_VARIANTS: ReadonlySet<AlertVariant> = new Set(['info', 'success', 'warning', 'danger']);\n\n/** The opaque tint and same-hue ink, inverted for dark mode; the hairline keeps its alpha. */\nexport function semanticSurface(theme: UiTheme, palette: AlertPalette): AlertSurface {\n const dark = theme.mode === 'dark';\n return {\n backgroundColor: dark\n ? darken(palette.main, SEMANTIC_SURFACE.tint.dark)\n : lighten(palette.main, SEMANTIC_SURFACE.tint.light),\n color: dark ? lighten(palette.main, SEMANTIC_SURFACE.ink) : darken(palette.main, SEMANTIC_SURFACE.ink),\n borderColor: alpha(palette.main, SEMANTIC_SURFACE.borderAlpha),\n iconColor: palette.main,\n };\n}\n\nexport function glassSurface(theme: UiTheme): AlertSurface {\n return {\n backgroundColor: alpha(theme.palette.background.paper, GLASS.backgroundAlpha),\n color: theme.palette.text.primary,\n borderColor: alpha(theme.palette.divider, GLASS.borderAlpha),\n iconColor: theme.palette.primary.main,\n };\n}\n\n/** The gradient's two stops; a renderer with no gradient fill paints `from`. */\nexport function gradientStops(palette: AlertPalette): { from: string; to: string } {\n return {\n from: alpha(palette.light || palette.main, GRADIENT.stopAlpha),\n to: alpha(palette.dark || palette.main, GRADIENT.stopAlpha),\n };\n}\n\nexport function gradientSurface(palette: AlertPalette): AlertSurface {\n const ink = contrastText(palette.main);\n return { backgroundColor: gradientStops(palette).from, color: ink, iconColor: ink };\n}\n\n/** The surface for a variant, `glass` and `gradient` included. */\nexport function alertSurface(theme: UiTheme, variant: AlertVariant, palette: AlertPalette): AlertSurface {\n if (variant === 'glass') return glassSurface(theme);\n if (variant === 'gradient') return gradientSurface(palette);\n return semanticSurface(theme, palette);\n}\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport type { AlertVariant } from './Alert.base';\nimport {\n ACTION_SLOT,\n ALERT_PADDING_UNITS,\n ALERT_RADIUS_UNITS,\n type AlertPalette,\n alertPalette,\n alertSurface,\n CLOSE_BUTTON,\n DESCRIPTION,\n GLOW,\n ICON_SLOT,\n MESSAGE_FONT_SIZE,\n MESSAGE_GAP_UNITS,\n MESSAGE_LINE_HEIGHT,\n TITLE,\n} from './Alert.metrics';\nimport { alpha } from '../../../tokens/color';\nimport { muiTypeStyle } from '../../../tokens/mui-type';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/**\n * THE PAINT, KEPT APART FROM THE STRUCTURE.\n *\n * `Alert.native.tsx` reads as what renders where; this file reads as\n * arithmetic — the same palette slots, alphas and px the web's\n * `Alert.styles.tsx` derives from `Alert.metrics.ts`.\n */\n\nexport interface AlertLookArgs {\n variant: AlertVariant;\n color: ColorValue | undefined;\n glow: boolean;\n pulse: boolean;\n}\n\nexport interface AlertLook {\n palette: AlertPalette;\n /** What the words are set in. */\n ink: string;\n iconColor: string;\n root: ViewStyle;\n}\n\n/**\n * The root's paint. The web keeps `overflow: hidden` (its pulse wash is\n * clipped to the card, as it is here); only the glow opens it, because a\n * view's own shadow is clipped by its own overflow on a device.\n */\nexport function alertLook(theme: UiTheme, a: AlertLookArgs): AlertLook {\n const palette = alertPalette(theme, a.color ?? a.variant);\n const surface = alertSurface(theme, a.variant, palette);\n const root: ViewStyle = {\n flexDirection: 'row',\n paddingVertical: theme.spacing(ALERT_PADDING_UNITS.vertical),\n paddingHorizontal: theme.spacing(ALERT_PADDING_UNITS.horizontal),\n borderRadius: theme.spacing(ALERT_RADIUS_UNITS),\n overflow: a.glow ? 'visible' : 'hidden',\n backgroundColor: surface.backgroundColor,\n ...(surface.borderColor ? { borderWidth: 1, borderColor: surface.borderColor } : {}),\n ...(a.glow\n ? {\n boxShadow: `0 0 ${GLOW.blur}px ${GLOW.spread}px ${alpha(palette.main, GLOW.alpha)}`,\n filter: `brightness(${GLOW.brightness})`,\n }\n : {}),\n };\n return { palette, ink: surface.color, iconColor: surface.iconColor, root };\n}\n\n/** The message column: 8px between its lines, allowed to shrink so long text wraps beside the icon. */\nexport const messageSlotStyle = (theme: UiTheme): ViewStyle => ({\n flexDirection: 'column',\n gap: theme.spacing(MESSAGE_GAP_UNITS),\n flexShrink: 1,\n minWidth: 0,\n});\n\n/** A string child: MUI's `body2` letter-spacing at 0.95rem on the message's 1.5. */\nexport const messageTextStyle = (theme: UiTheme, ink: string): TextStyle => ({\n ...muiTypeStyle(theme, 'body2', MESSAGE_FONT_SIZE),\n lineHeight: MESSAGE_FONT_SIZE * MESSAGE_LINE_HEIGHT,\n color: ink,\n});\n\n/** MUI's `AlertTitle` (a `body1` Typography) at 1.05rem and 600, lifted 2px, 4px above a description. */\nexport const titleStyle = (theme: UiTheme, ink: string, hasDescription: boolean): TextStyle => ({\n ...muiTypeStyle(theme, 'body1', TITLE.fontSize),\n fontWeight: `${TITLE.fontWeight}`,\n color: ink,\n marginTop: TITLE.marginTop,\n marginBottom: hasDescription ? theme.spacing(TITLE.marginBottomUnits) : 0,\n});\n\n/** The description: 0.925rem on the message's 1.5, faded to 0.9. */\nexport const descriptionStyle = (theme: UiTheme, ink: string): TextStyle => ({\n ...muiTypeStyle(theme, 'body2', DESCRIPTION.fontSize),\n lineHeight: DESCRIPTION.fontSize * MESSAGE_LINE_HEIGHT,\n color: ink,\n opacity: DESCRIPTION.opacity,\n});\n\n/** MUI's `.MuiAlert-icon` with the web's overrides: first-line aligned, 14px from the words, 2px down. */\nexport const iconSlotStyle = (theme: UiTheme): ViewStyle => ({\n alignSelf: 'flex-start',\n alignItems: 'center',\n marginRight: theme.spacing(ICON_SLOT.marginRightUnits),\n paddingTop: theme.spacing(ICON_SLOT.paddingTopUnits),\n paddingBottom: ICON_SLOT.paddingBottom,\n opacity: ICON_SLOT.opacity,\n});\n\n/** MUI's `.MuiAlert-action`: top-aligned, pushed to the right edge, 16px off the text. */\nexport const actionSlotStyle = (theme: UiTheme): ViewStyle => ({\n alignItems: 'flex-start',\n paddingTop: ACTION_SLOT.paddingTop,\n paddingLeft: theme.spacing(ACTION_SLOT.paddingLeftUnits),\n marginLeft: 'auto',\n marginRight: ACTION_SLOT.marginRight,\n});\n\n/** MUI's small `IconButton` at 0.7; pressed stands in for the web's hover (full opacity, a faint wash). */\nexport const closeButtonStyle = (theme: UiTheme, pressed: boolean): ViewStyle => ({\n padding: CLOSE_BUTTON.padding,\n borderRadius: theme.radius.full,\n opacity: pressed ? 1 : CLOSE_BUTTON.opacity,\n backgroundColor: pressed ? alpha(theme.palette.action.hover, CLOSE_BUTTON.washAlpha) : 'transparent',\n});\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/data-display/Alert/Alert.native.tsx","../../../src/components/data-display/Alert/Alert.helpers.ts","../../../src/components/data-display/Alert/Alert.metrics.ts","../../../src/components/data-display/Alert/Alert.look.native.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n Easing,\n type LayoutChangeEvent,\n Platform,\n Pressable,\n type Role,\n StyleSheet,\n Text as RNText,\n View,\n type ViewStyle,\n} from 'react-native';\n\nimport { resolveAlertProps, resolveAnnouncement, testIdFor, VARIANT_ICON } from './Alert.helpers';\nimport {\n actionSlotStyle,\n alertLook,\n closeButtonStyle,\n descriptionStyle,\n iconSlotStyle,\n messageSlotStyle,\n messageTextStyle,\n titleStyle,\n} from './Alert.look.native';\nimport { CLOSE_BUTTON, CLOSE_DELAY_MS, COLLAPSE_MS, FADE_IN, ICON_SLOT, ICON_SPIN, PULSE } from './Alert.metrics';\nimport type { AlertProps, AlertVariant } from './Alert.types.native';\nimport { Icon } from '../../../icons/Icon.native';\nimport { webAria } from '../../../platform/aria';\nimport { renderTextChildren } from '../../../platform/text-children';\nimport { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\n\ntype AnimatedStyle = Animated.WithAnimatedValue<ViewStyle>;\nconst nativeDriver = Platform.OS !== 'web';\n\n/** A 0→1 progress that starts on mount when `animate` is set, else sits at 1. */\nfunction useProgress(animate: boolean, duration: number): Animated.Value {\n const progress = React.useRef(new Animated.Value(animate ? 0 : 1)).current;\n React.useEffect(() => {\n if (!animate) return undefined;\n const timing = Animated.timing(progress, { toValue: 1, duration, easing: Easing.out(Easing.ease), useNativeDriver: nativeDriver });\n timing.start();\n return () => timing.stop();\n }, [animate, duration, progress]);\n return progress;\n}\n\n/** The web's `fadeInScale` keyframes: in from 0 opacity, 0.95 scale and 10px above, over 300ms. */\nfunction useFadeIn(animate: boolean): AnimatedStyle | undefined {\n const progress = useProgress(animate, FADE_IN.ms);\n if (!animate) return undefined;\n return {\n opacity: progress,\n transform: [\n { scale: progress.interpolate({ inputRange: [0, 1], outputRange: [FADE_IN.scale, 1] }) },\n { translateY: progress.interpolate({ inputRange: [0, 1], outputRange: [-FADE_IN.lift, 0] }) },\n ],\n };\n}\n\n/** The web's `iconRotate` keyframes: one full turn, 0.8 → 1.1 → 1, over 600ms. */\nfunction useIconSpin(animate: boolean): AnimatedStyle | undefined {\n const progress = useProgress(animate, ICON_SPIN.ms);\n if (!animate) return undefined;\n return {\n transform: [\n { rotate: progress.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] }) },\n { scale: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [ICON_SPIN.from, ICON_SPIN.mid, 1] }) },\n ],\n };\n}\n\n/** The web's `::after` pulse: a wash of the hue over the card, fading out every two seconds, behind the words. */\nfunction Pulse({ color, radius, testID }: { color: string; radius: number; testID: string }): React.JSX.Element {\n const progress = React.useRef(new Animated.Value(0)).current;\n React.useEffect(() => {\n const loop = Animated.loop(\n Animated.timing(progress, { toValue: 1, duration: PULSE.ms, easing: Easing.linear, useNativeDriver: nativeDriver }),\n );\n loop.start();\n return () => loop.stop();\n }, [progress]);\n return (\n <Animated.View\n testID={testID}\n aria-hidden\n style={[\n StyleSheet.absoluteFill,\n {\n pointerEvents: 'none',\n borderRadius: radius,\n backgroundColor: color,\n opacity: progress.interpolate({ inputRange: [0, 0.7, 1], outputRange: [PULSE.alpha, 0, 0] }),\n },\n ]}\n />\n );\n}\n\n/**\n * MUI's `Collapse`: open, it is a plain wrapper with its overflow visible (so\n * a glow can escape); closing, it clips and shrinks over 300ms, then says so.\n */\nfunction Collapse({ open, onCollapsed, children }: { open: boolean; onCollapsed: () => void; children: React.ReactNode }): React.JSX.Element {\n const [height, setHeight] = React.useState<number | null>(null);\n const progress = React.useRef(new Animated.Value(1)).current;\n React.useEffect(() => {\n if (open) return undefined;\n const timing = Animated.timing(progress, { toValue: 0, duration: COLLAPSE_MS, easing: Easing.inOut(Easing.ease), useNativeDriver: false });\n timing.start(({ finished }) => {\n if (finished) onCollapsed();\n });\n return () => timing.stop();\n }, [open, onCollapsed, progress]);\n const onLayout = (event: LayoutChangeEvent): void => {\n if (open) setHeight(event.nativeEvent.layout.height);\n };\n const shrink: AnimatedStyle = height == null ? {} : { maxHeight: progress.interpolate({ inputRange: [0, 1], outputRange: [0, height] }) };\n return (\n <Animated.View style={[{ overflow: open ? 'visible' : 'hidden', opacity: progress }, shrink]}>\n <View onLayout={onLayout}>{children}</View>\n </Animated.View>\n );\n}\n\ninterface IconSlotProps {\n variant: AlertVariant;\n icon: React.ReactNode;\n color: string;\n animate: boolean;\n testID: string;\n}\n\n/** The icon slot; `glass` and `gradient` have no glyph of their own, so theirs is empty unless an `icon` is given — as on the web. */\nfunction IconSlot({ variant, icon, color, animate, testID }: IconSlotProps): React.JSX.Element {\n const theme = useUiTheme();\n const spin = useIconSpin(animate);\n const glyph = VARIANT_ICON[variant];\n return (\n <Animated.View testID={testID} style={[iconSlotStyle(theme), spin]}>\n {icon || (glyph ? <Icon name={glyph} size={ICON_SLOT.size} color={color} /> : null)}\n </Animated.View>\n );\n}\n\nfunction CloseButton({ label, ink, onPress, testID }: { label: string | undefined; ink: string; onPress: () => void; testID: string }): React.JSX.Element {\n const theme = useUiTheme();\n return (\n <Pressable role=\"button\" aria-label={label} testID={testID} onPress={onPress} style={({ pressed }) => closeButtonStyle(theme, pressed)}>\n <Icon name=\"Close\" size={CLOSE_BUTTON.iconSize} color={ink} />\n </Pressable>\n );\n}\n\ninterface ContentProps {\n title?: string;\n description?: string;\n children?: React.ReactNode;\n ink: string;\n testId: string;\n}\n\nfunction AlertContent({ title, description, children, ink, testId }: ContentProps): React.JSX.Element {\n const theme = useUiTheme();\n return (\n <View style={messageSlotStyle(theme)}>\n {title ? (\n <RNText testID={testIdFor(testId, 'title')} style={titleStyle(theme, ink, Boolean(description))}>\n {title}\n </RNText>\n ) : null}\n {description ? (\n <RNText testID={testIdFor(testId, 'message')} style={descriptionStyle(theme, ink)}>\n {description}\n </RNText>\n ) : null}\n {renderTextChildren(children, messageTextStyle(theme, ink))}\n </View>\n );\n}\n\n/** The dismiss sequence the web runs: mark closing, fire `onClose` 200ms in, stay until the collapse has run. */\nfunction useDismiss(onClose: (() => void) | undefined): { open: boolean; gone: boolean; close: () => void; onCollapsed: () => void } {\n const [closing, setClosing] = React.useState(false);\n const [gone, setGone] = React.useState(false);\n const timer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n React.useEffect(() => () => {\n if (timer.current) clearTimeout(timer.current);\n }, []);\n const close = (): void => {\n setClosing(true);\n timer.current = setTimeout(() => onClose?.(), CLOSE_DELAY_MS);\n };\n const onCollapsed = React.useCallback(() => setGone(true), []);\n return { open: !closing, gone, close, onCollapsed };\n}\n\nexport const Alert = React.forwardRef<View, AlertProps>((alertProps, ref) => {\n const {\n variant, color, glow, pulse, icon, showIcon, onClose, title, description, children, animate,\n // `role`, `announce` and `aria-live` all leave here and are resolved\n // TOGETHER below, off `alertProps` — see `resolveAnnouncement`.\n role: _role, announce: _announce,\n 'aria-atomic': ariaAtomic, 'aria-live': _ariaLive, closable, closeLabel, style, ...others\n } = resolveAlertProps(alertProps);\n const theme = useUiTheme();\n const testId = resolveTestId(others, 'alert') as string;\n const rest = withoutTestIdProps(others);\n const look = alertLook(theme, { variant, color, glow, pulse });\n const fadeIn = useFadeIn(animate);\n const dismiss = useDismiss(onClose);\n const announcement = resolveAnnouncement(alertProps, variant);\n\n if (dismiss.gone) return null;\n return (\n <Collapse open={dismiss.open} onCollapsed={dismiss.onCollapsed}>\n <Animated.View\n ref={ref}\n role={announcement.role as Role}\n aria-live={announcement['aria-live']}\n {...webAria({ 'aria-atomic': ariaAtomic })}\n tabIndex={0}\n testID={testId}\n style={[look.root, fadeIn, style]}\n {...rest}\n >\n {pulse ? <Pulse color={look.palette.main} radius={look.root.borderRadius as number} testID={testIdFor(testId, 'pulse')} /> : null}\n {showIcon ? <IconSlot variant={variant} icon={icon} color={look.iconColor} animate={animate} testID={testIdFor(testId, 'icon')} /> : null}\n <AlertContent title={title} description={description} ink={look.ink} testId={testId}>\n {children}\n </AlertContent>\n {closable ? (\n <View style={actionSlotStyle(theme)}>\n <CloseButton label={closeLabel} ink={look.ink} onPress={dismiss.close} testID={testIdFor(testId, 'close')} />\n </View>\n ) : null}\n </Animated.View>\n </Collapse>\n );\n});\n\nAlert.displayName = 'Alert';\n","import type { AlertBaseFields, AlertVariant } from './Alert.base';\nimport type { IconName } from '../../../icons/Icon.types';\n\ntype AlertDefaultedKeys = 'variant' | 'glow' | 'pulse' | 'showIcon' | 'animate' | 'role' | 'aria-atomic';\n\nexport const ALERT_DEFAULTS: Required<Pick<AlertBaseFields, AlertDefaultedKeys>> & { closable: false } = {\n variant: 'info',\n glow: false,\n pulse: false,\n showIcon: true,\n closable: false,\n animate: true,\n role: 'alert',\n 'aria-atomic': 'true',\n};\n\n/**\n * Generic over the renderer's own props: the web and the native `Alert` pass\n * different extras through, and both come back out untouched.\n */\nexport type ResolvedAlertProps<P extends AlertBaseFields> = P &\n Required<Pick<AlertBaseFields, AlertDefaultedKeys>>;\n\n// Strips explicitly-undefined props before the merge so `prop={undefined}` still\n// falls back to the default, the way a destructuring default would.\nconst definedProps = <P extends AlertBaseFields>(props: P): Partial<P> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<P>;\n\n// Through `unknown`: `closable: false` in the defaults belongs to the dismiss\n// union rather than to `AlertBaseFields`, so TypeScript cannot see the merge as\n// comparable to `P` although every field of `P` survives it untouched.\nexport const resolveAlertProps = <P extends AlertBaseFields>(props: P): ResolvedAlertProps<P> =>\n ({ ...ALERT_DEFAULTS, ...definedProps(props) }) as unknown as ResolvedAlertProps<P>;\n\n/** `danger` announces itself; everything else waits its turn. */\nexport const defaultAriaLive = (variant: AlertVariant): 'polite' | 'assertive' =>\n variant === 'danger' ? 'assertive' : 'polite';\n\n/**\n * The ARIA role each `announce` level is spelled with.\n *\n * Both roles carry an IMPLICIT live setting, and that implicit one is what\n * assistive tech acts on — `alert` is assertive, `status` is polite. Pairing\n * them here is what stops `role` and `aria-live` from contradicting each\n * other, which they do by default: every alert is `role=\"alert\"` regardless of\n * variant, so an `info` alert asks to be polite in one attribute and to\n * interrupt in the other.\n */\nexport const ANNOUNCE_ROLE: Record<NonNullable<AlertBaseFields['announce']>, string> = {\n assertive: 'alert',\n polite: 'status',\n};\n\n/**\n * The two attributes that decide whether an alert interrupts, resolved TOGETHER.\n *\n * Both renderers therefore let `role` and `announce` leave their destructure\n * unused (`_role`, `_announce`) and call this instead — the first because the\n * defaults have already answered it, the second because it must never reach\n * the DOM.\n *\n * Reads the caller's own props rather than the defaulted ones, because the\n * whole question is which of them the caller actually spelled:\n * {@link ALERT_DEFAULTS} supplies `role: 'alert'` for everything, so after the\n * merge there is no longer any difference between an alert that asked to\n * interrupt and one that never mentioned it.\n *\n * Precedence, most specific first — an explicit `role` or `aria-live` beats\n * `announce`, so a call site that already spells either by hand is untouched:\n *\n * 1. `role` / `aria-live` as given;\n * 2. {@link AlertBaseFields.announce}, which supplies both;\n * 3. today's behaviour — `ALERT_DEFAULTS.role` and {@link defaultAriaLive}.\n *\n * With none of the three named, the result is byte-for-byte what it was before\n * `announce` existed.\n */\nexport const resolveAnnouncement = (\n props: Pick<AlertBaseFields, 'announce' | 'role' | 'aria-live'>,\n variant: AlertVariant,\n): { role: string; 'aria-live': 'polite' | 'assertive' | 'off' } => {\n const announce = props.announce;\n return {\n role: props.role ?? (announce === undefined ? ALERT_DEFAULTS.role : ANNOUNCE_ROLE[announce]),\n 'aria-live': props['aria-live'] ?? announce ?? defaultAriaLive(variant),\n };\n};\n\nexport const testIdFor = (base: string | undefined, suffix: string): string =>\n base ? `${base}-${suffix}` : `alert-${suffix}`;\n\n/**\n * The glyph each semantic variant carries, by the shared icon set's name.\n * `glass` and `gradient` carry none of their own: the web renders an empty\n * icon slot for them unless the caller passes an `icon`, and so does native.\n */\nexport const VARIANT_ICON: Partial<Record<AlertVariant, IconName>> = {\n info: 'Info',\n success: 'CheckCircle',\n warning: 'Warning',\n danger: 'Error',\n};\n","import type { AlertVariant } from './Alert.base';\nimport { alpha, darken, lighten } from '../../../tokens/color';\nimport { NEUTRAL_RAMP } from '../../../tokens/ink.core';\nimport { contrastText, type UiGreyStep, type UiTheme } from '../../../tokens/theme';\n\n/**\n * THE NUMBERS BOTH `Alert` RENDERERS DRAW WITH.\n *\n * `Alert.styles.tsx` / `Alert.tsx` (MUI) and `Alert.native.tsx` (React\n * Native) read this one table. Spacing is in SPACING UNITS where the web\n * writes `theme.spacing(n)`; durations are ms (the web turns them into `s`\n * through {@link seconds} so its emitted CSS is byte-for-byte what it was);\n * everything else is px, a ratio or an alpha. The hover, active and focus\n * numbers are here too although only the DOM can honour them — a number the\n * web draws with belongs in the table whether or not native can reach it.\n */\n\n/** The root: 12px corners, 14px 16px of padding, one 300ms curve for everything. */\nexport const ALERT_RADIUS_UNITS = 1.5;\nexport const ALERT_PADDING_UNITS = { vertical: 1.75, horizontal: 2 } as const;\nexport const ALERT_TRANSITION_MS = 300;\nexport const ALERT_EASING = 'cubic-bezier(0.4, 0, 0.2, 1)';\n\n/** Mount: the web's `fadeInScale` keyframes and the icon's `iconRotate`. */\nexport const FADE_IN = { ms: 300, scale: 0.95, lift: 10 } as const;\nexport const ICON_SPIN = { ms: 600, from: 0.8, mid: 1.1 } as const;\n/** Dismiss: MUI `Collapse` runs 300ms; `onClose` fires 200ms in. */\nexport const COLLAPSE_MS = 300;\nexport const CLOSE_DELAY_MS = 200;\n\n/** The message column: 8px between title, description and children; 0.95rem body on 1.5. */\nexport const MESSAGE_GAP_UNITS = 1;\nexport const MESSAGE_FONT_SIZE = 15.2;\nexport const MESSAGE_LINE_HEIGHT = 1.5;\n/** A control inside the message gets an edge: 4px above, a hairline at 0.45 of the hue. */\nexport const MESSAGE_BUTTON = { marginTopUnits: 0.5, borderAlpha: 0.45 } as const;\n\n/** The title: 1.05rem at 600; MUI's `AlertTitle` lifts it 2px; 4px below it when a description follows. */\nexport const TITLE = { fontSize: 16.8, fontWeight: 600, marginTop: -2, marginBottomUnits: 0.5 } as const;\n/** The description: 0.925rem, slightly faded. */\nexport const DESCRIPTION = { fontSize: 14.8, opacity: 0.9 } as const;\n\n/** The icon slot: MUI's 22px glyph at 0.9, 14px from the words, 2px down (MUI's 7px stays below). */\nexport const ICON_SLOT = { size: 22, opacity: 0.9, marginRightUnits: 1.75, paddingTopUnits: 0.25, paddingBottom: 7 } as const;\n/** The action slot: MUI's `4px 0 0 16px` with the 16px ours, pushed right, 8px into the padding. */\nexport const ACTION_SLOT = { paddingLeftUnits: 2, paddingTop: 4, marginRight: -8 } as const;\n/** The close button: MUI's small `IconButton` (5px padding, 18px glyph) at 0.7. */\nexport const CLOSE_BUTTON = { padding: 5, iconSize: 18, opacity: 0.7, washAlpha: 0.1 } as const;\n\n/**\n * A semantic Alert's surface and ink: an OPAQUE tint of the hue with a dark\n * ink of the same hue — MUI's own `standard` recipe, at its ratios. See\n * `semanticSurface` in `Alert.styles.tsx` for why not `alpha(main, 0.1)`.\n */\nexport const SEMANTIC_SURFACE = { tint: { light: 0.9, dark: 0.8 }, ink: 0.6, borderAlpha: 0.35 } as const;\n/** `glass`: 85% paper under a 20px blur, a 0.4 divider hairline. */\nexport const GLASS = { backgroundAlpha: 0.85, borderAlpha: 0.4, blur: 20, saturatePercent: 180 } as const;\n/**\n * `gradient`: light→dark at 0.9 along 135°, a 0.2 white shimmer sweeping 1000px every 3s.\n *\n * It carries no hover of its own, and that is load-bearing rather than an\n * omission. `alertVariantStyles` is spread AFTER the root's `'&:hover'` in the\n * same object literal, so a second `'&:hover'` key does not merge with it — it\n * REPLACES it. While this variant had one, `gradient` was the only alert that\n * brightened on hover while every other variant darkened, and the only one to\n * lose the shimmer reveal the root's hover performs.\n */\nexport const GRADIENT = {\n angleDeg: 135,\n stopAlpha: 0.9,\n shimmerAlpha: 0.2,\n shimmerMs: 3000,\n shimmerTravel: 1000,\n} as const;\n\n/** Emphasis: the glow's shadow and brightness, the pulse's wash. */\nexport const GLOW = { blur: 20, spread: 5, alpha: 0.3, brightness: 1.05 } as const;\nexport const PULSE = { alpha: 0.2, ms: 2000, spread: 10 } as const;\n\n/**\n * Pointer states — DOM only, kept so the web derives them.\n *\n * HOVER and ACTIVE carry NO geometry, and that is the point rather than an\n * omission. They used to lift the card 3px, scale it 1.01, grow a 20px shadow\n * and spin the icon 10deg at 1.15 — four things moving at once on a surface\n * that is not a control, which made a page of alerts twitch under the pointer.\n *\n * Both are a TINT now: a flat inset layer over the surface. Two mechanisms\n * came before it and each failed on a case the next had to fix. Dropping the\n * element's `opacity` composites toward the PAGE, so it inverted the hover on\n * a light tint (L* 95.0 idle, 89.1 hovered, 91.1 pressed) and vanished on a\n * dark one. A `filter: brightness()` fixed the direction but is MULTIPLICATIVE,\n * so it moved a near-black `glass` by four counts (ΔE76 1.71, under the JND)\n * and Banner's 10%-alpha wash by ΔE76 0.44. A layer is additive: it reads the\n * same on an opaque tint, a translucent wash and a gradient, and because it\n * paints above the background and below the content the ink keeps its own\n * contrast.\n */\nexport const HOVER = { tintAlpha: 0.06 } as const;\n\n/**\n * The press: a 20% tint LAYER, eased back fast.\n *\n * The layer is the point. The first attempt dropped the whole element's\n * opacity, which composites toward the PAGE and so behaves differently on\n * every surface it is asked about. Measured: over a light page it made a light\n * tint LIGHTER (L* 95.0 idle, 89.1 hovered, 91.1 pressed), so pushing the\n * surface looked like the pointer leaving; over a dark page it landed back on\n * the idle surface (ΔE76 0.82 on `glass`); on `gradient` it washed white body\n * copy to 2.31:1, under AA; and it diluted the ink during a text-selection\n * drag. A `brightness()` step instead of it fixed the direction but not the\n * reach — a multiplier does nothing to a near-black `glass` in dark mode\n * (ΔE76 1.71) and nothing to Banner's 10%-alpha wash (ΔE76 0.44), because it\n * scales only what the element already paints.\n *\n * An inset shadow at 100vmax is a flat tint over the whole surface: ADDITIVE,\n * so it reads the same on an opaque tint, a translucent wash and a gradient;\n * painted above the background and below the content, so the ink keeps its\n * own contrast; and animatable, which `background-image` is not.\n *\n * `ms` is 250 and not the 1000 first asked for, and the reason is that ONE\n * property carries both states. CSS runs a transition from the DESTINATION\n * state's declaration, and entering hover and releasing a press share that\n * destination — so they cannot have different durations without a second\n * animatable property, and both free pseudo-elements are already spent on the\n * `gradient` shimmer and the `pulse` wash. At 1000ms the hover inherited the\n * second: crossing an alert in 300ms peaked at a ≈ 0.024, under the JND, and\n * for ~360ms the alert you had just LEFT was darker than the one under the\n * pointer. A fast press-return is the smaller loss, and it is the call the\n * product owner made when shown both.\n */\nexport const ACTIVE = { tintAlpha: 0.2, ms: 250 } as const;\n\nexport const FOCUS = { ringWidth: 2, ringAlpha: 1, offset: 2 } as const;\n\n/** `neutral` has no palette slot; the web has always drawn it from three greys. */\nexport const NEUTRAL_GREY: Record<'main' | 'light' | 'dark', UiGreyStep> = { main: 500, light: 300, dark: 700 };\n\n/** A duration as the CSS the web has always emitted: `2000` → `2s`, `300` → `0.3s`. */\nexport const seconds = (ms: number): string => `${ms / 1000}s`;\n\n/** The palette shape the web's `getColorFromTheme` returns — a main plus optional shades. */\nexport interface AlertPalette {\n main: string;\n light?: string;\n dark?: string;\n}\n\n/**\n * The renderer-free twin of the web's `getColorFromTheme`: a variant or\n * colour name to its palette, `neutral` from the greys, anything unknown\n * (`glass`, `gradient`) to `info`.\n */\nexport function alertPalette(theme: UiTheme, key: string | undefined): AlertPalette {\n switch (key) {\n case 'info':\n case 'success':\n case 'warning':\n case 'danger':\n case 'primary':\n case 'secondary':\n return theme.palette[key];\n case 'neutral':\n return {\n main: NEUTRAL_RAMP[NEUTRAL_GREY.main],\n light: NEUTRAL_RAMP[NEUTRAL_GREY.light],\n dark: NEUTRAL_RAMP[NEUTRAL_GREY.dark],\n };\n default:\n return theme.palette.info;\n }\n}\n\n/** What a variant paints: its fill, its ink, its hairline if any, and the colour of its glyph. */\nexport interface AlertSurface {\n backgroundColor: string;\n color: string;\n borderColor?: string;\n iconColor: string;\n}\n\nexport const SEMANTIC_VARIANTS: ReadonlySet<AlertVariant> = new Set(['info', 'success', 'warning', 'danger']);\n\n/** The opaque tint and same-hue ink, inverted for dark mode; the hairline keeps its alpha. */\nexport function semanticSurface(theme: UiTheme, palette: AlertPalette): AlertSurface {\n const dark = theme.mode === 'dark';\n return {\n backgroundColor: dark\n ? darken(palette.main, SEMANTIC_SURFACE.tint.dark)\n : lighten(palette.main, SEMANTIC_SURFACE.tint.light),\n color: dark ? lighten(palette.main, SEMANTIC_SURFACE.ink) : darken(palette.main, SEMANTIC_SURFACE.ink),\n borderColor: alpha(palette.main, SEMANTIC_SURFACE.borderAlpha),\n iconColor: palette.main,\n };\n}\n\nexport function glassSurface(theme: UiTheme): AlertSurface {\n return {\n backgroundColor: alpha(theme.palette.background.paper, GLASS.backgroundAlpha),\n color: theme.palette.text.primary,\n borderColor: alpha(theme.palette.divider, GLASS.borderAlpha),\n iconColor: theme.palette.primary.main,\n };\n}\n\n/** The gradient's two stops; a renderer with no gradient fill paints `from`. */\nexport function gradientStops(palette: AlertPalette): { from: string; to: string } {\n return {\n from: alpha(palette.light || palette.main, GRADIENT.stopAlpha),\n to: alpha(palette.dark || palette.main, GRADIENT.stopAlpha),\n };\n}\n\nexport function gradientSurface(palette: AlertPalette): AlertSurface {\n const ink = contrastText(palette.main);\n return { backgroundColor: gradientStops(palette).from, color: ink, iconColor: ink };\n}\n\n/** The surface for a variant, `glass` and `gradient` included. */\nexport function alertSurface(theme: UiTheme, variant: AlertVariant, palette: AlertPalette): AlertSurface {\n if (variant === 'glass') return glassSurface(theme);\n if (variant === 'gradient') return gradientSurface(palette);\n return semanticSurface(theme, palette);\n}\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport type { AlertVariant } from './Alert.base';\nimport {\n ACTION_SLOT,\n ALERT_PADDING_UNITS,\n ALERT_RADIUS_UNITS,\n type AlertPalette,\n alertPalette,\n alertSurface,\n CLOSE_BUTTON,\n DESCRIPTION,\n GLOW,\n ICON_SLOT,\n MESSAGE_FONT_SIZE,\n MESSAGE_GAP_UNITS,\n MESSAGE_LINE_HEIGHT,\n TITLE,\n} from './Alert.metrics';\nimport { alpha } from '../../../tokens/color';\nimport { muiTypeStyle } from '../../../tokens/mui-type';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/**\n * THE PAINT, KEPT APART FROM THE STRUCTURE.\n *\n * `Alert.native.tsx` reads as what renders where; this file reads as\n * arithmetic — the same palette slots, alphas and px the web's\n * `Alert.styles.tsx` derives from `Alert.metrics.ts`.\n */\n\nexport interface AlertLookArgs {\n variant: AlertVariant;\n color: ColorValue | undefined;\n glow: boolean;\n pulse: boolean;\n}\n\nexport interface AlertLook {\n palette: AlertPalette;\n /** What the words are set in. */\n ink: string;\n iconColor: string;\n root: ViewStyle;\n}\n\n/**\n * The root's paint. The web keeps `overflow: hidden` (its pulse wash is\n * clipped to the card, as it is here); only the glow opens it, because a\n * view's own shadow is clipped by its own overflow on a device.\n */\nexport function alertLook(theme: UiTheme, a: AlertLookArgs): AlertLook {\n const palette = alertPalette(theme, a.color ?? a.variant);\n const surface = alertSurface(theme, a.variant, palette);\n const root: ViewStyle = {\n flexDirection: 'row',\n paddingVertical: theme.spacing(ALERT_PADDING_UNITS.vertical),\n paddingHorizontal: theme.spacing(ALERT_PADDING_UNITS.horizontal),\n borderRadius: theme.spacing(ALERT_RADIUS_UNITS),\n overflow: a.glow ? 'visible' : 'hidden',\n backgroundColor: surface.backgroundColor,\n ...(surface.borderColor ? { borderWidth: 1, borderColor: surface.borderColor } : {}),\n ...(a.glow\n ? {\n boxShadow: `0 0 ${GLOW.blur}px ${GLOW.spread}px ${alpha(palette.main, GLOW.alpha)}`,\n filter: `brightness(${GLOW.brightness})`,\n }\n : {}),\n };\n return { palette, ink: surface.color, iconColor: surface.iconColor, root };\n}\n\n/** The message column: 8px between its lines, allowed to shrink so long text wraps beside the icon. */\nexport const messageSlotStyle = (theme: UiTheme): ViewStyle => ({\n flexDirection: 'column',\n gap: theme.spacing(MESSAGE_GAP_UNITS),\n flexShrink: 1,\n minWidth: 0,\n});\n\n/** A string child: MUI's `body2` letter-spacing at 0.95rem on the message's 1.5. */\nexport const messageTextStyle = (theme: UiTheme, ink: string): TextStyle => ({\n ...muiTypeStyle(theme, 'body2', MESSAGE_FONT_SIZE),\n lineHeight: MESSAGE_FONT_SIZE * MESSAGE_LINE_HEIGHT,\n color: ink,\n});\n\n/** MUI's `AlertTitle` (a `body1` Typography) at 1.05rem and 600, lifted 2px, 4px above a description. */\nexport const titleStyle = (theme: UiTheme, ink: string, hasDescription: boolean): TextStyle => ({\n ...muiTypeStyle(theme, 'body1', TITLE.fontSize),\n fontWeight: `${TITLE.fontWeight}`,\n color: ink,\n marginTop: TITLE.marginTop,\n marginBottom: hasDescription ? theme.spacing(TITLE.marginBottomUnits) : 0,\n});\n\n/** The description: 0.925rem on the message's 1.5, faded to 0.9. */\nexport const descriptionStyle = (theme: UiTheme, ink: string): TextStyle => ({\n ...muiTypeStyle(theme, 'body2', DESCRIPTION.fontSize),\n lineHeight: DESCRIPTION.fontSize * MESSAGE_LINE_HEIGHT,\n color: ink,\n opacity: DESCRIPTION.opacity,\n});\n\n/** MUI's `.MuiAlert-icon` with the web's overrides: first-line aligned, 14px from the words, 2px down. */\nexport const iconSlotStyle = (theme: UiTheme): ViewStyle => ({\n alignSelf: 'flex-start',\n alignItems: 'center',\n marginRight: theme.spacing(ICON_SLOT.marginRightUnits),\n paddingTop: theme.spacing(ICON_SLOT.paddingTopUnits),\n paddingBottom: ICON_SLOT.paddingBottom,\n opacity: ICON_SLOT.opacity,\n});\n\n/** MUI's `.MuiAlert-action`: top-aligned, pushed to the right edge, 16px off the text. */\nexport const actionSlotStyle = (theme: UiTheme): ViewStyle => ({\n alignItems: 'flex-start',\n paddingTop: ACTION_SLOT.paddingTop,\n paddingLeft: theme.spacing(ACTION_SLOT.paddingLeftUnits),\n marginLeft: 'auto',\n marginRight: ACTION_SLOT.marginRight,\n});\n\n/** MUI's small `IconButton` at 0.7; pressed stands in for the web's hover (full opacity, a faint wash). */\nexport const closeButtonStyle = (theme: UiTheme, pressed: boolean): ViewStyle => ({\n padding: CLOSE_BUTTON.padding,\n borderRadius: theme.radius.full,\n opacity: pressed ? 1 : CLOSE_BUTTON.opacity,\n backgroundColor: pressed ? alpha(theme.palette.action.hover, CLOSE_BUTTON.washAlpha) : 'transparent',\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,YAAY,WAAW;AACvB;AAAA,EACE;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,OAEK;;;ACPA,IAAM,iBAA4F;AAAA,EACvG,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,MAAM;AAAA,EACN,eAAe;AACjB;AAWA,IAAM,eAAe,CAA4B,UAC/C,OAAO;AAAA,EACL,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AACjE;AAKK,IAAM,oBAAoB,CAA4B,WAC1D,EAAE,GAAG,gBAAgB,GAAG,aAAa,KAAK,EAAE;AAGxC,IAAM,kBAAkB,CAAC,YAC9B,YAAY,WAAW,cAAc;AAYhC,IAAM,gBAA0E;AAAA,EACrF,WAAW;AAAA,EACX,QAAQ;AACV;AA0BO,IAAM,sBAAsB,CACjC,OACA,YACkE;AAClE,QAAM,WAAW,MAAM;AACvB,SAAO;AAAA,IACL,MAAM,MAAM,SAAS,aAAa,SAAY,eAAe,OAAO,cAAc,QAAQ;AAAA,IAC1F,aAAa,MAAM,WAAW,KAAK,YAAY,gBAAgB,OAAO;AAAA,EACxE;AACF;AAEO,IAAM,YAAY,CAAC,MAA0B,WAClD,OAAO,GAAG,IAAI,IAAI,MAAM,KAAK,SAAS,MAAM;AAOvC,IAAM,eAAwD;AAAA,EACnE,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;;;ACrFO,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB,EAAE,UAAU,MAAM,YAAY,EAAE;AAK5D,IAAM,UAAU,EAAE,IAAI,KAAK,OAAO,MAAM,MAAM,GAAG;AACjD,IAAM,YAAY,EAAE,IAAI,KAAK,MAAM,KAAK,KAAK,IAAI;AAEjD,IAAM,cAAc;AACpB,IAAM,iBAAiB;AAGvB,IAAM,oBAAoB;AAC1B,IAAM,oBAAoB;AAC1B,IAAM,sBAAsB;AAK5B,IAAM,QAAQ,EAAE,UAAU,MAAM,YAAY,KAAK,WAAW,IAAI,mBAAmB,IAAI;AAEvF,IAAM,cAAc,EAAE,UAAU,MAAM,SAAS,IAAI;AAGnD,IAAM,YAAY,EAAE,MAAM,IAAI,SAAS,KAAK,kBAAkB,MAAM,iBAAiB,MAAM,eAAe,EAAE;AAE5G,IAAM,cAAc,EAAE,kBAAkB,GAAG,YAAY,GAAG,aAAa,GAAG;AAE1E,IAAM,eAAe,EAAE,SAAS,GAAG,UAAU,IAAI,SAAS,KAAK,WAAW,IAAI;AAO9E,IAAM,mBAAmB,EAAE,MAAM,EAAE,OAAO,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,aAAa,KAAK;AAExF,IAAM,QAAQ,EAAE,iBAAiB,MAAM,aAAa,KAAK,MAAM,IAAI,iBAAiB,IAAI;AAWxF,IAAM,WAAW;AAAA,EACtB,UAAU;AAAA,EACV,WAAW;AAAA,EACX,cAAc;AAAA,EACd,WAAW;AAAA,EACX,eAAe;AACjB;AAGO,IAAM,OAAO,EAAE,MAAM,IAAI,QAAQ,GAAG,OAAO,KAAK,YAAY,KAAK;AACjE,IAAM,QAAQ,EAAE,OAAO,KAAK,IAAI,KAAM,QAAQ,GAAG;AA2DjD,IAAM,eAA8D,EAAE,MAAM,KAAK,OAAO,KAAK,MAAM,IAAI;AAiBvG,SAAS,aAAa,OAAgB,KAAuC;AAClF,UAAQ,KAAK;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,MAAM,QAAQ,GAAG;AAAA,IAC1B,KAAK;AACH,aAAO;AAAA,QACL,MAAM,aAAa,aAAa,IAAI;AAAA,QACpC,OAAO,aAAa,aAAa,KAAK;AAAA,QACtC,MAAM,aAAa,aAAa,IAAI;AAAA,MACtC;AAAA,IACF;AACE,aAAO,MAAM,QAAQ;AAAA,EACzB;AACF;AAaO,SAAS,gBAAgB,OAAgB,SAAqC;AACnF,QAAM,OAAO,MAAM,SAAS;AAC5B,SAAO;AAAA,IACL,iBAAiB,OACb,OAAO,QAAQ,MAAM,iBAAiB,KAAK,IAAI,IAC/C,QAAQ,QAAQ,MAAM,iBAAiB,KAAK,KAAK;AAAA,IACrD,OAAO,OAAO,QAAQ,QAAQ,MAAM,iBAAiB,GAAG,IAAI,OAAO,QAAQ,MAAM,iBAAiB,GAAG;AAAA,IACrG,aAAa,MAAM,QAAQ,MAAM,iBAAiB,WAAW;AAAA,IAC7D,WAAW,QAAQ;AAAA,EACrB;AACF;AAEO,SAAS,aAAa,OAA8B;AACzD,SAAO;AAAA,IACL,iBAAiB,MAAM,MAAM,QAAQ,WAAW,OAAO,MAAM,eAAe;AAAA,IAC5E,OAAO,MAAM,QAAQ,KAAK;AAAA,IAC1B,aAAa,MAAM,MAAM,QAAQ,SAAS,MAAM,WAAW;AAAA,IAC3D,WAAW,MAAM,QAAQ,QAAQ;AAAA,EACnC;AACF;AAGO,SAAS,cAAc,SAAqD;AACjF,SAAO;AAAA,IACL,MAAM,MAAM,QAAQ,SAAS,QAAQ,MAAM,SAAS,SAAS;AAAA,IAC7D,IAAI,MAAM,QAAQ,QAAQ,QAAQ,MAAM,SAAS,SAAS;AAAA,EAC5D;AACF;AAEO,SAAS,gBAAgB,SAAqC;AACnE,QAAM,MAAM,aAAa,QAAQ,IAAI;AACrC,SAAO,EAAE,iBAAiB,cAAc,OAAO,EAAE,MAAM,OAAO,KAAK,WAAW,IAAI;AACpF;AAGO,SAAS,aAAa,OAAgB,SAAuB,SAAqC;AACvG,MAAI,YAAY,QAAS,QAAO,aAAa,KAAK;AAClD,MAAI,YAAY,WAAY,QAAO,gBAAgB,OAAO;AAC1D,SAAO,gBAAgB,OAAO,OAAO;AACvC;;;AC3KO,SAAS,UAAU,OAAgB,GAA6B;AACrE,QAAM,UAAU,aAAa,OAAO,EAAE,SAAS,EAAE,OAAO;AACxD,QAAM,UAAU,aAAa,OAAO,EAAE,SAAS,OAAO;AACtD,QAAM,OAAkB;AAAA,IACtB,eAAe;AAAA,IACf,iBAAiB,MAAM,QAAQ,oBAAoB,QAAQ;AAAA,IAC3D,mBAAmB,MAAM,QAAQ,oBAAoB,UAAU;AAAA,IAC/D,cAAc,MAAM,QAAQ,kBAAkB;AAAA,IAC9C,UAAU,EAAE,OAAO,YAAY;AAAA,IAC/B,iBAAiB,QAAQ;AAAA,IACzB,GAAI,QAAQ,cAAc,EAAE,aAAa,GAAG,aAAa,QAAQ,YAAY,IAAI,CAAC;AAAA,IAClF,GAAI,EAAE,OACF;AAAA,MACE,WAAW,OAAO,KAAK,IAAI,MAAM,KAAK,MAAM,MAAM,MAAM,QAAQ,MAAM,KAAK,KAAK,CAAC;AAAA,MACjF,QAAQ,cAAc,KAAK,UAAU;AAAA,IACvC,IACA,CAAC;AAAA,EACP;AACA,SAAO,EAAE,SAAS,KAAK,QAAQ,OAAO,WAAW,QAAQ,WAAW,KAAK;AAC3E;AAGO,IAAM,mBAAmB,CAAC,WAA+B;AAAA,EAC9D,eAAe;AAAA,EACf,KAAK,MAAM,QAAQ,iBAAiB;AAAA,EACpC,YAAY;AAAA,EACZ,UAAU;AACZ;AAGO,IAAM,mBAAmB,CAAC,OAAgB,SAA4B;AAAA,EAC3E,GAAG,aAAa,OAAO,SAAS,iBAAiB;AAAA,EACjD,YAAY,oBAAoB;AAAA,EAChC,OAAO;AACT;AAGO,IAAM,aAAa,CAAC,OAAgB,KAAa,oBAAwC;AAAA,EAC9F,GAAG,aAAa,OAAO,SAAS,MAAM,QAAQ;AAAA,EAC9C,YAAY,GAAG,MAAM,UAAU;AAAA,EAC/B,OAAO;AAAA,EACP,WAAW,MAAM;AAAA,EACjB,cAAc,iBAAiB,MAAM,QAAQ,MAAM,iBAAiB,IAAI;AAC1E;AAGO,IAAM,mBAAmB,CAAC,OAAgB,SAA4B;AAAA,EAC3E,GAAG,aAAa,OAAO,SAAS,YAAY,QAAQ;AAAA,EACpD,YAAY,YAAY,WAAW;AAAA,EACnC,OAAO;AAAA,EACP,SAAS,YAAY;AACvB;AAGO,IAAM,gBAAgB,CAAC,WAA+B;AAAA,EAC3D,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,aAAa,MAAM,QAAQ,UAAU,gBAAgB;AAAA,EACrD,YAAY,MAAM,QAAQ,UAAU,eAAe;AAAA,EACnD,eAAe,UAAU;AAAA,EACzB,SAAS,UAAU;AACrB;AAGO,IAAM,kBAAkB,CAAC,WAA+B;AAAA,EAC7D,YAAY;AAAA,EACZ,YAAY,YAAY;AAAA,EACxB,aAAa,MAAM,QAAQ,YAAY,gBAAgB;AAAA,EACvD,YAAY;AAAA,EACZ,aAAa,YAAY;AAC3B;AAGO,IAAM,mBAAmB,CAAC,OAAgB,aAAiC;AAAA,EAChF,SAAS,aAAa;AAAA,EACtB,cAAc,MAAM,OAAO;AAAA,EAC3B,SAAS,UAAU,IAAI,aAAa;AAAA,EACpC,iBAAiB,UAAU,MAAM,MAAM,QAAQ,OAAO,OAAO,aAAa,SAAS,IAAI;AACzF;;;AH9CI,cAkFA,YAlFA;AAlDJ,IAAM,eAAe,SAAS,OAAO;AAGrC,SAAS,YAAY,SAAkB,UAAkC;AACvE,QAAM,WAAiB,aAAO,IAAI,SAAS,MAAM,UAAU,IAAI,CAAC,CAAC,EAAE;AACnE,EAAM,gBAAU,MAAM;AACpB,QAAI,CAAC,QAAS,QAAO;AACrB,UAAM,SAAS,SAAS,OAAO,UAAU,EAAE,SAAS,GAAG,UAAU,QAAQ,OAAO,IAAI,OAAO,IAAI,GAAG,iBAAiB,aAAa,CAAC;AACjI,WAAO,MAAM;AACb,WAAO,MAAM,OAAO,KAAK;AAAA,EAC3B,GAAG,CAAC,SAAS,UAAU,QAAQ,CAAC;AAChC,SAAO;AACT;AAGA,SAAS,UAAU,SAA6C;AAC9D,QAAM,WAAW,YAAY,SAAS,QAAQ,EAAE;AAChD,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO;AAAA,IACL,SAAS;AAAA,IACT,WAAW;AAAA,MACT,EAAE,OAAO,SAAS,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,QAAQ,OAAO,CAAC,EAAE,CAAC,EAAE;AAAA,MACvF,EAAE,YAAY,SAAS,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,QAAQ,MAAM,CAAC,EAAE,CAAC,EAAE;AAAA,IAC9F;AAAA,EACF;AACF;AAGA,SAAS,YAAY,SAA6C;AAChE,QAAM,WAAW,YAAY,SAAS,UAAU,EAAE;AAClD,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO;AAAA,IACL,WAAW;AAAA,MACT,EAAE,QAAQ,SAAS,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,QAAQ,QAAQ,EAAE,CAAC,EAAE;AAAA,MACxF,EAAE,OAAO,SAAS,YAAY,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG,aAAa,CAAC,UAAU,MAAM,UAAU,KAAK,CAAC,EAAE,CAAC,EAAE;AAAA,IAC9G;AAAA,EACF;AACF;AAGA,SAAS,MAAM,EAAE,OAAO,QAAQ,OAAO,GAAyE;AAC9G,QAAM,WAAiB,aAAO,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE;AACrD,EAAM,gBAAU,MAAM;AACpB,UAAM,OAAO,SAAS;AAAA,MACpB,SAAS,OAAO,UAAU,EAAE,SAAS,GAAG,UAAU,MAAM,IAAI,QAAQ,OAAO,QAAQ,iBAAiB,aAAa,CAAC;AAAA,IACpH;AACA,SAAK,MAAM;AACX,WAAO,MAAM,KAAK,KAAK;AAAA,EACzB,GAAG,CAAC,QAAQ,CAAC;AACb,SACE;AAAA,IAAC,SAAS;AAAA,IAAT;AAAA,MACC;AAAA,MACA,eAAW;AAAA,MACX,OAAO;AAAA,QACL,WAAW;AAAA,QACX;AAAA,UACE,eAAe;AAAA,UACf,cAAc;AAAA,UACd,iBAAiB;AAAA,UACjB,SAAS,SAAS,YAAY,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG,aAAa,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC;AAAA,QAC7F;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAMA,SAAS,SAAS,EAAE,MAAM,aAAa,SAAS,GAA6F;AAC3I,QAAM,CAAC,QAAQ,SAAS,IAAU,eAAwB,IAAI;AAC9D,QAAM,WAAiB,aAAO,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE;AACrD,EAAM,gBAAU,MAAM;AACpB,QAAI,KAAM,QAAO;AACjB,UAAM,SAAS,SAAS,OAAO,UAAU,EAAE,SAAS,GAAG,UAAU,aAAa,QAAQ,OAAO,MAAM,OAAO,IAAI,GAAG,iBAAiB,MAAM,CAAC;AACzI,WAAO,MAAM,CAAC,EAAE,SAAS,MAAM;AAC7B,UAAI,SAAU,aAAY;AAAA,IAC5B,CAAC;AACD,WAAO,MAAM,OAAO,KAAK;AAAA,EAC3B,GAAG,CAAC,MAAM,aAAa,QAAQ,CAAC;AAChC,QAAM,WAAW,CAAC,UAAmC;AACnD,QAAI,KAAM,WAAU,MAAM,YAAY,OAAO,MAAM;AAAA,EACrD;AACA,QAAM,SAAwB,UAAU,OAAO,CAAC,IAAI,EAAE,WAAW,SAAS,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;AACxI,SACE,oBAAC,SAAS,MAAT,EAAc,OAAO,CAAC,EAAE,UAAU,OAAO,YAAY,UAAU,SAAS,SAAS,GAAG,MAAM,GACzF,8BAAC,QAAK,UAAqB,UAAS,GACtC;AAEJ;AAWA,SAAS,SAAS,EAAE,SAAS,MAAM,OAAO,SAAS,OAAO,GAAqC;AAC7F,QAAM,QAAQ,WAAW;AACzB,QAAM,OAAO,YAAY,OAAO;AAChC,QAAM,QAAQ,aAAa,OAAO;AAClC,SACE,oBAAC,SAAS,MAAT,EAAc,QAAgB,OAAO,CAAC,cAAc,KAAK,GAAG,IAAI,GAC9D,mBAAS,QAAQ,oBAAC,QAAK,MAAM,OAAO,MAAM,UAAU,MAAM,OAAc,IAAK,OAChF;AAEJ;AAEA,SAAS,YAAY,EAAE,OAAO,KAAK,SAAS,OAAO,GAAuG;AACxJ,QAAM,QAAQ,WAAW;AACzB,SACE,oBAAC,aAAU,MAAK,UAAS,cAAY,OAAO,QAAgB,SAAkB,OAAO,CAAC,EAAE,QAAQ,MAAM,iBAAiB,OAAO,OAAO,GACnI,8BAAC,QAAK,MAAK,SAAQ,MAAM,aAAa,UAAU,OAAO,KAAK,GAC9D;AAEJ;AAUA,SAAS,aAAa,EAAE,OAAO,aAAa,UAAU,KAAK,OAAO,GAAoC;AACpG,QAAM,QAAQ,WAAW;AACzB,SACE,qBAAC,QAAK,OAAO,iBAAiB,KAAK,GAChC;AAAA,YACC,oBAAC,UAAO,QAAQ,UAAU,QAAQ,OAAO,GAAG,OAAO,WAAW,OAAO,KAAK,QAAQ,WAAW,CAAC,GAC3F,iBACH,IACE;AAAA,IACH,cACC,oBAAC,UAAO,QAAQ,UAAU,QAAQ,SAAS,GAAG,OAAO,iBAAiB,OAAO,GAAG,GAC7E,uBACH,IACE;AAAA,IACH,mBAAmB,UAAU,iBAAiB,OAAO,GAAG,CAAC;AAAA,KAC5D;AAEJ;AAGA,SAAS,WAAW,SAAiH;AACnI,QAAM,CAAC,SAAS,UAAU,IAAU,eAAS,KAAK;AAClD,QAAM,CAAC,MAAM,OAAO,IAAU,eAAS,KAAK;AAC5C,QAAM,QAAc,aAA6C,IAAI;AACrE,EAAM,gBAAU,MAAM,MAAM;AAC1B,QAAI,MAAM,QAAS,cAAa,MAAM,OAAO;AAAA,EAC/C,GAAG,CAAC,CAAC;AACL,QAAM,QAAQ,MAAY;AACxB,eAAW,IAAI;AACf,UAAM,UAAU,WAAW,MAAM,UAAU,GAAG,cAAc;AAAA,EAC9D;AACA,QAAM,cAAoB,kBAAY,MAAM,QAAQ,IAAI,GAAG,CAAC,CAAC;AAC7D,SAAO,EAAE,MAAM,CAAC,SAAS,MAAM,OAAO,YAAY;AACpD;AAEO,IAAM,QAAc,iBAA6B,CAAC,YAAY,QAAQ;AAC3E,QAAM;AAAA,IACJ;AAAA,IAAS;AAAA,IAAO;AAAA,IAAM;AAAA,IAAO;AAAA,IAAM;AAAA,IAAU;AAAA,IAAS;AAAA,IAAO;AAAA,IAAa;AAAA,IAAU;AAAA;AAAA;AAAA,IAGpF,MAAM;AAAA,IAAO,UAAU;AAAA,IACvB,eAAe;AAAA,IAAY,aAAa;AAAA,IAAW;AAAA,IAAU;AAAA,IAAY;AAAA,IAAO,GAAG;AAAA,EACrF,IAAI,kBAAkB,UAAU;AAChC,QAAM,QAAQ,WAAW;AACzB,QAAM,SAAS,cAAc,QAAQ,OAAO;AAC5C,QAAM,OAAO,mBAAmB,MAAM;AACtC,QAAM,OAAO,UAAU,OAAO,EAAE,SAAS,OAAO,MAAM,MAAM,CAAC;AAC7D,QAAM,SAAS,UAAU,OAAO;AAChC,QAAM,UAAU,WAAW,OAAO;AAClC,QAAM,eAAe,oBAAoB,YAAY,OAAO;AAE5D,MAAI,QAAQ,KAAM,QAAO;AACzB,SACE,oBAAC,YAAS,MAAM,QAAQ,MAAM,aAAa,QAAQ,aACjD;AAAA,IAAC,SAAS;AAAA,IAAT;AAAA,MACC;AAAA,MACA,MAAM,aAAa;AAAA,MACnB,aAAW,aAAa,WAAW;AAAA,MAClC,GAAG,QAAQ,EAAE,eAAe,WAAW,CAAC;AAAA,MACzC,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO,CAAC,KAAK,MAAM,QAAQ,KAAK;AAAA,MAC/B,GAAG;AAAA,MAEH;AAAA,gBAAQ,oBAAC,SAAM,OAAO,KAAK,QAAQ,MAAM,QAAQ,KAAK,KAAK,cAAwB,QAAQ,UAAU,QAAQ,OAAO,GAAG,IAAK;AAAA,QAC5H,WAAW,oBAAC,YAAS,SAAkB,MAAY,OAAO,KAAK,WAAW,SAAkB,QAAQ,UAAU,QAAQ,MAAM,GAAG,IAAK;AAAA,QACrI,oBAAC,gBAAa,OAAc,aAA0B,KAAK,KAAK,KAAK,QAClE,UACH;AAAA,QACC,WACC,oBAAC,QAAK,OAAO,gBAAgB,KAAK,GAChC,8BAAC,eAAY,OAAO,YAAY,KAAK,KAAK,KAAK,SAAS,QAAQ,OAAO,QAAQ,UAAU,QAAQ,OAAO,GAAG,GAC7G,IACE;AAAA;AAAA;AAAA,EACN,GACF;AAEJ,CAAC;AAED,MAAM,cAAc;","names":[]}
@@ -1,6 +1,10 @@
1
1
  import {
2
2
  useLoopedProgress
3
3
  } from "../chunks/chunk-MLQIOKQZ.js";
4
+ import {
5
+ ABSOLUTE_INK,
6
+ NEUTRAL_RAMP
7
+ } from "../chunks/chunk-ZRQHLTYG.js";
4
8
  import {
5
9
  renderTextChildren
6
10
  } from "../chunks/chunk-5GJ5OG5R.js";
@@ -76,12 +80,12 @@ function statusColor(theme, status) {
76
80
  if (status === "online") return theme.palette.success.main;
77
81
  if (status === "away") return theme.palette.warning.main;
78
82
  if (status === "busy") return theme.palette.danger.main;
79
- return theme.palette.grey[500];
83
+ return NEUTRAL_RAMP[500];
80
84
  }
81
85
  function avatarAccent(theme, color) {
82
- if (color === "neutral") return { main: theme.palette.grey[700], contrastText: "#fff" };
86
+ if (color === "neutral") return { main: NEUTRAL_RAMP[700], contrastText: ABSOLUTE_INK.white };
83
87
  const accent = theme.palette[color];
84
- return { main: accent.main, contrastText: accent.contrastText || "#fff" };
88
+ return { main: accent.main, contrastText: accent.contrastText || ABSOLUTE_INK.white };
85
89
  }
86
90
 
87
91
  // src/components/data-display/Avatar/Avatar.look.native.ts
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/data-display/Avatar/Avatar.native.tsx","../../../src/components/data-display/Avatar/Avatar.helpers.ts","../../../src/components/data-display/Avatar/Avatar.metrics.ts","../../../src/components/data-display/Avatar/Avatar.look.native.ts","../../../src/components/data-display/Avatar/Avatar.parts.native.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Animated, StyleSheet, View } from 'react-native';\n\nimport type { AvatarSize, AvatarVariant } from './Avatar.base';\nimport {\n AVATAR_DEFAULTS,\n avatarTestId,\n contentTypeOf,\n pickAvatarContent,\n} from './Avatar.helpers';\nimport { avatarStatusDotStyle } from './Avatar.look.native';\nimport { GROUP_MAX, GROUP_OVERLAP, avatarAccent, statusColor } from './Avatar.metrics';\nimport {\n AvatarSurface,\n PulseRing,\n contentNode,\n useFadeIn,\n useImageState,\n type SurfaceArgs,\n} from './Avatar.parts.native';\nimport type { AvatarGroupProps, AvatarProps } from './Avatar.types.native';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\ninterface AvatarModel {\n args: SurfaceArgs;\n variant: AvatarVariant;\n size: AvatarSize;\n color: ColorValue;\n pulse: boolean;\n status?: AvatarProps['status'];\n opacity: Animated.Value;\n badgeTestID?: string;\n}\n\n/** Normalises the props and derives everything the surface needs, as the web's model does. */\nfunction useAvatarModel(raw: AvatarProps): AvatarModel {\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 onPress,\n interactive,\n showFallbackOnError,\n animationDelay,\n dataTestId,\n testID,\n style,\n ...rest\n } = { ...AVATAR_DEFAULTS, ...raw };\n const theme = useUiTheme();\n const opacity = useFadeIn(animationDelay);\n const { imageError, imageLoading, handleError, handleLoad } = useImageState(src, onError);\n const pick = pickAvatarContent({\n hasChildren: Boolean(children),\n hasFallback: Boolean(fallback),\n hasIcon: Boolean(icon),\n imageError,\n showFallbackOnError,\n });\n const avatarId = testID ?? dataTestId;\n const idFor = avatarTestId(avatarId);\n\n return {\n variant,\n size,\n color,\n pulse,\n status,\n opacity,\n badgeTestID: idFor('badge'),\n args: {\n variant,\n size,\n color,\n glow,\n bordered,\n clickable: interactive || Boolean(onClick ?? onPress),\n imageError,\n showSpinner: loading || imageLoading,\n imgSrc: imageError ? undefined : src,\n alt,\n ariaLabel: alt || 'Avatar',\n content: contentNode({\n pick,\n children,\n fallback,\n icon,\n ink: avatarAccent(theme, color).contrastText,\n }),\n contentType: contentTypeOf(pick),\n testID: avatarId,\n idFor,\n style,\n onPress: (event) => {\n onClick?.();\n onPress?.(event);\n },\n onImageError: handleError,\n onImageLoad: handleLoad,\n rest,\n },\n };\n}\n\n/**\n * The native `Avatar`: MUI's box on a `Pressable`, the portrait as an `Image`,\n * and the status dot as a bordered circle in the corner.\n */\nexport const Avatar = React.forwardRef<View, AvatarProps>((raw, ref) => {\n const theme = useUiTheme();\n const { args, variant, size, color, pulse, status, opacity, badgeTestID } = useAvatarModel(raw);\n\n const surface = (\n <Animated.View style={[styles.relative, { opacity }]}>\n {pulse ? (\n <PulseRing size={size} variant={variant} color={avatarAccent(theme, color).main} />\n ) : null}\n <AvatarSurface {...args} forwardedRef={ref} />\n </Animated.View>\n );\n\n if (variant !== 'status' || !status) return surface;\n\n return (\n <View testID={badgeTestID} style={styles.relative}>\n {surface}\n <View style={avatarStatusDotStyle(theme, size, statusColor(theme, status))} />\n </View>\n );\n});\n\nAvatar.displayName = 'Avatar';\n\n/**\n * The native `AvatarGroup`: the same overlap, and the same `+n` avatar past\n * `max`. The web additionally lifts an avatar on hover, which touch has none of.\n */\nexport const AvatarGroup: React.FC<AvatarGroupProps> = ({\n children,\n max = GROUP_MAX,\n overlap = GROUP_OVERLAP,\n dataTestId,\n testID,\n style,\n}) => {\n const all = React.Children.toArray(children);\n const visible = max ? all.slice(0, max) : all;\n const remaining = all.length - visible.length;\n const groupId = testID ?? dataTestId;\n\n return (\n <View testID={groupId} style={[styles.group, style]}>\n {visible.map((child, index) => (\n <View key={`avatar-${index}`} style={index === 0 ? null : { marginLeft: -overlap }}>\n {child}\n </View>\n ))}\n {remaining > 0 ? (\n <View style={{ marginLeft: -overlap }}>\n <Avatar\n color=\"neutral\"\n fallback={`+${remaining}`}\n bordered\n dataTestId={groupId ? `${groupId}-overflow` : undefined}\n />\n </View>\n ) : null}\n </View>\n );\n};\n\nAvatarGroup.displayName = 'AvatarGroup';\n\nconst styles = StyleSheet.create({\n relative: { position: 'relative', alignSelf: 'flex-start' },\n group: { flexDirection: 'row', alignItems: 'center', alignSelf: 'flex-start' },\n});\n","import type { AvatarBaseProps, ContentType } from './Avatar.base';\n\n/** Applied via a single spread so no per-field default inflates cyclomatic complexity. */\nexport const 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<AvatarBaseProps>;\n\n/** What wins the middle of the avatar. `broken` is the icon slot's error glyph. */\nexport type AvatarContentPick = ContentType | 'broken';\n\nexport interface AvatarContentArgs {\n hasChildren: boolean;\n hasFallback: boolean;\n hasIcon: boolean;\n imageError: boolean;\n showFallbackOnError: boolean;\n}\n\n/**\n * Pick what renders inside the avatar. On an image error (with fallback\n * enabled) the fallback/icon/broken-image wins; otherwise children → fallback →\n * icon → the default person glyph.\n *\n * The DECISION is shared; each renderer builds its own node from it, because\n * the two draw a glyph with different things.\n */\nexport function pickAvatarContent(a: AvatarContentArgs): AvatarContentPick {\n if (a.imageError && a.showFallbackOnError) {\n if (a.hasFallback) return 'fallback';\n return a.hasIcon ? 'icon' : 'broken';\n }\n if (a.hasChildren) return 'children';\n if (a.hasFallback) return 'fallback';\n return a.hasIcon ? 'icon' : 'default';\n}\n\n/** The slot id a pick takes; the broken-image glyph shares the icon slot's. */\nexport const contentTypeOf = (pick: AvatarContentPick): ContentType =>\n pick === 'broken' ? 'icon' : pick;\n\n/** `${dataTestId}-loading`, or nothing at all when the caller named nothing. */\nexport const avatarTestId =\n (dataTestId?: string) =>\n (suffix: string): string | undefined =>\n dataTestId ? `${dataTestId}-${suffix}` : undefined;\n","import type { AvatarSize, AvatarStatus } from './Avatar.base';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Avatar` RENDERERS DRAW WITH.\n *\n * `Avatar.view.tsx` (web, emotion over MUI's `Avatar` and `Badge`) and\n * `Avatar.native.tsx` (React Native) read this one table: the six boxes and\n * their type, the status dot, the glow, the shimmer and the spinner. The web\n * turns the px into rem; native uses the numbers.\n */\nexport interface AvatarSizeMetrics {\n /** The square the portrait fills, in px. */\n box: number;\n /** The initials' type size, in px. */\n fontSize: number;\n}\n\nexport const AVATAR_SIZES: Record<AvatarSize, AvatarSizeMetrics> = {\n xs: { box: 24, fontSize: 12 },\n sm: { box: 32, fontSize: 14 },\n md: { box: 40, fontSize: 16 },\n lg: { box: 48, fontSize: 18 },\n xl: { box: 64, fontSize: 24 },\n xxl: { box: 80, fontSize: 32 },\n};\n\n/** `rounded` takes one spacing unit; `circle` and `status` are round. */\nexport const ROUNDED_RADIUS_UNITS = 1;\n\n/** The paper ring an avatar takes inside a group, and the hairline outside it. */\nexport const BORDER_WIDTH = 2;\nexport const BORDER_HALO_ALPHA = 0.2;\n\n/** `glow`: a 20px halo at five pixels of spread, and a brightness lift. */\nexport const GLOW = { blur: 20, spread: 5, alpha: 0.4, brightness: 1.05 } as const;\n\n/** `pulse`: the `::after` ring, from nothing to 10px while it fades out. */\nexport const PULSE = { durationMs: 2000, alpha: 0.3, spread: 10 } as const;\n\n/** The shimmer that runs across a loading avatar. */\nexport const SHIMMER = { durationMs: 1500, fromAlpha: 0.6, toAlpha: 0.8 } as const;\n\n/** The overlay over a loading avatar, and the ring spinning in it. */\nexport const LOADING_OVERLAY = { paperAlpha: 0.7, blur: 2 } as const;\nexport const SPINNER = {\n /** A share of the avatar's box. */\n scale: 0.4,\n ringWidth: 2,\n trackAlpha: 0.3,\n durationMs: 800,\n} as const;\n\n/**\n * The status dot: a fifth of the box, never below 8px, inside a paper ring.\n * `anchor` is MUI's `overlap=\"circular\"` inset — the dot's CENTRE sits 14% of\n * the box in from the bottom-right corner.\n */\nexport const STATUS_DOT = { scale: 0.2, min: 8, borderWidth: 2, anchor: 0.14 } as const;\n\n/**\n * The default and broken-image glyphs are ordinary `SvgIcon`s here, not MUI's\n * own `.MuiAvatar-fallback` (which is 75% of the box): this component passes\n * them as CHILDREN, so they render at the icon default whatever the box is.\n */\nexport const GLYPH_SIZE = 24;\n\n/** MUI's `Fade` timeout on mount, and the scale-in behind it. */\nexport const FADE_MS = 300;\nexport const SCALE_IN_MS = 300;\n\n/** `transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1)`. */\nexport const AVATAR_TRANSITION_MS = 300;\nexport const AVATAR_TRANSITION_EASING = 'cubic-bezier(0.4, 0, 0.2, 1)';\n\n/** The interactive lift, which is a `:hover` on the web. */\nexport const HOVER = { scale: 1.1, lift: 2, shadowY: 8, shadowBlur: 20, shadowAlpha: 0.3, brightness: 1.1 } as const;\nexport const ACTIVE_SCALE = 1.05;\n\n/** The focus ring `:focus-visible` draws. */\nexport const FOCUS_RING = { width: 3, offset: 2, alpha: 0.5 } as const;\n\n/** An avatar group's default overlap, in px, and its hover lift. */\nexport const GROUP_OVERLAP = 8;\nexport const GROUP_MAX = 4;\nexport const GROUP_HOVER = { scale: 1.1, lift: 4 } as const;\n\n/** The dot's colour per status. `offline` is the ramp, the rest are semantic. */\nexport function statusColor(theme: UiTheme, status: AvatarStatus): string {\n if (status === 'online') return theme.palette.success.main;\n if (status === 'away') return theme.palette.warning.main;\n if (status === 'busy') return theme.palette.danger.main;\n return theme.palette.grey[500];\n}\n\nexport interface AvatarAccent {\n main: string;\n contrastText: string;\n}\n\n/**\n * The accent behind the initials. `danger`, NOT `error` — the web map was keyed\n * on MUI's word while the prop took the house one, so `danger` matched nothing\n * and fell through to primary: a red avatar rendering blue, silently.\n */\nexport function avatarAccent(theme: UiTheme, color: ColorValue): AvatarAccent {\n if (color === 'neutral') return { main: theme.palette.grey[700], contrastText: '#fff' };\n const accent = theme.palette[color];\n return { main: accent.main, contrastText: accent.contrastText || '#fff' };\n}\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport type { AvatarSize, AvatarVariant } from './Avatar.base';\nimport {\n AVATAR_SIZES,\n BORDER_HALO_ALPHA,\n BORDER_WIDTH,\n GLOW,\n LOADING_OVERLAY,\n ROUNDED_RADIUS_UNITS,\n SPINNER,\n STATUS_DOT,\n avatarAccent,\n} from './Avatar.metrics';\nimport { alpha } from '../../../tokens/color';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/** `square` is sharp, `rounded` takes a spacing unit, `circle` and `status` are round. */\nexport function avatarRadius(theme: UiTheme, variant: AvatarVariant, box: number): number {\n if (variant === 'square') return 0;\n if (variant === 'rounded') return theme.spacing(ROUNDED_RADIUS_UNITS);\n return box / 2;\n}\n\nexport interface AvatarSurfaceArgs {\n variant: AvatarVariant;\n size: AvatarSize;\n color: ColorValue;\n glow: boolean;\n bordered: boolean;\n interactive: boolean;\n hasError: boolean;\n}\n\n/** The avatar box: MUI's square, its radius, the accent behind the initials. */\nexport function avatarSurfaceStyle(theme: UiTheme, a: AvatarSurfaceArgs): ViewStyle {\n const { box } = AVATAR_SIZES[a.size];\n const accent = avatarAccent(theme, a.color);\n return {\n width: box,\n height: box,\n borderRadius: avatarRadius(theme, a.variant, box),\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n backgroundColor: a.hasError ? theme.palette.danger.main : accent.main,\n cursor: a.interactive ? 'pointer' : 'auto',\n ...(a.bordered\n ? {\n borderWidth: BORDER_WIDTH,\n borderColor: theme.palette.background.paper,\n boxShadow: `0 0 0 1px ${alpha(theme.palette.divider, BORDER_HALO_ALPHA)}`,\n }\n : {}),\n ...(a.glow\n ? { boxShadow: `0 0 ${GLOW.blur}px ${GLOW.spread}px ${alpha(accent.main, GLOW.alpha)}` }\n : {}),\n };\n}\n\n/** The initials, in the accent's contrast ink at the size's own step. */\nexport function avatarTextStyle(\n theme: UiTheme,\n size: AvatarSize,\n color: ColorValue,\n hasError: boolean,\n): TextStyle {\n const accent = avatarAccent(theme, color);\n return {\n fontFamily: theme.typography.fontFamily,\n fontSize: AVATAR_SIZES[size].fontSize,\n textAlign: 'center',\n color: hasError ? theme.palette.danger.contrastText : accent.contrastText,\n };\n}\n\n/** The wash over a loading avatar, and the ring spinning in it. */\nexport function avatarLoadingStyle(theme: UiTheme, size: AvatarSize, radius: number): ViewStyle {\n const { box } = AVATAR_SIZES[size];\n return {\n position: 'absolute',\n top: 0,\n left: 0,\n width: box,\n height: box,\n borderRadius: radius,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: alpha(theme.palette.background.paper, LOADING_OVERLAY.paperAlpha),\n };\n}\n\nexport function avatarSpinnerStyle(theme: UiTheme, size: AvatarSize): ViewStyle {\n const ring = AVATAR_SIZES[size].box * SPINNER.scale;\n return {\n width: ring,\n height: ring,\n borderRadius: ring / 2,\n borderWidth: SPINNER.ringWidth,\n borderColor: alpha(theme.palette.primary.main, SPINNER.trackAlpha),\n borderTopColor: theme.palette.primary.main,\n };\n}\n\n/** MUI's `Badge` dot, anchored bottom-right of a circular avatar. */\nexport function avatarStatusDotStyle(theme: UiTheme, size: AvatarSize, color: string): ViewStyle {\n const { box } = AVATAR_SIZES[size];\n const dot = Math.max(STATUS_DOT.min, box * STATUS_DOT.scale);\n // MUI's `overlap=\"circular\"` puts the dot's centre 14% in from the corner.\n const inset = box * STATUS_DOT.anchor - dot / 2;\n return {\n position: 'absolute',\n right: inset,\n bottom: inset,\n width: dot,\n height: dot,\n borderRadius: dot / 2,\n backgroundColor: color,\n borderWidth: STATUS_DOT.borderWidth,\n borderColor: theme.palette.background.paper,\n };\n}\n","/**\n * THE PIECES THE NATIVE `Avatar` IS ASSEMBLED FROM.\n *\n * Split out of `Avatar.native.tsx` so the component itself reads as structure:\n * the mount fade, the portrait's load state, the content node, the pulse ring,\n * the spinner and the surface they all sit on.\n */\nimport * as React from 'react';\nimport {\n Animated,\n Easing,\n Image,\n Platform,\n Pressable,\n StyleSheet,\n View,\n type GestureResponderEvent,\n type StyleProp,\n type ViewStyle,\n} from 'react-native';\n\nimport type { AvatarSize, AvatarVariant, ContentType } from './Avatar.base';\nimport type { AvatarContentPick } from './Avatar.helpers';\nimport {\n avatarLoadingStyle,\n avatarRadius,\n avatarSpinnerStyle,\n avatarSurfaceStyle,\n avatarTextStyle,\n} from './Avatar.look.native';\nimport { AVATAR_SIZES, FADE_MS, GLYPH_SIZE, PULSE, SPINNER } from './Avatar.metrics';\nimport { Icon } from '../../../icons/Icon.native';\nimport { useLoopedProgress } from '../../../platform/animation';\nimport { renderTextChildren } from '../../../platform/text-children';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\nconst nativeDriver = Platform.OS !== 'web';\n\n/** MUI's `Fade`: in over 300ms, once `animationDelay` has run. */\nexport function useFadeIn(animationDelay: number): Animated.Value {\n const opacity = React.useRef(new Animated.Value(0)).current;\n React.useEffect(() => {\n const animation = Animated.sequence([\n Animated.delay(animationDelay),\n Animated.timing(opacity, {\n toValue: 1,\n duration: FADE_MS,\n easing: Easing.out(Easing.ease),\n useNativeDriver: nativeDriver,\n }),\n ]);\n animation.start();\n return () => animation.stop();\n }, [animationDelay, opacity]);\n return opacity;\n}\n\ninterface ImageState {\n imageError: boolean;\n imageLoading: boolean;\n handleError: () => void;\n handleLoad: () => void;\n}\n\n/** The portrait's load lifecycle: loading from the moment there is a `src`. */\nexport function useImageState(src: string | undefined, onError?: () => void): ImageState {\n const [imageError, setImageError] = React.useState(false);\n const [imageLoading, setImageLoading] = React.useState(Boolean(src));\n\n React.useEffect(() => {\n setImageError(false);\n setImageLoading(Boolean(src));\n }, [src]);\n\n const handleError = React.useCallback(() => {\n setImageError(true);\n setImageLoading(false);\n onError?.();\n }, [onError]);\n\n return {\n imageError,\n imageLoading,\n handleError,\n handleLoad: React.useCallback(() => setImageLoading(false), []),\n };\n}\n\ninterface ContentArgs {\n pick: AvatarContentPick;\n children?: React.ReactNode;\n fallback?: string;\n icon?: React.ReactNode;\n ink: string;\n}\n\n/** The node behind the winning content slot; the pick itself is shared. */\nexport function contentNode({ pick, children, fallback, icon, ink }: ContentArgs): React.ReactNode {\n if (pick === 'children') return children;\n if (pick === 'fallback') return fallback;\n if (pick === 'icon') return icon;\n return <Icon name={pick === 'broken' ? 'BrokenImage' : 'Person'} size={GLYPH_SIZE} color={ink} />;\n}\n\n/**\n * MUI's `::after` pulse ring: the accent growing 10px past the box while it\n * fades out, every two seconds. React Native has no pseudo-element, so it is a\n * sibling behind the avatar.\n */\nexport function PulseRing({ size, variant, color }: { size: AvatarSize; variant: AvatarVariant; color: string }): React.JSX.Element {\n const theme = useUiTheme();\n const progress = useLoopedProgress(true, { durationMs: PULSE.durationMs });\n const box = AVATAR_SIZES[size].box;\n return (\n <Animated.View\n aria-hidden\n style={[\n StyleSheet.absoluteFill,\n {\n pointerEvents: 'none',\n borderRadius: avatarRadius(theme, variant, box),\n backgroundColor: color,\n opacity: progress.interpolate({ inputRange: [0, 0.7, 1], outputRange: [PULSE.alpha, 0, 0] }),\n transform: [\n {\n scale: progress.interpolate({\n inputRange: [0, 0.7, 1],\n outputRange: [1, (box + PULSE.spread * 2) / box, 1],\n }),\n },\n ],\n },\n ]}\n />\n );\n}\n\n/** MUI's `rotateAnimation`: the ring turning once every 0.8s. */\nfunction Spinner({ size, testID }: { size: AvatarSize; testID?: string }): React.JSX.Element {\n const theme = useUiTheme();\n const progress = useLoopedProgress(true, { durationMs: SPINNER.durationMs });\n return (\n <Animated.View\n testID={testID}\n style={[\n avatarSpinnerStyle(theme, size),\n {\n transform: [\n { rotate: progress.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] }) },\n ],\n },\n ]}\n />\n );\n}\n\nexport interface SurfaceArgs {\n variant: AvatarVariant;\n size: AvatarSize;\n color: ColorValue;\n glow: boolean;\n bordered: boolean;\n clickable: boolean;\n imageError: boolean;\n showSpinner: boolean;\n imgSrc?: string;\n alt?: string;\n ariaLabel: string;\n content: React.ReactNode;\n contentType: ContentType;\n testID?: string;\n idFor: (suffix: string) => string | undefined;\n style?: StyleProp<ViewStyle>;\n onPress?: (event: GestureResponderEvent) => void;\n onImageError: () => void;\n onImageLoad: () => void;\n rest: object;\n}\n\n/** What sits in the middle: the portrait, or the winning content slot. */\nfunction SurfaceInner(a: SurfaceArgs, theme: UiTheme): React.JSX.Element | null {\n if (a.imgSrc && !a.imageError) {\n return (\n <Image\n source={{ uri: a.imgSrc }}\n aria-label={a.alt}\n onError={a.onImageError}\n onLoad={a.onImageLoad}\n style={StyleSheet.absoluteFill}\n accessibilityIgnoresInvertColors\n />\n );\n }\n if (a.showSpinner) return null;\n return (\n <View testID={a.idFor(a.contentType)}>\n {renderTextChildren(a.content, avatarTextStyle(theme, a.size, a.color, a.imageError), 1)}\n </View>\n );\n}\n\n/** The avatar box itself, plus the overlay that covers it while it loads. */\nexport function AvatarSurface(a: SurfaceArgs & { forwardedRef?: React.Ref<View> }): React.JSX.Element {\n const theme = useUiTheme();\n const box = AVATAR_SIZES[a.size].box;\n return (\n <>\n <Pressable\n ref={a.forwardedRef}\n testID={a.testID}\n role={a.clickable ? 'button' : undefined}\n aria-label={a.ariaLabel}\n tabIndex={a.clickable ? 0 : -1}\n onPress={a.clickable ? a.onPress : undefined}\n style={[\n avatarSurfaceStyle(theme, {\n variant: a.variant,\n size: a.size,\n color: a.color,\n glow: a.glow,\n bordered: a.bordered,\n interactive: a.clickable,\n hasError: a.imageError,\n }),\n a.style,\n ]}\n {...a.rest}\n >\n {SurfaceInner(a, theme)}\n </Pressable>\n {a.showSpinner ? (\n <View\n testID={a.idFor('loading')}\n style={avatarLoadingStyle(theme, a.size, avatarRadius(theme, a.variant, box))}\n >\n <Spinner size={a.size} testID={a.idFor('loading-spinner')} />\n </View>\n ) : null}\n </>\n );\n}\n"],"mappings":"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","names":["React","Animated","StyleSheet","View","jsx","jsxs","Animated","View","StyleSheet"]}
1
+ {"version":3,"sources":["../../../src/components/data-display/Avatar/Avatar.native.tsx","../../../src/components/data-display/Avatar/Avatar.helpers.ts","../../../src/components/data-display/Avatar/Avatar.metrics.ts","../../../src/components/data-display/Avatar/Avatar.look.native.ts","../../../src/components/data-display/Avatar/Avatar.parts.native.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Animated, StyleSheet, View } from 'react-native';\n\nimport type { AvatarSize, AvatarVariant } from './Avatar.base';\nimport {\n AVATAR_DEFAULTS,\n avatarTestId,\n contentTypeOf,\n pickAvatarContent,\n} from './Avatar.helpers';\nimport { avatarStatusDotStyle } from './Avatar.look.native';\nimport { GROUP_MAX, GROUP_OVERLAP, avatarAccent, statusColor } from './Avatar.metrics';\nimport {\n AvatarSurface,\n PulseRing,\n contentNode,\n useFadeIn,\n useImageState,\n type SurfaceArgs,\n} from './Avatar.parts.native';\nimport type { AvatarGroupProps, AvatarProps } from './Avatar.types.native';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\ninterface AvatarModel {\n args: SurfaceArgs;\n variant: AvatarVariant;\n size: AvatarSize;\n color: ColorValue;\n pulse: boolean;\n status?: AvatarProps['status'];\n opacity: Animated.Value;\n badgeTestID?: string;\n}\n\n/** Normalises the props and derives everything the surface needs, as the web's model does. */\nfunction useAvatarModel(raw: AvatarProps): AvatarModel {\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 onPress,\n interactive,\n showFallbackOnError,\n animationDelay,\n dataTestId,\n testID,\n style,\n ...rest\n } = { ...AVATAR_DEFAULTS, ...raw };\n const theme = useUiTheme();\n const opacity = useFadeIn(animationDelay);\n const { imageError, imageLoading, handleError, handleLoad } = useImageState(src, onError);\n const pick = pickAvatarContent({\n hasChildren: Boolean(children),\n hasFallback: Boolean(fallback),\n hasIcon: Boolean(icon),\n imageError,\n showFallbackOnError,\n });\n const avatarId = testID ?? dataTestId;\n const idFor = avatarTestId(avatarId);\n\n return {\n variant,\n size,\n color,\n pulse,\n status,\n opacity,\n badgeTestID: idFor('badge'),\n args: {\n variant,\n size,\n color,\n glow,\n bordered,\n clickable: interactive || Boolean(onClick ?? onPress),\n imageError,\n showSpinner: loading || imageLoading,\n imgSrc: imageError ? undefined : src,\n alt,\n ariaLabel: alt || 'Avatar',\n content: contentNode({\n pick,\n children,\n fallback,\n icon,\n ink: avatarAccent(theme, color).contrastText,\n }),\n contentType: contentTypeOf(pick),\n testID: avatarId,\n idFor,\n style,\n onPress: (event) => {\n onClick?.();\n onPress?.(event);\n },\n onImageError: handleError,\n onImageLoad: handleLoad,\n rest,\n },\n };\n}\n\n/**\n * The native `Avatar`: MUI's box on a `Pressable`, the portrait as an `Image`,\n * and the status dot as a bordered circle in the corner.\n */\nexport const Avatar = React.forwardRef<View, AvatarProps>((raw, ref) => {\n const theme = useUiTheme();\n const { args, variant, size, color, pulse, status, opacity, badgeTestID } = useAvatarModel(raw);\n\n const surface = (\n <Animated.View style={[styles.relative, { opacity }]}>\n {pulse ? (\n <PulseRing size={size} variant={variant} color={avatarAccent(theme, color).main} />\n ) : null}\n <AvatarSurface {...args} forwardedRef={ref} />\n </Animated.View>\n );\n\n if (variant !== 'status' || !status) return surface;\n\n return (\n <View testID={badgeTestID} style={styles.relative}>\n {surface}\n <View style={avatarStatusDotStyle(theme, size, statusColor(theme, status))} />\n </View>\n );\n});\n\nAvatar.displayName = 'Avatar';\n\n/**\n * The native `AvatarGroup`: the same overlap, and the same `+n` avatar past\n * `max`. The web additionally lifts an avatar on hover, which touch has none of.\n */\nexport const AvatarGroup: React.FC<AvatarGroupProps> = ({\n children,\n max = GROUP_MAX,\n overlap = GROUP_OVERLAP,\n dataTestId,\n testID,\n style,\n}) => {\n const all = React.Children.toArray(children);\n const visible = max ? all.slice(0, max) : all;\n const remaining = all.length - visible.length;\n const groupId = testID ?? dataTestId;\n\n return (\n <View testID={groupId} style={[styles.group, style]}>\n {visible.map((child, index) => (\n <View key={`avatar-${index}`} style={index === 0 ? null : { marginLeft: -overlap }}>\n {child}\n </View>\n ))}\n {remaining > 0 ? (\n <View style={{ marginLeft: -overlap }}>\n <Avatar\n color=\"neutral\"\n fallback={`+${remaining}`}\n bordered\n dataTestId={groupId ? `${groupId}-overflow` : undefined}\n />\n </View>\n ) : null}\n </View>\n );\n};\n\nAvatarGroup.displayName = 'AvatarGroup';\n\nconst styles = StyleSheet.create({\n relative: { position: 'relative', alignSelf: 'flex-start' },\n group: { flexDirection: 'row', alignItems: 'center', alignSelf: 'flex-start' },\n});\n","import type { AvatarBaseProps, ContentType } from './Avatar.base';\n\n/** Applied via a single spread so no per-field default inflates cyclomatic complexity. */\nexport const 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<AvatarBaseProps>;\n\n/** What wins the middle of the avatar. `broken` is the icon slot's error glyph. */\nexport type AvatarContentPick = ContentType | 'broken';\n\nexport interface AvatarContentArgs {\n hasChildren: boolean;\n hasFallback: boolean;\n hasIcon: boolean;\n imageError: boolean;\n showFallbackOnError: boolean;\n}\n\n/**\n * Pick what renders inside the avatar. On an image error (with fallback\n * enabled) the fallback/icon/broken-image wins; otherwise children → fallback →\n * icon → the default person glyph.\n *\n * The DECISION is shared; each renderer builds its own node from it, because\n * the two draw a glyph with different things.\n */\nexport function pickAvatarContent(a: AvatarContentArgs): AvatarContentPick {\n if (a.imageError && a.showFallbackOnError) {\n if (a.hasFallback) return 'fallback';\n return a.hasIcon ? 'icon' : 'broken';\n }\n if (a.hasChildren) return 'children';\n if (a.hasFallback) return 'fallback';\n return a.hasIcon ? 'icon' : 'default';\n}\n\n/** The slot id a pick takes; the broken-image glyph shares the icon slot's. */\nexport const contentTypeOf = (pick: AvatarContentPick): ContentType =>\n pick === 'broken' ? 'icon' : pick;\n\n/** `${dataTestId}-loading`, or nothing at all when the caller named nothing. */\nexport const avatarTestId =\n (dataTestId?: string) =>\n (suffix: string): string | undefined =>\n dataTestId ? `${dataTestId}-${suffix}` : undefined;\n","import type { AvatarSize, AvatarStatus } from './Avatar.base';\nimport { ABSOLUTE_INK, NEUTRAL_RAMP } from '../../../tokens/ink.core';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Avatar` RENDERERS DRAW WITH.\n *\n * `Avatar.view.tsx` (web, emotion over MUI's `Avatar` and `Badge`) and\n * `Avatar.native.tsx` (React Native) read this one table: the six boxes and\n * their type, the status dot, the glow, the shimmer and the spinner. The web\n * turns the px into rem; native uses the numbers.\n */\nexport interface AvatarSizeMetrics {\n /** The square the portrait fills, in px. */\n box: number;\n /** The initials' type size, in px. */\n fontSize: number;\n}\n\nexport const AVATAR_SIZES: Record<AvatarSize, AvatarSizeMetrics> = {\n xs: { box: 24, fontSize: 12 },\n sm: { box: 32, fontSize: 14 },\n md: { box: 40, fontSize: 16 },\n lg: { box: 48, fontSize: 18 },\n xl: { box: 64, fontSize: 24 },\n xxl: { box: 80, fontSize: 32 },\n};\n\n/** `rounded` takes one spacing unit; `circle` and `status` are round. */\nexport const ROUNDED_RADIUS_UNITS = 1;\n\n/** The paper ring an avatar takes inside a group, and the hairline outside it. */\nexport const BORDER_WIDTH = 2;\nexport const BORDER_HALO_ALPHA = 0.2;\n\n/** `glow`: a 20px halo at five pixels of spread, and a brightness lift. */\nexport const GLOW = { blur: 20, spread: 5, alpha: 0.4, brightness: 1.05 } as const;\n\n/** `pulse`: the `::after` ring, from nothing to 10px while it fades out. */\nexport const PULSE = { durationMs: 2000, alpha: 0.3, spread: 10 } as const;\n\n/** The shimmer that runs across a loading avatar. */\nexport const SHIMMER = { durationMs: 1500, fromAlpha: 0.6, toAlpha: 0.8 } as const;\n\n/** The overlay over a loading avatar, and the ring spinning in it. */\nexport const LOADING_OVERLAY = { paperAlpha: 0.7, blur: 2 } as const;\nexport const SPINNER = {\n /** A share of the avatar's box. */\n scale: 0.4,\n ringWidth: 2,\n trackAlpha: 0.3,\n durationMs: 800,\n} as const;\n\n/**\n * The status dot: a fifth of the box, never below 8px, inside a paper ring.\n * `anchor` is MUI's `overlap=\"circular\"` inset — the dot's CENTRE sits 14% of\n * the box in from the bottom-right corner.\n */\nexport const STATUS_DOT = { scale: 0.2, min: 8, borderWidth: 2, anchor: 0.14 } as const;\n\n/**\n * The default and broken-image glyphs are ordinary `SvgIcon`s here, not MUI's\n * own `.MuiAvatar-fallback` (which is 75% of the box): this component passes\n * them as CHILDREN, so they render at the icon default whatever the box is.\n */\nexport const GLYPH_SIZE = 24;\n\n/** MUI's `Fade` timeout on mount, and the scale-in behind it. */\nexport const FADE_MS = 300;\nexport const SCALE_IN_MS = 300;\n\n/** `transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1)`. */\nexport const AVATAR_TRANSITION_MS = 300;\nexport const AVATAR_TRANSITION_EASING = 'cubic-bezier(0.4, 0, 0.2, 1)';\n\n/** The interactive lift, which is a `:hover` on the web. */\nexport const HOVER = { scale: 1.1, lift: 2, shadowY: 8, shadowBlur: 20, shadowAlpha: 0.3, brightness: 1.1 } as const;\nexport const ACTIVE_SCALE = 1.05;\n\n/** The focus ring `:focus-visible` draws. */\nexport const FOCUS_RING = { width: 3, offset: 2, alpha: 0.5 } as const;\n\n/** An avatar group's default overlap, in px, and its hover lift. */\nexport const GROUP_OVERLAP = 8;\nexport const GROUP_MAX = 4;\nexport const GROUP_HOVER = { scale: 1.1, lift: 4 } as const;\n\n/** The dot's colour per status. `offline` is the ramp, the rest are semantic. */\nexport function statusColor(theme: UiTheme, status: AvatarStatus): string {\n if (status === 'online') return theme.palette.success.main;\n if (status === 'away') return theme.palette.warning.main;\n if (status === 'busy') return theme.palette.danger.main;\n return NEUTRAL_RAMP[500];\n}\n\nexport interface AvatarAccent {\n main: string;\n contrastText: string;\n}\n\n/**\n * The accent behind the initials. `danger`, NOT `error` — the web map was keyed\n * on MUI's word while the prop took the house one, so `danger` matched nothing\n * and fell through to primary: a red avatar rendering blue, silently.\n */\nexport function avatarAccent(theme: UiTheme, color: ColorValue): AvatarAccent {\n if (color === 'neutral') return { main: NEUTRAL_RAMP[700], contrastText: ABSOLUTE_INK.white };\n const accent = theme.palette[color];\n return { main: accent.main, contrastText: accent.contrastText || ABSOLUTE_INK.white };\n}\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport type { AvatarSize, AvatarVariant } from './Avatar.base';\nimport {\n AVATAR_SIZES,\n BORDER_HALO_ALPHA,\n BORDER_WIDTH,\n GLOW,\n LOADING_OVERLAY,\n ROUNDED_RADIUS_UNITS,\n SPINNER,\n STATUS_DOT,\n avatarAccent,\n} from './Avatar.metrics';\nimport { alpha } from '../../../tokens/color';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/** `square` is sharp, `rounded` takes a spacing unit, `circle` and `status` are round. */\nexport function avatarRadius(theme: UiTheme, variant: AvatarVariant, box: number): number {\n if (variant === 'square') return 0;\n if (variant === 'rounded') return theme.spacing(ROUNDED_RADIUS_UNITS);\n return box / 2;\n}\n\nexport interface AvatarSurfaceArgs {\n variant: AvatarVariant;\n size: AvatarSize;\n color: ColorValue;\n glow: boolean;\n bordered: boolean;\n interactive: boolean;\n hasError: boolean;\n}\n\n/** The avatar box: MUI's square, its radius, the accent behind the initials. */\nexport function avatarSurfaceStyle(theme: UiTheme, a: AvatarSurfaceArgs): ViewStyle {\n const { box } = AVATAR_SIZES[a.size];\n const accent = avatarAccent(theme, a.color);\n return {\n width: box,\n height: box,\n borderRadius: avatarRadius(theme, a.variant, box),\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n backgroundColor: a.hasError ? theme.palette.danger.main : accent.main,\n cursor: a.interactive ? 'pointer' : 'auto',\n ...(a.bordered\n ? {\n borderWidth: BORDER_WIDTH,\n borderColor: theme.palette.background.paper,\n boxShadow: `0 0 0 1px ${alpha(theme.palette.divider, BORDER_HALO_ALPHA)}`,\n }\n : {}),\n ...(a.glow\n ? { boxShadow: `0 0 ${GLOW.blur}px ${GLOW.spread}px ${alpha(accent.main, GLOW.alpha)}` }\n : {}),\n };\n}\n\n/** The initials, in the accent's contrast ink at the size's own step. */\nexport function avatarTextStyle(\n theme: UiTheme,\n size: AvatarSize,\n color: ColorValue,\n hasError: boolean,\n): TextStyle {\n const accent = avatarAccent(theme, color);\n return {\n fontFamily: theme.typography.fontFamily,\n fontSize: AVATAR_SIZES[size].fontSize,\n textAlign: 'center',\n color: hasError ? theme.palette.danger.contrastText : accent.contrastText,\n };\n}\n\n/** The wash over a loading avatar, and the ring spinning in it. */\nexport function avatarLoadingStyle(theme: UiTheme, size: AvatarSize, radius: number): ViewStyle {\n const { box } = AVATAR_SIZES[size];\n return {\n position: 'absolute',\n top: 0,\n left: 0,\n width: box,\n height: box,\n borderRadius: radius,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: alpha(theme.palette.background.paper, LOADING_OVERLAY.paperAlpha),\n };\n}\n\nexport function avatarSpinnerStyle(theme: UiTheme, size: AvatarSize): ViewStyle {\n const ring = AVATAR_SIZES[size].box * SPINNER.scale;\n return {\n width: ring,\n height: ring,\n borderRadius: ring / 2,\n borderWidth: SPINNER.ringWidth,\n borderColor: alpha(theme.palette.primary.main, SPINNER.trackAlpha),\n borderTopColor: theme.palette.primary.main,\n };\n}\n\n/** MUI's `Badge` dot, anchored bottom-right of a circular avatar. */\nexport function avatarStatusDotStyle(theme: UiTheme, size: AvatarSize, color: string): ViewStyle {\n const { box } = AVATAR_SIZES[size];\n const dot = Math.max(STATUS_DOT.min, box * STATUS_DOT.scale);\n // MUI's `overlap=\"circular\"` puts the dot's centre 14% in from the corner.\n const inset = box * STATUS_DOT.anchor - dot / 2;\n return {\n position: 'absolute',\n right: inset,\n bottom: inset,\n width: dot,\n height: dot,\n borderRadius: dot / 2,\n backgroundColor: color,\n borderWidth: STATUS_DOT.borderWidth,\n borderColor: theme.palette.background.paper,\n };\n}\n","/**\n * THE PIECES THE NATIVE `Avatar` IS ASSEMBLED FROM.\n *\n * Split out of `Avatar.native.tsx` so the component itself reads as structure:\n * the mount fade, the portrait's load state, the content node, the pulse ring,\n * the spinner and the surface they all sit on.\n */\nimport * as React from 'react';\nimport {\n Animated,\n Easing,\n Image,\n Platform,\n Pressable,\n StyleSheet,\n View,\n type GestureResponderEvent,\n type StyleProp,\n type ViewStyle,\n} from 'react-native';\n\nimport type { AvatarSize, AvatarVariant, ContentType } from './Avatar.base';\nimport type { AvatarContentPick } from './Avatar.helpers';\nimport {\n avatarLoadingStyle,\n avatarRadius,\n avatarSpinnerStyle,\n avatarSurfaceStyle,\n avatarTextStyle,\n} from './Avatar.look.native';\nimport { AVATAR_SIZES, FADE_MS, GLYPH_SIZE, PULSE, SPINNER } from './Avatar.metrics';\nimport { Icon } from '../../../icons/Icon.native';\nimport { useLoopedProgress } from '../../../platform/animation';\nimport { renderTextChildren } from '../../../platform/text-children';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\nconst nativeDriver = Platform.OS !== 'web';\n\n/** MUI's `Fade`: in over 300ms, once `animationDelay` has run. */\nexport function useFadeIn(animationDelay: number): Animated.Value {\n const opacity = React.useRef(new Animated.Value(0)).current;\n React.useEffect(() => {\n const animation = Animated.sequence([\n Animated.delay(animationDelay),\n Animated.timing(opacity, {\n toValue: 1,\n duration: FADE_MS,\n easing: Easing.out(Easing.ease),\n useNativeDriver: nativeDriver,\n }),\n ]);\n animation.start();\n return () => animation.stop();\n }, [animationDelay, opacity]);\n return opacity;\n}\n\ninterface ImageState {\n imageError: boolean;\n imageLoading: boolean;\n handleError: () => void;\n handleLoad: () => void;\n}\n\n/** The portrait's load lifecycle: loading from the moment there is a `src`. */\nexport function useImageState(src: string | undefined, onError?: () => void): ImageState {\n const [imageError, setImageError] = React.useState(false);\n const [imageLoading, setImageLoading] = React.useState(Boolean(src));\n\n React.useEffect(() => {\n setImageError(false);\n setImageLoading(Boolean(src));\n }, [src]);\n\n const handleError = React.useCallback(() => {\n setImageError(true);\n setImageLoading(false);\n onError?.();\n }, [onError]);\n\n return {\n imageError,\n imageLoading,\n handleError,\n handleLoad: React.useCallback(() => setImageLoading(false), []),\n };\n}\n\ninterface ContentArgs {\n pick: AvatarContentPick;\n children?: React.ReactNode;\n fallback?: string;\n icon?: React.ReactNode;\n ink: string;\n}\n\n/** The node behind the winning content slot; the pick itself is shared. */\nexport function contentNode({ pick, children, fallback, icon, ink }: ContentArgs): React.ReactNode {\n if (pick === 'children') return children;\n if (pick === 'fallback') return fallback;\n if (pick === 'icon') return icon;\n return <Icon name={pick === 'broken' ? 'BrokenImage' : 'Person'} size={GLYPH_SIZE} color={ink} />;\n}\n\n/**\n * MUI's `::after` pulse ring: the accent growing 10px past the box while it\n * fades out, every two seconds. React Native has no pseudo-element, so it is a\n * sibling behind the avatar.\n */\nexport function PulseRing({ size, variant, color }: { size: AvatarSize; variant: AvatarVariant; color: string }): React.JSX.Element {\n const theme = useUiTheme();\n const progress = useLoopedProgress(true, { durationMs: PULSE.durationMs });\n const box = AVATAR_SIZES[size].box;\n return (\n <Animated.View\n aria-hidden\n style={[\n StyleSheet.absoluteFill,\n {\n pointerEvents: 'none',\n borderRadius: avatarRadius(theme, variant, box),\n backgroundColor: color,\n opacity: progress.interpolate({ inputRange: [0, 0.7, 1], outputRange: [PULSE.alpha, 0, 0] }),\n transform: [\n {\n scale: progress.interpolate({\n inputRange: [0, 0.7, 1],\n outputRange: [1, (box + PULSE.spread * 2) / box, 1],\n }),\n },\n ],\n },\n ]}\n />\n );\n}\n\n/** MUI's `rotateAnimation`: the ring turning once every 0.8s. */\nfunction Spinner({ size, testID }: { size: AvatarSize; testID?: string }): React.JSX.Element {\n const theme = useUiTheme();\n const progress = useLoopedProgress(true, { durationMs: SPINNER.durationMs });\n return (\n <Animated.View\n testID={testID}\n style={[\n avatarSpinnerStyle(theme, size),\n {\n transform: [\n { rotate: progress.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] }) },\n ],\n },\n ]}\n />\n );\n}\n\nexport interface SurfaceArgs {\n variant: AvatarVariant;\n size: AvatarSize;\n color: ColorValue;\n glow: boolean;\n bordered: boolean;\n clickable: boolean;\n imageError: boolean;\n showSpinner: boolean;\n imgSrc?: string;\n alt?: string;\n ariaLabel: string;\n content: React.ReactNode;\n contentType: ContentType;\n testID?: string;\n idFor: (suffix: string) => string | undefined;\n style?: StyleProp<ViewStyle>;\n onPress?: (event: GestureResponderEvent) => void;\n onImageError: () => void;\n onImageLoad: () => void;\n rest: object;\n}\n\n/** What sits in the middle: the portrait, or the winning content slot. */\nfunction SurfaceInner(a: SurfaceArgs, theme: UiTheme): React.JSX.Element | null {\n if (a.imgSrc && !a.imageError) {\n return (\n <Image\n source={{ uri: a.imgSrc }}\n aria-label={a.alt}\n onError={a.onImageError}\n onLoad={a.onImageLoad}\n style={StyleSheet.absoluteFill}\n accessibilityIgnoresInvertColors\n />\n );\n }\n if (a.showSpinner) return null;\n return (\n <View testID={a.idFor(a.contentType)}>\n {renderTextChildren(a.content, avatarTextStyle(theme, a.size, a.color, a.imageError), 1)}\n </View>\n );\n}\n\n/** The avatar box itself, plus the overlay that covers it while it loads. */\nexport function AvatarSurface(a: SurfaceArgs & { forwardedRef?: React.Ref<View> }): React.JSX.Element {\n const theme = useUiTheme();\n const box = AVATAR_SIZES[a.size].box;\n return (\n <>\n <Pressable\n ref={a.forwardedRef}\n testID={a.testID}\n role={a.clickable ? 'button' : undefined}\n aria-label={a.ariaLabel}\n tabIndex={a.clickable ? 0 : -1}\n onPress={a.clickable ? a.onPress : undefined}\n style={[\n avatarSurfaceStyle(theme, {\n variant: a.variant,\n size: a.size,\n color: a.color,\n glow: a.glow,\n bordered: a.bordered,\n interactive: a.clickable,\n hasError: a.imageError,\n }),\n a.style,\n ]}\n {...a.rest}\n >\n {SurfaceInner(a, theme)}\n </Pressable>\n {a.showSpinner ? (\n <View\n testID={a.idFor('loading')}\n style={avatarLoadingStyle(theme, a.size, avatarRadius(theme, a.variant, box))}\n >\n <Spinner size={a.size} testID={a.idFor('loading-spinner')} />\n </View>\n ) : null}\n </>\n );\n}\n"],"mappings":"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","names":["React","Animated","StyleSheet","View","jsx","jsxs","Animated","View","StyleSheet"]}
@@ -18,8 +18,7 @@ import {
18
18
  useUiTheme
19
19
  } from "../chunks/chunk-X6RQGKGF.js";
20
20
  import {
21
- alpha,
22
- contrastText
21
+ alpha
23
22
  } from "../chunks/chunk-R5XVZRDD.js";
24
23
 
25
24
  // src/components/data-display/Badge/Badge.native.tsx
@@ -92,12 +91,7 @@ var BADGE_ANCHORS = {
92
91
  var badgeAnchor = (position) => BADGE_ANCHORS[position] ?? BADGE_ANCHORS["top-right"];
93
92
  function badgePalette(theme, color) {
94
93
  if (color === "neutral") {
95
- return {
96
- main: theme.palette.grey[600],
97
- light: theme.palette.grey[400],
98
- dark: theme.palette.grey[800],
99
- contrastText: contrastText(theme.palette.grey[600])
100
- };
94
+ return theme.palette.neutral;
101
95
  }
102
96
  return theme.palette[color];
103
97
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/data-display/Badge/Badge.native.tsx","../../../src/components/data-display/Badge/Badge.helpers.ts","../../../src/components/data-display/Badge/Badge.metrics.ts","../../../src/components/data-display/Badge/Badge.look.native.ts","../../../src/components/data-display/Badge/BadgeContent.native.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Animated, Easing, Platform, StyleSheet, View, type ViewStyle } from 'react-native';\n\nimport {\n badgeContentOf,\n formatCount,\n makeBadgeTestId,\n resolveBadgeProps,\n type ResolvedBadgeProps,\n} from './Badge.helpers';\nimport { badgeAnchorStyle, badgeBoxStyle } from './Badge.look.native';\nimport {\n BOUNCE,\n CLOSE_DELAY_MS,\n FADE_IN_SCALE,\n PULSE,\n} from './Badge.metrics';\nimport { BadgeContent } from './BadgeContent.native';\nimport type { BadgeProps } from './Badge.types.native';\nimport { webAria } from '../../../platform/aria';\nimport { resolveTestId } from '../../../platform/test-id';\nimport { useLoopedProgress } from '../../../platform/animation';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\n\nconst nativeDriver = Platform.OS !== 'web';\ntype AnimatedStyle = Animated.WithAnimatedValue<ViewStyle>;\n\n/** MUI's `pulseAnimation`: 1 → 1.2 → 1 while the opacity dips, every two seconds. */\nfunction usePulseStyle(enabled: boolean): AnimatedStyle | null {\n const progress = useLoopedProgress(enabled, {\n durationMs: PULSE.durationMs,\n easing: Easing.inOut(Easing.ease),\n });\n if (!enabled) return null;\n return {\n opacity: progress.interpolate({ inputRange: [0, 0.7, 1], outputRange: [1, PULSE.opacity, 1] }),\n transform: [\n { scale: progress.interpolate({ inputRange: [0, 0.7, 1], outputRange: [1, PULSE.scale, 1] }) },\n ],\n };\n}\n\n/** A 0→1 progress that runs once on mount, for the entrance keyframes. */\nfunction useEntrance(enabled: boolean, durationMs: number): Animated.Value {\n const progress = React.useRef(new Animated.Value(enabled ? 0 : 1)).current;\n React.useEffect(() => {\n if (!enabled) return undefined;\n progress.setValue(0);\n const timing = Animated.timing(progress, {\n toValue: 1,\n duration: durationMs,\n easing: Easing.out(Easing.ease),\n useNativeDriver: nativeDriver,\n });\n timing.start();\n return () => timing.stop();\n }, [enabled, durationMs, progress]);\n return progress;\n}\n\n/** `bounceAnimation` when asked for, else `fadeInScaleAnimation`; neither when neither. */\nfunction useEntranceStyle(animate: boolean, bounce: boolean): AnimatedStyle | null {\n const progress = useEntrance(animate || bounce, bounce ? BOUNCE.durationMs : FADE_IN_SCALE.durationMs);\n if (bounce) {\n return {\n transform: [\n {\n translateY: progress.interpolate({\n inputRange: [0, 0.2, 0.4, 0.5, 0.6, 0.8, 1],\n outputRange: [0, 0, -BOUNCE.lift, 0, -BOUNCE.secondLift, 0, 0],\n }),\n },\n {\n scale: progress.interpolate({\n inputRange: [0, 0.2, 0.4, 0.5, 0.6, 0.8, 1],\n outputRange: [1, 1, BOUNCE.scale, 1, BOUNCE.secondScale, 1, 1],\n }),\n },\n ],\n };\n }\n if (!animate) return null;\n return {\n opacity: progress.interpolate({ inputRange: [0, 1], outputRange: [0, 1] }),\n transform: [\n {\n scale: progress.interpolate({\n inputRange: [0, 0.5, 1],\n outputRange: [FADE_IN_SCALE.from, FADE_IN_SCALE.overshoot, 1],\n }),\n },\n ],\n };\n}\n\n/** MUI's `Zoom` on close: out over 300ms, then the caller is told. */\nfunction useCloseZoom(onClose?: () => void): { style: AnimatedStyle; close: () => void } {\n const progress = React.useRef(new Animated.Value(1)).current;\n const close = React.useCallback(() => {\n Animated.timing(progress, {\n toValue: 0,\n duration: CLOSE_DELAY_MS,\n easing: Easing.out(Easing.ease),\n useNativeDriver: nativeDriver,\n }).start(({ finished }) => {\n if (finished) onClose?.();\n });\n }, [onClose, progress]);\n return { style: { opacity: progress, transform: [{ scale: progress }] }, close };\n}\n\ninterface ChipContent {\n content: React.ReactNode;\n /** A count that formatted away leaves nothing worth showing. */\n hidden: boolean;\n}\n\n/** What the chip shows, and whether there is anything to show at all. */\nfunction chipContent(resolved: ResolvedBadgeProps<BadgeProps>): ChipContent {\n const { variant, max, showZero, invisible, icon, closable } = resolved;\n const raw = badgeContentOf(resolved);\n const content = variant === 'count' ? formatCount(raw, { max, showZero }) : raw;\n // The web hides the chip only when the whole run assembles to nothing\n // (`buildBadgeContent` returns null on an empty `parts`), so a zero count\n // still draws while an icon or a close button is left to draw with it.\n const hasOtherParts = Boolean(icon) || Boolean(closable);\n return {\n content,\n hidden:\n Boolean(invisible) ||\n (variant === 'count' && content === null && !showZero && !hasOtherParts),\n };\n}\n\n/**\n * The native `Badge`: MUI's chip anchored off a corner of whatever it is\n * attached to, with the same ten variants, five sizes and content run.\n */\nexport const Badge = React.forwardRef<View, BadgeProps>((rawProps, ref) => {\n const resolved = resolveBadgeProps(rawProps);\n const {\n variant,\n size,\n color,\n glow,\n pulse,\n animate,\n bounce,\n max: _max,\n showZero: _showZero,\n position,\n invisible,\n closable,\n onClose,\n icon,\n children,\n style,\n 'aria-label': ariaLabel,\n 'aria-live': ariaLive = 'polite',\n 'aria-atomic': ariaAtomic = true,\n 'data-testid': _domTestId,\n testID: _testID,\n dataTestId: _dataTestId,\n content: _content,\n badgeContent: _badgeContent,\n shimmer: _shimmer,\n ...rest\n } = resolved;\n const theme = useUiTheme();\n const badgeId = resolveTestId(resolved);\n const idFor = makeBadgeTestId(badgeId);\n const pulseStyle = usePulseStyle(pulse && !invisible);\n const entrance = useEntranceStyle(animate && !bounce, bounce);\n const zoom = useCloseZoom(onClose);\n\n const { content, hidden } = chipContent(resolved);\n\n return (\n <View ref={ref} testID={badgeId || 'badge'} style={[styles.anchor, style]} {...rest}>\n {children}\n {hidden ? null : (\n <View style={badgeAnchorStyle(position)}>\n <Animated.View\n testID={idFor('content-wrapper')}\n aria-label={ariaLabel}\n aria-live={ariaLive}\n {...webAria({ 'aria-atomic': ariaAtomic ? 'true' : 'false' })}\n style={[badgeBoxStyle(theme, { variant, size, color, glow }), entrance, pulseStyle, zoom.style]}\n >\n <BadgeContent\n variant={variant}\n size={size}\n color={color}\n icon={icon}\n closable={closable}\n content={content}\n idFor={idFor}\n onClose={zoom.close}\n />\n </Animated.View>\n </View>\n )}\n </View>\n );\n});\n\nBadge.displayName = 'Badge';\n\nconst styles = StyleSheet.create({\n /** MUI's badge root: `inline-flex`, with the chip positioned against it. */\n anchor: { position: 'relative', alignSelf: 'flex-start', flexDirection: 'row' },\n});\n","import type { ReactNode } from 'react';\n\nimport type { BadgeBaseProps } from './Badge.base';\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\n/**\n * Generic over the renderer's own props: the web and the native `Badge` carry\n * different extras, and both come back out untouched.\n */\nexport type ResolvedBadgeProps<P extends BadgeBaseProps = BadgeBaseProps> = P &\n Required<Pick<BadgeBaseProps, BadgeDefaultedKeys>>;\n\nconst BADGE_DEFAULTS: Required<Pick<BadgeBaseProps, 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 = <P extends BadgeBaseProps>(props: P): ResolvedBadgeProps<P> =>\n ({\n ...BADGE_DEFAULTS,\n ...(Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<P>),\n }) as ResolvedBadgeProps<P>;\n\n// `content` supersedes the older `badgeContent` prop.\nexport const badgeContentOf = (props: Pick<BadgeBaseProps, '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\n/** `${dataTestId}-content`, or `badge-content` when the caller named nothing. */\nexport const makeBadgeTestId =\n (dataTestId?: string) =>\n (suffix: string): string =>\n dataTestId ? `${dataTestId}-${suffix}` : `badge-${suffix}`;\n","import type { BadgePosition, BadgeSize } from './Badge.base';\nimport { contrastText, type UiPaletteColor, type UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Badge` RENDERERS DRAW WITH.\n *\n * `Badge.styles.ts` / `Badge.variants.ts` (web, emotion over MUI's `Badge`) and\n * `Badge.native.tsx` (React Native) read this one table: the five chips, the\n * dot inside them, the ten variants' alphas and borders, and the keyframes.\n * The web turns the px into rem and the padding into a shorthand; native uses\n * the numbers.\n */\nexport interface BadgeSizeMetrics {\n minWidth: number;\n height: number;\n /** The content's type size, in px. */\n fontSize: number;\n /** The chip's side padding, in px. `padding: '0 Npx'` on the web. */\n paddingHorizontal: number;\n dotSize: number;\n /** A leading icon's own type size, in px. */\n iconSize: number;\n /** The close glyph's type size, in px. `xl` falls back to `lg`, as the web does. */\n closeIconSize: number;\n}\n\nexport const BADGE_SIZES: Record<BadgeSize, BadgeSizeMetrics> = {\n xs: { minWidth: 14, height: 14, fontSize: 8, paddingHorizontal: 3, dotSize: 6, iconSize: 10, closeIconSize: 8 },\n sm: { minWidth: 16, height: 16, fontSize: 10, paddingHorizontal: 4, dotSize: 8, iconSize: 12, closeIconSize: 10 },\n md: { minWidth: 20, height: 20, fontSize: 12, paddingHorizontal: 6, dotSize: 10, iconSize: 14, closeIconSize: 12 },\n lg: { minWidth: 24, height: 24, fontSize: 14, paddingHorizontal: 8, dotSize: 12, iconSize: 16, closeIconSize: 14 },\n xl: { minWidth: 28, height: 28, fontSize: 16, paddingHorizontal: 10, dotSize: 14, iconSize: 18, closeIconSize: 14 },\n};\n\n/** The chip's own type weight, its tracking, and the paper ring around it. */\nexport const BADGE_FONT_WEIGHT = 600;\nexport const BADGE_DESTRUCTIVE_FONT_WEIGHT = 700;\nexport const BADGE_LETTER_SPACING_EM = 0.025;\nexport const BADGE_BORDER_WIDTH = 2;\n/** Between the icon, the content and the close button. */\nexport const BADGE_CONTENT_GAP = 2;\n\n/* ── The ten variants' washes ─────────────────────────────────────────────── */\n\nexport const GLASS_BACKGROUND_ALPHA = 0.1;\nexport const GLASS_BORDER_ALPHA = 0.2;\nexport const GLASS_BLUR_PX = 10;\nexport const GLASS_SATURATE = 2;\nexport const GLASS_INSET_HIGHLIGHT_ALPHA = 0.1;\nexport const OUTLINE_BORDER_WIDTH = 2;\nexport const SECONDARY_BACKGROUND_ALPHA = 0.15;\nexport const SECONDARY_BORDER_ALPHA = 0.3;\n\n/* ── Emphasis and animation ───────────────────────────────────────────────── */\n\n/** `glow` without `pulse`: a 15px halo, brighter under the pointer. */\nexport const GLOW = { blur: 15, spread: 3, alpha: 0.5, hoverBlur: 20, hoverSpread: 4, hoverAlpha: 0.6, brightness: 1.1 } as const;\n/** `glow` WITH `pulse`: the halo breathes between these two. */\nexport const GLOW_PULSE = { fromBlur: 5, fromSpread: 2, fromAlpha: 0.4, toBlur: 20, toSpread: 4, toAlpha: 0.8 } as const;\n/** MUI-free `pulseAnimation`: 1 → 1.2 → 1 while the opacity dips to 0.7. */\nexport const PULSE = { durationMs: 2000, scale: 1.2, opacity: 0.7 } as const;\n/** `bounceAnimation`: up 8px at 40%, 4px at 60%, over one second. */\nexport const BOUNCE = { durationMs: 1000, lift: 8, secondLift: 4, scale: 1.05, secondScale: 1.02 } as const;\n/** `fadeInScaleAnimation`: in from half size, overshooting to 1.1. */\nexport const FADE_IN_SCALE = { durationMs: 400, from: 0.5, overshoot: 1.1 } as const;\n/** The shimmer sweep, and the white it is made of. */\nexport const SHIMMER = { durationMs: 3000, alpha: 0.4 } as const;\n/** How long the mount animation is held before the flag clears. */\nexport const MOUNT_ANIMATION_MS = 1000;\n/** MUI's `Zoom` on close, and the wait before the caller is told. */\nexport const CLOSE_DELAY_MS = 300;\n/** `transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1)` on the chip. */\nexport const BADGE_TRANSITION_MS = 300;\nexport const BADGE_TRANSITION_EASING = 'cubic-bezier(0.4, 0, 0.2, 1)';\n/** The chip grows a tenth under the pointer. */\nexport const HOVER_SCALE = 1.1;\n\n/* ── Placement ────────────────────────────────────────────────────────────── */\n\nexport interface BadgeAnchor {\n vertical: 'top' | 'bottom';\n horizontal: 'left' | 'right';\n}\n\nconst BADGE_ANCHORS: Record<BadgePosition, BadgeAnchor> = {\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\n/**\n * Falls back to `top-right` for anything outside the union, as the web's own\n * `positionMap[position] || positionMap['top-right']` did. Splitting on `-`\n * instead would hand MUI a half-undefined `anchorOrigin` for, say, `middle`.\n */\nexport const badgeAnchor = (position: BadgePosition): BadgeAnchor =>\n BADGE_ANCHORS[position] ?? BADGE_ANCHORS['top-right'];\n\n/**\n * `neutral` has no palette slot of its own in MUI, so `Badge.styles.ts` draws\n * it from three greys; `danger` is MUI's `error`, which is what the shared\n * theme calls `danger`. Same colours here.\n */\nexport function badgePalette(theme: UiTheme, color: ColorValue): UiPaletteColor {\n if (color === 'neutral') {\n return {\n main: theme.palette.grey[600],\n light: theme.palette.grey[400],\n dark: theme.palette.grey[800],\n contrastText: contrastText(theme.palette.grey[600]),\n };\n }\n return theme.palette[color];\n}\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport type { BadgePosition, BadgeSize, BadgeVariant } from './Badge.base';\nimport {\n BADGE_BORDER_WIDTH,\n BADGE_DESTRUCTIVE_FONT_WEIGHT,\n BADGE_FONT_WEIGHT,\n BADGE_LETTER_SPACING_EM,\n BADGE_SIZES,\n GLASS_BACKGROUND_ALPHA,\n GLASS_BORDER_ALPHA,\n GLOW,\n OUTLINE_BORDER_WIDTH,\n SECONDARY_BACKGROUND_ALPHA,\n SECONDARY_BORDER_ALPHA,\n badgeAnchor,\n badgePalette,\n type BadgeSizeMetrics,\n} from './Badge.metrics';\nimport { alpha } from '../../../tokens/color';\nimport type { UiPaletteColor, UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\nexport interface BadgePaint {\n box: ViewStyle;\n ink: string;\n fontWeight: number;\n /** `gradient` and `glass` shout; everything else is set as written. */\n uppercase: boolean;\n}\n\n/** The chip a variant paints, as React Native styles. */\nfunction variantPaint(\n theme: UiTheme,\n variant: BadgeVariant,\n accent: UiPaletteColor,\n): BadgePaint {\n const filled = (background: string, ink: string): BadgePaint => ({\n box: { backgroundColor: background },\n ink,\n fontWeight: BADGE_FONT_WEIGHT,\n uppercase: false,\n });\n switch (variant) {\n case 'gradient':\n // React Native core has no gradient fill: the 135° run takes its first stop.\n return { ...filled(accent.main, '#fff'), uppercase: true };\n case 'glass':\n return {\n box: {\n backgroundColor: alpha(accent.main, GLASS_BACKGROUND_ALPHA),\n borderWidth: 1,\n borderColor: alpha(accent.main, GLASS_BORDER_ALPHA),\n },\n ink: accent.main,\n fontWeight: BADGE_FONT_WEIGHT,\n uppercase: true,\n };\n case 'outline':\n return {\n box: {\n backgroundColor: 'transparent',\n borderWidth: OUTLINE_BORDER_WIDTH,\n borderColor: accent.main,\n },\n ink: accent.main,\n fontWeight: BADGE_FONT_WEIGHT,\n uppercase: false,\n };\n case 'secondary':\n return {\n box: {\n backgroundColor: alpha(accent.main, SECONDARY_BACKGROUND_ALPHA),\n borderWidth: 1,\n borderColor: alpha(accent.main, SECONDARY_BORDER_ALPHA),\n },\n ink: accent.main,\n fontWeight: BADGE_FONT_WEIGHT,\n uppercase: false,\n };\n case 'destructive':\n return {\n ...filled(theme.palette.danger.main, theme.palette.danger.contrastText),\n fontWeight: BADGE_DESTRUCTIVE_FONT_WEIGHT,\n };\n case 'success':\n return filled(theme.palette.success.main, theme.palette.success.contrastText);\n case 'warning':\n return filled(theme.palette.warning.main, theme.palette.warning.contrastText);\n default:\n return filled(accent.main, accent.contrastText || '#fff');\n }\n}\n\nexport interface BadgeBoxArgs {\n variant: BadgeVariant;\n size: BadgeSize;\n color: ColorValue;\n glow: boolean;\n}\n\n/**\n * Where the chip hangs: MUI's `anchorOrigin` pins it to a corner and then\n * `translate(±50%, ∓50%)` puts its CENTRE there. It is its own node so the\n * chip's animations own `transform` outright — a React Native style array\n * replaces that property rather than composing it, as CSS would.\n */\nexport function badgeAnchorStyle(position: BadgePosition): ViewStyle {\n const anchor = badgeAnchor(position);\n return {\n position: 'absolute',\n [anchor.vertical]: 0,\n [anchor.horizontal]: 0,\n transform: [\n { translateX: anchor.horizontal === 'right' ? '50%' : '-50%' },\n { translateY: anchor.vertical === 'top' ? '-50%' : '50%' },\n ],\n };\n}\n\n/** The chip itself: MUI's paper ring, its size, and the variant's paint. */\nexport function badgeBoxStyle(theme: UiTheme, a: BadgeBoxArgs): ViewStyle {\n const metrics = BADGE_SIZES[a.size];\n const accent = badgePalette(theme, a.color);\n const paint = variantPaint(theme, a.variant, accent);\n const dot = a.variant === 'dot';\n\n return {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: BADGE_BORDER_WIDTH,\n borderColor: theme.palette.background.paper,\n ...(dot\n ? {\n width: metrics.dotSize,\n height: metrics.dotSize,\n minWidth: metrics.dotSize,\n borderRadius: metrics.dotSize / 2,\n backgroundColor: accent.main,\n }\n : {\n minWidth: metrics.minWidth,\n height: metrics.height,\n paddingHorizontal: metrics.paddingHorizontal,\n borderRadius: metrics.height / 2,\n ...paint.box,\n }),\n ...(a.glow\n ? { boxShadow: `0 0 ${GLOW.blur}px ${GLOW.spread}px ${alpha(accent.main, GLOW.alpha)}` }\n : {}),\n };\n}\n\n/** The chip's own type: the size's step, semibold, tracked a little wider. */\nexport function badgeTextStyle(\n theme: UiTheme,\n variant: BadgeVariant,\n size: BadgeSize,\n color: ColorValue,\n): TextStyle {\n const metrics = BADGE_SIZES[size];\n const paint = variantPaint(theme, variant, badgePalette(theme, color));\n return {\n fontFamily: theme.typography.fontFamily,\n fontSize: metrics.fontSize,\n fontWeight: String(paint.fontWeight) as TextStyle['fontWeight'],\n letterSpacing: metrics.fontSize * BADGE_LETTER_SPACING_EM,\n color: paint.ink,\n ...(paint.uppercase ? { textTransform: 'uppercase' } : {}),\n };\n}\n\nexport const badgeMetrics = (size: BadgeSize): BadgeSizeMetrics => BADGE_SIZES[size];\n","import * as React from 'react';\nimport { Pressable, StyleSheet, View } from 'react-native';\n\nimport type { BadgeSize, BadgeVariant } from './Badge.base';\nimport { badgeMetrics, badgeTextStyle } from './Badge.look.native';\nimport { BADGE_CONTENT_GAP } from './Badge.metrics';\nimport { Icon } from '../../../icons/Icon.native';\nimport { renderTextChildren } from '../../../platform/text-children';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\nexport interface BadgeContentProps {\n variant: BadgeVariant;\n size: BadgeSize;\n color: ColorValue;\n icon?: React.ReactNode;\n closable: boolean;\n content: React.ReactNode;\n idFor: (suffix: string) => string;\n onClose: () => void;\n}\n\n/**\n * The badge's inner run: optional icon, the content itself, optional close\n * button — the same three slots and the same ids `BadgeContent.tsx` builds. A\n * dot badge shows none of it.\n */\nexport function BadgeContent({\n variant,\n size,\n color,\n icon,\n closable,\n content,\n idFor,\n onClose,\n}: BadgeContentProps): React.JSX.Element | null {\n const theme = useUiTheme();\n if (variant === 'dot') return null;\n\n const metrics = badgeMetrics(size);\n const text = badgeTextStyle(theme, variant, size, color);\n const hasContent = content !== null && content !== undefined;\n if (!icon && !hasContent && !closable) return null;\n\n return (\n <View style={styles.run}>\n {icon ? (\n <View testID={idFor('icon')} style={{ height: metrics.iconSize, justifyContent: 'center' }}>\n {icon}\n </View>\n ) : null}\n {hasContent ? (\n <View testID={idFor('content')} style={styles.centre}>\n {renderTextChildren(content, text, 1)}\n </View>\n ) : null}\n {closable ? (\n <Pressable\n testID={idFor('close')}\n role=\"button\"\n aria-label=\"close\"\n onPress={onClose}\n style={styles.close}\n >\n <Icon name=\"Close\" size={metrics.closeIconSize} color={text.color as string} />\n </Pressable>\n ) : null}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n run: { flexDirection: 'row', alignItems: 'center', gap: BADGE_CONTENT_GAP },\n centre: { alignItems: 'center', justifyContent: 'center' },\n /** MUI's close `IconButton` sits half a spacing unit clear of the label. */\n close: { marginLeft: 4, alignItems: 'center', justifyContent: 'center' },\n});\n"],"mappings":"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","names":["StyleSheet","View","jsx","jsxs","View","styles","StyleSheet"]}
1
+ {"version":3,"sources":["../../../src/components/data-display/Badge/Badge.native.tsx","../../../src/components/data-display/Badge/Badge.helpers.ts","../../../src/components/data-display/Badge/Badge.metrics.ts","../../../src/components/data-display/Badge/Badge.look.native.ts","../../../src/components/data-display/Badge/BadgeContent.native.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Animated, Easing, Platform, StyleSheet, View, type ViewStyle } from 'react-native';\n\nimport {\n badgeContentOf,\n formatCount,\n makeBadgeTestId,\n resolveBadgeProps,\n type ResolvedBadgeProps,\n} from './Badge.helpers';\nimport { badgeAnchorStyle, badgeBoxStyle } from './Badge.look.native';\nimport {\n BOUNCE,\n CLOSE_DELAY_MS,\n FADE_IN_SCALE,\n PULSE,\n} from './Badge.metrics';\nimport { BadgeContent } from './BadgeContent.native';\nimport type { BadgeProps } from './Badge.types.native';\nimport { webAria } from '../../../platform/aria';\nimport { resolveTestId } from '../../../platform/test-id';\nimport { useLoopedProgress } from '../../../platform/animation';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\n\nconst nativeDriver = Platform.OS !== 'web';\ntype AnimatedStyle = Animated.WithAnimatedValue<ViewStyle>;\n\n/** MUI's `pulseAnimation`: 1 → 1.2 → 1 while the opacity dips, every two seconds. */\nfunction usePulseStyle(enabled: boolean): AnimatedStyle | null {\n const progress = useLoopedProgress(enabled, {\n durationMs: PULSE.durationMs,\n easing: Easing.inOut(Easing.ease),\n });\n if (!enabled) return null;\n return {\n opacity: progress.interpolate({ inputRange: [0, 0.7, 1], outputRange: [1, PULSE.opacity, 1] }),\n transform: [\n { scale: progress.interpolate({ inputRange: [0, 0.7, 1], outputRange: [1, PULSE.scale, 1] }) },\n ],\n };\n}\n\n/** A 0→1 progress that runs once on mount, for the entrance keyframes. */\nfunction useEntrance(enabled: boolean, durationMs: number): Animated.Value {\n const progress = React.useRef(new Animated.Value(enabled ? 0 : 1)).current;\n React.useEffect(() => {\n if (!enabled) return undefined;\n progress.setValue(0);\n const timing = Animated.timing(progress, {\n toValue: 1,\n duration: durationMs,\n easing: Easing.out(Easing.ease),\n useNativeDriver: nativeDriver,\n });\n timing.start();\n return () => timing.stop();\n }, [enabled, durationMs, progress]);\n return progress;\n}\n\n/** `bounceAnimation` when asked for, else `fadeInScaleAnimation`; neither when neither. */\nfunction useEntranceStyle(animate: boolean, bounce: boolean): AnimatedStyle | null {\n const progress = useEntrance(animate || bounce, bounce ? BOUNCE.durationMs : FADE_IN_SCALE.durationMs);\n if (bounce) {\n return {\n transform: [\n {\n translateY: progress.interpolate({\n inputRange: [0, 0.2, 0.4, 0.5, 0.6, 0.8, 1],\n outputRange: [0, 0, -BOUNCE.lift, 0, -BOUNCE.secondLift, 0, 0],\n }),\n },\n {\n scale: progress.interpolate({\n inputRange: [0, 0.2, 0.4, 0.5, 0.6, 0.8, 1],\n outputRange: [1, 1, BOUNCE.scale, 1, BOUNCE.secondScale, 1, 1],\n }),\n },\n ],\n };\n }\n if (!animate) return null;\n return {\n opacity: progress.interpolate({ inputRange: [0, 1], outputRange: [0, 1] }),\n transform: [\n {\n scale: progress.interpolate({\n inputRange: [0, 0.5, 1],\n outputRange: [FADE_IN_SCALE.from, FADE_IN_SCALE.overshoot, 1],\n }),\n },\n ],\n };\n}\n\n/** MUI's `Zoom` on close: out over 300ms, then the caller is told. */\nfunction useCloseZoom(onClose?: () => void): { style: AnimatedStyle; close: () => void } {\n const progress = React.useRef(new Animated.Value(1)).current;\n const close = React.useCallback(() => {\n Animated.timing(progress, {\n toValue: 0,\n duration: CLOSE_DELAY_MS,\n easing: Easing.out(Easing.ease),\n useNativeDriver: nativeDriver,\n }).start(({ finished }) => {\n if (finished) onClose?.();\n });\n }, [onClose, progress]);\n return { style: { opacity: progress, transform: [{ scale: progress }] }, close };\n}\n\ninterface ChipContent {\n content: React.ReactNode;\n /** A count that formatted away leaves nothing worth showing. */\n hidden: boolean;\n}\n\n/** What the chip shows, and whether there is anything to show at all. */\nfunction chipContent(resolved: ResolvedBadgeProps<BadgeProps>): ChipContent {\n const { variant, max, showZero, invisible, icon, closable } = resolved;\n const raw = badgeContentOf(resolved);\n const content = variant === 'count' ? formatCount(raw, { max, showZero }) : raw;\n // The web hides the chip only when the whole run assembles to nothing\n // (`buildBadgeContent` returns null on an empty `parts`), so a zero count\n // still draws while an icon or a close button is left to draw with it.\n const hasOtherParts = Boolean(icon) || Boolean(closable);\n return {\n content,\n hidden:\n Boolean(invisible) ||\n (variant === 'count' && content === null && !showZero && !hasOtherParts),\n };\n}\n\n/**\n * The native `Badge`: MUI's chip anchored off a corner of whatever it is\n * attached to, with the same ten variants, five sizes and content run.\n */\nexport const Badge = React.forwardRef<View, BadgeProps>((rawProps, ref) => {\n const resolved = resolveBadgeProps(rawProps);\n const {\n variant,\n size,\n color,\n glow,\n pulse,\n animate,\n bounce,\n max: _max,\n showZero: _showZero,\n position,\n invisible,\n closable,\n onClose,\n icon,\n children,\n style,\n 'aria-label': ariaLabel,\n 'aria-live': ariaLive = 'polite',\n 'aria-atomic': ariaAtomic = true,\n 'data-testid': _domTestId,\n testID: _testID,\n dataTestId: _dataTestId,\n content: _content,\n badgeContent: _badgeContent,\n shimmer: _shimmer,\n ...rest\n } = resolved;\n const theme = useUiTheme();\n const badgeId = resolveTestId(resolved);\n const idFor = makeBadgeTestId(badgeId);\n const pulseStyle = usePulseStyle(pulse && !invisible);\n const entrance = useEntranceStyle(animate && !bounce, bounce);\n const zoom = useCloseZoom(onClose);\n\n const { content, hidden } = chipContent(resolved);\n\n return (\n <View ref={ref} testID={badgeId || 'badge'} style={[styles.anchor, style]} {...rest}>\n {children}\n {hidden ? null : (\n <View style={badgeAnchorStyle(position)}>\n <Animated.View\n testID={idFor('content-wrapper')}\n aria-label={ariaLabel}\n aria-live={ariaLive}\n {...webAria({ 'aria-atomic': ariaAtomic ? 'true' : 'false' })}\n style={[badgeBoxStyle(theme, { variant, size, color, glow }), entrance, pulseStyle, zoom.style]}\n >\n <BadgeContent\n variant={variant}\n size={size}\n color={color}\n icon={icon}\n closable={closable}\n content={content}\n idFor={idFor}\n onClose={zoom.close}\n />\n </Animated.View>\n </View>\n )}\n </View>\n );\n});\n\nBadge.displayName = 'Badge';\n\nconst styles = StyleSheet.create({\n /** MUI's badge root: `inline-flex`, with the chip positioned against it. */\n anchor: { position: 'relative', alignSelf: 'flex-start', flexDirection: 'row' },\n});\n","import type { ReactNode } from 'react';\n\nimport type { BadgeBaseProps } from './Badge.base';\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\n/**\n * Generic over the renderer's own props: the web and the native `Badge` carry\n * different extras, and both come back out untouched.\n */\nexport type ResolvedBadgeProps<P extends BadgeBaseProps = BadgeBaseProps> = P &\n Required<Pick<BadgeBaseProps, BadgeDefaultedKeys>>;\n\nconst BADGE_DEFAULTS: Required<Pick<BadgeBaseProps, 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 = <P extends BadgeBaseProps>(props: P): ResolvedBadgeProps<P> =>\n ({\n ...BADGE_DEFAULTS,\n ...(Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<P>),\n }) as ResolvedBadgeProps<P>;\n\n// `content` supersedes the older `badgeContent` prop.\nexport const badgeContentOf = (props: Pick<BadgeBaseProps, '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\n/** `${dataTestId}-content`, or `badge-content` when the caller named nothing. */\nexport const makeBadgeTestId =\n (dataTestId?: string) =>\n (suffix: string): string =>\n dataTestId ? `${dataTestId}-${suffix}` : `badge-${suffix}`;\n","import type { BadgePosition, BadgeSize } from './Badge.base';\nimport type { UiPaletteColor, UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Badge` RENDERERS DRAW WITH.\n *\n * `Badge.styles.ts` / `Badge.variants.ts` (web, emotion over MUI's `Badge`) and\n * `Badge.native.tsx` (React Native) read this one table: the five chips, the\n * dot inside them, the ten variants' alphas and borders, and the keyframes.\n * The web turns the px into rem and the padding into a shorthand; native uses\n * the numbers.\n */\nexport interface BadgeSizeMetrics {\n minWidth: number;\n height: number;\n /** The content's type size, in px. */\n fontSize: number;\n /** The chip's side padding, in px. `padding: '0 Npx'` on the web. */\n paddingHorizontal: number;\n dotSize: number;\n /** A leading icon's own type size, in px. */\n iconSize: number;\n /** The close glyph's type size, in px. `xl` falls back to `lg`, as the web does. */\n closeIconSize: number;\n}\n\nexport const BADGE_SIZES: Record<BadgeSize, BadgeSizeMetrics> = {\n xs: { minWidth: 14, height: 14, fontSize: 8, paddingHorizontal: 3, dotSize: 6, iconSize: 10, closeIconSize: 8 },\n sm: { minWidth: 16, height: 16, fontSize: 10, paddingHorizontal: 4, dotSize: 8, iconSize: 12, closeIconSize: 10 },\n md: { minWidth: 20, height: 20, fontSize: 12, paddingHorizontal: 6, dotSize: 10, iconSize: 14, closeIconSize: 12 },\n lg: { minWidth: 24, height: 24, fontSize: 14, paddingHorizontal: 8, dotSize: 12, iconSize: 16, closeIconSize: 14 },\n xl: { minWidth: 28, height: 28, fontSize: 16, paddingHorizontal: 10, dotSize: 14, iconSize: 18, closeIconSize: 14 },\n};\n\n/** The chip's own type weight, its tracking, and the paper ring around it. */\nexport const BADGE_FONT_WEIGHT = 600;\nexport const BADGE_DESTRUCTIVE_FONT_WEIGHT = 700;\nexport const BADGE_LETTER_SPACING_EM = 0.025;\nexport const BADGE_BORDER_WIDTH = 2;\n/** Between the icon, the content and the close button. */\nexport const BADGE_CONTENT_GAP = 2;\n\n/* ── The ten variants' washes ─────────────────────────────────────────────── */\n\nexport const GLASS_BACKGROUND_ALPHA = 0.1;\nexport const GLASS_BORDER_ALPHA = 0.2;\nexport const GLASS_BLUR_PX = 10;\nexport const GLASS_SATURATE = 2;\nexport const GLASS_INSET_HIGHLIGHT_ALPHA = 0.1;\nexport const OUTLINE_BORDER_WIDTH = 2;\nexport const SECONDARY_BACKGROUND_ALPHA = 0.15;\nexport const SECONDARY_BORDER_ALPHA = 0.3;\n\n/* ── Emphasis and animation ───────────────────────────────────────────────── */\n\n/** `glow` without `pulse`: a 15px halo, brighter under the pointer. */\nexport const GLOW = { blur: 15, spread: 3, alpha: 0.5, hoverBlur: 20, hoverSpread: 4, hoverAlpha: 0.6, brightness: 1.1 } as const;\n/** `glow` WITH `pulse`: the halo breathes between these two. */\nexport const GLOW_PULSE = { fromBlur: 5, fromSpread: 2, fromAlpha: 0.4, toBlur: 20, toSpread: 4, toAlpha: 0.8 } as const;\n/** MUI-free `pulseAnimation`: 1 → 1.2 → 1 while the opacity dips to 0.7. */\nexport const PULSE = { durationMs: 2000, scale: 1.2, opacity: 0.7 } as const;\n/** `bounceAnimation`: up 8px at 40%, 4px at 60%, over one second. */\nexport const BOUNCE = { durationMs: 1000, lift: 8, secondLift: 4, scale: 1.05, secondScale: 1.02 } as const;\n/** `fadeInScaleAnimation`: in from half size, overshooting to 1.1. */\nexport const FADE_IN_SCALE = { durationMs: 400, from: 0.5, overshoot: 1.1 } as const;\n/** The shimmer sweep, and the white it is made of. */\nexport const SHIMMER = { durationMs: 3000, alpha: 0.4 } as const;\n/** How long the mount animation is held before the flag clears. */\nexport const MOUNT_ANIMATION_MS = 1000;\n/** MUI's `Zoom` on close, and the wait before the caller is told. */\nexport const CLOSE_DELAY_MS = 300;\n/** `transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1)` on the chip. */\nexport const BADGE_TRANSITION_MS = 300;\nexport const BADGE_TRANSITION_EASING = 'cubic-bezier(0.4, 0, 0.2, 1)';\n/** The chip grows a tenth under the pointer. */\nexport const HOVER_SCALE = 1.1;\n\n/* ── Placement ────────────────────────────────────────────────────────────── */\n\nexport interface BadgeAnchor {\n vertical: 'top' | 'bottom';\n horizontal: 'left' | 'right';\n}\n\nconst BADGE_ANCHORS: Record<BadgePosition, BadgeAnchor> = {\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\n/**\n * Falls back to `top-right` for anything outside the union, as the web's own\n * `positionMap[position] || positionMap['top-right']` did. Splitting on `-`\n * instead would hand MUI a half-undefined `anchorOrigin` for, say, `middle`.\n */\nexport const badgeAnchor = (position: BadgePosition): BadgeAnchor =>\n BADGE_ANCHORS[position] ?? BADGE_ANCHORS['top-right'];\n\n/**\n * `neutral` has no palette slot of its own in MUI, so `Badge.styles.ts` draws\n * it from three greys; `danger` is MUI's `error`, which is what the shared\n * theme calls `danger`. Same colours here.\n */\nexport function badgePalette(theme: UiTheme, color: ColorValue): UiPaletteColor {\n if (color === 'neutral') {\n // Grey 600 / 400 / 800 under white ink: the shared theme's own `neutral`.\n return theme.palette.neutral;\n }\n return theme.palette[color];\n}\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport type { BadgePosition, BadgeSize, BadgeVariant } from './Badge.base';\nimport {\n BADGE_BORDER_WIDTH,\n BADGE_DESTRUCTIVE_FONT_WEIGHT,\n BADGE_FONT_WEIGHT,\n BADGE_LETTER_SPACING_EM,\n BADGE_SIZES,\n GLASS_BACKGROUND_ALPHA,\n GLASS_BORDER_ALPHA,\n GLOW,\n OUTLINE_BORDER_WIDTH,\n SECONDARY_BACKGROUND_ALPHA,\n SECONDARY_BORDER_ALPHA,\n badgeAnchor,\n badgePalette,\n type BadgeSizeMetrics,\n} from './Badge.metrics';\nimport { alpha } from '../../../tokens/color';\nimport type { UiPaletteColor, UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\nexport interface BadgePaint {\n box: ViewStyle;\n ink: string;\n fontWeight: number;\n /** `gradient` and `glass` shout; everything else is set as written. */\n uppercase: boolean;\n}\n\n/** The chip a variant paints, as React Native styles. */\nfunction variantPaint(\n theme: UiTheme,\n variant: BadgeVariant,\n accent: UiPaletteColor,\n): BadgePaint {\n const filled = (background: string, ink: string): BadgePaint => ({\n box: { backgroundColor: background },\n ink,\n fontWeight: BADGE_FONT_WEIGHT,\n uppercase: false,\n });\n switch (variant) {\n case 'gradient':\n // React Native core has no gradient fill: the 135° run takes its first stop.\n return { ...filled(accent.main, '#fff'), uppercase: true };\n case 'glass':\n return {\n box: {\n backgroundColor: alpha(accent.main, GLASS_BACKGROUND_ALPHA),\n borderWidth: 1,\n borderColor: alpha(accent.main, GLASS_BORDER_ALPHA),\n },\n ink: accent.main,\n fontWeight: BADGE_FONT_WEIGHT,\n uppercase: true,\n };\n case 'outline':\n return {\n box: {\n backgroundColor: 'transparent',\n borderWidth: OUTLINE_BORDER_WIDTH,\n borderColor: accent.main,\n },\n ink: accent.main,\n fontWeight: BADGE_FONT_WEIGHT,\n uppercase: false,\n };\n case 'secondary':\n return {\n box: {\n backgroundColor: alpha(accent.main, SECONDARY_BACKGROUND_ALPHA),\n borderWidth: 1,\n borderColor: alpha(accent.main, SECONDARY_BORDER_ALPHA),\n },\n ink: accent.main,\n fontWeight: BADGE_FONT_WEIGHT,\n uppercase: false,\n };\n case 'destructive':\n return {\n ...filled(theme.palette.danger.main, theme.palette.danger.contrastText),\n fontWeight: BADGE_DESTRUCTIVE_FONT_WEIGHT,\n };\n case 'success':\n return filled(theme.palette.success.main, theme.palette.success.contrastText);\n case 'warning':\n return filled(theme.palette.warning.main, theme.palette.warning.contrastText);\n default:\n return filled(accent.main, accent.contrastText || '#fff');\n }\n}\n\nexport interface BadgeBoxArgs {\n variant: BadgeVariant;\n size: BadgeSize;\n color: ColorValue;\n glow: boolean;\n}\n\n/**\n * Where the chip hangs: MUI's `anchorOrigin` pins it to a corner and then\n * `translate(±50%, ∓50%)` puts its CENTRE there. It is its own node so the\n * chip's animations own `transform` outright — a React Native style array\n * replaces that property rather than composing it, as CSS would.\n */\nexport function badgeAnchorStyle(position: BadgePosition): ViewStyle {\n const anchor = badgeAnchor(position);\n return {\n position: 'absolute',\n [anchor.vertical]: 0,\n [anchor.horizontal]: 0,\n transform: [\n { translateX: anchor.horizontal === 'right' ? '50%' : '-50%' },\n { translateY: anchor.vertical === 'top' ? '-50%' : '50%' },\n ],\n };\n}\n\n/** The chip itself: MUI's paper ring, its size, and the variant's paint. */\nexport function badgeBoxStyle(theme: UiTheme, a: BadgeBoxArgs): ViewStyle {\n const metrics = BADGE_SIZES[a.size];\n const accent = badgePalette(theme, a.color);\n const paint = variantPaint(theme, a.variant, accent);\n const dot = a.variant === 'dot';\n\n return {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: BADGE_BORDER_WIDTH,\n borderColor: theme.palette.background.paper,\n ...(dot\n ? {\n width: metrics.dotSize,\n height: metrics.dotSize,\n minWidth: metrics.dotSize,\n borderRadius: metrics.dotSize / 2,\n backgroundColor: accent.main,\n }\n : {\n minWidth: metrics.minWidth,\n height: metrics.height,\n paddingHorizontal: metrics.paddingHorizontal,\n borderRadius: metrics.height / 2,\n ...paint.box,\n }),\n ...(a.glow\n ? { boxShadow: `0 0 ${GLOW.blur}px ${GLOW.spread}px ${alpha(accent.main, GLOW.alpha)}` }\n : {}),\n };\n}\n\n/** The chip's own type: the size's step, semibold, tracked a little wider. */\nexport function badgeTextStyle(\n theme: UiTheme,\n variant: BadgeVariant,\n size: BadgeSize,\n color: ColorValue,\n): TextStyle {\n const metrics = BADGE_SIZES[size];\n const paint = variantPaint(theme, variant, badgePalette(theme, color));\n return {\n fontFamily: theme.typography.fontFamily,\n fontSize: metrics.fontSize,\n fontWeight: String(paint.fontWeight) as TextStyle['fontWeight'],\n letterSpacing: metrics.fontSize * BADGE_LETTER_SPACING_EM,\n color: paint.ink,\n ...(paint.uppercase ? { textTransform: 'uppercase' } : {}),\n };\n}\n\nexport const badgeMetrics = (size: BadgeSize): BadgeSizeMetrics => BADGE_SIZES[size];\n","import * as React from 'react';\nimport { Pressable, StyleSheet, View } from 'react-native';\n\nimport type { BadgeSize, BadgeVariant } from './Badge.base';\nimport { badgeMetrics, badgeTextStyle } from './Badge.look.native';\nimport { BADGE_CONTENT_GAP } from './Badge.metrics';\nimport { Icon } from '../../../icons/Icon.native';\nimport { renderTextChildren } from '../../../platform/text-children';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\nexport interface BadgeContentProps {\n variant: BadgeVariant;\n size: BadgeSize;\n color: ColorValue;\n icon?: React.ReactNode;\n closable: boolean;\n content: React.ReactNode;\n idFor: (suffix: string) => string;\n onClose: () => void;\n}\n\n/**\n * The badge's inner run: optional icon, the content itself, optional close\n * button — the same three slots and the same ids `BadgeContent.tsx` builds. A\n * dot badge shows none of it.\n */\nexport function BadgeContent({\n variant,\n size,\n color,\n icon,\n closable,\n content,\n idFor,\n onClose,\n}: BadgeContentProps): React.JSX.Element | null {\n const theme = useUiTheme();\n if (variant === 'dot') return null;\n\n const metrics = badgeMetrics(size);\n const text = badgeTextStyle(theme, variant, size, color);\n const hasContent = content !== null && content !== undefined;\n if (!icon && !hasContent && !closable) return null;\n\n return (\n <View style={styles.run}>\n {icon ? (\n <View testID={idFor('icon')} style={{ height: metrics.iconSize, justifyContent: 'center' }}>\n {icon}\n </View>\n ) : null}\n {hasContent ? (\n <View testID={idFor('content')} style={styles.centre}>\n {renderTextChildren(content, text, 1)}\n </View>\n ) : null}\n {closable ? (\n <Pressable\n testID={idFor('close')}\n role=\"button\"\n aria-label=\"close\"\n onPress={onClose}\n style={styles.close}\n >\n <Icon name=\"Close\" size={metrics.closeIconSize} color={text.color as string} />\n </Pressable>\n ) : null}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n run: { flexDirection: 'row', alignItems: 'center', gap: BADGE_CONTENT_GAP },\n centre: { alignItems: 'center', justifyContent: 'center' },\n /** MUI's close `IconButton` sits half a spacing unit clear of the label. */\n close: { marginLeft: 4, alignItems: 'center', justifyContent: 'center' },\n});\n"],"mappings":"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","names":["StyleSheet","View","jsx","jsxs","View","styles","StyleSheet"]}
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  EmptyState
3
- } from "../chunks/chunk-OI57L6WL.js";
4
- import "../chunks/chunk-KIG4KY4W.js";
3
+ } from "../chunks/chunk-JBYDLWQA.js";
4
+ import "../chunks/chunk-ONXKFA5Z.js";
5
5
  import "../chunks/chunk-IMGBBIMT.js";
6
+ import "../chunks/chunk-ZRQHLTYG.js";
6
7
  import "../chunks/chunk-DN73KYIZ.js";
7
8
  import "../chunks/chunk-5GJ5OG5R.js";
8
9
  import "../chunks/chunk-5IASLIBI.js";