@12-apps/ui 6.33.1 → 6.34.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 (1411) hide show
  1. package/dist/_internal/components/data-display/Alert/Alert.js +5 -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 +4 -2
  4. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +4 -1
  5. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +10 -7
  6. package/dist/_internal/components/data-display/Avatar/Avatar.js +5 -3
  7. package/dist/_internal/components/data-display/Avatar/Avatar.metrics.js +2 -1
  8. package/dist/_internal/components/data-display/Avatar/Avatar.view.js +4 -2
  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 +4 -8
  14. package/dist/_internal/components/data-display/Badge/BadgeContent.js +15 -5
  15. package/dist/_internal/components/data-display/Banner/Banner.js +5 -3
  16. package/dist/_internal/components/data-display/Banner/Banner.styles.js +4 -2
  17. package/dist/_internal/components/data-display/CardKit/CardKebab.js +7 -5
  18. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +6 -4
  19. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +15 -13
  20. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +11 -9
  21. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +5 -3
  22. package/dist/_internal/components/data-display/Carousel/Carousel.js +8 -6
  23. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +4 -2
  24. package/dist/_internal/components/data-display/Carousel/Carousel.slide.js +4 -1
  25. package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +4 -2
  26. package/dist/_internal/components/data-display/Chart/Chart.js +8 -6
  27. package/dist/_internal/components/data-display/Chart/SpecChart.js +9 -7
  28. package/dist/_internal/components/data-display/Chart/chart-context.js +5 -3
  29. package/dist/_internal/components/data-display/Chart/chart-internals.js +4 -2
  30. package/dist/_internal/components/data-display/Chart/chart-renderers.js +7 -5
  31. package/dist/_internal/components/data-display/Chip/Chip.js +5 -2
  32. package/dist/_internal/components/data-display/Chip/Chip.styles.js +4 -1
  33. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  34. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +58 -56
  35. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +82 -80
  36. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +9 -7
  37. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +14 -12
  38. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +17 -15
  39. package/dist/_internal/components/data-display/DataViews/base-card.js +11 -9
  40. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +12 -10
  41. package/dist/_internal/components/data-display/DataViews/base-list-card-gutters.js +4 -3
  42. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +8 -6
  43. package/dist/_internal/components/data-display/DataViews/base-list-card.js +19 -17
  44. package/dist/_internal/components/data-display/DataViews/card-surface.js +5 -9
  45. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +14 -12
  46. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +8 -6
  47. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +11 -9
  48. package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +6 -4
  49. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +6 -4
  50. package/dist/_internal/components/data-display/DataViews/data-views-export.js +6 -4
  51. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +21 -19
  52. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +16 -14
  53. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +7 -5
  54. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +53 -51
  55. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +23 -21
  56. package/dist/_internal/components/data-display/DataViews/data-views-layout-context.js +6 -3
  57. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +5 -5
  58. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +11 -9
  59. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +3 -3
  60. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +3 -3
  61. package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +7 -4
  62. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +6 -4
  63. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +17 -15
  64. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +28 -26
  65. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +16 -14
  66. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +6 -4
  67. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +8 -5
  68. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +11 -9
  69. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +3 -2
  70. package/dist/_internal/components/data-display/EmptyState/EmptyState.metrics.js +2 -1
  71. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +17 -15
  72. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +12 -10
  73. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +22 -20
  74. package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +7 -4
  75. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +6 -3
  76. package/dist/_internal/components/data-display/HoverCard/HoverCard.styles.js +4 -1
  77. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +5 -2
  78. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.styles.js +4 -1
  79. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +7 -4
  80. package/dist/_internal/components/data-display/Lightbox/Lightbox.constants.js +4 -1
  81. package/dist/_internal/components/data-display/Lightbox/Lightbox.hooks.js +5 -2
  82. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +11 -8
  83. package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +5 -2
  84. package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +6 -3
  85. package/dist/_internal/components/data-display/Lightbox/LightboxStage.js +5 -2
  86. package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +5 -2
  87. package/dist/_internal/components/data-display/Lightbox/useLightbox.js +6 -3
  88. package/dist/_internal/components/data-display/LoadingState/LoadingState.js +7 -4
  89. package/dist/_internal/components/data-display/MapPreview/MapDecorations.js +5 -2
  90. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
  91. package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +5 -2
  92. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +11 -9
  93. package/dist/_internal/components/data-display/MapPreview/MapTiles.js +5 -2
  94. package/dist/_internal/components/data-display/MapPreview/StaticMapView.js +7 -4
  95. package/dist/_internal/components/data-display/MapPreview/mapSurface.js +4 -1
  96. package/dist/_internal/components/data-display/Popover/Popover.js +4 -1
  97. package/dist/_internal/components/data-display/Progress/Progress.js +4 -2
  98. package/dist/_internal/components/data-display/Progress/Progress.styles.js +3 -1
  99. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +7 -4
  100. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +5 -3
  101. package/dist/_internal/components/data-display/Sheet/Sheet.js +7 -5
  102. package/dist/_internal/components/data-display/Sheet/Sheet.parts.js +4 -1
  103. package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +4 -2
  104. package/dist/_internal/components/data-display/StatCard/StatCard.js +7 -4
  105. package/dist/_internal/components/data-display/Stepper/Stepper.js +4 -1
  106. package/dist/_internal/components/data-display/Timeline/Timeline.js +5 -2
  107. package/dist/_internal/components/data-display/Timeline/TimelineRow.js +4 -1
  108. package/dist/_internal/components/data-display/TimingDiagram/TimingDiagram.js +5 -2
  109. package/dist/_internal/components/data-display/TimingDiagram/TimingDiagram.views.js +4 -1
  110. package/dist/_internal/components/data-display/Tooltip/Tooltip.js +4 -1
  111. package/dist/_internal/components/data-display/index.js +83 -81
  112. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +6 -3
  113. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +5 -2
  114. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +9 -7
  115. package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +6 -3
  116. package/dist/_internal/components/feedback/Dialog/Dialog.js +6 -3
  117. package/dist/_internal/components/feedback/Dialog/Dialog.metrics.js +3 -1
  118. package/dist/_internal/components/feedback/Dialog/Dialog.styles.js +5 -2
  119. package/dist/_internal/components/feedback/Modal/Modal.js +5 -2
  120. package/dist/_internal/components/feedback/Modal/Modal.styles.js +4 -1
  121. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +9 -7
  122. package/dist/_internal/components/feedback/Sonner/Sonner.js +5 -2
  123. package/dist/_internal/components/feedback/Sonner/SonnerToast.js +4 -1
  124. package/dist/_internal/components/feedback/StackedModal/StackedModal.js +6 -3
  125. package/dist/_internal/components/feedback/StackedModal/StackedModal.parts.js +5 -2
  126. package/dist/_internal/components/feedback/StackedModal/StackedModal.styles.js +4 -1
  127. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +5 -2
  128. package/dist/_internal/components/feedback/TutorialOverlay/TutorialStepBody.js +4 -1
  129. package/dist/_internal/components/feedback/index.js +28 -26
  130. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +4 -4
  131. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +7 -7
  132. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
  133. package/dist/_internal/components/form/Button/Button.js +5 -3
  134. package/dist/_internal/components/form/Button/Button.metrics.js +2 -1
  135. package/dist/_internal/components/form/Button/Button.styles.js +4 -2
  136. package/dist/_internal/components/form/Calendar/Calendar.hooks.js +2 -2
  137. package/dist/_internal/components/form/Calendar/Calendar.js +3 -3
  138. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +9 -7
  139. package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +4 -2
  140. package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +4 -2
  141. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +6 -4
  142. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +5 -3
  143. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +12 -10
  144. package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +3 -1
  145. package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +4 -2
  146. package/dist/_internal/components/form/CepField/CepField.js +6 -4
  147. package/dist/_internal/components/form/Checkbox/Checkbox.js +3 -2
  148. package/dist/_internal/components/form/Checkbox/Checkbox.metrics.js +3 -3
  149. package/dist/_internal/components/form/CodeEditor/CodeEditor.hooks.js +5 -2
  150. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +6 -4
  151. package/dist/_internal/components/form/CodeEditor/CodeEditor.monaco.js +4 -1
  152. package/dist/_internal/components/form/Command/Command.js +6 -4
  153. package/dist/_internal/components/form/Command/Command.styles.js +4 -2
  154. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +5 -5
  155. package/dist/_internal/components/form/Input/Input.js +5 -3
  156. package/dist/_internal/components/form/Input/Input.metrics.js +2 -1
  157. package/dist/_internal/components/form/Input/Input.styles.js +4 -2
  158. package/dist/_internal/components/form/InputOTP/InputOTP.js +4 -2
  159. package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +3 -1
  160. package/dist/_internal/components/form/Label/Label.js +5 -3
  161. package/dist/_internal/components/form/Label/Label.styles.js +4 -2
  162. package/dist/_internal/components/form/Menubar/Menubar.item.js +5 -3
  163. package/dist/_internal/components/form/Menubar/Menubar.js +7 -5
  164. package/dist/_internal/components/form/Menubar/Menubar.styles.js +4 -2
  165. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +6 -4
  166. package/dist/_internal/components/form/PhoneInput/PhoneInput.hooks.js +2 -2
  167. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +3 -3
  168. package/dist/_internal/components/form/RadioGroup/RadioGroup.js +5 -3
  169. package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +3 -1
  170. package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +4 -2
  171. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +2 -2
  172. package/dist/_internal/components/form/Select/Select.js +5 -3
  173. package/dist/_internal/components/form/Select/Select.metrics.js +3 -2
  174. package/dist/_internal/components/form/Slider/Slider.js +5 -2
  175. package/dist/_internal/components/form/Slider/Slider.styles.js +4 -1
  176. package/dist/_internal/components/form/Switch/Switch.js +7 -5
  177. package/dist/_internal/components/form/Switch/Switch.metrics.js +2 -1
  178. package/dist/_internal/components/form/Switch/Switch.parts.js +5 -3
  179. package/dist/_internal/components/form/Switch/Switch.styles.js +4 -2
  180. package/dist/_internal/components/form/Textarea/Textarea.js +4 -2
  181. package/dist/_internal/components/form/Textarea/Textarea.styles.js +3 -1
  182. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +3 -1
  183. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js.map +1 -1
  184. package/dist/_internal/components/form/Toggle/Toggle.js +4 -2
  185. package/dist/_internal/components/form/Toggle/Toggle.styles.js +3 -1
  186. package/dist/_internal/components/form/ToggleGroup/ToggleGroup.js +3 -1
  187. package/dist/_internal/components/form/index.js +68 -66
  188. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +13 -11
  189. package/dist/_internal/components/form/total-form/Fields/CepField.js +7 -5
  190. package/dist/_internal/components/form/total-form/Fields/SelectField.js +6 -4
  191. package/dist/_internal/components/form/total-form/Fields/TextField.js +6 -4
  192. package/dist/_internal/components/form/total-form/Fields/ToggleField.js +4 -2
  193. package/dist/_internal/components/form/total-form/Fields/index.js +29 -27
  194. package/dist/_internal/components/form/total-form/SubmitButton.js +6 -4
  195. package/dist/_internal/components/index.js +209 -207
  196. package/dist/_internal/components/layout/Box/Box.js +6 -4
  197. package/dist/_internal/components/layout/Card/Card.js +6 -3
  198. package/dist/_internal/components/layout/Card/Card.metrics.js +3 -1
  199. package/dist/_internal/components/layout/Card/Card.styles.js +5 -2
  200. package/dist/_internal/components/layout/Drawer/Drawer.js +4 -1
  201. package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +7 -4
  202. package/dist/_internal/components/layout/ScrollArea/ScrollArea.styles.js +4 -1
  203. package/dist/_internal/components/layout/ScrollArea/ScrollViewport.js +5 -2
  204. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +4 -4
  205. package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +2 -2
  206. package/dist/_internal/components/layout/Sidebar/Sidebar.js +4 -1
  207. package/dist/_internal/components/layout/Skeleton/Skeleton.js +6 -3
  208. package/dist/_internal/components/layout/Skeleton/Skeleton.metrics.js +2 -1
  209. package/dist/_internal/components/layout/Skeleton/Skeleton.styles.js +5 -2
  210. package/dist/_internal/components/layout/Stack/Stack.js +7 -5
  211. package/dist/_internal/components/layout/index.js +17 -15
  212. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +14 -12
  213. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +4 -2
  214. package/dist/_internal/components/navigation/Breadcrumbs/BreadcrumbEntry.js +5 -2
  215. package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.js +6 -3
  216. package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.styles.js +4 -1
  217. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +4 -1
  218. package/dist/_internal/components/navigation/ContextMenu/ContextMenu.js +4 -1
  219. package/dist/_internal/components/navigation/DropdownMenu/DropdownMenu.js +4 -1
  220. package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +7 -4
  221. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +9 -6
  222. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.shell.js +5 -2
  223. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.styles.js +2 -1
  224. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenuItem.js +5 -2
  225. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +7 -4
  226. package/dist/_internal/components/navigation/Pagination/Pagination.js +2 -2
  227. package/dist/_internal/components/navigation/Tabs/Tabs.js +2 -2
  228. package/dist/_internal/components/navigation/index.js +33 -31
  229. package/dist/_internal/components/typography/Blockquote/Blockquote.js +4 -1
  230. package/dist/_internal/components/typography/Code/Code.js +4 -1
  231. package/dist/_internal/components/typography/Heading/Heading.js +5 -3
  232. package/dist/_internal/components/typography/Heading/Heading.metrics.js +2 -1
  233. package/dist/_internal/components/typography/Heading/Heading.styles.js +4 -2
  234. package/dist/_internal/components/typography/index.js +7 -5
  235. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.js +5 -2
  236. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.styles.js +4 -1
  237. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +4 -1
  238. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +7 -4
  239. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +5 -2
  240. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +6 -3
  241. package/dist/_internal/components/utility/index.js +9 -6
  242. package/dist/_internal/icons/Icon.js +6 -4
  243. package/dist/_internal/provider/UiProvider.js +5 -3
  244. package/dist/_internal/provider/mui-bridge.js +4 -2
  245. package/dist/_internal/provider/use-ui-theme.js +5 -3
  246. package/dist/_internal/social-login-button/social-login-button.js +12 -10
  247. package/dist/_internal/tokens/ink.core.js +34 -0
  248. package/dist/_internal/tokens/ink.core.js.map +1 -0
  249. package/dist/_internal/tokens/ink.js +30 -0
  250. package/dist/_internal/tokens/ink.js.map +1 -0
  251. package/dist/_internal/user-avatar/user-avatar.js +12 -10
  252. package/dist/charts.js +9 -7
  253. package/dist/chunk-236V2GRH.js +281 -0
  254. package/dist/chunk-236V2GRH.js.map +1 -0
  255. package/dist/chunk-27DLUKDF.js +37 -0
  256. package/dist/chunk-2BFUUUDS.js +61 -0
  257. package/dist/chunk-2BFUUUDS.js.map +1 -0
  258. package/dist/chunk-2CK7SHQQ.js +305 -0
  259. package/dist/chunk-2KLT22S3.js +173 -0
  260. package/dist/chunk-2LG5TEFV.js +201 -0
  261. package/dist/chunk-2LG5TEFV.js.map +1 -0
  262. package/dist/chunk-2NLYGZP3.js +156 -0
  263. package/dist/chunk-2NLYGZP3.js.map +1 -0
  264. package/dist/chunk-2RRXQTOO.js +234 -0
  265. package/dist/chunk-2RRXQTOO.js.map +1 -0
  266. package/dist/chunk-2SGPNJHJ.js +170 -0
  267. package/dist/chunk-2SGPNJHJ.js.map +1 -0
  268. package/dist/chunk-2TJOCI54.js +86 -0
  269. package/dist/chunk-2XGGHYEA.js +187 -0
  270. package/dist/chunk-2ZRZTGWP.js +230 -0
  271. package/dist/chunk-37DCYIT5.js +79 -0
  272. package/dist/chunk-3CBL5FWS.js +201 -0
  273. package/dist/chunk-3CBL5FWS.js.map +1 -0
  274. package/dist/chunk-3EDZU2H7.js +127 -0
  275. package/dist/chunk-3LNKBZTG.js +83 -0
  276. package/dist/chunk-46ADSOCF.js +67 -0
  277. package/dist/chunk-4GKDO4YK.js +325 -0
  278. package/dist/chunk-4GKDO4YK.js.map +1 -0
  279. package/dist/chunk-4M7QHSKY.js +103 -0
  280. package/dist/chunk-4N33SWTW.js +85 -0
  281. package/dist/chunk-5264DI34.js +57 -0
  282. package/dist/chunk-52APLKAG.js +110 -0
  283. package/dist/chunk-52APLKAG.js.map +1 -0
  284. package/dist/chunk-5CIXQBLV.js +155 -0
  285. package/dist/chunk-5CIXQBLV.js.map +1 -0
  286. package/dist/chunk-5E6WZAQF.js +111 -0
  287. package/dist/chunk-5E6WZAQF.js.map +1 -0
  288. package/dist/chunk-5JSRM7WC.js +76 -0
  289. package/dist/chunk-5JSRM7WC.js.map +1 -0
  290. package/dist/chunk-5LPQ6T5S.js +93 -0
  291. package/dist/chunk-5LPQ6T5S.js.map +1 -0
  292. package/dist/chunk-5NFPO3YY.js +84 -0
  293. package/dist/chunk-5NFPO3YY.js.map +1 -0
  294. package/dist/chunk-5QTMJ2RU.js +157 -0
  295. package/dist/chunk-5VWYCVXF.js +94 -0
  296. package/dist/chunk-63UQJVBW.js +198 -0
  297. package/dist/chunk-63UQJVBW.js.map +1 -0
  298. package/dist/chunk-67QSLTT7.js +116 -0
  299. package/dist/chunk-67VUL6L2.js +263 -0
  300. package/dist/chunk-67VUL6L2.js.map +1 -0
  301. package/dist/chunk-6MSSCBI3.js +39 -0
  302. package/dist/chunk-6Q5GZUQ5.js +64 -0
  303. package/dist/chunk-6ZZGK5DT.js +78 -0
  304. package/dist/chunk-6ZZGK5DT.js.map +1 -0
  305. package/dist/chunk-7E4X4J2M.js +107 -0
  306. package/dist/chunk-7F7TTOYN.js +80 -0
  307. package/dist/chunk-7IQDLEB5.js +281 -0
  308. package/dist/chunk-7IQDLEB5.js.map +1 -0
  309. package/dist/chunk-7JSQQZUH.js +21 -0
  310. package/dist/chunk-7QLHYUDW.js +136 -0
  311. package/dist/chunk-7QLHYUDW.js.map +1 -0
  312. package/dist/chunk-7VIINULX.js +223 -0
  313. package/dist/chunk-7WK2L3ZO.js +46 -0
  314. package/dist/chunk-7Z2UU2FQ.js +183 -0
  315. package/dist/chunk-A2DYU5WN.js +60 -0
  316. package/dist/chunk-A4OCNJWW.js +16 -0
  317. package/dist/chunk-ABCP6NS4.js +211 -0
  318. package/dist/chunk-ABCP6NS4.js.map +1 -0
  319. package/dist/chunk-ACHUHT2K.js +170 -0
  320. package/dist/chunk-ACHUHT2K.js.map +1 -0
  321. package/dist/chunk-AKPRFFAI.js +134 -0
  322. package/dist/chunk-AL6Z2JYR.js +241 -0
  323. package/dist/chunk-AMTFP7QA.js +94 -0
  324. package/dist/chunk-AMTFP7QA.js.map +1 -0
  325. package/dist/chunk-B443IIQG.js +167 -0
  326. package/dist/chunk-B76QCDCE.js +226 -0
  327. package/dist/chunk-B76QCDCE.js.map +1 -0
  328. package/dist/chunk-BGYLL467.js +108 -0
  329. package/dist/chunk-BHLGZLXQ.js +318 -0
  330. package/dist/chunk-BHLGZLXQ.js.map +1 -0
  331. package/dist/chunk-BHOSWJDL.js +83 -0
  332. package/dist/chunk-BOU3HR4C.js +216 -0
  333. package/dist/chunk-BOU3HR4C.js.map +1 -0
  334. package/dist/chunk-BQGT77IQ.js +181 -0
  335. package/dist/chunk-BR7RM3WR.js +79 -0
  336. package/dist/chunk-C3U7FDKI.js +218 -0
  337. package/dist/chunk-C3U7FDKI.js.map +1 -0
  338. package/dist/chunk-COK5VOXC.js +193 -0
  339. package/dist/chunk-CRDOMIEG.js +59 -0
  340. package/dist/chunk-CUN5RJTH.js +81 -0
  341. package/dist/chunk-CXMVNYBY.js +25 -0
  342. package/dist/chunk-CY6HHLYM.js +184 -0
  343. package/dist/chunk-CZT3AV7I.js +172 -0
  344. package/dist/chunk-CZT3AV7I.js.map +1 -0
  345. package/dist/chunk-D5SZXH7Q.js +148 -0
  346. package/dist/chunk-D5SZXH7Q.js.map +1 -0
  347. package/dist/chunk-D6RKXNLE.js +41 -0
  348. package/dist/chunk-DBCITC4P.js +127 -0
  349. package/dist/chunk-DELT2W42.js +41 -0
  350. package/dist/chunk-DJ2KYLHE.js +61 -0
  351. package/dist/chunk-DKILDT72.js +269 -0
  352. package/dist/chunk-DKILDT72.js.map +1 -0
  353. package/dist/chunk-DL6N7W6P.js +82 -0
  354. package/dist/chunk-DL6N7W6P.js.map +1 -0
  355. package/dist/chunk-DOXNMWUU.js +195 -0
  356. package/dist/chunk-DOXNMWUU.js.map +1 -0
  357. package/dist/chunk-DPJZFQF2.js +309 -0
  358. package/dist/chunk-DPJZFQF2.js.map +1 -0
  359. package/dist/chunk-DQIRSUEK.js +118 -0
  360. package/dist/chunk-DRKYPQNA.js +156 -0
  361. package/dist/chunk-DSIJEJQ7.js +88 -0
  362. package/dist/chunk-DY7VTAYO.js +165 -0
  363. package/dist/chunk-DYMVVVSU.js +227 -0
  364. package/dist/chunk-E6RYO4QZ.js +180 -0
  365. package/dist/chunk-E6RYO4QZ.js.map +1 -0
  366. package/dist/chunk-EDBTCEPC.js +263 -0
  367. package/dist/chunk-EHCUOX6R.js +264 -0
  368. package/dist/chunk-EIJC5DWG.js +77 -0
  369. package/dist/chunk-EMPVMZAB.js +49 -0
  370. package/dist/chunk-EMPVMZAB.js.map +1 -0
  371. package/dist/chunk-EVSKEIXI.js +82 -0
  372. package/dist/chunk-EYPRDTWI.js +225 -0
  373. package/dist/chunk-FQ6UW7IY.js +91 -0
  374. package/dist/chunk-FQ6UW7IY.js.map +1 -0
  375. package/dist/chunk-FTSVJIEU.js +159 -0
  376. package/dist/chunk-FYSYALTY.js +96 -0
  377. package/dist/chunk-G2TCNZYD.js +82 -0
  378. package/dist/chunk-G2TCNZYD.js.map +1 -0
  379. package/dist/chunk-GJF3CVIE.js +51 -0
  380. package/dist/chunk-GJRBK564.js +30 -0
  381. package/dist/chunk-GL5CYMGK.js +73 -0
  382. package/dist/chunk-GN5EZPSL.js +195 -0
  383. package/dist/chunk-GN5EZPSL.js.map +1 -0
  384. package/dist/chunk-GPUYB3ST.js +107 -0
  385. package/dist/chunk-GQ4I6Z32.js +297 -0
  386. package/dist/chunk-GUW5BUK7.js +58 -0
  387. package/dist/chunk-GVGJMH77.js +86 -0
  388. package/dist/chunk-GVGJMH77.js.map +1 -0
  389. package/dist/chunk-GVOMTCLS.js +203 -0
  390. package/dist/chunk-H2YBVBPW.js +75 -0
  391. package/dist/chunk-H3B5PIM3.js +125 -0
  392. package/dist/chunk-H3B5PIM3.js.map +1 -0
  393. package/dist/chunk-H3MLYZYP.js +183 -0
  394. package/dist/chunk-H3R6WSYU.js +173 -0
  395. package/dist/chunk-HBYWUSPI.js +266 -0
  396. package/dist/chunk-HBYWUSPI.js.map +1 -0
  397. package/dist/chunk-HD6ZNARS.js +89 -0
  398. package/dist/chunk-HD6ZNARS.js.map +1 -0
  399. package/dist/chunk-HEVST4CS.js +347 -0
  400. package/dist/chunk-HH5CNSJP.js +123 -0
  401. package/dist/chunk-HH5CNSJP.js.map +1 -0
  402. package/dist/chunk-HMHCNNNW.js +82 -0
  403. package/dist/chunk-HMHCNNNW.js.map +1 -0
  404. package/dist/chunk-HRHPRIGT.js +173 -0
  405. package/dist/chunk-HUKVX47W.js +63 -0
  406. package/dist/chunk-HWEAW4LF.js +178 -0
  407. package/dist/chunk-HWEAW4LF.js.map +1 -0
  408. package/dist/chunk-IBGX6H4J.js +121 -0
  409. package/dist/chunk-IFSUKWE7.js +219 -0
  410. package/dist/chunk-IJFAF3A7.js +64 -0
  411. package/dist/chunk-IL7JZKXY.js +159 -0
  412. package/dist/chunk-IRYSJ74J.js +176 -0
  413. package/dist/chunk-IRYSJ74J.js.map +1 -0
  414. package/dist/chunk-IVIHRZEY.js +96 -0
  415. package/dist/chunk-IVIHRZEY.js.map +1 -0
  416. package/dist/chunk-IYTBTK2M.js +170 -0
  417. package/dist/chunk-IYTBTK2M.js.map +1 -0
  418. package/dist/chunk-JCBIPBGZ.js +235 -0
  419. package/dist/chunk-JCBIPBGZ.js.map +1 -0
  420. package/dist/chunk-JGDS2SJZ.js +116 -0
  421. package/dist/chunk-JH7EEJEQ.js +99 -0
  422. package/dist/chunk-JH7EEJEQ.js.map +1 -0
  423. package/dist/chunk-JKNLKUCX.js +120 -0
  424. package/dist/chunk-JKNLKUCX.js.map +1 -0
  425. package/dist/chunk-JO3Y5H75.js +191 -0
  426. package/dist/chunk-JO3Y5H75.js.map +1 -0
  427. package/dist/chunk-JRODCEIG.js +194 -0
  428. package/dist/chunk-JWG2BTJ5.js +99 -0
  429. package/dist/chunk-JXTEE5G6.js +305 -0
  430. package/dist/chunk-JXTEE5G6.js.map +1 -0
  431. package/dist/chunk-KBMKALKQ.js +158 -0
  432. package/dist/chunk-KCQGJPLO.js +109 -0
  433. package/dist/chunk-KDIPBEVE.js +146 -0
  434. package/dist/chunk-KJ3AXHKF.js +59 -0
  435. package/dist/chunk-KLPTOVIX.js +52 -0
  436. package/dist/chunk-KLPTOVIX.js.map +1 -0
  437. package/dist/chunk-L4UP5VYS.js +273 -0
  438. package/dist/chunk-L4V2LRKH.js +161 -0
  439. package/dist/chunk-L7Q5BH4A.js +175 -0
  440. package/dist/chunk-L7SFH3ED.js +171 -0
  441. package/dist/chunk-L7SFH3ED.js.map +1 -0
  442. package/dist/chunk-LCVQOJKG.js +49 -0
  443. package/dist/chunk-LGZ4EIWV.js +62 -0
  444. package/dist/chunk-LKAVTJMC.js +148 -0
  445. package/dist/chunk-LKAVTJMC.js.map +1 -0
  446. package/dist/chunk-LKMMJKXU.js +60 -0
  447. package/dist/chunk-LKMMJKXU.js.map +1 -0
  448. package/dist/chunk-LN46DSMF.js +90 -0
  449. package/dist/chunk-LN46DSMF.js.map +1 -0
  450. package/dist/chunk-LVEG6XQL.js +182 -0
  451. package/dist/chunk-LVEG6XQL.js.map +1 -0
  452. package/dist/chunk-MAUZCOBB.js +268 -0
  453. package/dist/chunk-MH73XQHW.js +150 -0
  454. package/dist/chunk-MH73XQHW.js.map +1 -0
  455. package/dist/chunk-MISZGWO7.js +210 -0
  456. package/dist/chunk-MISZGWO7.js.map +1 -0
  457. package/dist/chunk-MWBHZZA4.js +148 -0
  458. package/dist/chunk-MYAEOSZK.js +175 -0
  459. package/dist/chunk-MZMGQKT3.js +203 -0
  460. package/dist/chunk-N3GAFIXG.js +93 -0
  461. package/dist/chunk-N3GAFIXG.js.map +1 -0
  462. package/dist/chunk-N6CSXHFJ.js +194 -0
  463. package/dist/chunk-NFZRZB5N.js +201 -0
  464. package/dist/chunk-NJHJZFX5.js +266 -0
  465. package/dist/chunk-NNESQ7QG.js +95 -0
  466. package/dist/chunk-NXX3ZQKO.js +149 -0
  467. package/dist/chunk-NXX3ZQKO.js.map +1 -0
  468. package/dist/chunk-O63WG6YJ.js +90 -0
  469. package/dist/chunk-OFU66DRT.js +87 -0
  470. package/dist/chunk-OFU66DRT.js.map +1 -0
  471. package/dist/chunk-OSSFOPB7.js +91 -0
  472. package/dist/chunk-OT5DVKXP.js +72 -0
  473. package/dist/chunk-OYYCANKB.js +247 -0
  474. package/dist/chunk-P2UIXDEG.js +136 -0
  475. package/dist/chunk-P2UIXDEG.js.map +1 -0
  476. package/dist/chunk-PAAFUJJL.js +300 -0
  477. package/dist/chunk-PAAFUJJL.js.map +1 -0
  478. package/dist/chunk-PC2MVKYW.js +176 -0
  479. package/dist/chunk-PEIAGNCH.js +291 -0
  480. package/dist/chunk-PEIAGNCH.js.map +1 -0
  481. package/dist/chunk-PGNJCUDA.js +201 -0
  482. package/dist/chunk-PGNJCUDA.js.map +1 -0
  483. package/dist/chunk-PKFH6C7W.js +136 -0
  484. package/dist/chunk-PYC4CWCQ.js +76 -0
  485. package/dist/chunk-PYC4CWCQ.js.map +1 -0
  486. package/dist/chunk-PYJI2YGJ.js +293 -0
  487. package/dist/chunk-PYJI2YGJ.js.map +1 -0
  488. package/dist/chunk-PYPFDRX4.js +88 -0
  489. package/dist/chunk-Q4BQYYPU.js +93 -0
  490. package/dist/chunk-Q4BQYYPU.js.map +1 -0
  491. package/dist/chunk-Q4KFGRBV.js +124 -0
  492. package/dist/chunk-QAP3FW33.js +240 -0
  493. package/dist/chunk-QG73YT6D.js +82 -0
  494. package/dist/chunk-QG73YT6D.js.map +1 -0
  495. package/dist/chunk-QJ7I5C4D.js +34 -0
  496. package/dist/chunk-QO6QWBDI.js +142 -0
  497. package/dist/chunk-QPNTUFV4.js +170 -0
  498. package/dist/chunk-QV5J4TE6.js +43 -0
  499. package/dist/chunk-QYUB2RFN.js +131 -0
  500. package/dist/chunk-REQAKZ64.js +240 -0
  501. package/dist/chunk-RMCNEKBZ.js +19 -0
  502. package/dist/chunk-RNIU447I.js +175 -0
  503. package/dist/chunk-RNIU447I.js.map +1 -0
  504. package/dist/chunk-RPBA4WH7.js +263 -0
  505. package/dist/chunk-RPBA4WH7.js.map +1 -0
  506. package/dist/chunk-RQCJJBPY.js +33 -0
  507. package/dist/chunk-RWTFZ7J5.js +225 -0
  508. package/dist/chunk-S52IVFMS.js +53 -0
  509. package/dist/chunk-SCQJV54H.js +246 -0
  510. package/dist/chunk-SNBCAH62.js +138 -0
  511. package/dist/chunk-SNTDLS4A.js +140 -0
  512. package/dist/chunk-SNTDLS4A.js.map +1 -0
  513. package/dist/chunk-SQV3HPTZ.js +249 -0
  514. package/dist/chunk-T3WHW7ZC.js +74 -0
  515. package/dist/chunk-T7LTL7OC.js +127 -0
  516. package/dist/chunk-TAB6AIPN.js +132 -0
  517. package/dist/chunk-TBF2CPJW.js +157 -0
  518. package/dist/chunk-TBF2CPJW.js.map +1 -0
  519. package/dist/chunk-TCAQOUIB.js +22 -0
  520. package/dist/chunk-TCAQOUIB.js.map +1 -0
  521. package/dist/chunk-TIQXDPIX.js +46 -0
  522. package/dist/chunk-TIQXDPIX.js.map +1 -0
  523. package/dist/chunk-TK4NUNN6.js +227 -0
  524. package/dist/chunk-TNDV33LP.js +165 -0
  525. package/dist/chunk-TOBPKY4V.js +183 -0
  526. package/dist/chunk-UBWYHYDR.js +98 -0
  527. package/dist/chunk-UBWYHYDR.js.map +1 -0
  528. package/dist/chunk-UCTJJYVC.js +120 -0
  529. package/dist/chunk-UFH3ZVVZ.js +182 -0
  530. package/dist/chunk-UFLTL2RJ.js +134 -0
  531. package/dist/chunk-UH27I2EJ.js +284 -0
  532. package/dist/chunk-UH27I2EJ.js.map +1 -0
  533. package/dist/chunk-UIKDWXHX.js +134 -0
  534. package/dist/chunk-UIKDWXHX.js.map +1 -0
  535. package/dist/chunk-UN5INW6K.js +86 -0
  536. package/dist/chunk-UUFHI7J5.js +41 -0
  537. package/dist/chunk-UXWU5NRC.js +34 -0
  538. package/dist/chunk-UYA2QMH6.js +144 -0
  539. package/dist/chunk-V26IDPL4.js +220 -0
  540. package/dist/chunk-V5KKBMAT.js +86 -0
  541. package/dist/chunk-V5KKBMAT.js.map +1 -0
  542. package/dist/chunk-V6FED3RS.js +196 -0
  543. package/dist/chunk-VMZ3JJGG.js +208 -0
  544. package/dist/chunk-VMZ3JJGG.js.map +1 -0
  545. package/dist/chunk-VNB7PFCP.js +180 -0
  546. package/dist/chunk-VNYP2RMN.js +38 -0
  547. package/dist/chunk-VU4BANG7.js +108 -0
  548. package/dist/chunk-WC3W36AM.js +73 -0
  549. package/dist/chunk-WGFIIS6Q.js +296 -0
  550. package/dist/chunk-WGFIIS6Q.js.map +1 -0
  551. package/dist/chunk-WPE5QYXD.js +28 -0
  552. package/dist/chunk-WPSGP3YG.js +49 -0
  553. package/dist/chunk-WVPA3ONO.js +125 -0
  554. package/dist/chunk-WXDJBSES.js +26 -0
  555. package/dist/chunk-WXTXCJ5V.js +97 -0
  556. package/dist/chunk-WYXNFH5Y.js +42 -0
  557. package/dist/chunk-WYXNFH5Y.js.map +1 -0
  558. package/dist/chunk-X4PS3E3V.js +40 -0
  559. package/dist/chunk-X4PS3E3V.js.map +1 -0
  560. package/dist/chunk-XEYLYUDM.js +147 -0
  561. package/dist/chunk-XNBN5CVF.js +145 -0
  562. package/dist/chunk-XOL2QCSP.js +273 -0
  563. package/dist/chunk-XYK3HXZY.js +68 -0
  564. package/dist/chunk-Y3HMIUH6.js +172 -0
  565. package/dist/chunk-Y5WNNEND.js +41 -0
  566. package/dist/chunk-YA4YH6WP.js +80 -0
  567. package/dist/chunk-YCGZSKCV.js +99 -0
  568. package/dist/chunk-YCGZSKCV.js.map +1 -0
  569. package/dist/chunk-YSFQHZ74.js +55 -0
  570. package/dist/chunk-YU72SS43.js +242 -0
  571. package/dist/chunk-YVDBOVHP.js +64 -0
  572. package/dist/chunk-Z2EOT77M.js +293 -0
  573. package/dist/chunk-Z2EOT77M.js.map +1 -0
  574. package/dist/chunk-ZF3JGIJD.js +155 -0
  575. package/dist/chunk-ZHFS5L6Q.js +291 -0
  576. package/dist/chunk-ZSLOXTYJ.js +62 -0
  577. package/dist/chunk-ZSRLRDTP.js +344 -0
  578. package/dist/chunk-ZSRLRDTP.js.map +1 -0
  579. package/dist/chunk-ZTYUKEN3.js +128 -0
  580. package/dist/chunk-ZTYUKEN3.js.map +1 -0
  581. package/dist/chunk-ZUQIOWLN.js +153 -0
  582. package/dist/chunk-ZUQIOWLN.js.map +1 -0
  583. package/dist/data-display/Alert.js +5 -3
  584. package/dist/data-display/AlertDialog.js +4 -1
  585. package/dist/data-display/AsyncStateContainer.js +10 -7
  586. package/dist/data-display/Avatar.js +5 -3
  587. package/dist/data-display/Badge.js +16 -6
  588. package/dist/data-display/Banner.js +5 -3
  589. package/dist/data-display/CardKit.js +27 -25
  590. package/dist/data-display/Carousel.js +8 -6
  591. package/dist/data-display/Chart.js +9 -7
  592. package/dist/data-display/Chip.js +5 -2
  593. package/dist/data-display/DataGrid.js +2 -2
  594. package/dist/data-display/DataViews.js +99 -97
  595. package/dist/data-display/EmptyState.js +3 -2
  596. package/dist/data-display/FleetMap.js +22 -20
  597. package/dist/data-display/HoverCard.js +6 -3
  598. package/dist/data-display/InteractiveTooltip.js +5 -2
  599. package/dist/data-display/LazyImage.js +7 -4
  600. package/dist/data-display/Lightbox.js +11 -8
  601. package/dist/data-display/LoadingState.js +7 -4
  602. package/dist/data-display/MapPreview.js +11 -9
  603. package/dist/data-display/Popover.js +4 -1
  604. package/dist/data-display/Progress.js +4 -2
  605. package/dist/data-display/SectionOnboarding.js +7 -4
  606. package/dist/data-display/Sheet.js +7 -5
  607. package/dist/data-display/StatCard.js +7 -4
  608. package/dist/data-display/Stepper.js +4 -1
  609. package/dist/data-display/Timeline.js +5 -2
  610. package/dist/data-display/TimingDiagram.js +5 -2
  611. package/dist/data-display/Tooltip.js +4 -1
  612. package/dist/feedback/ConfirmAction.js +12 -10
  613. package/dist/feedback/Dialog.js +6 -3
  614. package/dist/feedback/Modal.js +5 -2
  615. package/dist/feedback/NotificationStatusNotice.js +9 -7
  616. package/dist/feedback/Sonner.js +5 -2
  617. package/dist/feedback/StackedModal.js +6 -3
  618. package/dist/feedback/TutorialOverlay.js +5 -2
  619. package/dist/form/AddressAutocomplete.js +7 -7
  620. package/dist/form/Autocomplete.js +2 -2
  621. package/dist/form/Button.js +5 -3
  622. package/dist/form/Calendar.js +3 -3
  623. package/dist/form/CategorySelect.js +12 -10
  624. package/dist/form/CepField.js +6 -4
  625. package/dist/form/Checkbox.js +3 -2
  626. package/dist/form/CodeEditor.js +6 -4
  627. package/dist/form/Command.js +6 -4
  628. package/dist/form/DateRangePicker.js +10 -10
  629. package/dist/form/Input.js +5 -3
  630. package/dist/form/InputOTP.js +4 -2
  631. package/dist/form/Label.js +5 -3
  632. package/dist/form/Menubar.js +7 -5
  633. package/dist/form/PhoneInput.js +3 -3
  634. package/dist/form/RadioGroup.js +5 -3
  635. package/dist/form/RichTextEditor.js +2 -2
  636. package/dist/form/Select.js +5 -3
  637. package/dist/form/Slider.js +5 -2
  638. package/dist/form/Switch.js +7 -5
  639. package/dist/form/Textarea.js +4 -2
  640. package/dist/form/Toggle.js +4 -2
  641. package/dist/form/ToggleGroup.js +3 -1
  642. package/dist/form/total-form.js +31 -29
  643. package/dist/icons.js +6 -4
  644. package/dist/layout/Box.js +6 -4
  645. package/dist/layout/Card.js +6 -3
  646. package/dist/layout/ContentToolbar.js +3 -3
  647. package/dist/layout/Drawer.js +4 -1
  648. package/dist/layout/ScrollArea.js +7 -4
  649. package/dist/layout/SettingsLayout.js +6 -6
  650. package/dist/layout/Sidebar.js +4 -1
  651. package/dist/layout/Skeleton.js +6 -3
  652. package/dist/layout/Stack.js +7 -5
  653. package/dist/native/chunks/chunk-4ZAULIDG.js +339 -0
  654. package/dist/native/chunks/chunk-4ZAULIDG.js.map +1 -0
  655. package/dist/native/chunks/chunk-JBYDLWQA.js +295 -0
  656. package/dist/native/chunks/chunk-JBYDLWQA.js.map +1 -0
  657. package/dist/native/chunks/chunk-ONXKFA5Z.js +326 -0
  658. package/dist/native/chunks/chunk-ONXKFA5Z.js.map +1 -0
  659. package/dist/native/chunks/chunk-SZF56GVJ.js +218 -0
  660. package/dist/native/chunks/chunk-SZF56GVJ.js.map +1 -0
  661. package/dist/native/chunks/chunk-ZRQHLTYG.js +93 -0
  662. package/dist/native/chunks/chunk-ZRQHLTYG.js.map +1 -0
  663. package/dist/native/data-display/Alert.js +6 -3
  664. package/dist/native/data-display/Alert.js.map +1 -1
  665. package/dist/native/data-display/Avatar.js +7 -3
  666. package/dist/native/data-display/Avatar.js.map +1 -1
  667. package/dist/native/data-display/Badge.js +2 -8
  668. package/dist/native/data-display/Badge.js.map +1 -1
  669. package/dist/native/data-display/EmptyState.js +3 -2
  670. package/dist/native/data-display/ErrorState.js +2 -1
  671. package/dist/native/data-display/ErrorState.js.map +1 -1
  672. package/dist/native/data-display/FleetMap.js +4 -3
  673. package/dist/native/data-display/FleetMap.js.map +1 -1
  674. package/dist/native/feedback/Dialog.js +6 -3
  675. package/dist/native/feedback/Dialog.js.map +1 -1
  676. package/dist/native/form/Button.js +2 -1
  677. package/dist/native/form/Checkbox.js +4 -2
  678. package/dist/native/form/Checkbox.js.map +1 -1
  679. package/dist/native/form/Input.js +2 -1
  680. package/dist/native/form/Input.js.map +1 -1
  681. package/dist/native/form/Select.js +5 -2
  682. package/dist/native/form/Select.js.map +1 -1
  683. package/dist/native/form/Switch.js +15 -6
  684. package/dist/native/form/Switch.js.map +1 -1
  685. package/dist/native/layout/Card.js +8 -5
  686. package/dist/native/layout/Card.js.map +1 -1
  687. package/dist/native/layout/Skeleton.js +2 -1
  688. package/dist/native/tokens.js +30 -0
  689. package/dist/native/typography/Heading.js +4 -1
  690. package/dist/native/typography/Heading.js.map +1 -1
  691. package/dist/navigation/AppHeader.js +17 -15
  692. package/dist/navigation/Breadcrumbs.js +6 -3
  693. package/dist/navigation/CommandPalette.js +4 -1
  694. package/dist/navigation/ContextMenu.js +4 -1
  695. package/dist/navigation/DropdownMenu.js +4 -1
  696. package/dist/navigation/NavigationMenu.js +9 -6
  697. package/dist/navigation/Pagination.js +2 -2
  698. package/dist/navigation/Tabs.js +2 -2
  699. package/dist/provider.js +6 -4
  700. package/dist/social-login-button.js +12 -10
  701. package/dist/tokens.js +56 -2
  702. package/dist/types/components/data-display/Alert/Alert.d.ts.map +1 -1
  703. package/dist/types/components/data-display/Alert/Alert.metrics.d.ts.map +1 -1
  704. package/dist/types/components/data-display/Alert/Alert.styles.d.ts.map +1 -1
  705. package/dist/types/components/data-display/AlertDialog/AlertDialog.d.ts.map +1 -1
  706. package/dist/types/components/data-display/Avatar/Avatar.metrics.d.ts.map +1 -1
  707. package/dist/types/components/data-display/Avatar/Avatar.view.d.ts.map +1 -1
  708. package/dist/types/components/data-display/Badge/Badge.metrics.d.ts +1 -1
  709. package/dist/types/components/data-display/Badge/Badge.metrics.d.ts.map +1 -1
  710. package/dist/types/components/data-display/Badge/Badge.styles.d.ts.map +1 -1
  711. package/dist/types/components/data-display/Badge/Badge.variants.d.ts.map +1 -1
  712. package/dist/types/components/data-display/Banner/Banner.styles.d.ts.map +1 -1
  713. package/dist/types/components/data-display/Carousel/Carousel.parts.d.ts.map +1 -1
  714. package/dist/types/components/data-display/Carousel/Carousel.slide.d.ts.map +1 -1
  715. package/dist/types/components/data-display/Chart/Chart.d.ts.map +1 -1
  716. package/dist/types/components/data-display/Chart/chart-internals.d.ts.map +1 -1
  717. package/dist/types/components/data-display/Chart/chart-renderers.d.ts.map +1 -1
  718. package/dist/types/components/data-display/Chip/Chip.styles.d.ts.map +1 -1
  719. package/dist/types/components/data-display/DataViews/card-surface.d.ts.map +1 -1
  720. package/dist/types/components/data-display/EmptyState/EmptyState.metrics.d.ts +1 -1
  721. package/dist/types/components/data-display/EmptyState/EmptyState.metrics.d.ts.map +1 -1
  722. package/dist/types/components/data-display/HoverCard/HoverCard.styles.d.ts.map +1 -1
  723. package/dist/types/components/data-display/InteractiveTooltip/InteractiveTooltip.styles.d.ts.map +1 -1
  724. package/dist/types/components/data-display/LazyImage/LazyImage.d.ts.map +1 -1
  725. package/dist/types/components/data-display/Lightbox/Lightbox.constants.d.ts +13 -12
  726. package/dist/types/components/data-display/Lightbox/Lightbox.constants.d.ts.map +1 -1
  727. package/dist/types/components/data-display/Lightbox/Lightbox.d.ts.map +1 -1
  728. package/dist/types/components/data-display/Lightbox/LightboxStage.d.ts.map +1 -1
  729. package/dist/types/components/data-display/Lightbox/LightboxThumbnails.d.ts.map +1 -1
  730. package/dist/types/components/data-display/MapPreview/MapDecorations.d.ts.map +1 -1
  731. package/dist/types/components/data-display/MapPreview/MapMarkers.d.ts.map +1 -1
  732. package/dist/types/components/data-display/MapPreview/mapSurface.d.ts.map +1 -1
  733. package/dist/types/components/data-display/Popover/Popover.d.ts.map +1 -1
  734. package/dist/types/components/data-display/Progress/Progress.styles.d.ts.map +1 -1
  735. package/dist/types/components/data-display/Sheet/Sheet.parts.d.ts.map +1 -1
  736. package/dist/types/components/data-display/Sheet/Sheet.styles.d.ts.map +1 -1
  737. package/dist/types/components/data-display/Stepper/Stepper.d.ts.map +1 -1
  738. package/dist/types/components/data-display/Timeline/TimelineRow.d.ts.map +1 -1
  739. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.views.d.ts +3 -8
  740. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.views.d.ts.map +1 -1
  741. package/dist/types/components/data-display/Tooltip/Tooltip.d.ts.map +1 -1
  742. package/dist/types/components/feedback/Dialog/Dialog.metrics.d.ts.map +1 -1
  743. package/dist/types/components/feedback/Dialog/Dialog.styles.d.ts.map +1 -1
  744. package/dist/types/components/feedback/Modal/Modal.styles.d.ts.map +1 -1
  745. package/dist/types/components/feedback/Sonner/SonnerToast.d.ts.map +1 -1
  746. package/dist/types/components/feedback/StackedModal/StackedModal.styles.d.ts.map +1 -1
  747. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.d.ts.map +1 -1
  748. package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts.map +1 -1
  749. package/dist/types/components/form/Button/Button.metrics.d.ts.map +1 -1
  750. package/dist/types/components/form/Button/Button.styles.d.ts.map +1 -1
  751. package/dist/types/components/form/CategorySelect/CategoryPanelHead.d.ts.map +1 -1
  752. package/dist/types/components/form/CategorySelect/CategorySelect.styles.d.ts +2 -2
  753. package/dist/types/components/form/CategorySelect/CategorySelect.styles.d.ts.map +1 -1
  754. package/dist/types/components/form/Checkbox/Checkbox.metrics.d.ts +1 -6
  755. package/dist/types/components/form/Checkbox/Checkbox.metrics.d.ts.map +1 -1
  756. package/dist/types/components/form/CodeEditor/CodeEditor.monaco.d.ts +2 -1
  757. package/dist/types/components/form/CodeEditor/CodeEditor.monaco.d.ts.map +1 -1
  758. package/dist/types/components/form/Input/Input.metrics.d.ts +2 -2
  759. package/dist/types/components/form/Input/Input.metrics.d.ts.map +1 -1
  760. package/dist/types/components/form/Input/Input.styles.d.ts.map +1 -1
  761. package/dist/types/components/form/InputOTP/InputOTP.styles.d.ts.map +1 -1
  762. package/dist/types/components/form/RadioGroup/RadioGroup.styles.d.ts.map +1 -1
  763. package/dist/types/components/form/Select/Select.d.ts.map +1 -1
  764. package/dist/types/components/form/Select/Select.metrics.d.ts +1 -1
  765. package/dist/types/components/form/Select/Select.metrics.d.ts.map +1 -1
  766. package/dist/types/components/form/Slider/Slider.styles.d.ts.map +1 -1
  767. package/dist/types/components/form/Switch/Switch.metrics.d.ts +3 -3
  768. package/dist/types/components/form/Switch/Switch.metrics.d.ts.map +1 -1
  769. package/dist/types/components/form/Switch/Switch.styles.d.ts.map +1 -1
  770. package/dist/types/components/form/Textarea/Textarea.styles.d.ts.map +1 -1
  771. package/dist/types/components/form/Toggle/Toggle.styles.d.ts +1 -1
  772. package/dist/types/components/form/Toggle/Toggle.styles.d.ts.map +1 -1
  773. package/dist/types/components/form/ToggleGroup/ToggleGroup.d.ts.map +1 -1
  774. package/dist/types/components/layout/Card/Card.metrics.d.ts +6 -5
  775. package/dist/types/components/layout/Card/Card.metrics.d.ts.map +1 -1
  776. package/dist/types/components/layout/Card/Card.styles.d.ts.map +1 -1
  777. package/dist/types/components/layout/Drawer/Drawer.d.ts.map +1 -1
  778. package/dist/types/components/layout/ScrollArea/ScrollArea.styles.d.ts.map +1 -1
  779. package/dist/types/components/layout/Sidebar/Sidebar.d.ts.map +1 -1
  780. package/dist/types/components/layout/Skeleton/Skeleton.metrics.d.ts +4 -3
  781. package/dist/types/components/layout/Skeleton/Skeleton.metrics.d.ts.map +1 -1
  782. package/dist/types/components/layout/Skeleton/Skeleton.styles.d.ts.map +1 -1
  783. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbEntry.d.ts.map +1 -1
  784. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.styles.d.ts.map +1 -1
  785. package/dist/types/components/navigation/CommandPalette/CommandPalette.d.ts.map +1 -1
  786. package/dist/types/components/navigation/ContextMenu/ContextMenu.d.ts.map +1 -1
  787. package/dist/types/components/navigation/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  788. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.shell.d.ts.map +1 -1
  789. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.styles.d.ts.map +1 -1
  790. package/dist/types/components/navigation/NavigationMenu/NavigationMenuItem.d.ts.map +1 -1
  791. package/dist/types/components/typography/Blockquote/Blockquote.d.ts.map +1 -1
  792. package/dist/types/components/typography/Code/Code.d.ts.map +1 -1
  793. package/dist/types/components/typography/Heading/Heading.metrics.d.ts.map +1 -1
  794. package/dist/types/components/typography/Heading/Heading.styles.d.ts.map +1 -1
  795. package/dist/types/components/utility/AnimatedIcon/AnimatedIcon.styles.d.ts.map +1 -1
  796. package/dist/types/components/utility/WorkflowStep/WorkflowStep.helpers.d.ts.map +1 -1
  797. package/dist/types/components/utility/WorkflowStep/WorkflowStep.parts.d.ts.map +1 -1
  798. package/dist/types/social-login-button/social-login-button.d.ts.map +1 -1
  799. package/dist/types/tokens/ink.core.d.ts +145 -0
  800. package/dist/types/tokens/ink.core.d.ts.map +1 -0
  801. package/dist/types/tokens/ink.d.ts +130 -0
  802. package/dist/types/tokens/ink.d.ts.map +1 -0
  803. package/dist/types/tokens/scales.d.ts +2 -0
  804. package/dist/types/tokens/scales.d.ts.map +1 -1
  805. package/dist/types-native/components/data-display/Alert/Alert.metrics.d.ts.map +1 -1
  806. package/dist/types-native/components/data-display/Avatar/Avatar.metrics.d.ts.map +1 -1
  807. package/dist/types-native/components/data-display/Badge/Badge.metrics.d.ts +1 -1
  808. package/dist/types-native/components/data-display/Badge/Badge.metrics.d.ts.map +1 -1
  809. package/dist/types-native/components/data-display/EmptyState/EmptyState.metrics.d.ts +1 -1
  810. package/dist/types-native/components/data-display/EmptyState/EmptyState.metrics.d.ts.map +1 -1
  811. package/dist/types-native/components/feedback/Dialog/Dialog.metrics.d.ts.map +1 -1
  812. package/dist/types-native/components/form/Button/Button.metrics.d.ts.map +1 -1
  813. package/dist/types-native/components/form/Checkbox/Checkbox.metrics.d.ts +1 -6
  814. package/dist/types-native/components/form/Checkbox/Checkbox.metrics.d.ts.map +1 -1
  815. package/dist/types-native/components/form/Input/Input.metrics.d.ts +2 -2
  816. package/dist/types-native/components/form/Input/Input.metrics.d.ts.map +1 -1
  817. package/dist/types-native/components/form/Select/Select.metrics.d.ts +1 -1
  818. package/dist/types-native/components/form/Select/Select.metrics.d.ts.map +1 -1
  819. package/dist/types-native/components/form/Switch/Switch.metrics.d.ts +3 -3
  820. package/dist/types-native/components/form/Switch/Switch.metrics.d.ts.map +1 -1
  821. package/dist/types-native/components/layout/Card/Card.metrics.d.ts +6 -5
  822. package/dist/types-native/components/layout/Card/Card.metrics.d.ts.map +1 -1
  823. package/dist/types-native/components/layout/Skeleton/Skeleton.metrics.d.ts +4 -3
  824. package/dist/types-native/components/layout/Skeleton/Skeleton.metrics.d.ts.map +1 -1
  825. package/dist/types-native/components/typography/Heading/Heading.metrics.d.ts.map +1 -1
  826. package/dist/types-native/tokens/index.native.d.ts +1 -0
  827. package/dist/types-native/tokens/index.native.d.ts.map +1 -1
  828. package/dist/types-native/tokens/ink.core.d.ts +145 -0
  829. package/dist/types-native/tokens/ink.core.d.ts.map +1 -0
  830. package/dist/typography/Blockquote.js +4 -1
  831. package/dist/typography/Code.js +4 -1
  832. package/dist/typography/Heading.js +5 -3
  833. package/dist/user-avatar.js +12 -10
  834. package/dist/utility/AnimatedIcon.js +5 -2
  835. package/dist/utility/WorkflowStep.js +7 -4
  836. package/package.json +1 -1
  837. package/src/components/data-display/Alert/Alert.metrics.ts +4 -3
  838. package/src/components/data-display/Alert/Alert.styles.tsx +5 -7
  839. package/src/components/data-display/Alert/Alert.tsx +3 -1
  840. package/src/components/data-display/AlertDialog/AlertDialog.tsx +3 -1
  841. package/src/components/data-display/Avatar/Avatar.metrics.ts +4 -3
  842. package/src/components/data-display/Avatar/Avatar.view.tsx +5 -3
  843. package/src/components/data-display/Badge/Badge.metrics.ts +3 -7
  844. package/src/components/data-display/Badge/Badge.styles.ts +4 -6
  845. package/src/components/data-display/Badge/Badge.variants.ts +5 -4
  846. package/src/components/data-display/Banner/Banner.styles.ts +2 -1
  847. package/src/components/data-display/Carousel/Carousel.parts.tsx +2 -1
  848. package/src/components/data-display/Carousel/Carousel.slide.tsx +9 -8
  849. package/src/components/data-display/Chart/Chart.tsx +4 -3
  850. package/src/components/data-display/Chart/chart-internals.ts +11 -9
  851. package/src/components/data-display/Chart/chart-renderers.tsx +2 -1
  852. package/src/components/data-display/Chip/Chip.styles.tsx +7 -5
  853. package/src/components/data-display/DataViews/card-surface.ts +2 -1
  854. package/src/components/data-display/EmptyState/EmptyState.metrics.ts +2 -2
  855. package/src/components/data-display/HoverCard/HoverCard.styles.ts +2 -1
  856. package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.styles.ts +17 -15
  857. package/src/components/data-display/LazyImage/LazyImage.tsx +2 -1
  858. package/src/components/data-display/Lightbox/Lightbox.constants.ts +11 -7
  859. package/src/components/data-display/Lightbox/Lightbox.tsx +3 -1
  860. package/src/components/data-display/Lightbox/LightboxStage.tsx +2 -1
  861. package/src/components/data-display/Lightbox/LightboxThumbnails.tsx +6 -4
  862. package/src/components/data-display/MapPreview/MapDecorations.tsx +2 -1
  863. package/src/components/data-display/MapPreview/MapMarkers.tsx +2 -1
  864. package/src/components/data-display/MapPreview/mapSurface.ts +14 -13
  865. package/src/components/data-display/Popover/Popover.tsx +2 -1
  866. package/src/components/data-display/Progress/Progress.styles.ts +2 -6
  867. package/src/components/data-display/Sheet/Sheet.parts.tsx +3 -2
  868. package/src/components/data-display/Sheet/Sheet.styles.ts +6 -5
  869. package/src/components/data-display/Stepper/Stepper.tsx +5 -4
  870. package/src/components/data-display/Timeline/TimelineRow.tsx +5 -4
  871. package/src/components/data-display/TimingDiagram/TimingDiagram.tsx +1 -1
  872. package/src/components/data-display/TimingDiagram/TimingDiagram.views.tsx +55 -46
  873. package/src/components/data-display/Tooltip/Tooltip.tsx +9 -8
  874. package/src/components/feedback/Dialog/Dialog.metrics.ts +5 -3
  875. package/src/components/feedback/Dialog/Dialog.styles.ts +3 -5
  876. package/src/components/feedback/Modal/Modal.styles.ts +4 -2
  877. package/src/components/feedback/Sonner/SonnerToast.tsx +3 -1
  878. package/src/components/feedback/StackedModal/StackedModal.styles.ts +8 -6
  879. package/src/components/feedback/TutorialOverlay/TutorialOverlay.tsx +12 -9
  880. package/src/components/feedback/TutorialOverlay/TutorialStepBody.tsx +10 -5
  881. package/src/components/form/Button/Button.metrics.ts +5 -4
  882. package/src/components/form/Button/Button.styles.ts +5 -9
  883. package/src/components/form/CategorySelect/CategoryPanelHead.tsx +3 -2
  884. package/src/components/form/CategorySelect/CategorySelect.styles.ts +8 -7
  885. package/src/components/form/Checkbox/Checkbox.metrics.ts +5 -4
  886. package/src/components/form/CodeEditor/CodeEditor.hooks.ts +1 -1
  887. package/src/components/form/CodeEditor/CodeEditor.monaco.ts +25 -23
  888. package/src/components/form/Input/Input.metrics.ts +4 -3
  889. package/src/components/form/Input/Input.styles.ts +2 -1
  890. package/src/components/form/InputOTP/InputOTP.styles.ts +3 -7
  891. package/src/components/form/RadioGroup/RadioGroup.styles.ts +6 -14
  892. package/src/components/form/Select/Select.metrics.ts +2 -2
  893. package/src/components/form/Select/Select.tsx +2 -1
  894. package/src/components/form/Slider/Slider.styles.ts +8 -11
  895. package/src/components/form/Switch/Switch.metrics.ts +11 -6
  896. package/src/components/form/Switch/Switch.styles.ts +5 -11
  897. package/src/components/form/Textarea/Textarea.styles.ts +4 -13
  898. package/src/components/form/Toggle/Toggle.styles.ts +7 -10
  899. package/src/components/form/Toggle/Toggle.tsx +1 -1
  900. package/src/components/form/ToggleGroup/ToggleGroup.tsx +3 -6
  901. package/src/components/layout/Card/Card.metrics.ts +9 -6
  902. package/src/components/layout/Card/Card.styles.ts +7 -6
  903. package/src/components/layout/Drawer/Drawer.tsx +2 -1
  904. package/src/components/layout/ScrollArea/ScrollArea.styles.ts +6 -5
  905. package/src/components/layout/Sidebar/Sidebar.tsx +2 -1
  906. package/src/components/layout/Skeleton/Skeleton.metrics.ts +5 -3
  907. package/src/components/layout/Skeleton/Skeleton.styles.ts +4 -3
  908. package/src/components/navigation/Breadcrumbs/BreadcrumbEntry.tsx +3 -2
  909. package/src/components/navigation/Breadcrumbs/Breadcrumbs.styles.tsx +13 -12
  910. package/src/components/navigation/CommandPalette/CommandPalette.tsx +3 -2
  911. package/src/components/navigation/ContextMenu/ContextMenu.tsx +7 -6
  912. package/src/components/navigation/DropdownMenu/DropdownMenu.tsx +6 -5
  913. package/src/components/navigation/NavigationMenu/NavigationMenu.shell.tsx +6 -5
  914. package/src/components/navigation/NavigationMenu/NavigationMenu.styles.ts +5 -3
  915. package/src/components/navigation/NavigationMenu/NavigationMenuItem.tsx +7 -5
  916. package/src/components/typography/Blockquote/Blockquote.tsx +6 -8
  917. package/src/components/typography/Code/Code.tsx +5 -4
  918. package/src/components/typography/Heading/Heading.metrics.ts +2 -1
  919. package/src/components/typography/Heading/Heading.styles.ts +4 -7
  920. package/src/components/utility/AnimatedIcon/AnimatedIcon.styles.ts +13 -12
  921. package/src/components/utility/WorkflowStep/WorkflowStep.helpers.ts +6 -4
  922. package/src/components/utility/WorkflowStep/WorkflowStep.parts.tsx +3 -2
  923. package/src/social-login-button/social-login-button.tsx +53 -40
  924. package/src/tokens/index.native.ts +2 -0
  925. package/src/tokens/ink.core.ts +128 -0
  926. package/src/tokens/ink.ts +170 -0
  927. package/src/tokens/scales.ts +3 -0
  928. package/dist/chunk-25R3ITGZ.js +0 -203
  929. package/dist/chunk-2SKNSQCP.js +0 -83
  930. package/dist/chunk-3CGLGOLO.js +0 -97
  931. package/dist/chunk-3EYRRVNT.js +0 -64
  932. package/dist/chunk-3IYB3XY2.js +0 -51
  933. package/dist/chunk-3P4THDBM.js +0 -26
  934. package/dist/chunk-3QNSTLGC.js +0 -138
  935. package/dist/chunk-3SJZP7KH.js +0 -264
  936. package/dist/chunk-3T2I6BYA.js +0 -46
  937. package/dist/chunk-3W2IS5RH.js +0 -139
  938. package/dist/chunk-3W2IS5RH.js.map +0 -1
  939. package/dist/chunk-4BEQADWC.js +0 -99
  940. package/dist/chunk-4IVOHL32.js +0 -203
  941. package/dist/chunk-4LMY5I5E.js +0 -85
  942. package/dist/chunk-4MGFUPQT.js +0 -73
  943. package/dist/chunk-4PIKOJZ4.js +0 -295
  944. package/dist/chunk-4PIKOJZ4.js.map +0 -1
  945. package/dist/chunk-4V7FNB7R.js +0 -108
  946. package/dist/chunk-4Y65XEGO.js +0 -147
  947. package/dist/chunk-4Y65XEGO.js.map +0 -1
  948. package/dist/chunk-4YMIQ5DM.js +0 -62
  949. package/dist/chunk-56MKBXSH.js +0 -107
  950. package/dist/chunk-56MKBXSH.js.map +0 -1
  951. package/dist/chunk-56SJYTIT.js +0 -55
  952. package/dist/chunk-56SJYTIT.js.map +0 -1
  953. package/dist/chunk-57C636A6.js +0 -79
  954. package/dist/chunk-5BW7NCM5.js +0 -77
  955. package/dist/chunk-5FA5S2YN.js +0 -125
  956. package/dist/chunk-5QFEHSTR.js +0 -227
  957. package/dist/chunk-5RHMLOIA.js +0 -200
  958. package/dist/chunk-5RHMLOIA.js.map +0 -1
  959. package/dist/chunk-5SCZZFZR.js +0 -60
  960. package/dist/chunk-5UWSDTZV.js +0 -176
  961. package/dist/chunk-5UWSDTZV.js.map +0 -1
  962. package/dist/chunk-5ZNU2U4D.js +0 -41
  963. package/dist/chunk-5ZNU2U4D.js.map +0 -1
  964. package/dist/chunk-62NFZR52.js +0 -225
  965. package/dist/chunk-65JHGT5F.js +0 -39
  966. package/dist/chunk-67N6TH6E.js +0 -83
  967. package/dist/chunk-6AN23E37.js +0 -268
  968. package/dist/chunk-6ANWFGLL.js +0 -183
  969. package/dist/chunk-6I4BQRZ7.js +0 -196
  970. package/dist/chunk-6I4BQRZ7.js.map +0 -1
  971. package/dist/chunk-6M7CMILP.js +0 -34
  972. package/dist/chunk-6MDBMCFK.js +0 -127
  973. package/dist/chunk-6Q6T3FW5.js +0 -92
  974. package/dist/chunk-6Q6T3FW5.js.map +0 -1
  975. package/dist/chunk-6V7D6GRX.js +0 -182
  976. package/dist/chunk-6YLAVHV4.js +0 -240
  977. package/dist/chunk-6YZLWM3K.js +0 -143
  978. package/dist/chunk-6YZLWM3K.js.map +0 -1
  979. package/dist/chunk-7A3G4W52.js +0 -64
  980. package/dist/chunk-7FOOLP5H.js +0 -304
  981. package/dist/chunk-7FOOLP5H.js.map +0 -1
  982. package/dist/chunk-7FWXG2KF.js +0 -165
  983. package/dist/chunk-7N4V3ARN.js +0 -53
  984. package/dist/chunk-7TSQNYQO.js +0 -134
  985. package/dist/chunk-7VN7LFBA.js +0 -80
  986. package/dist/chunk-7WP2HRTW.js +0 -220
  987. package/dist/chunk-7WP2HRTW.js.map +0 -1
  988. package/dist/chunk-AIRWM7KK.js +0 -194
  989. package/dist/chunk-AJVYJZHI.js +0 -38
  990. package/dist/chunk-AJXTVRQF.js +0 -90
  991. package/dist/chunk-ANNDLY3M.js +0 -156
  992. package/dist/chunk-AZ4LLAAJ.js +0 -297
  993. package/dist/chunk-B64PPHUR.js +0 -137
  994. package/dist/chunk-B64PPHUR.js.map +0 -1
  995. package/dist/chunk-B6IURHSZ.js +0 -215
  996. package/dist/chunk-B6IURHSZ.js.map +0 -1
  997. package/dist/chunk-BEBLRL5D.js +0 -177
  998. package/dist/chunk-BEBLRL5D.js.map +0 -1
  999. package/dist/chunk-BM4CGQED.js +0 -193
  1000. package/dist/chunk-BM4ZPBBT.js +0 -88
  1001. package/dist/chunk-BRMGHMYB.js +0 -45
  1002. package/dist/chunk-BRMGHMYB.js.map +0 -1
  1003. package/dist/chunk-BTIBFR5L.js +0 -240
  1004. package/dist/chunk-BWB2MVWP.js +0 -301
  1005. package/dist/chunk-BWB2MVWP.js.map +0 -1
  1006. package/dist/chunk-C423YJGN.js +0 -116
  1007. package/dist/chunk-C53C7C2X.js +0 -74
  1008. package/dist/chunk-CDNJOA3N.js +0 -264
  1009. package/dist/chunk-CDNJOA3N.js.map +0 -1
  1010. package/dist/chunk-CJL5D2IT.js +0 -280
  1011. package/dist/chunk-CJL5D2IT.js.map +0 -1
  1012. package/dist/chunk-CMN26J5Y.js +0 -219
  1013. package/dist/chunk-CMTFAYDY.js +0 -90
  1014. package/dist/chunk-CMTFAYDY.js.map +0 -1
  1015. package/dist/chunk-CPNSVIIB.js +0 -103
  1016. package/dist/chunk-CR4KC2K5.js +0 -180
  1017. package/dist/chunk-CR5YQ3SR.js +0 -111
  1018. package/dist/chunk-CR5YQ3SR.js.map +0 -1
  1019. package/dist/chunk-CSWNPIQD.js +0 -107
  1020. package/dist/chunk-CZ5ZL63A.js +0 -247
  1021. package/dist/chunk-CZJLWCEG.js +0 -86
  1022. package/dist/chunk-DBS74X2C.js +0 -193
  1023. package/dist/chunk-DBS74X2C.js.map +0 -1
  1024. package/dist/chunk-DIWC6AQL.js +0 -173
  1025. package/dist/chunk-DO3UNZAU.js +0 -269
  1026. package/dist/chunk-DO3UNZAU.js.map +0 -1
  1027. package/dist/chunk-DRADVLHZ.js +0 -34
  1028. package/dist/chunk-DRADVLHZ.js.map +0 -1
  1029. package/dist/chunk-E46PG577.js +0 -78
  1030. package/dist/chunk-E46PG577.js.map +0 -1
  1031. package/dist/chunk-EDJDASXE.js +0 -109
  1032. package/dist/chunk-EE44OC4M.js +0 -131
  1033. package/dist/chunk-EEAQBPOW.js +0 -59
  1034. package/dist/chunk-EPNUVSNK.js +0 -161
  1035. package/dist/chunk-EUHVBR3J.js +0 -96
  1036. package/dist/chunk-EUHVBR3J.js.map +0 -1
  1037. package/dist/chunk-FA3TYWX2.js +0 -118
  1038. package/dist/chunk-FAITHWIO.js +0 -73
  1039. package/dist/chunk-FAITHWIO.js.map +0 -1
  1040. package/dist/chunk-FAQO245K.js +0 -121
  1041. package/dist/chunk-FAQO245K.js.map +0 -1
  1042. package/dist/chunk-FATRMNVN.js +0 -194
  1043. package/dist/chunk-FGKKLHKY.js +0 -146
  1044. package/dist/chunk-FGKKLHKY.js.map +0 -1
  1045. package/dist/chunk-FHA4G5XF.js +0 -165
  1046. package/dist/chunk-FPWB5ILF.js +0 -79
  1047. package/dist/chunk-FRW4SYZD.js +0 -79
  1048. package/dist/chunk-FRW4SYZD.js.map +0 -1
  1049. package/dist/chunk-FTCCYWF4.js +0 -242
  1050. package/dist/chunk-FYFIND6O.js +0 -227
  1051. package/dist/chunk-FYLCSCMR.js +0 -166
  1052. package/dist/chunk-FYLCSCMR.js.map +0 -1
  1053. package/dist/chunk-G3KSCJS7.js +0 -181
  1054. package/dist/chunk-G73SDZ3T.js +0 -41
  1055. package/dist/chunk-G76H5PEM.js +0 -249
  1056. package/dist/chunk-GCWF5AQE.js +0 -58
  1057. package/dist/chunk-GGNHZ4GA.js +0 -174
  1058. package/dist/chunk-GGNHZ4GA.js.map +0 -1
  1059. package/dist/chunk-GJKBWVU2.js +0 -63
  1060. package/dist/chunk-GT7C6TSM.js +0 -170
  1061. package/dist/chunk-GXEB6MJA.js +0 -57
  1062. package/dist/chunk-GXEB6MJA.js.map +0 -1
  1063. package/dist/chunk-GY6KNVMI.js +0 -39
  1064. package/dist/chunk-GY6KNVMI.js.map +0 -1
  1065. package/dist/chunk-HJOABXKN.js +0 -43
  1066. package/dist/chunk-IDHZHOZW.js +0 -285
  1067. package/dist/chunk-IDHZHOZW.js.map +0 -1
  1068. package/dist/chunk-IE7ISTLQ.js +0 -167
  1069. package/dist/chunk-IFAEKIT2.js +0 -273
  1070. package/dist/chunk-IGO5DC7D.js +0 -159
  1071. package/dist/chunk-IM76SSXI.js +0 -173
  1072. package/dist/chunk-IOEF32HX.js +0 -88
  1073. package/dist/chunk-IRLUM7XB.js +0 -81
  1074. package/dist/chunk-ISW5K72V.js +0 -230
  1075. package/dist/chunk-IZBDSPTW.js +0 -49
  1076. package/dist/chunk-J6CSPDC7.js +0 -75
  1077. package/dist/chunk-JB67KPGM.js +0 -64
  1078. package/dist/chunk-JBMBFYFA.js +0 -94
  1079. package/dist/chunk-JDY37EML.js +0 -246
  1080. package/dist/chunk-JN3PGXRJ.js +0 -225
  1081. package/dist/chunk-JO5GSRYQ.js +0 -49
  1082. package/dist/chunk-JPXG7IFW.js +0 -34
  1083. package/dist/chunk-JRHZZTVV.js +0 -241
  1084. package/dist/chunk-JXNT5TUP.js +0 -142
  1085. package/dist/chunk-JYETSTOQ.js +0 -82
  1086. package/dist/chunk-JYETSTOQ.js.map +0 -1
  1087. package/dist/chunk-JZJOAGBG.js +0 -183
  1088. package/dist/chunk-K6FCXPTS.js +0 -86
  1089. package/dist/chunk-K6FCXPTS.js.map +0 -1
  1090. package/dist/chunk-K7BBMXY7.js +0 -197
  1091. package/dist/chunk-K7BBMXY7.js.map +0 -1
  1092. package/dist/chunk-KAPKMVKR.js +0 -41
  1093. package/dist/chunk-KCBAPMLH.js +0 -147
  1094. package/dist/chunk-KJHQYPKT.js +0 -73
  1095. package/dist/chunk-KMUSTQA6.js +0 -148
  1096. package/dist/chunk-KSLNO5NG.js +0 -150
  1097. package/dist/chunk-KSLNO5NG.js.map +0 -1
  1098. package/dist/chunk-L4D6YLLU.js +0 -118
  1099. package/dist/chunk-L4D6YLLU.js.map +0 -1
  1100. package/dist/chunk-LB2G6SD6.js +0 -275
  1101. package/dist/chunk-LB2G6SD6.js.map +0 -1
  1102. package/dist/chunk-LE7IHEU4.js +0 -41
  1103. package/dist/chunk-LGLHU55A.js +0 -340
  1104. package/dist/chunk-LGLHU55A.js.map +0 -1
  1105. package/dist/chunk-LLR42S6B.js +0 -223
  1106. package/dist/chunk-LNOYDMFD.js +0 -184
  1107. package/dist/chunk-LOLOFY4O.js +0 -172
  1108. package/dist/chunk-LTEXWGK6.js +0 -176
  1109. package/dist/chunk-LUMF63BM.js +0 -274
  1110. package/dist/chunk-LUMF63BM.js.map +0 -1
  1111. package/dist/chunk-LWLVWM34.js +0 -28
  1112. package/dist/chunk-LYSSO6WC.js +0 -132
  1113. package/dist/chunk-LZHXF66R.js +0 -127
  1114. package/dist/chunk-MDR4WJOV.js +0 -115
  1115. package/dist/chunk-MDR4WJOV.js.map +0 -1
  1116. package/dist/chunk-MG73KW54.js +0 -266
  1117. package/dist/chunk-MQZDTGGJ.js +0 -153
  1118. package/dist/chunk-MQZDTGGJ.js.map +0 -1
  1119. package/dist/chunk-MYYGXSXF.js +0 -177
  1120. package/dist/chunk-MYYGXSXF.js.map +0 -1
  1121. package/dist/chunk-N74IYYRU.js +0 -183
  1122. package/dist/chunk-NARIG5FL.js +0 -98
  1123. package/dist/chunk-NARIG5FL.js.map +0 -1
  1124. package/dist/chunk-NFGVP3HN.js +0 -88
  1125. package/dist/chunk-NFGVP3HN.js.map +0 -1
  1126. package/dist/chunk-NKIAP6ZL.js +0 -173
  1127. package/dist/chunk-NM3E27GK.js +0 -292
  1128. package/dist/chunk-NM3E27GK.js.map +0 -1
  1129. package/dist/chunk-NNAACCN2.js +0 -19
  1130. package/dist/chunk-NU3EQX2L.js +0 -144
  1131. package/dist/chunk-O4PKQ46C.js +0 -273
  1132. package/dist/chunk-OFVYNUYV.js +0 -25
  1133. package/dist/chunk-OGPOTZAU.js +0 -232
  1134. package/dist/chunk-OGPOTZAU.js.map +0 -1
  1135. package/dist/chunk-OZZNC4YU.js +0 -100
  1136. package/dist/chunk-OZZNC4YU.js.map +0 -1
  1137. package/dist/chunk-P3L42CBB.js +0 -121
  1138. package/dist/chunk-P7GH32WG.js +0 -124
  1139. package/dist/chunk-P7GH32WG.js.map +0 -1
  1140. package/dist/chunk-PEWNWKDI.js +0 -91
  1141. package/dist/chunk-PEWNWKDI.js.map +0 -1
  1142. package/dist/chunk-PH5XJGKJ.js +0 -91
  1143. package/dist/chunk-PI5G6N6Q.js +0 -157
  1144. package/dist/chunk-PJ7NKK33.js +0 -124
  1145. package/dist/chunk-PLEZDLVU.js +0 -30
  1146. package/dist/chunk-PPTF5X7K.js +0 -305
  1147. package/dist/chunk-PTP3CZL4.js +0 -133
  1148. package/dist/chunk-PTP3CZL4.js.map +0 -1
  1149. package/dist/chunk-Q444G5X7.js +0 -192
  1150. package/dist/chunk-Q444G5X7.js.map +0 -1
  1151. package/dist/chunk-Q725MACF.js +0 -78
  1152. package/dist/chunk-Q725MACF.js.map +0 -1
  1153. package/dist/chunk-QNHNFU7G.js +0 -134
  1154. package/dist/chunk-QQS3GQYS.js +0 -107
  1155. package/dist/chunk-QRUCR4YZ.js +0 -217
  1156. package/dist/chunk-QRUCR4YZ.js.map +0 -1
  1157. package/dist/chunk-QTZ7I6QS.js +0 -137
  1158. package/dist/chunk-QTZ7I6QS.js.map +0 -1
  1159. package/dist/chunk-QWCMLOYC.js +0 -21
  1160. package/dist/chunk-QYNCPS5W.js +0 -62
  1161. package/dist/chunk-R2G4MVPY.js +0 -61
  1162. package/dist/chunk-R67J6JKT.js +0 -127
  1163. package/dist/chunk-RAWQMBX6.js +0 -77
  1164. package/dist/chunk-RAWQMBX6.js.map +0 -1
  1165. package/dist/chunk-RGCRXDGZ.js +0 -169
  1166. package/dist/chunk-RGCRXDGZ.js.map +0 -1
  1167. package/dist/chunk-RGKGBYT2.js +0 -289
  1168. package/dist/chunk-RGKGBYT2.js.map +0 -1
  1169. package/dist/chunk-RGMSTQ2J.js +0 -57
  1170. package/dist/chunk-RJXRZW66.js +0 -95
  1171. package/dist/chunk-RKCS6K36.js +0 -48
  1172. package/dist/chunk-RKCS6K36.js.map +0 -1
  1173. package/dist/chunk-RPMAWM6F.js +0 -82
  1174. package/dist/chunk-RRX6ZTNX.js +0 -59
  1175. package/dist/chunk-SBS7H6WY.js +0 -181
  1176. package/dist/chunk-SBS7H6WY.js.map +0 -1
  1177. package/dist/chunk-SGGDMTKP.js +0 -347
  1178. package/dist/chunk-SLODUPES.js +0 -291
  1179. package/dist/chunk-SMCLG2RA.js +0 -153
  1180. package/dist/chunk-SMCLG2RA.js.map +0 -1
  1181. package/dist/chunk-SVFA75FO.js +0 -80
  1182. package/dist/chunk-SVXHKIGJ.js +0 -201
  1183. package/dist/chunk-TBRAZK3Y.js +0 -175
  1184. package/dist/chunk-TJT4NSFN.js +0 -41
  1185. package/dist/chunk-TK36COCP.js +0 -16
  1186. package/dist/chunk-TO2NXDZA.js +0 -86
  1187. package/dist/chunk-TO2NXDZA.js.map +0 -1
  1188. package/dist/chunk-TTVKL3RD.js +0 -220
  1189. package/dist/chunk-TUYN6XZI.js +0 -33
  1190. package/dist/chunk-TXHJX2NG.js +0 -108
  1191. package/dist/chunk-U437KFDI.js +0 -206
  1192. package/dist/chunk-U437KFDI.js.map +0 -1
  1193. package/dist/chunk-U7Q2Y6WG.js +0 -196
  1194. package/dist/chunk-UJE7IKQ4.js +0 -96
  1195. package/dist/chunk-UMQN3BVV.js +0 -315
  1196. package/dist/chunk-UMQN3BVV.js.map +0 -1
  1197. package/dist/chunk-UQNB2W2I.js +0 -263
  1198. package/dist/chunk-URWNRC2P.js +0 -158
  1199. package/dist/chunk-VF2XC76U.js +0 -191
  1200. package/dist/chunk-VF2XC76U.js.map +0 -1
  1201. package/dist/chunk-VM3HRSAU.js +0 -79
  1202. package/dist/chunk-VM3HRSAU.js.map +0 -1
  1203. package/dist/chunk-VQBINZB7.js +0 -322
  1204. package/dist/chunk-VQBINZB7.js.map +0 -1
  1205. package/dist/chunk-VXGCB3GY.js +0 -81
  1206. package/dist/chunk-VXGCB3GY.js.map +0 -1
  1207. package/dist/chunk-W3FAKT3D.js +0 -167
  1208. package/dist/chunk-W3FAKT3D.js.map +0 -1
  1209. package/dist/chunk-W7HSGZGW.js +0 -155
  1210. package/dist/chunk-WIXUMFU7.js +0 -167
  1211. package/dist/chunk-WIXUMFU7.js.map +0 -1
  1212. package/dist/chunk-WJH743NG.js +0 -131
  1213. package/dist/chunk-WJH743NG.js.map +0 -1
  1214. package/dist/chunk-X2IJI2BG.js +0 -72
  1215. package/dist/chunk-X2QLWUND.js +0 -145
  1216. package/dist/chunk-X4XYUNRL.js +0 -55
  1217. package/dist/chunk-XCP5L665.js +0 -22
  1218. package/dist/chunk-XCP5L665.js.map +0 -1
  1219. package/dist/chunk-XI2BXMBX.js +0 -146
  1220. package/dist/chunk-XJKMH3RX.js +0 -233
  1221. package/dist/chunk-XJKMH3RX.js.map +0 -1
  1222. package/dist/chunk-XPOQZI5X.js +0 -120
  1223. package/dist/chunk-XV2TDULR.js +0 -85
  1224. package/dist/chunk-XV2TDULR.js.map +0 -1
  1225. package/dist/chunk-XYXTEGIM.js +0 -67
  1226. package/dist/chunk-Y3ER5CJ2.js +0 -293
  1227. package/dist/chunk-Y3ER5CJ2.js.map +0 -1
  1228. package/dist/chunk-Y3IGYWGN.js +0 -171
  1229. package/dist/chunk-Y3IGYWGN.js.map +0 -1
  1230. package/dist/chunk-Y5UCOBQN.js +0 -37
  1231. package/dist/chunk-YJ4HM25H.js +0 -198
  1232. package/dist/chunk-YJ4HM25H.js.map +0 -1
  1233. package/dist/chunk-YKACSEES.js +0 -153
  1234. package/dist/chunk-YKACSEES.js.map +0 -1
  1235. package/dist/chunk-YNWAMTOT.js +0 -259
  1236. package/dist/chunk-YNWAMTOT.js.map +0 -1
  1237. package/dist/chunk-YRUCIKPO.js +0 -159
  1238. package/dist/chunk-Z6DULXSF.js +0 -261
  1239. package/dist/chunk-Z6DULXSF.js.map +0 -1
  1240. package/dist/chunk-ZA4U5GDU.js +0 -68
  1241. package/dist/chunk-ZADOIITM.js +0 -166
  1242. package/dist/chunk-ZADOIITM.js.map +0 -1
  1243. package/dist/chunk-ZB6BX4GO.js +0 -175
  1244. package/dist/chunk-ZDWU52DJ.js +0 -116
  1245. package/dist/chunk-ZNJ4RLZT.js +0 -136
  1246. package/dist/chunk-ZO27CDGB.js +0 -204
  1247. package/dist/chunk-ZO27CDGB.js.map +0 -1
  1248. package/dist/chunk-ZOW2CCMO.js +0 -88
  1249. package/dist/chunk-ZOW2CCMO.js.map +0 -1
  1250. package/dist/chunk-ZPIMPOHV.js +0 -187
  1251. package/dist/chunk-ZSXV3ERD.js +0 -82
  1252. package/dist/chunk-ZSXV3ERD.js.map +0 -1
  1253. package/dist/chunk-ZTZ6S5Q6.js +0 -86
  1254. package/dist/native/chunks/chunk-335WGKE6.js +0 -336
  1255. package/dist/native/chunks/chunk-335WGKE6.js.map +0 -1
  1256. package/dist/native/chunks/chunk-4KWFRDI2.js +0 -215
  1257. package/dist/native/chunks/chunk-4KWFRDI2.js.map +0 -1
  1258. package/dist/native/chunks/chunk-KIG4KY4W.js +0 -322
  1259. package/dist/native/chunks/chunk-KIG4KY4W.js.map +0 -1
  1260. package/dist/native/chunks/chunk-OI57L6WL.js +0 -292
  1261. package/dist/native/chunks/chunk-OI57L6WL.js.map +0 -1
  1262. /package/dist/{chunk-Y5UCOBQN.js.map → chunk-27DLUKDF.js.map} +0 -0
  1263. /package/dist/{chunk-PPTF5X7K.js.map → chunk-2CK7SHQQ.js.map} +0 -0
  1264. /package/dist/{chunk-DIWC6AQL.js.map → chunk-2KLT22S3.js.map} +0 -0
  1265. /package/dist/{chunk-ZTZ6S5Q6.js.map → chunk-2TJOCI54.js.map} +0 -0
  1266. /package/dist/{chunk-ZPIMPOHV.js.map → chunk-2XGGHYEA.js.map} +0 -0
  1267. /package/dist/{chunk-ISW5K72V.js.map → chunk-2ZRZTGWP.js.map} +0 -0
  1268. /package/dist/{chunk-57C636A6.js.map → chunk-37DCYIT5.js.map} +0 -0
  1269. /package/dist/{chunk-6MDBMCFK.js.map → chunk-3EDZU2H7.js.map} +0 -0
  1270. /package/dist/{chunk-2SKNSQCP.js.map → chunk-3LNKBZTG.js.map} +0 -0
  1271. /package/dist/{chunk-XYXTEGIM.js.map → chunk-46ADSOCF.js.map} +0 -0
  1272. /package/dist/{chunk-CPNSVIIB.js.map → chunk-4M7QHSKY.js.map} +0 -0
  1273. /package/dist/{chunk-4LMY5I5E.js.map → chunk-4N33SWTW.js.map} +0 -0
  1274. /package/dist/{chunk-RGMSTQ2J.js.map → chunk-5264DI34.js.map} +0 -0
  1275. /package/dist/{chunk-PI5G6N6Q.js.map → chunk-5QTMJ2RU.js.map} +0 -0
  1276. /package/dist/{chunk-JBMBFYFA.js.map → chunk-5VWYCVXF.js.map} +0 -0
  1277. /package/dist/{chunk-ZDWU52DJ.js.map → chunk-67QSLTT7.js.map} +0 -0
  1278. /package/dist/{chunk-65JHGT5F.js.map → chunk-6MSSCBI3.js.map} +0 -0
  1279. /package/dist/{chunk-JB67KPGM.js.map → chunk-6Q5GZUQ5.js.map} +0 -0
  1280. /package/dist/{chunk-CSWNPIQD.js.map → chunk-7E4X4J2M.js.map} +0 -0
  1281. /package/dist/{chunk-7VN7LFBA.js.map → chunk-7F7TTOYN.js.map} +0 -0
  1282. /package/dist/{chunk-QWCMLOYC.js.map → chunk-7JSQQZUH.js.map} +0 -0
  1283. /package/dist/{chunk-LLR42S6B.js.map → chunk-7VIINULX.js.map} +0 -0
  1284. /package/dist/{chunk-3T2I6BYA.js.map → chunk-7WK2L3ZO.js.map} +0 -0
  1285. /package/dist/{chunk-JZJOAGBG.js.map → chunk-7Z2UU2FQ.js.map} +0 -0
  1286. /package/dist/{chunk-5SCZZFZR.js.map → chunk-A2DYU5WN.js.map} +0 -0
  1287. /package/dist/{chunk-TK36COCP.js.map → chunk-A4OCNJWW.js.map} +0 -0
  1288. /package/dist/{chunk-7TSQNYQO.js.map → chunk-AKPRFFAI.js.map} +0 -0
  1289. /package/dist/{chunk-JRHZZTVV.js.map → chunk-AL6Z2JYR.js.map} +0 -0
  1290. /package/dist/{chunk-IE7ISTLQ.js.map → chunk-B443IIQG.js.map} +0 -0
  1291. /package/dist/{chunk-TXHJX2NG.js.map → chunk-BGYLL467.js.map} +0 -0
  1292. /package/dist/{chunk-67N6TH6E.js.map → chunk-BHOSWJDL.js.map} +0 -0
  1293. /package/dist/{chunk-G3KSCJS7.js.map → chunk-BQGT77IQ.js.map} +0 -0
  1294. /package/dist/{chunk-FPWB5ILF.js.map → chunk-BR7RM3WR.js.map} +0 -0
  1295. /package/dist/{chunk-BM4CGQED.js.map → chunk-COK5VOXC.js.map} +0 -0
  1296. /package/dist/{chunk-EEAQBPOW.js.map → chunk-CRDOMIEG.js.map} +0 -0
  1297. /package/dist/{chunk-IRLUM7XB.js.map → chunk-CUN5RJTH.js.map} +0 -0
  1298. /package/dist/{chunk-OFVYNUYV.js.map → chunk-CXMVNYBY.js.map} +0 -0
  1299. /package/dist/{chunk-LNOYDMFD.js.map → chunk-CY6HHLYM.js.map} +0 -0
  1300. /package/dist/{chunk-KAPKMVKR.js.map → chunk-D6RKXNLE.js.map} +0 -0
  1301. /package/dist/{chunk-LZHXF66R.js.map → chunk-DBCITC4P.js.map} +0 -0
  1302. /package/dist/{chunk-G73SDZ3T.js.map → chunk-DELT2W42.js.map} +0 -0
  1303. /package/dist/{chunk-R2G4MVPY.js.map → chunk-DJ2KYLHE.js.map} +0 -0
  1304. /package/dist/{chunk-FA3TYWX2.js.map → chunk-DQIRSUEK.js.map} +0 -0
  1305. /package/dist/{chunk-ANNDLY3M.js.map → chunk-DRKYPQNA.js.map} +0 -0
  1306. /package/dist/{chunk-BM4ZPBBT.js.map → chunk-DSIJEJQ7.js.map} +0 -0
  1307. /package/dist/{chunk-FHA4G5XF.js.map → chunk-DY7VTAYO.js.map} +0 -0
  1308. /package/dist/{chunk-FYFIND6O.js.map → chunk-DYMVVVSU.js.map} +0 -0
  1309. /package/dist/{chunk-UQNB2W2I.js.map → chunk-EDBTCEPC.js.map} +0 -0
  1310. /package/dist/{chunk-3SJZP7KH.js.map → chunk-EHCUOX6R.js.map} +0 -0
  1311. /package/dist/{chunk-5BW7NCM5.js.map → chunk-EIJC5DWG.js.map} +0 -0
  1312. /package/dist/{chunk-RPMAWM6F.js.map → chunk-EVSKEIXI.js.map} +0 -0
  1313. /package/dist/{chunk-62NFZR52.js.map → chunk-EYPRDTWI.js.map} +0 -0
  1314. /package/dist/{chunk-IGO5DC7D.js.map → chunk-FTSVJIEU.js.map} +0 -0
  1315. /package/dist/{chunk-UJE7IKQ4.js.map → chunk-FYSYALTY.js.map} +0 -0
  1316. /package/dist/{chunk-3IYB3XY2.js.map → chunk-GJF3CVIE.js.map} +0 -0
  1317. /package/dist/{chunk-PLEZDLVU.js.map → chunk-GJRBK564.js.map} +0 -0
  1318. /package/dist/{chunk-KJHQYPKT.js.map → chunk-GL5CYMGK.js.map} +0 -0
  1319. /package/dist/{chunk-QQS3GQYS.js.map → chunk-GPUYB3ST.js.map} +0 -0
  1320. /package/dist/{chunk-AZ4LLAAJ.js.map → chunk-GQ4I6Z32.js.map} +0 -0
  1321. /package/dist/{chunk-GCWF5AQE.js.map → chunk-GUW5BUK7.js.map} +0 -0
  1322. /package/dist/{chunk-4IVOHL32.js.map → chunk-GVOMTCLS.js.map} +0 -0
  1323. /package/dist/{chunk-J6CSPDC7.js.map → chunk-H2YBVBPW.js.map} +0 -0
  1324. /package/dist/{chunk-N74IYYRU.js.map → chunk-H3MLYZYP.js.map} +0 -0
  1325. /package/dist/{chunk-NKIAP6ZL.js.map → chunk-H3R6WSYU.js.map} +0 -0
  1326. /package/dist/{chunk-SGGDMTKP.js.map → chunk-HEVST4CS.js.map} +0 -0
  1327. /package/dist/{chunk-IM76SSXI.js.map → chunk-HRHPRIGT.js.map} +0 -0
  1328. /package/dist/{chunk-GJKBWVU2.js.map → chunk-HUKVX47W.js.map} +0 -0
  1329. /package/dist/{chunk-P3L42CBB.js.map → chunk-IBGX6H4J.js.map} +0 -0
  1330. /package/dist/{chunk-CMN26J5Y.js.map → chunk-IFSUKWE7.js.map} +0 -0
  1331. /package/dist/{chunk-7A3G4W52.js.map → chunk-IJFAF3A7.js.map} +0 -0
  1332. /package/dist/{chunk-YRUCIKPO.js.map → chunk-IL7JZKXY.js.map} +0 -0
  1333. /package/dist/{chunk-C423YJGN.js.map → chunk-JGDS2SJZ.js.map} +0 -0
  1334. /package/dist/{chunk-FATRMNVN.js.map → chunk-JRODCEIG.js.map} +0 -0
  1335. /package/dist/{chunk-4BEQADWC.js.map → chunk-JWG2BTJ5.js.map} +0 -0
  1336. /package/dist/{chunk-URWNRC2P.js.map → chunk-KBMKALKQ.js.map} +0 -0
  1337. /package/dist/{chunk-EDJDASXE.js.map → chunk-KCQGJPLO.js.map} +0 -0
  1338. /package/dist/{chunk-XI2BXMBX.js.map → chunk-KDIPBEVE.js.map} +0 -0
  1339. /package/dist/{chunk-RRX6ZTNX.js.map → chunk-KJ3AXHKF.js.map} +0 -0
  1340. /package/dist/{chunk-O4PKQ46C.js.map → chunk-L4UP5VYS.js.map} +0 -0
  1341. /package/dist/{chunk-EPNUVSNK.js.map → chunk-L4V2LRKH.js.map} +0 -0
  1342. /package/dist/{chunk-ZB6BX4GO.js.map → chunk-L7Q5BH4A.js.map} +0 -0
  1343. /package/dist/{chunk-JO5GSRYQ.js.map → chunk-LCVQOJKG.js.map} +0 -0
  1344. /package/dist/{chunk-QYNCPS5W.js.map → chunk-LGZ4EIWV.js.map} +0 -0
  1345. /package/dist/{chunk-6AN23E37.js.map → chunk-MAUZCOBB.js.map} +0 -0
  1346. /package/dist/{chunk-KMUSTQA6.js.map → chunk-MWBHZZA4.js.map} +0 -0
  1347. /package/dist/{chunk-TBRAZK3Y.js.map → chunk-MYAEOSZK.js.map} +0 -0
  1348. /package/dist/{chunk-25R3ITGZ.js.map → chunk-MZMGQKT3.js.map} +0 -0
  1349. /package/dist/{chunk-AIRWM7KK.js.map → chunk-N6CSXHFJ.js.map} +0 -0
  1350. /package/dist/{chunk-SVXHKIGJ.js.map → chunk-NFZRZB5N.js.map} +0 -0
  1351. /package/dist/{chunk-MG73KW54.js.map → chunk-NJHJZFX5.js.map} +0 -0
  1352. /package/dist/{chunk-RJXRZW66.js.map → chunk-NNESQ7QG.js.map} +0 -0
  1353. /package/dist/{chunk-AJXTVRQF.js.map → chunk-O63WG6YJ.js.map} +0 -0
  1354. /package/dist/{chunk-PH5XJGKJ.js.map → chunk-OSSFOPB7.js.map} +0 -0
  1355. /package/dist/{chunk-X2IJI2BG.js.map → chunk-OT5DVKXP.js.map} +0 -0
  1356. /package/dist/{chunk-CZ5ZL63A.js.map → chunk-OYYCANKB.js.map} +0 -0
  1357. /package/dist/{chunk-LTEXWGK6.js.map → chunk-PC2MVKYW.js.map} +0 -0
  1358. /package/dist/{chunk-ZNJ4RLZT.js.map → chunk-PKFH6C7W.js.map} +0 -0
  1359. /package/dist/{chunk-IOEF32HX.js.map → chunk-PYPFDRX4.js.map} +0 -0
  1360. /package/dist/{chunk-PJ7NKK33.js.map → chunk-Q4KFGRBV.js.map} +0 -0
  1361. /package/dist/{chunk-6YLAVHV4.js.map → chunk-QAP3FW33.js.map} +0 -0
  1362. /package/dist/{chunk-JPXG7IFW.js.map → chunk-QJ7I5C4D.js.map} +0 -0
  1363. /package/dist/{chunk-JXNT5TUP.js.map → chunk-QO6QWBDI.js.map} +0 -0
  1364. /package/dist/{chunk-GT7C6TSM.js.map → chunk-QPNTUFV4.js.map} +0 -0
  1365. /package/dist/{chunk-HJOABXKN.js.map → chunk-QV5J4TE6.js.map} +0 -0
  1366. /package/dist/{chunk-EE44OC4M.js.map → chunk-QYUB2RFN.js.map} +0 -0
  1367. /package/dist/{chunk-BTIBFR5L.js.map → chunk-REQAKZ64.js.map} +0 -0
  1368. /package/dist/{chunk-NNAACCN2.js.map → chunk-RMCNEKBZ.js.map} +0 -0
  1369. /package/dist/{chunk-TUYN6XZI.js.map → chunk-RQCJJBPY.js.map} +0 -0
  1370. /package/dist/{chunk-JN3PGXRJ.js.map → chunk-RWTFZ7J5.js.map} +0 -0
  1371. /package/dist/{chunk-7N4V3ARN.js.map → chunk-S52IVFMS.js.map} +0 -0
  1372. /package/dist/{chunk-JDY37EML.js.map → chunk-SCQJV54H.js.map} +0 -0
  1373. /package/dist/{chunk-3QNSTLGC.js.map → chunk-SNBCAH62.js.map} +0 -0
  1374. /package/dist/{chunk-G76H5PEM.js.map → chunk-SQV3HPTZ.js.map} +0 -0
  1375. /package/dist/{chunk-C53C7C2X.js.map → chunk-T3WHW7ZC.js.map} +0 -0
  1376. /package/dist/{chunk-R67J6JKT.js.map → chunk-T7LTL7OC.js.map} +0 -0
  1377. /package/dist/{chunk-LYSSO6WC.js.map → chunk-TAB6AIPN.js.map} +0 -0
  1378. /package/dist/{chunk-5QFEHSTR.js.map → chunk-TK4NUNN6.js.map} +0 -0
  1379. /package/dist/{chunk-7FWXG2KF.js.map → chunk-TNDV33LP.js.map} +0 -0
  1380. /package/dist/{chunk-6ANWFGLL.js.map → chunk-TOBPKY4V.js.map} +0 -0
  1381. /package/dist/{chunk-XPOQZI5X.js.map → chunk-UCTJJYVC.js.map} +0 -0
  1382. /package/dist/{chunk-6V7D6GRX.js.map → chunk-UFH3ZVVZ.js.map} +0 -0
  1383. /package/dist/{chunk-QNHNFU7G.js.map → chunk-UFLTL2RJ.js.map} +0 -0
  1384. /package/dist/{chunk-CZJLWCEG.js.map → chunk-UN5INW6K.js.map} +0 -0
  1385. /package/dist/{chunk-LE7IHEU4.js.map → chunk-UUFHI7J5.js.map} +0 -0
  1386. /package/dist/{chunk-6M7CMILP.js.map → chunk-UXWU5NRC.js.map} +0 -0
  1387. /package/dist/{chunk-NU3EQX2L.js.map → chunk-UYA2QMH6.js.map} +0 -0
  1388. /package/dist/{chunk-TTVKL3RD.js.map → chunk-V26IDPL4.js.map} +0 -0
  1389. /package/dist/{chunk-U7Q2Y6WG.js.map → chunk-V6FED3RS.js.map} +0 -0
  1390. /package/dist/{chunk-CR4KC2K5.js.map → chunk-VNB7PFCP.js.map} +0 -0
  1391. /package/dist/{chunk-AJVYJZHI.js.map → chunk-VNYP2RMN.js.map} +0 -0
  1392. /package/dist/{chunk-4V7FNB7R.js.map → chunk-VU4BANG7.js.map} +0 -0
  1393. /package/dist/{chunk-4MGFUPQT.js.map → chunk-WC3W36AM.js.map} +0 -0
  1394. /package/dist/{chunk-LWLVWM34.js.map → chunk-WPE5QYXD.js.map} +0 -0
  1395. /package/dist/{chunk-IZBDSPTW.js.map → chunk-WPSGP3YG.js.map} +0 -0
  1396. /package/dist/{chunk-5FA5S2YN.js.map → chunk-WVPA3ONO.js.map} +0 -0
  1397. /package/dist/{chunk-3P4THDBM.js.map → chunk-WXDJBSES.js.map} +0 -0
  1398. /package/dist/{chunk-3CGLGOLO.js.map → chunk-WXTXCJ5V.js.map} +0 -0
  1399. /package/dist/{chunk-KCBAPMLH.js.map → chunk-XEYLYUDM.js.map} +0 -0
  1400. /package/dist/{chunk-X2QLWUND.js.map → chunk-XNBN5CVF.js.map} +0 -0
  1401. /package/dist/{chunk-IFAEKIT2.js.map → chunk-XOL2QCSP.js.map} +0 -0
  1402. /package/dist/{chunk-ZA4U5GDU.js.map → chunk-XYK3HXZY.js.map} +0 -0
  1403. /package/dist/{chunk-LOLOFY4O.js.map → chunk-Y3HMIUH6.js.map} +0 -0
  1404. /package/dist/{chunk-TJT4NSFN.js.map → chunk-Y5WNNEND.js.map} +0 -0
  1405. /package/dist/{chunk-SVFA75FO.js.map → chunk-YA4YH6WP.js.map} +0 -0
  1406. /package/dist/{chunk-X4XYUNRL.js.map → chunk-YSFQHZ74.js.map} +0 -0
  1407. /package/dist/{chunk-FTCCYWF4.js.map → chunk-YU72SS43.js.map} +0 -0
  1408. /package/dist/{chunk-3EYRRVNT.js.map → chunk-YVDBOVHP.js.map} +0 -0
  1409. /package/dist/{chunk-W7HSGZGW.js.map → chunk-ZF3JGIJD.js.map} +0 -0
  1410. /package/dist/{chunk-SLODUPES.js.map → chunk-ZHFS5L6Q.js.map} +0 -0
  1411. /package/dist/{chunk-4YMIQ5DM.js.map → chunk-ZSLOXTYJ.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/form/Switch/Switch.native.tsx","../../../src/components/form/Switch/Switch.helpers.ts","../../../src/components/form/Switch/Switch.metrics.ts","../../../src/components/form/Switch/Switch.look.native.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n ActivityIndicator,\n Animated,\n Easing,\n Platform,\n Pressable,\n StyleSheet,\n Text as RNText,\n View,\n type GestureResponderEvent,\n type ViewStyle,\n} from 'react-native';\n\nimport { resolveSwitchProps, withoutSwitchProps, type ResolvedSwitchProps } from './Switch.helpers';\nimport {\n descriptionTextStyle,\n helperTextStyle,\n labelTextStyle,\n checkedInk,\n switchPalette,\n thumbStyle,\n trackStyle,\n type SwitchPaint,\n type SwitchState,\n} from './Switch.look.native';\nimport {\n LABEL_GAP_UNITS,\n SWITCH_ICON,\n SWITCH_ICON_SIZES,\n SWITCH_PULSE,\n SWITCH_SPINNER,\n SWITCH_TRANSITION,\n TRACK_LABEL,\n geometryOf,\n lookOf,\n showsTrackLabels,\n thumbTravel,\n type SwitchGeometry,\n} from './Switch.metrics';\nimport type { SwitchProps } from './Switch.types.native';\nimport { webKeyDown } from '../../../platform/aria';\nimport { childTestId, resolveTestId } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { UiTheme } from '../../../tokens/theme';\n\nconst nativeDriver = Platform.OS !== 'web';\n\n/** A 0→1 value that follows `on`, over MUI's 300ms curve unless animation is off. */\nfunction useProgress(on: boolean, animated: boolean): Animated.Value {\n const progress = React.useRef(new Animated.Value(on ? 1 : 0)).current;\n React.useEffect(() => {\n const timing = Animated.timing(progress, {\n toValue: on ? 1 : 0,\n duration: animated ? SWITCH_TRANSITION.ms : 0,\n easing: Easing.bezier(0.4, 0, 0.2, 1),\n useNativeDriver: nativeDriver,\n });\n timing.start();\n return () => timing.stop();\n }, [on, animated, progress]);\n return progress;\n}\n\n/** The web's `pulseAnimation` on the thumb: it breathes to 0.7 and 0.95 and back. */\nfunction usePulse(enabled: boolean): { opacity?: Animated.AnimatedInterpolation<number>; scale?: Animated.AnimatedInterpolation<number> } {\n const progress = React.useRef(new Animated.Value(0)).current;\n React.useEffect(() => {\n if (!enabled) return undefined;\n const loop = Animated.loop(\n Animated.timing(progress, {\n toValue: 1,\n duration: SWITCH_PULSE.ms,\n easing: Easing.inOut(Easing.ease),\n useNativeDriver: nativeDriver,\n }),\n );\n loop.start();\n return () => loop.stop();\n }, [enabled, progress]);\n if (!enabled) return {};\n return {\n opacity: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, SWITCH_PULSE.minOpacity, 1] }),\n scale: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, SWITCH_PULSE.minScale, 1] }),\n };\n}\n\n/** The wording the `label` variant prints inside the track, both halves at once. */\nfunction TrackLabels({\n theme,\n onText,\n offText,\n contrastText,\n}: {\n theme: UiTheme;\n onText?: string;\n offText?: string;\n contrastText: string;\n}): React.JSX.Element {\n const inset = theme.spacing(TRACK_LABEL.insetUnits);\n const base = {\n fontFamily: theme.typography.fontFamily,\n fontSize: TRACK_LABEL.fontSize,\n fontWeight: String(TRACK_LABEL.fontWeight) as 'normal',\n };\n return (\n <View style={styles.trackLabels}>\n <RNText style={[base, { color: contrastText, marginLeft: inset }]}>{onText ?? ''}</RNText>\n <RNText style={[base, { color: theme.palette.text.secondary, marginRight: inset }]}>\n {offText ?? ''}\n </RNText>\n </View>\n );\n}\n\n/**\n * One of the two icons overlaid on the track.\n *\n * The web centres a hidden icon on the track and pins a shown one to `left: 4`\n * (or `right: 4`) with a `translate(∓50%)` — which puts half of it outside the\n * track. Same arithmetic here, in px.\n */\nfunction SwitchIcon({\n icon,\n shown,\n animated,\n size,\n side,\n width,\n}: {\n icon: React.ReactNode;\n shown: boolean;\n animated: boolean;\n size: number;\n side: 'on' | 'off';\n width: number;\n}): React.JSX.Element {\n const half = size / 2;\n const offset = shown ? SWITCH_ICON.inset - half : width / 2 - half;\n return (\n <View\n style={[\n styles.icon,\n side === 'on' ? { left: offset } : { right: offset },\n {\n width: size,\n height: size,\n opacity: shown ? 1 : 0,\n transform: [{ translateY: -half }, { scale: shown && animated ? 1 : SWITCH_ICON.hiddenScale }],\n },\n ]}\n >\n {icon}\n </View>\n );\n}\n\ninterface ControlProps {\n props: ResolvedSwitchProps;\n theme: UiTheme;\n checked: boolean;\n inactive: boolean;\n onToggle: (event?: GestureResponderEvent) => void;\n rest: Record<string, unknown>;\n testID: string;\n}\n\n/**\n * The track, the thumb, and everything overlaid on them.\n *\n * The control carries its own NAME (FUT-1905). React Native has no `<label\n * for>` to wire the words beside it with, so the name has to be stated on the\n * pressable itself or the control announces as \"checkbox, checked\" and nothing\n * else — which is the defect the web half of this ticket fixed, still live\n * here. A caller's own `aria-label` wins, because a caller that wrote one meant\n * it to differ from the visible words.\n */\nfunction SwitchControl({ props, theme, checked, inactive, onToggle, rest, testID }: ControlProps): React.JSX.Element {\n const { variant, color, size, animated, loading, onIcon, offIcon, onText, offText } = props;\n const geometry: SwitchGeometry = geometryOf(size, props.trackWidth, props.trackHeight);\n const look = lookOf(variant);\n const palette = switchPalette(theme, color);\n const state: SwitchState = { checked, disabled: inactive };\n const paint: SwitchPaint = props;\n const { rest: restX, travel } = thumbTravel(look, geometry);\n const progress = useProgress(checked, animated);\n const pulse = usePulse(props.pulse && !loading);\n const iconSize = SWITCH_ICON_SIZES[size];\n\n return (\n <Pressable\n testID={testID}\n role=\"checkbox\"\n aria-label={(rest['aria-label'] as string | undefined) ?? props.label}\n aria-checked={checked}\n aria-disabled={inactive}\n disabled={inactive}\n onPress={onToggle}\n {...webKeyDown((event) => {\n if (event.key === ' ' || event.key === 'Spacebar') onToggle();\n })}\n style={{ width: geometry.width, height: geometry.height }}\n {...rest}\n >\n <View style={trackStyle(theme, paint, palette, geometry, look, state)} />\n {showsTrackLabels(variant, onText, offText) ? (\n <TrackLabels\n theme={theme}\n onText={onText}\n offText={offText}\n contrastText={checkedInk(paint, palette)}\n />\n ) : null}\n {onIcon == null ? null : (\n <SwitchIcon icon={onIcon} shown={checked} animated={animated} size={iconSize} side=\"on\" width={geometry.width} />\n )}\n {offIcon == null ? null : (\n <SwitchIcon icon={offIcon} shown={!checked} animated={animated} size={iconSize} side=\"off\" width={geometry.width} />\n )}\n <Animated.View\n style={[\n thumbStyle(theme, paint, palette, geometry, look, state),\n { top: geometry.padding, left: restX, opacity: pulse.opacity },\n {\n transform: [\n { translateX: progress.interpolate({ inputRange: [0, 1], outputRange: [0, travel] }) },\n ...(pulse.scale === undefined ? [] : [{ scale: pulse.scale }]),\n ],\n },\n ]}\n >\n {loading ? (\n <ActivityIndicator\n size={geometry.thumbSize * SWITCH_SPINNER.sizeRatio}\n color={palette.main}\n accessibilityLabel=\"loading\"\n />\n ) : null}\n </Animated.View>\n </Pressable>\n );\n}\n\n/** The label and its description, in the column beside (or above) the control. */\nfunction LabelBlock({\n theme,\n label,\n description,\n error,\n testID,\n}: {\n theme: UiTheme;\n label: string;\n description?: string;\n error: boolean;\n testID: string;\n}): React.JSX.Element {\n return (\n <View style={styles.labelBlock}>\n <RNText testID={testID} style={labelTextStyle(theme, error)}>\n {label}\n </RNText>\n {description === undefined ? null : (\n <RNText style={descriptionTextStyle(theme, error)}>{description}</RNText>\n )}\n </View>\n );\n}\n\n/** The row (or column) the label and the control share, per `labelPosition`. */\nfunction labelRowStyle(theme: UiTheme, position: string): ViewStyle {\n const stacked = position === 'top' || position === 'bottom';\n return {\n flexDirection: position === 'top' ? 'column' : position === 'bottom' ? 'column-reverse' : 'row',\n alignItems: stacked ? 'flex-start' : 'center',\n gap: theme.spacing(stacked ? LABEL_GAP_UNITS.stacked : LABEL_GAP_UNITS.beside),\n width: '100%',\n };\n}\n\n/**\n * The native `Switch`.\n *\n * React Native's own `Switch` is the platform control at the platform's size,\n * with no track geometry, no thumb radius and no room for an icon — so this\n * draws the track and the thumb itself, off the same table the web styles MUI\n * with, and takes `role=\"checkbox\"` with `aria-checked` for the state a hidden\n * `<input type=\"checkbox\">` carries on the web. See `NATIVE-NOTES.md`.\n */\nexport const Switch = React.forwardRef<View, SwitchProps>((rawProps, ref) => {\n const props = resolveSwitchProps(rawProps);\n const {\n label, description, labelPosition, error, helperText, loading, disabled,\n checked, defaultChecked, onChange, onClick, onPress, style, ...others\n } = props;\n\n const theme = useUiTheme();\n const [own, setOwn] = React.useState(defaultChecked ?? false);\n const current = checked ?? own;\n const inactive = loading || disabled;\n const rest = withoutSwitchProps(others);\n\n // A keyboard toggle has no gesture behind it, so `onClick`/`onPress` — which\n // are press handlers — only fire when there is a press to report.\n const toggle = (event?: GestureResponderEvent): void => {\n const next = !current;\n setOwn(next);\n onChange?.({ target: { checked: next } }, next);\n if (event === undefined) return;\n onClick?.(event);\n onPress?.(event);\n };\n\n const control = (\n <SwitchControl\n props={props}\n theme={theme}\n checked={current}\n inactive={inactive}\n onToggle={toggle}\n rest={rest}\n testID={resolveTestId(others, 'switch') ?? 'switch'}\n />\n );\n\n return (\n <View ref={ref} testID={childTestId(others, 'container', 'switch')} style={style}>\n {label === undefined ? (\n control\n ) : (\n <View style={labelRowStyle(theme, labelPosition)}>\n {labelPosition === 'start' ? control : null}\n <LabelBlock\n theme={theme}\n label={label}\n description={description}\n error={error}\n testID={childTestId(others, 'label', 'switch')}\n />\n {labelPosition === 'start' ? null : control}\n </View>\n )}\n {helperText === undefined ? null : (\n <RNText testID={childTestId(others, 'helper', 'switch')} style={helperTextStyle(theme, error)}>\n {helperText}\n </RNText>\n )}\n </View>\n );\n});\n\nSwitch.displayName = 'Switch';\n\nconst styles = StyleSheet.create({\n labelBlock: {\n flex: 1,\n },\n trackLabels: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n pointerEvents: 'none',\n },\n icon: {\n position: 'absolute',\n top: '50%',\n zIndex: 2,\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: 'none',\n },\n});\n","import type { SwitchBaseProps } from './Switch.base';\nimport { withDefaults } from '../../../utils/withDefaults';\n\ntype SwitchDefaultedKeys =\n | 'variant'\n | 'color'\n | 'size'\n | 'glow'\n | 'glass'\n | 'gradient'\n | 'labelPosition'\n | 'error'\n | 'animated'\n | 'loading'\n | 'ripple'\n | 'pulse'\n | 'disabled';\n\nexport type ResolvedSwitchProps<P extends SwitchBaseProps = SwitchBaseProps> = P &\n Required<Pick<SwitchBaseProps, SwitchDefaultedKeys>>;\n\n/** `Switch.tsx`'s own `DEFAULTS`, plus the `disabled` MUI would have defaulted. */\nconst SWITCH_DEFAULTS: Required<Pick<SwitchBaseProps, SwitchDefaultedKeys>> = {\n variant: 'default',\n color: 'primary',\n size: 'md',\n glow: false,\n glass: false,\n gradient: false,\n labelPosition: 'end',\n error: false,\n animated: true,\n loading: false,\n ripple: false,\n pulse: false,\n disabled: false,\n};\n\nexport const resolveSwitchProps = <P extends SwitchBaseProps>(props: P): ResolvedSwitchProps<P> =>\n withDefaults(props, SWITCH_DEFAULTS as Partial<P>) as ResolvedSwitchProps<P>;\n\n/**\n * Every prop the switch consumes itself.\n *\n * Listed so what is left over — `aria-label`, `aria-describedby`, an `id` — can\n * be spread onto the control without the component's own props riding along.\n * react-native-web would drop them and React Native ignore them, but a prop\n * that reaches an element it means nothing to is a prop nobody can explain.\n */\nexport const SWITCH_BASE_KEYS = [\n 'variant', 'color', 'size', 'label', 'description', 'glow', 'glass', 'gradient',\n 'labelPosition', 'onIcon', 'offIcon', 'onText', 'offText', 'error', 'helperText',\n 'trackWidth', 'trackHeight', 'animated', 'loading', 'ripple', 'pulse', 'disabled',\n 'testID', 'dataTestId', 'data-testid',\n] as const satisfies ReadonlyArray<keyof SwitchBaseProps | 'data-testid'>;\n\n/** `props` without any of them, for spreading onto the control. */\nexport function withoutSwitchProps(props: object): Record<string, unknown> {\n const own = new Set<string>(SWITCH_BASE_KEYS);\n return Object.fromEntries(Object.entries(props).filter(([key]) => !own.has(key)));\n}\n","import type { SwitchVariant } from './Switch.base';\nimport { alpha } from '../../../tokens/color';\nimport type { SizeValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Switch` RENDERERS DRAW WITH.\n *\n * `Switch.styles.ts` (web, emotion over MUI's `Switch`) and\n * `Switch.native.tsx` (React Native, drawing the track and thumb itself) read\n * this one table: the geometry per size, the four looks' radii and shadows,\n * the resting track colours, and the type the label, the description and the\n * helper are set in.\n *\n * Spacing is in SPACING UNITS where the web writes `theme.spacing(n)`;\n * everything else is px, a ratio or an alpha.\n */\n\n/** MUI's `palette.common.black`, which `UiTheme` does not carry. */\nexport const SWITCH_BLACK = '#000';\n\nexport interface SwitchGeometry {\n width: number;\n height: number;\n padding: number;\n thumbSize: number;\n}\n\nexport const SWITCH_SIZES: Record<SizeValue, SwitchGeometry> = {\n xs: { width: 34, height: 18, padding: 1, thumbSize: 14 },\n sm: { width: 42, height: 22, padding: 1, thumbSize: 18 },\n md: { width: 50, height: 26, padding: 1, thumbSize: 22 },\n lg: { width: 58, height: 30, padding: 2, thumbSize: 24 },\n xl: { width: 66, height: 34, padding: 2, thumbSize: 28 },\n};\n\n/** The four platform looks. `label` prints its wording on a `default` track. */\nexport type SwitchLook = 'ios' | 'android' | 'material' | 'default';\n\nexport const lookOf = (variant?: string): SwitchLook => {\n if (variant === 'ios') return 'ios';\n if (variant === 'android') return 'android';\n if (variant === 'material') return 'material';\n return 'default';\n};\n\n/** Track geometry once the caller's overrides and the size preset are combined. */\nexport const geometryOf = (size: SizeValue | undefined, width?: number, height?: number): SwitchGeometry => {\n const preset = SWITCH_SIZES[size as SizeValue] ?? SWITCH_SIZES.md;\n return { ...preset, width: width || preset.width, height: height || preset.height };\n};\n\n/**\n * The thumb's corner. `'50%'` is what the web emits; a renderer with no\n * percentage radius asks {@link thumbRadius} for the px instead.\n */\nexport const THUMB_RADIUS: Record<SwitchLook, (thumbSize: number) => number | string> = {\n ios: () => '50%',\n android: () => 4,\n material: (thumbSize) => thumbSize / 3,\n default: () => '50%',\n};\n\nexport const TRACK_RADIUS: Record<SwitchLook, (height: number) => number> = {\n ios: (height) => height / 2,\n android: (height) => height / 3,\n material: (height) => height / 2.5,\n default: (height) => height / 2,\n};\n\n/** The web's `'50%'` as the px a circle of this size needs. */\nexport const thumbRadius = (look: SwitchLook, thumbSize: number): number => {\n const radius = THUMB_RADIUS[look](thumbSize);\n return typeof radius === 'number' ? radius : thumbSize / 2;\n};\n\n/**\n * The elevation the thumb rests at per look — an INDEX into `theme.shadows`,\n * not the shadow itself, so a host that re-themes MUI's elevations keeps\n * moving the web. {@link MUI_SHADOWS} carries MUI's own values for the native\n * side, which has no `theme.shadows` to read.\n */\nexport const THUMB_ELEVATION: Record<SwitchLook, number> = { ios: 0, android: 3, material: 2, default: 2 };\n\nexport const MUI_SHADOWS: Record<number, string> = {\n 2: '0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)',\n 3: '0px 3px 3px -2px rgba(0,0,0,0.2),0px 3px 4px 0px rgba(0,0,0,0.14),0px 1px 8px 0px rgba(0,0,0,0.12)',\n};\n\n/** The iOS thumb's own three-layer shadow, which the web writes out literally. */\nexport const IOS_THUMB_SHADOW = `0 3px 1px 0 ${alpha(SWITCH_BLACK, 0.04)}, 0 3px 8px 0 ${alpha(SWITCH_BLACK, 0.12)}, 0 1px 0 0 ${alpha(SWITCH_BLACK, 0.08)}`;\n\n/** The iOS track's inset hairline. */\nexport const iosTrackShadow = (): string =>\n `inset 0 0 0 0.5px ${alpha(SWITCH_BLACK, 0.1)}, inset 0 2px 3px ${alpha(SWITCH_BLACK, 0.12)}`;\n\n/** The resting track: a black wash on iOS, the disabled ink elsewhere. */\nexport const TRACK_ALPHA = { ios: 0.1, android: 0.2, other: 0.3 } as const;\n\n/**\n * `black` is MUI's `palette.common.black` on the web and {@link SWITCH_BLACK}\n * on native, whose theme has no `common` — the same `#000` either way, passed\n * in rather than assumed so a host that themes it still moves the web.\n */\nexport const trackColor = (ink: { black: string; disabled: string }, look: SwitchLook): string => {\n if (look === 'ios') return alpha(ink.black, TRACK_ALPHA.ios);\n const strength = look === 'android' ? TRACK_ALPHA.android : TRACK_ALPHA.other;\n return alpha(ink.disabled, strength);\n};\n\n/** How far the thumb travels, and where it starts. iOS insets differently. */\nexport const thumbTravel = (look: SwitchLook, geometry: SwitchGeometry): { rest: number; travel: number } => {\n const { width, thumbSize, padding } = geometry;\n if (look === 'ios') {\n // The web nudges the whole switch base 2px right and shortens the trip.\n return { rest: padding + IOS_BASE_OFFSET, travel: width - thumbSize - IOS_TRAVEL_INSET };\n }\n return { rest: padding, travel: width - thumbSize - padding * 2 };\n};\n\nexport const IOS_BASE_OFFSET = 2;\nexport const IOS_TRAVEL_INSET = 4;\n\n/** MUI's 300ms `cubic-bezier(0.4, 0, 0.2, 1)`, on everything the switch moves. */\nexport const SWITCH_TRANSITION = { ms: 300, easing: 'cubic-bezier(0.4, 0, 0.2, 1)' } as const;\n\n/** The disabled treatment: the thumb greys and the track fades. */\nexport const DISABLED = { trackOpacity: 0.3, checkedTrackOpacity: 0.5, thumbGrey: 100 } as const;\n\n/** `glass`: a paper wash under a blur, inside a faint divider hairline. */\nexport const SWITCH_GLASS = {\n trackAlpha: 0.1,\n thumbAlpha: 0.9,\n borderAlpha: 0.2,\n trackBlur: 20,\n thumbBlur: 10,\n} as const;\n\n/** `gradient`: the checked track runs light → main → dark; the resting one is fainter. */\nexport const SWITCH_GRADIENT = {\n checked: { angleDeg: 90, stops: [0, 50, 100] },\n resting: { angleDeg: 135, lightAlpha: 0.3, mainAlpha: 0.2 },\n shimmerMs: 3000,\n} as const;\n\n/** `glow`: a halo of the hue around the checked track, breathing every two seconds. */\nexport const SWITCH_GLOW = { blur: 10, alpha: 0.6, insetBlur: 10, insetAlpha: 0.2, ms: 2000 } as const;\n\n/** `pulse`: the thumb breathes; `ripple`: a wash of the hue expands under the pointer. */\nexport const SWITCH_PULSE = { ms: 2000, minOpacity: 0.7, minScale: 0.95 } as const;\nexport const SWITCH_RIPPLE = { alpha: 0.2, ms: 600, scale: 2 } as const;\n\n/** `loading`: a 2px ring inside the thumb, turning once a second. */\nexport const SWITCH_SPINNER = { sizeRatio: 0.6, borderWidth: 2, ms: 1000 } as const;\n\n/** The two icons overlaid on the track, at their own size per step of the scale. */\nexport const SWITCH_ICON_SIZES: Record<SizeValue, number> = { xs: 12, sm: 14, md: 16, lg: 18, xl: 20 };\n/** Where a shown icon sits, and how small a hidden one is drawn. */\nexport const SWITCH_ICON = { inset: 4, hiddenScale: 0.8 } as const;\n\n/** The wording the `label` variant prints inside the track: 0.75rem at 500, 8px in. */\nexport const TRACK_LABEL = { fontSize: 12, fontWeight: 500, insetUnits: 1 } as const;\n\n/** MUI's `body2` for the label, `caption` for the description and the helper text. */\nexport const SWITCH_LABEL = { fontSize: 14, lineHeight: 1.43, fontWeight: 500 } as const;\nexport const SWITCH_DESCRIPTION = { fontSize: 12, lineHeight: 1.66, marginTopUnits: 0.5 } as const;\nexport const SWITCH_HELPER = { fontSize: 12, lineHeight: 1.66, marginTopUnits: 1 } as const;\n\n/** The label row: 16px from the control beside it, 8px above or below it. */\nexport const LABEL_GAP_UNITS = { beside: 2, stacked: 1 } as const;\n\n/**\n * The minimum height of a touch target, in px (FUT-1905).\n *\n * No entry in {@link SWITCH_SIZES} reaches it — `xl`, the largest, is 34px tall\n * and `md` is 26 — so a consumer cannot buy a legal target by passing a bigger\n * `size`. The label is what clears it: see `SwitchLabel` in `Switch.parts.tsx`.\n */\nexport const TAP_TARGET_MIN = 40;\n\n/**\n * `neutral`'s three greys, and the literals the web falls back to for a theme\n * whose grey ramp omits a step. Same three steps `Button` draws its neutral\n * from.\n */\nexport const NEUTRAL_GREY = { main: 700, dark: 800, light: 500 } as const;\nexport const NEUTRAL_FALLBACK = { main: '#616161', dark: '#424242', light: '#9e9e9e' } as const;\nexport const NEUTRAL_CONTRAST = '#fff';\n\n/**\n * The RESTING thumb — the knob while the switch is off (FUT-1924).\n *\n * It stays white, and the reason is worth stating because the checked thumb no\n * longer is: the resting track is `theme.palette.action.disabled` washed over\n * the page, which no tenant picks, and a white knob on it is the conventional\n * look in both modes. The CHECKED track is `palette.main`, a colour the tenant\n * does pick, and that is where a stated white was a defect. See `checkedInk`\n * in `Switch.styles.ts` and its native twin.\n */\nexport const RESTING_THUMB = '#fff';\n\n/** Hover: the thumb lifts a shade and takes a halo of the hue. */\nexport const SWITCH_HOVER = { thumbScale: 1.05, elevation: 4, blur: 12, alpha: 0.2 } as const;\n\n/** Focus: MUI rings the thumb rather than moving it. */\nexport const SWITCH_FOCUS_RING = { width: 6, alpha: 0.2 } as const;\n\n/** A duration as the CSS the web has always emitted: `2000` → `2s`. */\nexport const seconds = (ms: number): string => `${ms / 1000}s`;\n\n/** Whether this variant prints its wording inside the track. */\nexport const showsTrackLabels = (variant: SwitchVariant | undefined, onText?: string, offText?: string): boolean =>\n variant === 'label' && Boolean(onText ?? offText);\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport type { SwitchBaseProps } from './Switch.base';\nimport {\n DISABLED,\n IOS_THUMB_SHADOW,\n MUI_SHADOWS,\n NEUTRAL_CONTRAST,\n RESTING_THUMB,\n NEUTRAL_FALLBACK,\n NEUTRAL_GREY,\n SWITCH_BLACK,\n SWITCH_DESCRIPTION,\n SWITCH_GLASS,\n SWITCH_GLOW,\n SWITCH_GRADIENT,\n SWITCH_HELPER,\n SWITCH_LABEL,\n THUMB_ELEVATION,\n TRACK_RADIUS,\n thumbRadius,\n trackColor,\n type SwitchGeometry,\n type SwitchLook,\n} from './Switch.metrics';\nimport { alpha } from '../../../tokens/color';\nimport { inkOver } from '../../../tokens/theme';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/**\n * WHAT A NATIVE `Switch` PAINTS.\n *\n * The web hands MUI's `Switch` a style object and MUI draws the track and the\n * thumb; React Native has no such control at this size, so the native half\n * draws both itself — from this file, off the same table.\n */\nexport interface SwitchPalette {\n main: string;\n dark: string;\n light: string;\n contrastText: string;\n}\n\nexport interface SwitchState {\n checked: boolean;\n disabled: boolean;\n}\n\n/** The web's `getColorFromTheme`: `danger` is the error palette, `neutral` three greys. */\nexport function switchPalette(theme: UiTheme, color: ColorValue): SwitchPalette {\n if (color === 'neutral') {\n return {\n main: theme.palette.grey[NEUTRAL_GREY.main] || NEUTRAL_FALLBACK.main,\n dark: theme.palette.grey[NEUTRAL_GREY.dark] || NEUTRAL_FALLBACK.dark,\n light: theme.palette.grey[NEUTRAL_GREY.light] || NEUTRAL_FALLBACK.light,\n contrastText: NEUTRAL_CONTRAST,\n };\n }\n const palette = theme.palette[color];\n return {\n main: palette.main,\n dark: palette.dark,\n light: palette.light,\n contrastText: palette.contrastText || NEUTRAL_CONTRAST,\n };\n}\n\n/** Which of the switch's own flags change how it paints. */\nexport type SwitchFlagKeys = 'glow' | 'glass' | 'gradient' | 'loading' | 'pulse';\nexport type SwitchPaint = Pick<SwitchBaseProps, SwitchFlagKeys>;\n\n/**\n * The bar behind the thumb.\n *\n * `gradient` paints the gradient's FIRST stop flat — React Native core has no\n * gradient fill — and `glass` its paper wash without the blur.\n */\nexport function trackStyle(\n theme: UiTheme,\n paint: SwitchPaint,\n palette: SwitchPalette,\n geometry: SwitchGeometry,\n look: SwitchLook,\n state: SwitchState,\n): ViewStyle {\n const base: ViewStyle = {\n ...StyleSheetAbsoluteFill,\n borderRadius: TRACK_RADIUS[look](geometry.height),\n backgroundColor: state.checked\n ? palette.main\n : trackColor({ black: SWITCH_BLACK, disabled: theme.palette.action.disabled }, look),\n opacity: disabledTrackOpacity(state),\n };\n\n if (paint.glass) {\n return {\n ...base,\n backgroundColor: alpha(theme.palette.background.paper, SWITCH_GLASS.trackAlpha),\n borderWidth: 1,\n borderColor: alpha(theme.palette.divider, SWITCH_GLASS.borderAlpha),\n };\n }\n if (paint.gradient) {\n return { ...base, backgroundColor: gradientFirstStop(palette, state.checked) };\n }\n if (paint.glow && state.checked) {\n return {\n ...base,\n boxShadow: `0 0 ${SWITCH_GLOW.blur}px ${alpha(palette.main, SWITCH_GLOW.alpha)}, inset 0 0 ${SWITCH_GLOW.insetBlur}px ${alpha(palette.main, SWITCH_GLOW.insetAlpha)}`,\n };\n }\n return base;\n}\n\n/**\n * The ink on the CHECKED track — the thumb, and the `on` wording (FUT-1924).\n *\n * Both halves of the component had a stated `#fff` here, and the checked track\n * is the one surface a tenant chooses: a pale brand got a white knob on a pale\n * bar, which reads as OFF while it is on.\n *\n * **The fills are THIS renderer's, not the web's, and they differ.** The web\n * paints a real three-stop gradient and hands `checkedInk` all three\n * (`Switch.styles.ts`); React Native has no gradient without a dependency, so\n * `trackStyle` shows `gradientFirstStop` — `palette.light`, FLAT — and\n * `NATIVE-NOTES.md` records that as a known divergence. Passing the web's set\n * here would judge the ink against two fills native never draws, and the two\n * renderers then disagree on the same palette: measured on `#00897b`, the web\n * answers white and this answered dark ink, because `main` and `dark` were in\n * the list and only `light` is on screen.\n *\n * So the gradient case is ONE fill, which is the one it paints.\n */\nexport function checkedInk(paint: SwitchPaint, palette: SwitchPalette): string {\n const fills = [paint.gradient ? palette.light || palette.main : palette.main];\n\n return inkOver(fills, palette.contrastText || NEUTRAL_CONTRAST);\n}\n\n/** The web's two gradients, at the stop a flat fill can show. */\nfunction gradientFirstStop(palette: SwitchPalette, checked: boolean): string {\n if (checked) return palette.light || palette.main;\n return alpha(palette.light || palette.main, SWITCH_GRADIENT.resting.lightAlpha);\n}\n\nconst disabledTrackOpacity = (state: SwitchState): number => {\n if (!state.disabled) return 1;\n return state.checked ? DISABLED.checkedTrackOpacity : DISABLED.trackOpacity;\n};\n\n/** React Native has no `StyleSheet.absoluteFillObject` constant worth importing for four keys. */\nconst StyleSheetAbsoluteFill = { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 } as const;\n\n/** Disabled greys out; checked takes the track's ink; resting stays white. */\nfunction thumbFill(\n paint: SwitchPaint,\n palette: SwitchPalette,\n state: SwitchState,\n theme: UiTheme,\n): string {\n if (state.disabled) return theme.palette.grey[DISABLED.thumbGrey] ?? RESTING_THUMB;\n return state.checked ? checkedInk(paint, palette) : RESTING_THUMB;\n}\n\n/**\n * The knob: round for iOS and the default, squarer for Android and Material.\n * White while resting, the checked track's own ink once on — see\n * {@link RESTING_THUMB} and {@link checkedInk}.\n */\nexport function thumbStyle(\n theme: UiTheme,\n paint: SwitchPaint,\n palette: SwitchPalette,\n geometry: SwitchGeometry,\n look: SwitchLook,\n state: SwitchState,\n): ViewStyle {\n const base: ViewStyle = {\n position: 'absolute',\n width: geometry.thumbSize,\n height: geometry.thumbSize,\n borderRadius: thumbRadius(look, geometry.thumbSize),\n backgroundColor: thumbFill(paint, palette, state, theme),\n boxShadow: look === 'ios' ? IOS_THUMB_SHADOW : (MUI_SHADOWS[THUMB_ELEVATION[look]] ?? 'none'),\n alignItems: 'center',\n justifyContent: 'center',\n };\n\n if (!paint.glass) return base;\n return {\n ...base,\n backgroundColor: alpha(theme.palette.background.paper, SWITCH_GLASS.thumbAlpha),\n borderWidth: 1,\n borderColor: alpha(theme.palette.divider, SWITCH_GLASS.borderAlpha),\n };\n}\n\n/** MUI's `body2` at 500, in the error hue when the row is in error. */\nexport function labelTextStyle(theme: UiTheme, error: boolean): TextStyle {\n return {\n color: error ? theme.palette.danger.main : theme.palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n fontSize: SWITCH_LABEL.fontSize,\n lineHeight: SWITCH_LABEL.fontSize * SWITCH_LABEL.lineHeight,\n fontWeight: String(SWITCH_LABEL.fontWeight) as TextStyle['fontWeight'],\n };\n}\n\n/** MUI's `caption`, 4px under the label. */\nexport function descriptionTextStyle(theme: UiTheme, error: boolean): TextStyle {\n return {\n color: error ? theme.palette.danger.main : theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontSize: SWITCH_DESCRIPTION.fontSize,\n lineHeight: SWITCH_DESCRIPTION.fontSize * SWITCH_DESCRIPTION.lineHeight,\n marginTop: theme.spacing(SWITCH_DESCRIPTION.marginTopUnits),\n };\n}\n\n/** `FormHelperText`, 8px under the whole control. */\nexport function helperTextStyle(theme: UiTheme, error: boolean): TextStyle {\n return {\n color: error ? theme.palette.danger.main : theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontSize: SWITCH_HELPER.fontSize,\n lineHeight: SWITCH_HELPER.fontSize * SWITCH_HELPER.lineHeight,\n marginTop: theme.spacing(SWITCH_HELPER.marginTopUnits),\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/form/Switch/Switch.native.tsx","../../../src/components/form/Switch/Switch.helpers.ts","../../../src/components/form/Switch/Switch.metrics.ts","../../../src/components/form/Switch/Switch.look.native.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n ActivityIndicator,\n Animated,\n Easing,\n Platform,\n Pressable,\n StyleSheet,\n Text as RNText,\n View,\n type GestureResponderEvent,\n type ViewStyle,\n} from 'react-native';\n\nimport { resolveSwitchProps, withoutSwitchProps, type ResolvedSwitchProps } from './Switch.helpers';\nimport {\n descriptionTextStyle,\n helperTextStyle,\n labelTextStyle,\n checkedInk,\n switchPalette,\n thumbStyle,\n trackStyle,\n type SwitchPaint,\n type SwitchState,\n} from './Switch.look.native';\nimport {\n LABEL_GAP_UNITS,\n SWITCH_ICON,\n SWITCH_ICON_SIZES,\n SWITCH_PULSE,\n SWITCH_SPINNER,\n SWITCH_TRANSITION,\n TRACK_LABEL,\n geometryOf,\n lookOf,\n showsTrackLabels,\n thumbTravel,\n type SwitchGeometry,\n} from './Switch.metrics';\nimport type { SwitchProps } from './Switch.types.native';\nimport { webKeyDown } from '../../../platform/aria';\nimport { childTestId, resolveTestId } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { UiTheme } from '../../../tokens/theme';\n\nconst nativeDriver = Platform.OS !== 'web';\n\n/** A 0→1 value that follows `on`, over MUI's 300ms curve unless animation is off. */\nfunction useProgress(on: boolean, animated: boolean): Animated.Value {\n const progress = React.useRef(new Animated.Value(on ? 1 : 0)).current;\n React.useEffect(() => {\n const timing = Animated.timing(progress, {\n toValue: on ? 1 : 0,\n duration: animated ? SWITCH_TRANSITION.ms : 0,\n easing: Easing.bezier(0.4, 0, 0.2, 1),\n useNativeDriver: nativeDriver,\n });\n timing.start();\n return () => timing.stop();\n }, [on, animated, progress]);\n return progress;\n}\n\n/** The web's `pulseAnimation` on the thumb: it breathes to 0.7 and 0.95 and back. */\nfunction usePulse(enabled: boolean): { opacity?: Animated.AnimatedInterpolation<number>; scale?: Animated.AnimatedInterpolation<number> } {\n const progress = React.useRef(new Animated.Value(0)).current;\n React.useEffect(() => {\n if (!enabled) return undefined;\n const loop = Animated.loop(\n Animated.timing(progress, {\n toValue: 1,\n duration: SWITCH_PULSE.ms,\n easing: Easing.inOut(Easing.ease),\n useNativeDriver: nativeDriver,\n }),\n );\n loop.start();\n return () => loop.stop();\n }, [enabled, progress]);\n if (!enabled) return {};\n return {\n opacity: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, SWITCH_PULSE.minOpacity, 1] }),\n scale: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, SWITCH_PULSE.minScale, 1] }),\n };\n}\n\n/** The wording the `label` variant prints inside the track, both halves at once. */\nfunction TrackLabels({\n theme,\n onText,\n offText,\n contrastText,\n}: {\n theme: UiTheme;\n onText?: string;\n offText?: string;\n contrastText: string;\n}): React.JSX.Element {\n const inset = theme.spacing(TRACK_LABEL.insetUnits);\n const base = {\n fontFamily: theme.typography.fontFamily,\n fontSize: TRACK_LABEL.fontSize,\n fontWeight: String(TRACK_LABEL.fontWeight) as 'normal',\n };\n return (\n <View style={styles.trackLabels}>\n <RNText style={[base, { color: contrastText, marginLeft: inset }]}>{onText ?? ''}</RNText>\n <RNText style={[base, { color: theme.palette.text.secondary, marginRight: inset }]}>\n {offText ?? ''}\n </RNText>\n </View>\n );\n}\n\n/**\n * One of the two icons overlaid on the track.\n *\n * The web centres a hidden icon on the track and pins a shown one to `left: 4`\n * (or `right: 4`) with a `translate(∓50%)` — which puts half of it outside the\n * track. Same arithmetic here, in px.\n */\nfunction SwitchIcon({\n icon,\n shown,\n animated,\n size,\n side,\n width,\n}: {\n icon: React.ReactNode;\n shown: boolean;\n animated: boolean;\n size: number;\n side: 'on' | 'off';\n width: number;\n}): React.JSX.Element {\n const half = size / 2;\n const offset = shown ? SWITCH_ICON.inset - half : width / 2 - half;\n return (\n <View\n style={[\n styles.icon,\n side === 'on' ? { left: offset } : { right: offset },\n {\n width: size,\n height: size,\n opacity: shown ? 1 : 0,\n transform: [{ translateY: -half }, { scale: shown && animated ? 1 : SWITCH_ICON.hiddenScale }],\n },\n ]}\n >\n {icon}\n </View>\n );\n}\n\ninterface ControlProps {\n props: ResolvedSwitchProps;\n theme: UiTheme;\n checked: boolean;\n inactive: boolean;\n onToggle: (event?: GestureResponderEvent) => void;\n rest: Record<string, unknown>;\n testID: string;\n}\n\n/**\n * The track, the thumb, and everything overlaid on them.\n *\n * The control carries its own NAME (FUT-1905). React Native has no `<label\n * for>` to wire the words beside it with, so the name has to be stated on the\n * pressable itself or the control announces as \"checkbox, checked\" and nothing\n * else — which is the defect the web half of this ticket fixed, still live\n * here. A caller's own `aria-label` wins, because a caller that wrote one meant\n * it to differ from the visible words.\n */\nfunction SwitchControl({ props, theme, checked, inactive, onToggle, rest, testID }: ControlProps): React.JSX.Element {\n const { variant, color, size, animated, loading, onIcon, offIcon, onText, offText } = props;\n const geometry: SwitchGeometry = geometryOf(size, props.trackWidth, props.trackHeight);\n const look = lookOf(variant);\n const palette = switchPalette(theme, color);\n const state: SwitchState = { checked, disabled: inactive };\n const paint: SwitchPaint = props;\n const { rest: restX, travel } = thumbTravel(look, geometry);\n const progress = useProgress(checked, animated);\n const pulse = usePulse(props.pulse && !loading);\n const iconSize = SWITCH_ICON_SIZES[size];\n\n return (\n <Pressable\n testID={testID}\n role=\"checkbox\"\n aria-label={(rest['aria-label'] as string | undefined) ?? props.label}\n aria-checked={checked}\n aria-disabled={inactive}\n disabled={inactive}\n onPress={onToggle}\n {...webKeyDown((event) => {\n if (event.key === ' ' || event.key === 'Spacebar') onToggle();\n })}\n style={{ width: geometry.width, height: geometry.height }}\n {...rest}\n >\n <View style={trackStyle(theme, paint, palette, geometry, look, state)} />\n {showsTrackLabels(variant, onText, offText) ? (\n <TrackLabels\n theme={theme}\n onText={onText}\n offText={offText}\n contrastText={checkedInk(paint, palette)}\n />\n ) : null}\n {onIcon == null ? null : (\n <SwitchIcon icon={onIcon} shown={checked} animated={animated} size={iconSize} side=\"on\" width={geometry.width} />\n )}\n {offIcon == null ? null : (\n <SwitchIcon icon={offIcon} shown={!checked} animated={animated} size={iconSize} side=\"off\" width={geometry.width} />\n )}\n <Animated.View\n style={[\n thumbStyle(theme, paint, palette, geometry, look, state),\n { top: geometry.padding, left: restX, opacity: pulse.opacity },\n {\n transform: [\n { translateX: progress.interpolate({ inputRange: [0, 1], outputRange: [0, travel] }) },\n ...(pulse.scale === undefined ? [] : [{ scale: pulse.scale }]),\n ],\n },\n ]}\n >\n {loading ? (\n <ActivityIndicator\n size={geometry.thumbSize * SWITCH_SPINNER.sizeRatio}\n color={palette.main}\n accessibilityLabel=\"loading\"\n />\n ) : null}\n </Animated.View>\n </Pressable>\n );\n}\n\n/** The label and its description, in the column beside (or above) the control. */\nfunction LabelBlock({\n theme,\n label,\n description,\n error,\n testID,\n}: {\n theme: UiTheme;\n label: string;\n description?: string;\n error: boolean;\n testID: string;\n}): React.JSX.Element {\n return (\n <View style={styles.labelBlock}>\n <RNText testID={testID} style={labelTextStyle(theme, error)}>\n {label}\n </RNText>\n {description === undefined ? null : (\n <RNText style={descriptionTextStyle(theme, error)}>{description}</RNText>\n )}\n </View>\n );\n}\n\n/** The row (or column) the label and the control share, per `labelPosition`. */\nfunction labelRowStyle(theme: UiTheme, position: string): ViewStyle {\n const stacked = position === 'top' || position === 'bottom';\n return {\n flexDirection: position === 'top' ? 'column' : position === 'bottom' ? 'column-reverse' : 'row',\n alignItems: stacked ? 'flex-start' : 'center',\n gap: theme.spacing(stacked ? LABEL_GAP_UNITS.stacked : LABEL_GAP_UNITS.beside),\n width: '100%',\n };\n}\n\n/**\n * The native `Switch`.\n *\n * React Native's own `Switch` is the platform control at the platform's size,\n * with no track geometry, no thumb radius and no room for an icon — so this\n * draws the track and the thumb itself, off the same table the web styles MUI\n * with, and takes `role=\"checkbox\"` with `aria-checked` for the state a hidden\n * `<input type=\"checkbox\">` carries on the web. See `NATIVE-NOTES.md`.\n */\nexport const Switch = React.forwardRef<View, SwitchProps>((rawProps, ref) => {\n const props = resolveSwitchProps(rawProps);\n const {\n label, description, labelPosition, error, helperText, loading, disabled,\n checked, defaultChecked, onChange, onClick, onPress, style, ...others\n } = props;\n\n const theme = useUiTheme();\n const [own, setOwn] = React.useState(defaultChecked ?? false);\n const current = checked ?? own;\n const inactive = loading || disabled;\n const rest = withoutSwitchProps(others);\n\n // A keyboard toggle has no gesture behind it, so `onClick`/`onPress` — which\n // are press handlers — only fire when there is a press to report.\n const toggle = (event?: GestureResponderEvent): void => {\n const next = !current;\n setOwn(next);\n onChange?.({ target: { checked: next } }, next);\n if (event === undefined) return;\n onClick?.(event);\n onPress?.(event);\n };\n\n const control = (\n <SwitchControl\n props={props}\n theme={theme}\n checked={current}\n inactive={inactive}\n onToggle={toggle}\n rest={rest}\n testID={resolveTestId(others, 'switch') ?? 'switch'}\n />\n );\n\n return (\n <View ref={ref} testID={childTestId(others, 'container', 'switch')} style={style}>\n {label === undefined ? (\n control\n ) : (\n <View style={labelRowStyle(theme, labelPosition)}>\n {labelPosition === 'start' ? control : null}\n <LabelBlock\n theme={theme}\n label={label}\n description={description}\n error={error}\n testID={childTestId(others, 'label', 'switch')}\n />\n {labelPosition === 'start' ? null : control}\n </View>\n )}\n {helperText === undefined ? null : (\n <RNText testID={childTestId(others, 'helper', 'switch')} style={helperTextStyle(theme, error)}>\n {helperText}\n </RNText>\n )}\n </View>\n );\n});\n\nSwitch.displayName = 'Switch';\n\nconst styles = StyleSheet.create({\n labelBlock: {\n flex: 1,\n },\n trackLabels: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n pointerEvents: 'none',\n },\n icon: {\n position: 'absolute',\n top: '50%',\n zIndex: 2,\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: 'none',\n },\n});\n","import type { SwitchBaseProps } from './Switch.base';\nimport { withDefaults } from '../../../utils/withDefaults';\n\ntype SwitchDefaultedKeys =\n | 'variant'\n | 'color'\n | 'size'\n | 'glow'\n | 'glass'\n | 'gradient'\n | 'labelPosition'\n | 'error'\n | 'animated'\n | 'loading'\n | 'ripple'\n | 'pulse'\n | 'disabled';\n\nexport type ResolvedSwitchProps<P extends SwitchBaseProps = SwitchBaseProps> = P &\n Required<Pick<SwitchBaseProps, SwitchDefaultedKeys>>;\n\n/** `Switch.tsx`'s own `DEFAULTS`, plus the `disabled` MUI would have defaulted. */\nconst SWITCH_DEFAULTS: Required<Pick<SwitchBaseProps, SwitchDefaultedKeys>> = {\n variant: 'default',\n color: 'primary',\n size: 'md',\n glow: false,\n glass: false,\n gradient: false,\n labelPosition: 'end',\n error: false,\n animated: true,\n loading: false,\n ripple: false,\n pulse: false,\n disabled: false,\n};\n\nexport const resolveSwitchProps = <P extends SwitchBaseProps>(props: P): ResolvedSwitchProps<P> =>\n withDefaults(props, SWITCH_DEFAULTS as Partial<P>) as ResolvedSwitchProps<P>;\n\n/**\n * Every prop the switch consumes itself.\n *\n * Listed so what is left over — `aria-label`, `aria-describedby`, an `id` — can\n * be spread onto the control without the component's own props riding along.\n * react-native-web would drop them and React Native ignore them, but a prop\n * that reaches an element it means nothing to is a prop nobody can explain.\n */\nexport const SWITCH_BASE_KEYS = [\n 'variant', 'color', 'size', 'label', 'description', 'glow', 'glass', 'gradient',\n 'labelPosition', 'onIcon', 'offIcon', 'onText', 'offText', 'error', 'helperText',\n 'trackWidth', 'trackHeight', 'animated', 'loading', 'ripple', 'pulse', 'disabled',\n 'testID', 'dataTestId', 'data-testid',\n] as const satisfies ReadonlyArray<keyof SwitchBaseProps | 'data-testid'>;\n\n/** `props` without any of them, for spreading onto the control. */\nexport function withoutSwitchProps(props: object): Record<string, unknown> {\n const own = new Set<string>(SWITCH_BASE_KEYS);\n return Object.fromEntries(Object.entries(props).filter(([key]) => !own.has(key)));\n}\n","import type { SwitchVariant } from './Switch.base';\nimport { alpha } from '../../../tokens/color';\nimport { ABSOLUTE_INK, ELEVATION_SHADOWS, NEUTRAL_RAMP } from '../../../tokens/ink.core';\nimport type { SizeValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Switch` RENDERERS DRAW WITH.\n *\n * `Switch.styles.ts` (web, emotion over MUI's `Switch`) and\n * `Switch.native.tsx` (React Native, drawing the track and thumb itself) read\n * this one table: the geometry per size, the four looks' radii and shadows,\n * the resting track colours, and the type the label, the description and the\n * helper are set in.\n *\n * Spacing is in SPACING UNITS where the web writes `theme.spacing(n)`;\n * everything else is px, a ratio or an alpha.\n */\n\n/** MUI's `palette.common.black`, which `UiTheme` does not carry. */\nexport const SWITCH_BLACK = ABSOLUTE_INK.black;\n\nexport interface SwitchGeometry {\n width: number;\n height: number;\n padding: number;\n thumbSize: number;\n}\n\nexport const SWITCH_SIZES: Record<SizeValue, SwitchGeometry> = {\n xs: { width: 34, height: 18, padding: 1, thumbSize: 14 },\n sm: { width: 42, height: 22, padding: 1, thumbSize: 18 },\n md: { width: 50, height: 26, padding: 1, thumbSize: 22 },\n lg: { width: 58, height: 30, padding: 2, thumbSize: 24 },\n xl: { width: 66, height: 34, padding: 2, thumbSize: 28 },\n};\n\n/** The four platform looks. `label` prints its wording on a `default` track. */\nexport type SwitchLook = 'ios' | 'android' | 'material' | 'default';\n\nexport const lookOf = (variant?: string): SwitchLook => {\n if (variant === 'ios') return 'ios';\n if (variant === 'android') return 'android';\n if (variant === 'material') return 'material';\n return 'default';\n};\n\n/** Track geometry once the caller's overrides and the size preset are combined. */\nexport const geometryOf = (size: SizeValue | undefined, width?: number, height?: number): SwitchGeometry => {\n const preset = SWITCH_SIZES[size as SizeValue] ?? SWITCH_SIZES.md;\n return { ...preset, width: width || preset.width, height: height || preset.height };\n};\n\n/**\n * The thumb's corner. `'50%'` is what the web emits; a renderer with no\n * percentage radius asks {@link thumbRadius} for the px instead.\n */\nexport const THUMB_RADIUS: Record<SwitchLook, (thumbSize: number) => number | string> = {\n ios: () => '50%',\n android: () => 4,\n material: (thumbSize) => thumbSize / 3,\n default: () => '50%',\n};\n\nexport const TRACK_RADIUS: Record<SwitchLook, (height: number) => number> = {\n ios: (height) => height / 2,\n android: (height) => height / 3,\n material: (height) => height / 2.5,\n default: (height) => height / 2,\n};\n\n/** The web's `'50%'` as the px a circle of this size needs. */\nexport const thumbRadius = (look: SwitchLook, thumbSize: number): number => {\n const radius = THUMB_RADIUS[look](thumbSize);\n return typeof radius === 'number' ? radius : thumbSize / 2;\n};\n\n/**\n * The elevation the thumb rests at per look — an INDEX into `theme.shadows`,\n * not the shadow itself, so a host that re-themes MUI's elevations keeps\n * moving the web. {@link MUI_SHADOWS} carries MUI's own values for the native\n * side, which has no `theme.shadows` to read.\n */\nexport const THUMB_ELEVATION: Record<SwitchLook, number> = { ios: 0, android: 3, material: 2, default: 2 };\n\nexport const MUI_SHADOWS: Record<number, string> = {\n 2: ELEVATION_SHADOWS[2],\n 3: ELEVATION_SHADOWS[3],\n};\n\n/** The iOS thumb's own three-layer shadow, which the web writes out literally. */\nexport const IOS_THUMB_SHADOW = `0 3px 1px 0 ${alpha(SWITCH_BLACK, 0.04)}, 0 3px 8px 0 ${alpha(SWITCH_BLACK, 0.12)}, 0 1px 0 0 ${alpha(SWITCH_BLACK, 0.08)}`;\n\n/** The iOS track's inset hairline. */\nexport const iosTrackShadow = (): string =>\n `inset 0 0 0 0.5px ${alpha(SWITCH_BLACK, 0.1)}, inset 0 2px 3px ${alpha(SWITCH_BLACK, 0.12)}`;\n\n/** The resting track: a black wash on iOS, the disabled ink elsewhere. */\nexport const TRACK_ALPHA = { ios: 0.1, android: 0.2, other: 0.3 } as const;\n\n/**\n * `black` is MUI's `palette.common.black` on the web and {@link SWITCH_BLACK}\n * on native, whose theme has no `common` — the same `#000` either way, passed\n * in rather than assumed so a host that themes it still moves the web.\n */\nexport const trackColor = (ink: { black: string; disabled: string }, look: SwitchLook): string => {\n if (look === 'ios') return alpha(ink.black, TRACK_ALPHA.ios);\n const strength = look === 'android' ? TRACK_ALPHA.android : TRACK_ALPHA.other;\n return alpha(ink.disabled, strength);\n};\n\n/** How far the thumb travels, and where it starts. iOS insets differently. */\nexport const thumbTravel = (look: SwitchLook, geometry: SwitchGeometry): { rest: number; travel: number } => {\n const { width, thumbSize, padding } = geometry;\n if (look === 'ios') {\n // The web nudges the whole switch base 2px right and shortens the trip.\n return { rest: padding + IOS_BASE_OFFSET, travel: width - thumbSize - IOS_TRAVEL_INSET };\n }\n return { rest: padding, travel: width - thumbSize - padding * 2 };\n};\n\nexport const IOS_BASE_OFFSET = 2;\nexport const IOS_TRAVEL_INSET = 4;\n\n/** MUI's 300ms `cubic-bezier(0.4, 0, 0.2, 1)`, on everything the switch moves. */\nexport const SWITCH_TRANSITION = { ms: 300, easing: 'cubic-bezier(0.4, 0, 0.2, 1)' } as const;\n\n/** The disabled treatment: the thumb greys and the track fades. */\nexport const DISABLED = { trackOpacity: 0.3, checkedTrackOpacity: 0.5, thumbGrey: 100 } as const;\n\n/** `glass`: a paper wash under a blur, inside a faint divider hairline. */\nexport const SWITCH_GLASS = {\n trackAlpha: 0.1,\n thumbAlpha: 0.9,\n borderAlpha: 0.2,\n trackBlur: 20,\n thumbBlur: 10,\n} as const;\n\n/** `gradient`: the checked track runs light → main → dark; the resting one is fainter. */\nexport const SWITCH_GRADIENT = {\n checked: { angleDeg: 90, stops: [0, 50, 100] },\n resting: { angleDeg: 135, lightAlpha: 0.3, mainAlpha: 0.2 },\n shimmerMs: 3000,\n} as const;\n\n/** `glow`: a halo of the hue around the checked track, breathing every two seconds. */\nexport const SWITCH_GLOW = { blur: 10, alpha: 0.6, insetBlur: 10, insetAlpha: 0.2, ms: 2000 } as const;\n\n/** `pulse`: the thumb breathes; `ripple`: a wash of the hue expands under the pointer. */\nexport const SWITCH_PULSE = { ms: 2000, minOpacity: 0.7, minScale: 0.95 } as const;\nexport const SWITCH_RIPPLE = { alpha: 0.2, ms: 600, scale: 2 } as const;\n\n/** `loading`: a 2px ring inside the thumb, turning once a second. */\nexport const SWITCH_SPINNER = { sizeRatio: 0.6, borderWidth: 2, ms: 1000 } as const;\n\n/** The two icons overlaid on the track, at their own size per step of the scale. */\nexport const SWITCH_ICON_SIZES: Record<SizeValue, number> = { xs: 12, sm: 14, md: 16, lg: 18, xl: 20 };\n/** Where a shown icon sits, and how small a hidden one is drawn. */\nexport const SWITCH_ICON = { inset: 4, hiddenScale: 0.8 } as const;\n\n/** The wording the `label` variant prints inside the track: 0.75rem at 500, 8px in. */\nexport const TRACK_LABEL = { fontSize: 12, fontWeight: 500, insetUnits: 1 } as const;\n\n/** MUI's `body2` for the label, `caption` for the description and the helper text. */\nexport const SWITCH_LABEL = { fontSize: 14, lineHeight: 1.43, fontWeight: 500 } as const;\nexport const SWITCH_DESCRIPTION = { fontSize: 12, lineHeight: 1.66, marginTopUnits: 0.5 } as const;\nexport const SWITCH_HELPER = { fontSize: 12, lineHeight: 1.66, marginTopUnits: 1 } as const;\n\n/** The label row: 16px from the control beside it, 8px above or below it. */\nexport const LABEL_GAP_UNITS = { beside: 2, stacked: 1 } as const;\n\n/**\n * The minimum height of a touch target, in px (FUT-1905).\n *\n * No entry in {@link SWITCH_SIZES} reaches it — `xl`, the largest, is 34px tall\n * and `md` is 26 — so a consumer cannot buy a legal target by passing a bigger\n * `size`. The label is what clears it: see `SwitchLabel` in `Switch.parts.tsx`.\n */\nexport const TAP_TARGET_MIN = 40;\n\n/**\n * `neutral`'s three greys, and the literals the web falls back to for a theme\n * whose grey ramp omits a step. Same three steps `Button` draws its neutral\n * from.\n */\nexport const NEUTRAL_GREY = { main: 700, dark: 800, light: 500 } as const;\nexport const NEUTRAL_FALLBACK = {\n main: NEUTRAL_RAMP[NEUTRAL_GREY.main],\n dark: NEUTRAL_RAMP[NEUTRAL_GREY.dark],\n light: NEUTRAL_RAMP[NEUTRAL_GREY.light],\n} as const;\nexport const NEUTRAL_CONTRAST = ABSOLUTE_INK.white;\n\n/**\n * The RESTING thumb — the knob while the switch is off (FUT-1924).\n *\n * It stays white, and the reason is worth stating because the checked thumb no\n * longer is: the resting track is `theme.palette.action.disabled` washed over\n * the page, which no tenant picks, and a white knob on it is the conventional\n * look in both modes. The CHECKED track is `palette.main`, a colour the tenant\n * does pick, and that is where a stated white was a defect. See `checkedInk`\n * in `Switch.styles.ts` and its native twin.\n */\nexport const RESTING_THUMB = ABSOLUTE_INK.white;\n\n/** Hover: the thumb lifts a shade and takes a halo of the hue. */\nexport const SWITCH_HOVER = { thumbScale: 1.05, elevation: 4, blur: 12, alpha: 0.2 } as const;\n\n/** Focus: MUI rings the thumb rather than moving it. */\nexport const SWITCH_FOCUS_RING = { width: 6, alpha: 0.2 } as const;\n\n/** A duration as the CSS the web has always emitted: `2000` → `2s`. */\nexport const seconds = (ms: number): string => `${ms / 1000}s`;\n\n/** Whether this variant prints its wording inside the track. */\nexport const showsTrackLabels = (variant: SwitchVariant | undefined, onText?: string, offText?: string): boolean =>\n variant === 'label' && Boolean(onText ?? offText);\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport type { SwitchBaseProps } from './Switch.base';\nimport {\n DISABLED,\n IOS_THUMB_SHADOW,\n MUI_SHADOWS,\n NEUTRAL_CONTRAST,\n RESTING_THUMB,\n NEUTRAL_FALLBACK,\n NEUTRAL_GREY,\n SWITCH_BLACK,\n SWITCH_DESCRIPTION,\n SWITCH_GLASS,\n SWITCH_GLOW,\n SWITCH_GRADIENT,\n SWITCH_HELPER,\n SWITCH_LABEL,\n THUMB_ELEVATION,\n TRACK_RADIUS,\n thumbRadius,\n trackColor,\n type SwitchGeometry,\n type SwitchLook,\n} from './Switch.metrics';\nimport { alpha } from '../../../tokens/color';\nimport { inkOver } from '../../../tokens/theme';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/**\n * WHAT A NATIVE `Switch` PAINTS.\n *\n * The web hands MUI's `Switch` a style object and MUI draws the track and the\n * thumb; React Native has no such control at this size, so the native half\n * draws both itself — from this file, off the same table.\n */\nexport interface SwitchPalette {\n main: string;\n dark: string;\n light: string;\n contrastText: string;\n}\n\nexport interface SwitchState {\n checked: boolean;\n disabled: boolean;\n}\n\n/** The web's `getColorFromTheme`: `danger` is the error palette, `neutral` three greys. */\nexport function switchPalette(theme: UiTheme, color: ColorValue): SwitchPalette {\n if (color === 'neutral') {\n return {\n main: theme.palette.grey[NEUTRAL_GREY.main] || NEUTRAL_FALLBACK.main,\n dark: theme.palette.grey[NEUTRAL_GREY.dark] || NEUTRAL_FALLBACK.dark,\n light: theme.palette.grey[NEUTRAL_GREY.light] || NEUTRAL_FALLBACK.light,\n contrastText: NEUTRAL_CONTRAST,\n };\n }\n const palette = theme.palette[color];\n return {\n main: palette.main,\n dark: palette.dark,\n light: palette.light,\n contrastText: palette.contrastText || NEUTRAL_CONTRAST,\n };\n}\n\n/** Which of the switch's own flags change how it paints. */\nexport type SwitchFlagKeys = 'glow' | 'glass' | 'gradient' | 'loading' | 'pulse';\nexport type SwitchPaint = Pick<SwitchBaseProps, SwitchFlagKeys>;\n\n/**\n * The bar behind the thumb.\n *\n * `gradient` paints the gradient's FIRST stop flat — React Native core has no\n * gradient fill — and `glass` its paper wash without the blur.\n */\nexport function trackStyle(\n theme: UiTheme,\n paint: SwitchPaint,\n palette: SwitchPalette,\n geometry: SwitchGeometry,\n look: SwitchLook,\n state: SwitchState,\n): ViewStyle {\n const base: ViewStyle = {\n ...StyleSheetAbsoluteFill,\n borderRadius: TRACK_RADIUS[look](geometry.height),\n backgroundColor: state.checked\n ? palette.main\n : trackColor({ black: SWITCH_BLACK, disabled: theme.palette.action.disabled }, look),\n opacity: disabledTrackOpacity(state),\n };\n\n if (paint.glass) {\n return {\n ...base,\n backgroundColor: alpha(theme.palette.background.paper, SWITCH_GLASS.trackAlpha),\n borderWidth: 1,\n borderColor: alpha(theme.palette.divider, SWITCH_GLASS.borderAlpha),\n };\n }\n if (paint.gradient) {\n return { ...base, backgroundColor: gradientFirstStop(palette, state.checked) };\n }\n if (paint.glow && state.checked) {\n return {\n ...base,\n boxShadow: `0 0 ${SWITCH_GLOW.blur}px ${alpha(palette.main, SWITCH_GLOW.alpha)}, inset 0 0 ${SWITCH_GLOW.insetBlur}px ${alpha(palette.main, SWITCH_GLOW.insetAlpha)}`,\n };\n }\n return base;\n}\n\n/**\n * The ink on the CHECKED track — the thumb, and the `on` wording (FUT-1924).\n *\n * Both halves of the component had a stated `#fff` here, and the checked track\n * is the one surface a tenant chooses: a pale brand got a white knob on a pale\n * bar, which reads as OFF while it is on.\n *\n * **The fills are THIS renderer's, not the web's, and they differ.** The web\n * paints a real three-stop gradient and hands `checkedInk` all three\n * (`Switch.styles.ts`); React Native has no gradient without a dependency, so\n * `trackStyle` shows `gradientFirstStop` — `palette.light`, FLAT — and\n * `NATIVE-NOTES.md` records that as a known divergence. Passing the web's set\n * here would judge the ink against two fills native never draws, and the two\n * renderers then disagree on the same palette: measured on `#00897b`, the web\n * answers white and this answered dark ink, because `main` and `dark` were in\n * the list and only `light` is on screen.\n *\n * So the gradient case is ONE fill, which is the one it paints.\n */\nexport function checkedInk(paint: SwitchPaint, palette: SwitchPalette): string {\n const fills = [paint.gradient ? palette.light || palette.main : palette.main];\n\n return inkOver(fills, palette.contrastText || NEUTRAL_CONTRAST);\n}\n\n/** The web's two gradients, at the stop a flat fill can show. */\nfunction gradientFirstStop(palette: SwitchPalette, checked: boolean): string {\n if (checked) return palette.light || palette.main;\n return alpha(palette.light || palette.main, SWITCH_GRADIENT.resting.lightAlpha);\n}\n\nconst disabledTrackOpacity = (state: SwitchState): number => {\n if (!state.disabled) return 1;\n return state.checked ? DISABLED.checkedTrackOpacity : DISABLED.trackOpacity;\n};\n\n/** React Native has no `StyleSheet.absoluteFillObject` constant worth importing for four keys. */\nconst StyleSheetAbsoluteFill = { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 } as const;\n\n/** Disabled greys out; checked takes the track's ink; resting stays white. */\nfunction thumbFill(\n paint: SwitchPaint,\n palette: SwitchPalette,\n state: SwitchState,\n theme: UiTheme,\n): string {\n if (state.disabled) return theme.palette.grey[DISABLED.thumbGrey] ?? RESTING_THUMB;\n return state.checked ? checkedInk(paint, palette) : RESTING_THUMB;\n}\n\n/**\n * The knob: round for iOS and the default, squarer for Android and Material.\n * White while resting, the checked track's own ink once on — see\n * {@link RESTING_THUMB} and {@link checkedInk}.\n */\nexport function thumbStyle(\n theme: UiTheme,\n paint: SwitchPaint,\n palette: SwitchPalette,\n geometry: SwitchGeometry,\n look: SwitchLook,\n state: SwitchState,\n): ViewStyle {\n const base: ViewStyle = {\n position: 'absolute',\n width: geometry.thumbSize,\n height: geometry.thumbSize,\n borderRadius: thumbRadius(look, geometry.thumbSize),\n backgroundColor: thumbFill(paint, palette, state, theme),\n boxShadow: look === 'ios' ? IOS_THUMB_SHADOW : (MUI_SHADOWS[THUMB_ELEVATION[look]] ?? 'none'),\n alignItems: 'center',\n justifyContent: 'center',\n };\n\n if (!paint.glass) return base;\n return {\n ...base,\n backgroundColor: alpha(theme.palette.background.paper, SWITCH_GLASS.thumbAlpha),\n borderWidth: 1,\n borderColor: alpha(theme.palette.divider, SWITCH_GLASS.borderAlpha),\n };\n}\n\n/** MUI's `body2` at 500, in the error hue when the row is in error. */\nexport function labelTextStyle(theme: UiTheme, error: boolean): TextStyle {\n return {\n color: error ? theme.palette.danger.main : theme.palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n fontSize: SWITCH_LABEL.fontSize,\n lineHeight: SWITCH_LABEL.fontSize * SWITCH_LABEL.lineHeight,\n fontWeight: String(SWITCH_LABEL.fontWeight) as TextStyle['fontWeight'],\n };\n}\n\n/** MUI's `caption`, 4px under the label. */\nexport function descriptionTextStyle(theme: UiTheme, error: boolean): TextStyle {\n return {\n color: error ? theme.palette.danger.main : theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontSize: SWITCH_DESCRIPTION.fontSize,\n lineHeight: SWITCH_DESCRIPTION.fontSize * SWITCH_DESCRIPTION.lineHeight,\n marginTop: theme.spacing(SWITCH_DESCRIPTION.marginTopUnits),\n };\n}\n\n/** `FormHelperText`, 8px under the whole control. */\nexport function helperTextStyle(theme: UiTheme, error: boolean): TextStyle {\n return {\n color: error ? theme.palette.danger.main : theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontSize: SWITCH_HELPER.fontSize,\n lineHeight: SWITCH_HELPER.fontSize * SWITCH_HELPER.lineHeight,\n marginTop: theme.spacing(SWITCH_HELPER.marginTopUnits),\n };\n}\n"],"mappings":"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","names":[]}
@@ -5,6 +5,9 @@ import {
5
5
  drop,
6
6
  halo
7
7
  } from "../chunks/chunk-NRN37A5K.js";
8
+ import {
9
+ ABSOLUTE_INK
10
+ } from "../chunks/chunk-ZRQHLTYG.js";
8
11
  import {
9
12
  renderTextChildren
10
13
  } from "../chunks/chunk-5GJ5OG5R.js";
@@ -58,9 +61,9 @@ var CARD_RADIUS_UNITS = {
58
61
  var CARD_RADIUS_FULL = "50%";
59
62
  var CARD_BORDER_WIDTH = 1;
60
63
  var CARD_PAPER_SHADOW = [
61
- { offsetX: 0, offsetY: 2, blurRadius: 1, spreadDistance: -1, color: "rgba(0, 0, 0, 0.2)" },
62
- { offsetX: 0, offsetY: 1, blurRadius: 1, spreadDistance: 0, color: "rgba(0, 0, 0, 0.14)" },
63
- { offsetX: 0, offsetY: 1, blurRadius: 3, spreadDistance: 0, color: "rgba(0, 0, 0, 0.12)" }
64
+ { offsetX: 0, offsetY: 2, blurRadius: 1, spreadDistance: -1, color: alpha(ABSOLUTE_INK.black, 0.2) },
65
+ { offsetX: 0, offsetY: 1, blurRadius: 1, spreadDistance: 0, color: alpha(ABSOLUTE_INK.black, 0.14) },
66
+ { offsetX: 0, offsetY: 1, blurRadius: 3, spreadDistance: 0, color: alpha(ABSOLUTE_INK.black, 0.12) }
64
67
  ];
65
68
  var CARD_GLASS = {
66
69
  backgroundAlpha: { rest: 0.1, lifted: 0.15 },
@@ -89,8 +92,8 @@ function neumorphicShadows(lifted, near, far) {
89
92
  ];
90
93
  }
91
94
  var CARD_SECTION_BACKGROUND = {
92
- dark: { rest: "rgba(0, 0, 0, 0.2)", lifted: "rgba(0, 0, 0, 0.25)" },
93
- light: { rest: "rgba(0, 0, 0, 0.02)", lifted: "rgba(0, 0, 0, 0.04)" }
95
+ dark: { rest: alpha(ABSOLUTE_INK.black, 0.2), lifted: alpha(ABSOLUTE_INK.black, 0.25) },
96
+ light: { rest: alpha(ABSOLUTE_INK.black, 0.02), lifted: alpha(ABSOLUTE_INK.black, 0.04) }
94
97
  };
95
98
  var CARD_GLOW = {
96
99
  rest: { blurRadius: 20, alpha: 0.3 },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/layout/Card/Card.native.tsx","../../../src/components/layout/Card/Card.helpers.ts","../../../src/components/layout/Card/Card.metrics.ts","../../../src/components/layout/Card/Card.look.native.ts","../../../src/components/layout/Card/CardParts.native.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n ActivityIndicator,\n Platform,\n Pressable,\n StyleSheet,\n View,\n type GestureResponderEvent,\n type PressableStateCallbackType,\n type StyleProp,\n type ViewStyle,\n} from 'react-native';\n\nimport { resolveCardProps } from './Card.helpers';\nimport { cardLook } from './Card.look.native';\nimport { CARD_LOADING, CARD_PULSE } from './Card.metrics';\nimport { CardInkContext } from './CardParts.native';\nimport type { CardProps } from './Card.types.native';\nimport { PulseRing } from '../../../platform/pulse-ring.native';\nimport { childTestId, resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { renderTextChildren } from '../../../platform/text-children';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport { muiTypeStyle } from '../../../tokens/mui-type';\n\n// The shared stories import all five names from `./Card`, which resolves here\n// under Metro and in the native Storybook; the slots live in their own file to\n// keep this one about the envelope, and are re-exported so that import works.\nexport { CardActions, CardContent, CardHeader, CardMedia } from './CardParts.native';\n\n/** The spinner a loading card centres over itself; `role` comes from `ActivityIndicator`. */\nfunction Spinner({ color, testID }: { color: string; testID: string }): React.JSX.Element {\n return (\n <View testID={testID} style={[styles.spinner, { zIndex: CARD_LOADING.spinnerZIndex }]}>\n <ActivityIndicator\n size={Platform.OS === 'ios' ? 'large' : CARD_LOADING.spinnerSize}\n color={color}\n />\n </View>\n );\n}\n\nexport const Card = React.forwardRef<View, CardProps>((rawProps, ref) => {\n const resolved = resolveCardProps(rawProps);\n const { children, loading, pulse, onClick, onPress, onFocus, onBlur, ...others } = resolved;\n const theme = useUiTheme();\n const look = cardLook(theme, resolved);\n\n const testID = resolveTestId(others, 'card');\n const idFor = (suffix: string): string => childTestId(others, suffix, 'card');\n const rest = withoutTestIdProps(others);\n // `cardLook` consumed these, and the reserved ones paint nothing on either\n // renderer; none of them is a `View` prop.\n const {\n variant: _variant,\n interactive,\n glow: _glow,\n borderRadius: _borderRadius,\n style,\n expandable: _expandable,\n expanded: _expanded,\n onExpandToggle: _onExpandToggle,\n entranceAnimation: _entranceAnimation,\n animationDelay: _animationDelay,\n skeleton: _skeleton,\n hoverScale: _hoverScale,\n ...viewProps\n } = rest;\n\n // A loading card is inert: no handler fires and pointer events are off, so a\n // half-rendered card cannot be pressed through. Same rule as the web.\n const idle = !loading;\n const handlePress = (event: GestureResponderEvent): void => {\n onClick?.(event);\n onPress?.(event);\n };\n\n // The ink goes to the SLOTS through context and to bare text children\n // directly: on the web one `color` on the card covers both, because CSS\n // inherits and React Native does not.\n const body = (\n <CardInkContext.Provider value={look.ink}>\n {pulse ? (\n <PulseRing\n color={theme.palette.primary.main}\n radius={look.radius}\n spread={CARD_PULSE.spread}\n durationMs={CARD_PULSE.durationMs}\n fadeAt={CARD_PULSE.fadeAt}\n opacity={CARD_PULSE.alpha}\n testID={idFor('pulse')}\n />\n ) : null}\n {loading ? <Spinner color={theme.palette.primary.main} testID={idFor('loading')} /> : null}\n {renderTextChildren(children, { ...muiTypeStyle(theme, 'body1'), color: look.ink })}\n </CardInkContext.Provider>\n );\n\n const shared = { testID, onFocus: idle ? onFocus : undefined, onBlur: idle ? onBlur : undefined };\n\n if (!interactive && !onClick && !onPress) {\n return (\n <View ref={ref} style={[look.container, style]} {...shared} {...viewProps}>\n {body}\n </View>\n );\n }\n\n const container = ({ pressed }: PressableStateCallbackType): StyleProp<ViewStyle> => [\n look.container,\n pressed && idle ? look.pressed : null,\n style,\n ];\n\n return (\n <Pressable ref={ref} style={container} onPress={idle ? handlePress : undefined} {...shared} {...viewProps}>\n {body}\n </Pressable>\n );\n});\n\nCard.displayName = 'Card';\n\nconst styles = StyleSheet.create({\n spinner: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: 'none',\n },\n});\n","import type { CardBaseProps } from './Card.base';\n\ntype CardDefaultedKeys =\n | 'variant'\n | 'interactive'\n | 'glow'\n | 'pulse'\n | 'borderRadius'\n | 'loading';\n\n/**\n * Generic over the renderer's own props: the web and the native `Card` pass\n * different handler types (and different style props) through, and both come\n * back out untouched.\n */\ntype ResolvedCardProps<P extends CardBaseProps> = P &\n Required<Pick<CardBaseProps, CardDefaultedKeys>>;\n\nconst CARD_DEFAULTS: Required<Pick<CardBaseProps, CardDefaultedKeys>> = {\n variant: 'elevated',\n interactive: false,\n glow: false,\n pulse: false,\n borderRadius: 'md',\n loading: false,\n};\n\n// Strips explicitly-undefined props before the merge, so `glow={undefined}` still\n// falls back to the default exactly as a destructuring default would.\nconst definedProps = <P extends CardBaseProps>(props: P): Partial<P> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<P>;\n\nexport const resolveCardProps = <P extends CardBaseProps>(props: P): ResolvedCardProps<P> =>\n ({ ...CARD_DEFAULTS, ...definedProps(props) }) as ResolvedCardProps<P>;\n","import type { CardBorderRadius } from './Card.base';\nimport type { UiShadow } from '../../../tokens/shadow';\n\n/**\n * THE NUMBERS BOTH `Card` RENDERERS DRAW WITH.\n *\n * `Card.styles.ts` (web, emotion over MUI) and `Card.native.tsx` /\n * `Card.look.native.ts` (React Native) read this one table. The web turns the\n * radii into `theme.spacing()` and the shadows into CSS strings (`shadowCss`\n * in `src/tokens/shadow.ts` writes exactly the text it always has); native\n * hands the same shadow objects to `boxShadow` and the same numbers to a\n * `StyleSheet`.\n *\n * Nothing here imports a renderer, a theme or a colour: a shadow's COLOUR is\n * the caller's, because the two sides reach for the same arithmetic through\n * different doors (`alpha` from `@mui/material/styles` on the web, from\n * `src/tokens/color` natively — a port of it, asserted equal).\n */\n\n/* ── The envelope ─────────────────────────────────────────────────────────── */\n\n/**\n * `theme.spacing(n)` per named radius. `none` is written as a bare `0` by the\n * web rather than `spacing(0)`, so it is spelled that way on both sides.\n */\nexport const CARD_RADIUS_UNITS: Record<Exclude<CardBorderRadius, 'full'>, number> = {\n none: 0,\n sm: 0.5,\n md: 1,\n lg: 2,\n xl: 3,\n};\n\n/** `full` is a percentage of the box, not a length. */\nexport const CARD_RADIUS_FULL = '50%';\n\n/** The hairline `outlined` and `glass` draw. */\nexport const CARD_BORDER_WIDTH = 1;\n\n/* ── Shadows ──────────────────────────────────────────────────────────────── */\n\n/** A card's shadows are `UiShadow`s; `src/tokens/shadow.ts` says why they have a shape. */\nexport type CardShadow = UiShadow;\n\n/**\n * MUI's `theme.shadows[1]` — the elevation a `Paper` paints and therefore the\n * shadow every `elevated` card on the web already has.\n *\n * It is restated here rather than derived because the web never names it: it\n * arrives through `MuiCard` -> `MuiPaper`, and React Native has no Paper to\n * inherit it from. (`variant=\"elevated\"`'s own `elevation: 4` is not a CSS\n * property and paints nothing — see {@link CARD_ELEVATION}.)\n */\nexport const CARD_PAPER_SHADOW: readonly UiShadow[] = [\n { offsetX: 0, offsetY: 2, blurRadius: 1, spreadDistance: -1, color: 'rgba(0, 0, 0, 0.2)' },\n { offsetX: 0, offsetY: 1, blurRadius: 1, spreadDistance: 0, color: 'rgba(0, 0, 0, 0.14)' },\n { offsetX: 0, offsetY: 1, blurRadius: 3, spreadDistance: 0, color: 'rgba(0, 0, 0, 0.12)' },\n];\n\n/**\n * What `elevated` declares at rest and on hover.\n *\n * `elevation` is not a CSS property, so on the web these paint NOTHING and an\n * elevated card shows `MuiPaper`'s own elevation-1 shadow. Kept because they\n * are what the source says, and mirrored natively by leaving\n * {@link CARD_PAPER_SHADOW} in place for both states.\n */\nexport const CARD_ELEVATION = { rest: 4, lifted: 8 } as const;\n\n/* ── Variant surfaces ─────────────────────────────────────────────────────── */\n\n/** `glass`: a 0.1 wash of the paper behind a 20px blur, inside a primary hairline. */\nexport const CARD_GLASS = {\n backgroundAlpha: { rest: 0.1, lifted: 0.15 },\n borderAlpha: { rest: 0.2, lifted: 0.3 },\n blurPx: 20,\n shadow: { offsetY: 8, blurRadius: 32, alpha: 0.1 },\n} as const;\n\n/** `gradient`: primary into secondary at 135°, over a hue-tinted drop shadow. */\nexport const CARD_GRADIENT = {\n angleDeg: 135,\n shadow: { offsetY: 4, blurRadius: 20, alpha: 0.3 },\n} as const;\n\n/** `neumorphic`: two opposed shadows, blurred twice their offset. */\nexport const CARD_NEUMORPHIC = {\n spread: { rest: 8, lifted: 12 },\n blurFactor: 2,\n alpha: {\n dark: { near: 0.3, far: 0.1 },\n light: { near: { rest: 0.2, lifted: 0.3 }, far: { rest: 0.8, lifted: 0.9 } },\n },\n} as const;\n\n/**\n * The offset pair `neumorphic` paints, given the two colours the mode picked:\n * `near` down-right, `far` up-left, both blurred twice the offset.\n */\nexport function neumorphicShadows(lifted: boolean, near: string, far: string): UiShadow[] {\n const spread = lifted ? CARD_NEUMORPHIC.spread.lifted : CARD_NEUMORPHIC.spread.rest;\n const blurRadius = spread * CARD_NEUMORPHIC.blurFactor;\n return [\n { offsetX: spread, offsetY: spread, blurRadius, spreadDistance: 0, color: near },\n { offsetX: -spread, offsetY: -spread, blurRadius, spreadDistance: 0, color: far },\n ];\n}\n\n/**\n * `section`: a flat ink wash rather than a palette slot, so a section reads as\n * a recess in whatever surface it sits on.\n */\nexport const CARD_SECTION_BACKGROUND = {\n dark: { rest: 'rgba(0, 0, 0, 0.2)', lifted: 'rgba(0, 0, 0, 0.25)' },\n light: { rest: 'rgba(0, 0, 0, 0.02)', lifted: 'rgba(0, 0, 0, 0.04)' },\n} as const;\n\n/* ── Decorations ──────────────────────────────────────────────────────────── */\n\n/** `glow`: a haloed primary shadow that widens under the pointer. */\nexport const CARD_GLOW = {\n rest: { blurRadius: 20, alpha: 0.3 },\n lifted: { blurRadius: 30, alpha: 0.4 },\n} as const;\n\n/**\n * `pulse`: a ring of the primary hue that grows 15px out of the card's edge and\n * fades, every two seconds. The web draws it as an `::after` box-shadow spread\n * behind the paper (`z-index: -1`).\n */\nexport const CARD_PULSE = {\n alpha: 0.3,\n durationMs: 2000,\n spread: 15,\n /** The fraction of the cycle the ring is still visible for. */\n fadeAt: 0.7,\n zIndex: -1,\n} as const;\n\n/** `interactive`: the card rises 2px under the pointer and settles while pressed. */\nexport const CARD_INTERACTIVE_LIFT = 2;\n\n/** `loading`: the card dims, stops taking pointers and centres a spinner over itself. */\nexport const CARD_LOADING = { opacity: 0.6, spinnerZIndex: 10, spinnerSize: 40 } as const;\n\n/* ── The slots ────────────────────────────────────────────────────────────── */\n\n/** `CardContent`: `theme.spacing(2)`, halved by `dense`. */\nexport const CARD_CONTENT_PADDING_UNITS = { normal: 2, dense: 1 } as const;\n\n/**\n * `CardHeader`, in MUI's own px: 16 all round, the avatar 16 from the content,\n * the action pulled back out of the padding on three sides.\n */\nexport const CARD_HEADER = {\n padding: 16,\n avatarGap: 16,\n action: { marginTop: -4, marginRight: -8, marginBottom: -4 },\n} as const;\n\n/** A `CardHeader` given raw `children` is a plain `theme.spacing(2)` box instead. */\nexport const CARD_HEADER_CHILDREN_PADDING_UNITS = 2;\n\n/**\n * `CardActions`, in MUI's own px: 8 all round, and 8 between the actions unless\n * `disableSpacing` turns the run off.\n */\nexport const CARD_ACTIONS = { padding: 8, gap: 8 } as const;\n\n/** `CardMedia`'s default height. */\nexport const CARD_MEDIA_HEIGHT = 200;\n","import type { ViewStyle } from 'react-native';\n\nimport type { CardBorderRadius, CardVariant } from './Card.base';\nimport {\n CARD_BORDER_WIDTH,\n CARD_GLASS,\n CARD_GLOW,\n CARD_GRADIENT,\n CARD_LOADING,\n CARD_NEUMORPHIC,\n CARD_PAPER_SHADOW,\n CARD_RADIUS_FULL,\n CARD_RADIUS_UNITS,\n CARD_SECTION_BACKGROUND,\n neumorphicShadows,\n} from './Card.metrics';\nimport { alpha } from '../../../tokens/color';\nimport { BLACK, WHITE, drop, halo, type UiShadow } from '../../../tokens/shadow';\nimport type { UiTheme } from '../../../tokens/theme';\n\n/**\n * WHAT THE NATIVE `Card` PAINTS — the arithmetic, with no JSX in sight.\n *\n * The web builds one `sx` object by spreading base, `interactive`, `glow`,\n * `pulse` and finally the variant's own surface over each other; whichever\n * wrote a property last wins. The composition here spreads the SAME things in\n * the SAME order, which is why `glow` shows through an `elevated` card (whose\n * surface declares no shadow) and is buried by a `glass` one (whose surface\n * does) on both renderers.\n */\n\n/** The named radius as a length. `full` stays a percentage of the box. */\nexport function cardRadius(theme: UiTheme, radius: CardBorderRadius): number | string {\n if (radius === 'full') return CARD_RADIUS_FULL;\n return theme.spacing(CARD_RADIUS_UNITS[radius] ?? CARD_RADIUS_UNITS.md);\n}\n\ninterface Surface {\n surface: ViewStyle;\n /** What the web changes on `:hover`; native applies it while pressed. */\n hover: ViewStyle;\n}\n\nfunction glassSurface(theme: UiTheme, lifted: boolean): Surface {\n return {\n surface: {\n backgroundColor: alpha(theme.palette.background.paper, CARD_GLASS.backgroundAlpha.rest),\n borderWidth: CARD_BORDER_WIDTH,\n borderStyle: 'solid',\n borderColor: alpha(theme.palette.primary.main, CARD_GLASS.borderAlpha.rest),\n boxShadow: drop(\n CARD_GLASS.shadow.offsetY,\n CARD_GLASS.shadow.blurRadius,\n alpha(BLACK, CARD_GLASS.shadow.alpha),\n ),\n },\n hover: {\n backgroundColor: alpha(\n theme.palette.background.paper,\n lifted ? CARD_GLASS.backgroundAlpha.lifted : CARD_GLASS.backgroundAlpha.rest,\n ),\n borderColor: alpha(theme.palette.primary.main, CARD_GLASS.borderAlpha.lifted),\n },\n };\n}\n\nfunction neumorphicSurface(theme: UiTheme, lifted: boolean): Surface {\n const { dark, light } = CARD_NEUMORPHIC.alpha;\n const pair = (raised: boolean): UiShadow[] =>\n theme.mode === 'dark'\n ? neumorphicShadows(raised, alpha(BLACK, dark.near), alpha(WHITE, dark.far))\n : neumorphicShadows(\n raised,\n alpha(theme.palette.grey[400], raised ? light.near.lifted : light.near.rest),\n alpha(WHITE, raised ? light.far.lifted : light.far.rest),\n );\n\n return {\n surface: {\n backgroundColor: theme.mode === 'dark' ? theme.palette.grey[800] : theme.palette.grey[100],\n boxShadow: pair(false),\n borderWidth: 0,\n },\n hover: { boxShadow: pair(lifted) },\n };\n}\n\nfunction sectionSurface(theme: UiTheme, lifted: boolean): Surface {\n const wash = CARD_SECTION_BACKGROUND[theme.mode === 'dark' ? 'dark' : 'light'];\n return {\n surface: { backgroundColor: wash.rest, borderWidth: 0, boxShadow: undefined },\n hover: { backgroundColor: lifted ? wash.lifted : wash.rest },\n };\n}\n\n/**\n * Each variant's resting surface and whatever it changes on hover — the same\n * split `Card.styles.ts` makes, in React Native's property names.\n *\n * `gradient` is the one honest gap: React Native core has no gradient fill, so\n * it paints the gradient's FIRST stop. The parity ledger records it.\n */\nexport function cardSurface(theme: UiTheme, variant: CardVariant, lifted: boolean): Surface {\n switch (variant) {\n case 'outlined':\n return {\n surface: {\n borderWidth: CARD_BORDER_WIDTH,\n borderStyle: 'solid',\n borderColor: theme.palette.divider,\n boxShadow: undefined,\n },\n hover: { borderColor: lifted ? theme.palette.primary.main : theme.palette.divider },\n };\n case 'glass':\n return glassSurface(theme, lifted);\n case 'gradient':\n return {\n surface: {\n backgroundColor: theme.palette.primary.main,\n boxShadow: drop(\n CARD_GRADIENT.shadow.offsetY,\n CARD_GRADIENT.shadow.blurRadius,\n alpha(theme.palette.primary.main, CARD_GRADIENT.shadow.alpha),\n ),\n },\n hover: {\n backgroundColor: lifted ? theme.palette.primary.dark : theme.palette.primary.main,\n },\n };\n case 'neumorphic':\n return neumorphicSurface(theme, lifted);\n case 'section':\n return sectionSurface(theme, lifted);\n default:\n // `elevated` declares only MUI's inert `elevation`, so the paper shadow\n // the base laid down (or a `glow` over it) is what shows.\n return { surface: {}, hover: {} };\n }\n}\n\n/** The ink a card's own text inherits: `gradient` flips it, everything else is body ink. */\nexport const cardInk = (theme: UiTheme, variant: CardVariant): string =>\n variant === 'gradient' ? theme.palette.primary.contrastText : theme.palette.text.primary;\n\nexport interface CardLookArgs {\n variant: CardVariant;\n interactive: boolean;\n glow: boolean;\n pulse: boolean;\n loading: boolean;\n borderRadius: CardBorderRadius;\n}\n\nexport interface CardLook {\n container: ViewStyle;\n /** Applied while pressed, standing in for the web's `:hover`. */\n pressed: ViewStyle;\n radius: number | string;\n ink: string;\n}\n\n/**\n * Everything the card paints, decided once per render.\n *\n * `overflow` is the one place native needs a rule the web does not. MUI's\n * `Card` clips its children, and the pulse ring has to reach 15px past the\n * edge — but a view's own shadow is clipped by its own overflow on a device,\n * so a `glow` the caller asked for would simply not paint. Both decorations\n * therefore turn the clip off, exactly as `Button.native.tsx` does.\n */\nexport function cardLook(theme: UiTheme, a: CardLookArgs): CardLook {\n const radius = cardRadius(theme, a.borderRadius);\n const chosen = cardSurface(theme, a.variant, a.interactive);\n\n const base: ViewStyle = {\n position: 'relative',\n borderRadius: radius,\n backgroundColor: theme.palette.background.paper,\n overflow: a.pulse || a.glow ? 'visible' : 'hidden',\n opacity: a.loading ? CARD_LOADING.opacity : 1,\n pointerEvents: a.loading ? 'none' : 'auto',\n };\n\n return {\n radius,\n ink: cardInk(theme, a.variant),\n container: {\n ...base,\n boxShadow: CARD_PAPER_SHADOW,\n ...(a.interactive ? { cursor: 'pointer' } : null),\n ...(a.glow\n ? { boxShadow: halo(CARD_GLOW.rest.blurRadius, alpha(theme.palette.primary.main, CARD_GLOW.rest.alpha)) }\n : null),\n ...chosen.surface,\n },\n pressed: {\n ...(a.glow\n ? { boxShadow: halo(CARD_GLOW.lifted.blurRadius, alpha(theme.palette.primary.main, CARD_GLOW.lifted.alpha)) }\n : null),\n ...chosen.hover,\n },\n };\n}\n","import * as React from 'react';\nimport {\n Image,\n StyleSheet,\n Text as RNText,\n View,\n type DimensionValue,\n type TextStyle,\n type ViewStyle,\n} from 'react-native';\n\nimport {\n CARD_ACTIONS,\n CARD_CONTENT_PADDING_UNITS,\n CARD_HEADER,\n CARD_HEADER_CHILDREN_PADDING_UNITS,\n CARD_MEDIA_HEIGHT,\n} from './Card.metrics';\nimport type {\n CardActionsAlignment,\n CardActionsProps,\n CardContentProps,\n CardHeaderProps,\n CardMediaProps,\n} from './Card.types.native';\nimport { childTestId, resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { renderTextChildren } from '../../../platform/text-children';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport { muiTypeStyle } from '../../../tokens/mui-type';\nimport type { UiTheme } from '../../../tokens/theme';\n\n/**\n * THE FOUR SLOTS A CARD IS BUILT OUT OF, ON REACT NATIVE.\n *\n * Each one is a `View` carrying the padding MUI's own `CardHeader`,\n * `CardContent`, `CardActions` and `CardMedia` declare in px — the web half\n * overrides only `padding` and `justify-content`, so the rest of the numbers\n * come from MUI and are restated in `Card.metrics.ts` rather than re-invented.\n */\n\n/**\n * THE INK A CARD PUBLISHES TO ITS SLOTS.\n *\n * `Card.styles.ts` puts `color: primary.contrastText` on the gradient card\n * ITSELF and lets CSS inheritance carry it into the header and the body. React\n * Native inherits nothing across views, so the card publishes its ink here and\n * every slot reads it — which is the difference between a legible gradient card\n * and near-black text on indigo.\n *\n * `null` is \"no card above me\": a slot rendered on its own falls back to the\n * body ink, exactly as it would on the web.\n */\nexport const CardInkContext = React.createContext<string | null>(null);\n\n/** The body text of a slot, in MUI's `body1`, so a bare string is not unstyled. */\nconst slotTextStyle = (theme: UiTheme, ink: string | null): TextStyle => ({\n ...muiTypeStyle(theme, 'body1'),\n color: ink ?? theme.palette.text.primary,\n});\n\n/** MUI's header title: `h5`, or `body2` when an avatar shares the row. */\nexport const cardTitleStyle = (\n theme: UiTheme,\n hasAvatar: boolean,\n ink: string | null = null,\n): TextStyle => ({\n ...muiTypeStyle(theme, hasAvatar ? 'body2' : 'h5'),\n color: ink ?? theme.palette.text.primary,\n});\n\n/**\n * MUI's header subheader: `body1` (or `body2` beside an avatar), in the muted\n * ink — which does NOT follow the card's own ink, because MUI's `CardHeader`\n * pins the subheader to `textSecondary` explicitly rather than inheriting.\n */\nexport const cardSubtitleStyle = (theme: UiTheme, hasAvatar: boolean): TextStyle => ({\n ...muiTypeStyle(theme, hasAvatar ? 'body2' : 'body1'),\n color: theme.palette.text.secondary,\n});\n\nexport function CardHeader({\n title,\n subtitle,\n action,\n avatar,\n children,\n ...others\n}: CardHeaderProps): React.JSX.Element {\n const theme = useUiTheme();\n const ink = React.useContext(CardInkContext);\n const testID = resolveTestId(others, 'card-header');\n const { style, ...viewProps } = withoutTestIdProps(others);\n\n if (children) {\n return (\n <View\n testID={testID}\n style={[{ padding: theme.spacing(CARD_HEADER_CHILDREN_PADDING_UNITS) }, style]}\n {...viewProps}\n >\n {renderTextChildren(children, slotTextStyle(theme, ink))}\n </View>\n );\n }\n\n const hasAvatar = avatar != null;\n return (\n <View testID={testID} style={[styles.header, style]} {...viewProps}>\n {hasAvatar ? <View style={styles.headerAvatar}>{avatar}</View> : null}\n <View style={styles.headerContent}>\n {title != null ? (\n <RNText testID={childTestId(others, 'title', 'card')} style={cardTitleStyle(theme, hasAvatar, ink)}>\n {title}\n </RNText>\n ) : null}\n {subtitle != null ? (\n <RNText\n testID={childTestId(others, 'subtitle', 'card')}\n style={cardSubtitleStyle(theme, hasAvatar)}\n >\n {subtitle}\n </RNText>\n ) : null}\n </View>\n {action != null ? <View style={styles.headerAction}>{action}</View> : null}\n </View>\n );\n}\n\nCardHeader.displayName = 'CardHeader';\n\nexport function CardContent({\n children,\n dense = false,\n ...others\n}: CardContentProps): React.JSX.Element {\n const theme = useUiTheme();\n const ink = React.useContext(CardInkContext);\n const testID = resolveTestId(others, 'card-content');\n const { style, ...viewProps } = withoutTestIdProps(others);\n const padding = theme.spacing(\n dense ? CARD_CONTENT_PADDING_UNITS.dense : CARD_CONTENT_PADDING_UNITS.normal,\n );\n\n return (\n <View testID={testID} style={[{ padding }, style]} {...viewProps}>\n {renderTextChildren(children, slotTextStyle(theme, ink))}\n </View>\n );\n}\n\nCardContent.displayName = 'CardContent';\n\nconst JUSTIFY: Record<CardActionsAlignment, NonNullable<ViewStyle['justifyContent']>> = {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end',\n 'space-between': 'space-between',\n};\n\nexport function CardActions({\n children,\n disableSpacing = false,\n alignment = 'left',\n ...others\n}: CardActionsProps): React.JSX.Element {\n const theme = useUiTheme();\n const ink = React.useContext(CardInkContext);\n const testID = resolveTestId(others, 'card-actions');\n const { style, ...viewProps } = withoutTestIdProps(others);\n\n return (\n <View\n testID={testID}\n style={[\n styles.actions,\n { justifyContent: JUSTIFY[alignment], gap: disableSpacing ? undefined : CARD_ACTIONS.gap },\n style,\n ]}\n {...viewProps}\n >\n {renderTextChildren(children, slotTextStyle(theme, ink))}\n </View>\n );\n}\n\nCardActions.displayName = 'CardActions';\n\n/**\n * `height` accepts the web's spellings: a number, a numeric string (`\"200\"`, as\n * an `<img height>` takes) or a percentage.\n */\nexport function mediaHeight(height: number | string): DimensionValue {\n if (typeof height === 'number') return height;\n const parsed = Number(height);\n return Number.isFinite(parsed) ? parsed : (height as DimensionValue);\n}\n\nexport function CardMedia({\n image,\n title,\n height = CARD_MEDIA_HEIGHT,\n children,\n ...others\n}: CardMediaProps): React.JSX.Element {\n const testID = resolveTestId(others, 'card-media');\n const { style, ...viewProps } = withoutTestIdProps(others);\n\n return (\n <View\n testID={testID}\n style={[{ height: mediaHeight(height), width: '100%', overflow: 'hidden' }, style]}\n {...viewProps}\n >\n {image != null ? (\n <Image\n source={{ uri: image }}\n accessibilityLabel={title}\n resizeMode=\"cover\"\n style={StyleSheet.absoluteFill}\n />\n ) : null}\n {children}\n </View>\n );\n}\n\nCardMedia.displayName = 'CardMedia';\n\nconst styles = StyleSheet.create({\n header: {\n flexDirection: 'row',\n alignItems: 'center',\n padding: CARD_HEADER.padding,\n },\n headerAvatar: {\n flexGrow: 0,\n flexShrink: 0,\n flexBasis: 'auto',\n marginRight: CARD_HEADER.avatarGap,\n },\n headerContent: {\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: 'auto',\n minWidth: 0,\n },\n headerAction: {\n flexGrow: 0,\n flexShrink: 0,\n flexBasis: 'auto',\n alignSelf: 'flex-start',\n marginTop: CARD_HEADER.action.marginTop,\n marginRight: CARD_HEADER.action.marginRight,\n marginBottom: CARD_HEADER.action.marginBottom,\n },\n actions: {\n flexDirection: 'row',\n alignItems: 'center',\n padding: CARD_ACTIONS.padding,\n },\n});\n"],"mappings":"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","names":["React","StyleSheet","View","jsx","jsxs","View","styles","StyleSheet"]}
1
+ {"version":3,"sources":["../../../src/components/layout/Card/Card.native.tsx","../../../src/components/layout/Card/Card.helpers.ts","../../../src/components/layout/Card/Card.metrics.ts","../../../src/components/layout/Card/Card.look.native.ts","../../../src/components/layout/Card/CardParts.native.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n ActivityIndicator,\n Platform,\n Pressable,\n StyleSheet,\n View,\n type GestureResponderEvent,\n type PressableStateCallbackType,\n type StyleProp,\n type ViewStyle,\n} from 'react-native';\n\nimport { resolveCardProps } from './Card.helpers';\nimport { cardLook } from './Card.look.native';\nimport { CARD_LOADING, CARD_PULSE } from './Card.metrics';\nimport { CardInkContext } from './CardParts.native';\nimport type { CardProps } from './Card.types.native';\nimport { PulseRing } from '../../../platform/pulse-ring.native';\nimport { childTestId, resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { renderTextChildren } from '../../../platform/text-children';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport { muiTypeStyle } from '../../../tokens/mui-type';\n\n// The shared stories import all five names from `./Card`, which resolves here\n// under Metro and in the native Storybook; the slots live in their own file to\n// keep this one about the envelope, and are re-exported so that import works.\nexport { CardActions, CardContent, CardHeader, CardMedia } from './CardParts.native';\n\n/** The spinner a loading card centres over itself; `role` comes from `ActivityIndicator`. */\nfunction Spinner({ color, testID }: { color: string; testID: string }): React.JSX.Element {\n return (\n <View testID={testID} style={[styles.spinner, { zIndex: CARD_LOADING.spinnerZIndex }]}>\n <ActivityIndicator\n size={Platform.OS === 'ios' ? 'large' : CARD_LOADING.spinnerSize}\n color={color}\n />\n </View>\n );\n}\n\nexport const Card = React.forwardRef<View, CardProps>((rawProps, ref) => {\n const resolved = resolveCardProps(rawProps);\n const { children, loading, pulse, onClick, onPress, onFocus, onBlur, ...others } = resolved;\n const theme = useUiTheme();\n const look = cardLook(theme, resolved);\n\n const testID = resolveTestId(others, 'card');\n const idFor = (suffix: string): string => childTestId(others, suffix, 'card');\n const rest = withoutTestIdProps(others);\n // `cardLook` consumed these, and the reserved ones paint nothing on either\n // renderer; none of them is a `View` prop.\n const {\n variant: _variant,\n interactive,\n glow: _glow,\n borderRadius: _borderRadius,\n style,\n expandable: _expandable,\n expanded: _expanded,\n onExpandToggle: _onExpandToggle,\n entranceAnimation: _entranceAnimation,\n animationDelay: _animationDelay,\n skeleton: _skeleton,\n hoverScale: _hoverScale,\n ...viewProps\n } = rest;\n\n // A loading card is inert: no handler fires and pointer events are off, so a\n // half-rendered card cannot be pressed through. Same rule as the web.\n const idle = !loading;\n const handlePress = (event: GestureResponderEvent): void => {\n onClick?.(event);\n onPress?.(event);\n };\n\n // The ink goes to the SLOTS through context and to bare text children\n // directly: on the web one `color` on the card covers both, because CSS\n // inherits and React Native does not.\n const body = (\n <CardInkContext.Provider value={look.ink}>\n {pulse ? (\n <PulseRing\n color={theme.palette.primary.main}\n radius={look.radius}\n spread={CARD_PULSE.spread}\n durationMs={CARD_PULSE.durationMs}\n fadeAt={CARD_PULSE.fadeAt}\n opacity={CARD_PULSE.alpha}\n testID={idFor('pulse')}\n />\n ) : null}\n {loading ? <Spinner color={theme.palette.primary.main} testID={idFor('loading')} /> : null}\n {renderTextChildren(children, { ...muiTypeStyle(theme, 'body1'), color: look.ink })}\n </CardInkContext.Provider>\n );\n\n const shared = { testID, onFocus: idle ? onFocus : undefined, onBlur: idle ? onBlur : undefined };\n\n if (!interactive && !onClick && !onPress) {\n return (\n <View ref={ref} style={[look.container, style]} {...shared} {...viewProps}>\n {body}\n </View>\n );\n }\n\n const container = ({ pressed }: PressableStateCallbackType): StyleProp<ViewStyle> => [\n look.container,\n pressed && idle ? look.pressed : null,\n style,\n ];\n\n return (\n <Pressable ref={ref} style={container} onPress={idle ? handlePress : undefined} {...shared} {...viewProps}>\n {body}\n </Pressable>\n );\n});\n\nCard.displayName = 'Card';\n\nconst styles = StyleSheet.create({\n spinner: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: 'none',\n },\n});\n","import type { CardBaseProps } from './Card.base';\n\ntype CardDefaultedKeys =\n | 'variant'\n | 'interactive'\n | 'glow'\n | 'pulse'\n | 'borderRadius'\n | 'loading';\n\n/**\n * Generic over the renderer's own props: the web and the native `Card` pass\n * different handler types (and different style props) through, and both come\n * back out untouched.\n */\ntype ResolvedCardProps<P extends CardBaseProps> = P &\n Required<Pick<CardBaseProps, CardDefaultedKeys>>;\n\nconst CARD_DEFAULTS: Required<Pick<CardBaseProps, CardDefaultedKeys>> = {\n variant: 'elevated',\n interactive: false,\n glow: false,\n pulse: false,\n borderRadius: 'md',\n loading: false,\n};\n\n// Strips explicitly-undefined props before the merge, so `glow={undefined}` still\n// falls back to the default exactly as a destructuring default would.\nconst definedProps = <P extends CardBaseProps>(props: P): Partial<P> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<P>;\n\nexport const resolveCardProps = <P extends CardBaseProps>(props: P): ResolvedCardProps<P> =>\n ({ ...CARD_DEFAULTS, ...definedProps(props) }) as ResolvedCardProps<P>;\n","import type { CardBorderRadius } from './Card.base';\nimport { alpha } from '../../../tokens/color';\nimport { ABSOLUTE_INK } from '../../../tokens/ink.core';\nimport type { UiShadow } from '../../../tokens/shadow';\n\n/**\n * THE NUMBERS BOTH `Card` RENDERERS DRAW WITH.\n *\n * `Card.styles.ts` (web, emotion over MUI) and `Card.native.tsx` /\n * `Card.look.native.ts` (React Native) read this one table. The web turns the\n * radii into `theme.spacing()` and the shadows into CSS strings (`shadowCss`\n * in `src/tokens/shadow.ts` writes exactly the text it always has); native\n * hands the same shadow objects to `boxShadow` and the same numbers to a\n * `StyleSheet`.\n *\n * Nothing here imports a renderer or a theme — its fixed inks are the\n * renderer-free absolutes of `src/tokens/ink.core` — and a variant shadow's COLOUR is\n * the caller's, because the two sides reach for the same arithmetic through\n * different doors (`alpha` from `@mui/material/styles` on the web, from\n * `src/tokens/color` natively — a port of it, asserted equal).\n */\n\n/* ── The envelope ─────────────────────────────────────────────────────────── */\n\n/**\n * `theme.spacing(n)` per named radius. `none` is written as a bare `0` by the\n * web rather than `spacing(0)`, so it is spelled that way on both sides.\n */\nexport const CARD_RADIUS_UNITS: Record<Exclude<CardBorderRadius, 'full'>, number> = {\n none: 0,\n sm: 0.5,\n md: 1,\n lg: 2,\n xl: 3,\n};\n\n/** `full` is a percentage of the box, not a length. */\nexport const CARD_RADIUS_FULL = '50%';\n\n/** The hairline `outlined` and `glass` draw. */\nexport const CARD_BORDER_WIDTH = 1;\n\n/* ── Shadows ──────────────────────────────────────────────────────────────── */\n\n/** A card's shadows are `UiShadow`s; `src/tokens/shadow.ts` says why they have a shape. */\nexport type CardShadow = UiShadow;\n\n/**\n * MUI's `theme.shadows[1]` — the elevation a `Paper` paints and therefore the\n * shadow every `elevated` card on the web already has.\n *\n * It is restated here rather than derived because the web never names it: it\n * arrives through `MuiCard` -> `MuiPaper`, and React Native has no Paper to\n * inherit it from. (`variant=\"elevated\"`'s own `elevation: 4` is not a CSS\n * property and paints nothing — see {@link CARD_ELEVATION}.)\n */\nexport const CARD_PAPER_SHADOW: readonly UiShadow[] = [\n { offsetX: 0, offsetY: 2, blurRadius: 1, spreadDistance: -1, color: alpha(ABSOLUTE_INK.black, 0.2) },\n { offsetX: 0, offsetY: 1, blurRadius: 1, spreadDistance: 0, color: alpha(ABSOLUTE_INK.black, 0.14) },\n { offsetX: 0, offsetY: 1, blurRadius: 3, spreadDistance: 0, color: alpha(ABSOLUTE_INK.black, 0.12) },\n];\n\n/**\n * What `elevated` declares at rest and on hover.\n *\n * `elevation` is not a CSS property, so on the web these paint NOTHING and an\n * elevated card shows `MuiPaper`'s own elevation-1 shadow. Kept because they\n * are what the source says, and mirrored natively by leaving\n * {@link CARD_PAPER_SHADOW} in place for both states.\n */\nexport const CARD_ELEVATION = { rest: 4, lifted: 8 } as const;\n\n/* ── Variant surfaces ─────────────────────────────────────────────────────── */\n\n/** `glass`: a 0.1 wash of the paper behind a 20px blur, inside a primary hairline. */\nexport const CARD_GLASS = {\n backgroundAlpha: { rest: 0.1, lifted: 0.15 },\n borderAlpha: { rest: 0.2, lifted: 0.3 },\n blurPx: 20,\n shadow: { offsetY: 8, blurRadius: 32, alpha: 0.1 },\n} as const;\n\n/** `gradient`: primary into secondary at 135°, over a hue-tinted drop shadow. */\nexport const CARD_GRADIENT = {\n angleDeg: 135,\n shadow: { offsetY: 4, blurRadius: 20, alpha: 0.3 },\n} as const;\n\n/** `neumorphic`: two opposed shadows, blurred twice their offset. */\nexport const CARD_NEUMORPHIC = {\n spread: { rest: 8, lifted: 12 },\n blurFactor: 2,\n alpha: {\n dark: { near: 0.3, far: 0.1 },\n light: { near: { rest: 0.2, lifted: 0.3 }, far: { rest: 0.8, lifted: 0.9 } },\n },\n} as const;\n\n/**\n * The offset pair `neumorphic` paints, given the two colours the mode picked:\n * `near` down-right, `far` up-left, both blurred twice the offset.\n */\nexport function neumorphicShadows(lifted: boolean, near: string, far: string): UiShadow[] {\n const spread = lifted ? CARD_NEUMORPHIC.spread.lifted : CARD_NEUMORPHIC.spread.rest;\n const blurRadius = spread * CARD_NEUMORPHIC.blurFactor;\n return [\n { offsetX: spread, offsetY: spread, blurRadius, spreadDistance: 0, color: near },\n { offsetX: -spread, offsetY: -spread, blurRadius, spreadDistance: 0, color: far },\n ];\n}\n\n/**\n * `section`: a flat ink wash rather than a palette slot, so a section reads as\n * a recess in whatever surface it sits on.\n */\nexport const CARD_SECTION_BACKGROUND = {\n dark: { rest: alpha(ABSOLUTE_INK.black, 0.2), lifted: alpha(ABSOLUTE_INK.black, 0.25) },\n light: { rest: alpha(ABSOLUTE_INK.black, 0.02), lifted: alpha(ABSOLUTE_INK.black, 0.04) },\n} as const;\n\n/* ── Decorations ──────────────────────────────────────────────────────────── */\n\n/** `glow`: a haloed primary shadow that widens under the pointer. */\nexport const CARD_GLOW = {\n rest: { blurRadius: 20, alpha: 0.3 },\n lifted: { blurRadius: 30, alpha: 0.4 },\n} as const;\n\n/**\n * `pulse`: a ring of the primary hue that grows 15px out of the card's edge and\n * fades, every two seconds. The web draws it as an `::after` box-shadow spread\n * behind the paper (`z-index: -1`).\n */\nexport const CARD_PULSE = {\n alpha: 0.3,\n durationMs: 2000,\n spread: 15,\n /** The fraction of the cycle the ring is still visible for. */\n fadeAt: 0.7,\n zIndex: -1,\n} as const;\n\n/** `interactive`: the card rises 2px under the pointer and settles while pressed. */\nexport const CARD_INTERACTIVE_LIFT = 2;\n\n/** `loading`: the card dims, stops taking pointers and centres a spinner over itself. */\nexport const CARD_LOADING = { opacity: 0.6, spinnerZIndex: 10, spinnerSize: 40 } as const;\n\n/* ── The slots ────────────────────────────────────────────────────────────── */\n\n/** `CardContent`: `theme.spacing(2)`, halved by `dense`. */\nexport const CARD_CONTENT_PADDING_UNITS = { normal: 2, dense: 1 } as const;\n\n/**\n * `CardHeader`, in MUI's own px: 16 all round, the avatar 16 from the content,\n * the action pulled back out of the padding on three sides.\n */\nexport const CARD_HEADER = {\n padding: 16,\n avatarGap: 16,\n action: { marginTop: -4, marginRight: -8, marginBottom: -4 },\n} as const;\n\n/** A `CardHeader` given raw `children` is a plain `theme.spacing(2)` box instead. */\nexport const CARD_HEADER_CHILDREN_PADDING_UNITS = 2;\n\n/**\n * `CardActions`, in MUI's own px: 8 all round, and 8 between the actions unless\n * `disableSpacing` turns the run off.\n */\nexport const CARD_ACTIONS = { padding: 8, gap: 8 } as const;\n\n/** `CardMedia`'s default height. */\nexport const CARD_MEDIA_HEIGHT = 200;\n","import type { ViewStyle } from 'react-native';\n\nimport type { CardBorderRadius, CardVariant } from './Card.base';\nimport {\n CARD_BORDER_WIDTH,\n CARD_GLASS,\n CARD_GLOW,\n CARD_GRADIENT,\n CARD_LOADING,\n CARD_NEUMORPHIC,\n CARD_PAPER_SHADOW,\n CARD_RADIUS_FULL,\n CARD_RADIUS_UNITS,\n CARD_SECTION_BACKGROUND,\n neumorphicShadows,\n} from './Card.metrics';\nimport { alpha } from '../../../tokens/color';\nimport { BLACK, WHITE, drop, halo, type UiShadow } from '../../../tokens/shadow';\nimport type { UiTheme } from '../../../tokens/theme';\n\n/**\n * WHAT THE NATIVE `Card` PAINTS — the arithmetic, with no JSX in sight.\n *\n * The web builds one `sx` object by spreading base, `interactive`, `glow`,\n * `pulse` and finally the variant's own surface over each other; whichever\n * wrote a property last wins. The composition here spreads the SAME things in\n * the SAME order, which is why `glow` shows through an `elevated` card (whose\n * surface declares no shadow) and is buried by a `glass` one (whose surface\n * does) on both renderers.\n */\n\n/** The named radius as a length. `full` stays a percentage of the box. */\nexport function cardRadius(theme: UiTheme, radius: CardBorderRadius): number | string {\n if (radius === 'full') return CARD_RADIUS_FULL;\n return theme.spacing(CARD_RADIUS_UNITS[radius] ?? CARD_RADIUS_UNITS.md);\n}\n\ninterface Surface {\n surface: ViewStyle;\n /** What the web changes on `:hover`; native applies it while pressed. */\n hover: ViewStyle;\n}\n\nfunction glassSurface(theme: UiTheme, lifted: boolean): Surface {\n return {\n surface: {\n backgroundColor: alpha(theme.palette.background.paper, CARD_GLASS.backgroundAlpha.rest),\n borderWidth: CARD_BORDER_WIDTH,\n borderStyle: 'solid',\n borderColor: alpha(theme.palette.primary.main, CARD_GLASS.borderAlpha.rest),\n boxShadow: drop(\n CARD_GLASS.shadow.offsetY,\n CARD_GLASS.shadow.blurRadius,\n alpha(BLACK, CARD_GLASS.shadow.alpha),\n ),\n },\n hover: {\n backgroundColor: alpha(\n theme.palette.background.paper,\n lifted ? CARD_GLASS.backgroundAlpha.lifted : CARD_GLASS.backgroundAlpha.rest,\n ),\n borderColor: alpha(theme.palette.primary.main, CARD_GLASS.borderAlpha.lifted),\n },\n };\n}\n\nfunction neumorphicSurface(theme: UiTheme, lifted: boolean): Surface {\n const { dark, light } = CARD_NEUMORPHIC.alpha;\n const pair = (raised: boolean): UiShadow[] =>\n theme.mode === 'dark'\n ? neumorphicShadows(raised, alpha(BLACK, dark.near), alpha(WHITE, dark.far))\n : neumorphicShadows(\n raised,\n alpha(theme.palette.grey[400], raised ? light.near.lifted : light.near.rest),\n alpha(WHITE, raised ? light.far.lifted : light.far.rest),\n );\n\n return {\n surface: {\n backgroundColor: theme.mode === 'dark' ? theme.palette.grey[800] : theme.palette.grey[100],\n boxShadow: pair(false),\n borderWidth: 0,\n },\n hover: { boxShadow: pair(lifted) },\n };\n}\n\nfunction sectionSurface(theme: UiTheme, lifted: boolean): Surface {\n const wash = CARD_SECTION_BACKGROUND[theme.mode === 'dark' ? 'dark' : 'light'];\n return {\n surface: { backgroundColor: wash.rest, borderWidth: 0, boxShadow: undefined },\n hover: { backgroundColor: lifted ? wash.lifted : wash.rest },\n };\n}\n\n/**\n * Each variant's resting surface and whatever it changes on hover — the same\n * split `Card.styles.ts` makes, in React Native's property names.\n *\n * `gradient` is the one honest gap: React Native core has no gradient fill, so\n * it paints the gradient's FIRST stop. The parity ledger records it.\n */\nexport function cardSurface(theme: UiTheme, variant: CardVariant, lifted: boolean): Surface {\n switch (variant) {\n case 'outlined':\n return {\n surface: {\n borderWidth: CARD_BORDER_WIDTH,\n borderStyle: 'solid',\n borderColor: theme.palette.divider,\n boxShadow: undefined,\n },\n hover: { borderColor: lifted ? theme.palette.primary.main : theme.palette.divider },\n };\n case 'glass':\n return glassSurface(theme, lifted);\n case 'gradient':\n return {\n surface: {\n backgroundColor: theme.palette.primary.main,\n boxShadow: drop(\n CARD_GRADIENT.shadow.offsetY,\n CARD_GRADIENT.shadow.blurRadius,\n alpha(theme.palette.primary.main, CARD_GRADIENT.shadow.alpha),\n ),\n },\n hover: {\n backgroundColor: lifted ? theme.palette.primary.dark : theme.palette.primary.main,\n },\n };\n case 'neumorphic':\n return neumorphicSurface(theme, lifted);\n case 'section':\n return sectionSurface(theme, lifted);\n default:\n // `elevated` declares only MUI's inert `elevation`, so the paper shadow\n // the base laid down (or a `glow` over it) is what shows.\n return { surface: {}, hover: {} };\n }\n}\n\n/** The ink a card's own text inherits: `gradient` flips it, everything else is body ink. */\nexport const cardInk = (theme: UiTheme, variant: CardVariant): string =>\n variant === 'gradient' ? theme.palette.primary.contrastText : theme.palette.text.primary;\n\nexport interface CardLookArgs {\n variant: CardVariant;\n interactive: boolean;\n glow: boolean;\n pulse: boolean;\n loading: boolean;\n borderRadius: CardBorderRadius;\n}\n\nexport interface CardLook {\n container: ViewStyle;\n /** Applied while pressed, standing in for the web's `:hover`. */\n pressed: ViewStyle;\n radius: number | string;\n ink: string;\n}\n\n/**\n * Everything the card paints, decided once per render.\n *\n * `overflow` is the one place native needs a rule the web does not. MUI's\n * `Card` clips its children, and the pulse ring has to reach 15px past the\n * edge — but a view's own shadow is clipped by its own overflow on a device,\n * so a `glow` the caller asked for would simply not paint. Both decorations\n * therefore turn the clip off, exactly as `Button.native.tsx` does.\n */\nexport function cardLook(theme: UiTheme, a: CardLookArgs): CardLook {\n const radius = cardRadius(theme, a.borderRadius);\n const chosen = cardSurface(theme, a.variant, a.interactive);\n\n const base: ViewStyle = {\n position: 'relative',\n borderRadius: radius,\n backgroundColor: theme.palette.background.paper,\n overflow: a.pulse || a.glow ? 'visible' : 'hidden',\n opacity: a.loading ? CARD_LOADING.opacity : 1,\n pointerEvents: a.loading ? 'none' : 'auto',\n };\n\n return {\n radius,\n ink: cardInk(theme, a.variant),\n container: {\n ...base,\n boxShadow: CARD_PAPER_SHADOW,\n ...(a.interactive ? { cursor: 'pointer' } : null),\n ...(a.glow\n ? { boxShadow: halo(CARD_GLOW.rest.blurRadius, alpha(theme.palette.primary.main, CARD_GLOW.rest.alpha)) }\n : null),\n ...chosen.surface,\n },\n pressed: {\n ...(a.glow\n ? { boxShadow: halo(CARD_GLOW.lifted.blurRadius, alpha(theme.palette.primary.main, CARD_GLOW.lifted.alpha)) }\n : null),\n ...chosen.hover,\n },\n };\n}\n","import * as React from 'react';\nimport {\n Image,\n StyleSheet,\n Text as RNText,\n View,\n type DimensionValue,\n type TextStyle,\n type ViewStyle,\n} from 'react-native';\n\nimport {\n CARD_ACTIONS,\n CARD_CONTENT_PADDING_UNITS,\n CARD_HEADER,\n CARD_HEADER_CHILDREN_PADDING_UNITS,\n CARD_MEDIA_HEIGHT,\n} from './Card.metrics';\nimport type {\n CardActionsAlignment,\n CardActionsProps,\n CardContentProps,\n CardHeaderProps,\n CardMediaProps,\n} from './Card.types.native';\nimport { childTestId, resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { renderTextChildren } from '../../../platform/text-children';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport { muiTypeStyle } from '../../../tokens/mui-type';\nimport type { UiTheme } from '../../../tokens/theme';\n\n/**\n * THE FOUR SLOTS A CARD IS BUILT OUT OF, ON REACT NATIVE.\n *\n * Each one is a `View` carrying the padding MUI's own `CardHeader`,\n * `CardContent`, `CardActions` and `CardMedia` declare in px — the web half\n * overrides only `padding` and `justify-content`, so the rest of the numbers\n * come from MUI and are restated in `Card.metrics.ts` rather than re-invented.\n */\n\n/**\n * THE INK A CARD PUBLISHES TO ITS SLOTS.\n *\n * `Card.styles.ts` puts `color: primary.contrastText` on the gradient card\n * ITSELF and lets CSS inheritance carry it into the header and the body. React\n * Native inherits nothing across views, so the card publishes its ink here and\n * every slot reads it — which is the difference between a legible gradient card\n * and near-black text on indigo.\n *\n * `null` is \"no card above me\": a slot rendered on its own falls back to the\n * body ink, exactly as it would on the web.\n */\nexport const CardInkContext = React.createContext<string | null>(null);\n\n/** The body text of a slot, in MUI's `body1`, so a bare string is not unstyled. */\nconst slotTextStyle = (theme: UiTheme, ink: string | null): TextStyle => ({\n ...muiTypeStyle(theme, 'body1'),\n color: ink ?? theme.palette.text.primary,\n});\n\n/** MUI's header title: `h5`, or `body2` when an avatar shares the row. */\nexport const cardTitleStyle = (\n theme: UiTheme,\n hasAvatar: boolean,\n ink: string | null = null,\n): TextStyle => ({\n ...muiTypeStyle(theme, hasAvatar ? 'body2' : 'h5'),\n color: ink ?? theme.palette.text.primary,\n});\n\n/**\n * MUI's header subheader: `body1` (or `body2` beside an avatar), in the muted\n * ink — which does NOT follow the card's own ink, because MUI's `CardHeader`\n * pins the subheader to `textSecondary` explicitly rather than inheriting.\n */\nexport const cardSubtitleStyle = (theme: UiTheme, hasAvatar: boolean): TextStyle => ({\n ...muiTypeStyle(theme, hasAvatar ? 'body2' : 'body1'),\n color: theme.palette.text.secondary,\n});\n\nexport function CardHeader({\n title,\n subtitle,\n action,\n avatar,\n children,\n ...others\n}: CardHeaderProps): React.JSX.Element {\n const theme = useUiTheme();\n const ink = React.useContext(CardInkContext);\n const testID = resolveTestId(others, 'card-header');\n const { style, ...viewProps } = withoutTestIdProps(others);\n\n if (children) {\n return (\n <View\n testID={testID}\n style={[{ padding: theme.spacing(CARD_HEADER_CHILDREN_PADDING_UNITS) }, style]}\n {...viewProps}\n >\n {renderTextChildren(children, slotTextStyle(theme, ink))}\n </View>\n );\n }\n\n const hasAvatar = avatar != null;\n return (\n <View testID={testID} style={[styles.header, style]} {...viewProps}>\n {hasAvatar ? <View style={styles.headerAvatar}>{avatar}</View> : null}\n <View style={styles.headerContent}>\n {title != null ? (\n <RNText testID={childTestId(others, 'title', 'card')} style={cardTitleStyle(theme, hasAvatar, ink)}>\n {title}\n </RNText>\n ) : null}\n {subtitle != null ? (\n <RNText\n testID={childTestId(others, 'subtitle', 'card')}\n style={cardSubtitleStyle(theme, hasAvatar)}\n >\n {subtitle}\n </RNText>\n ) : null}\n </View>\n {action != null ? <View style={styles.headerAction}>{action}</View> : null}\n </View>\n );\n}\n\nCardHeader.displayName = 'CardHeader';\n\nexport function CardContent({\n children,\n dense = false,\n ...others\n}: CardContentProps): React.JSX.Element {\n const theme = useUiTheme();\n const ink = React.useContext(CardInkContext);\n const testID = resolveTestId(others, 'card-content');\n const { style, ...viewProps } = withoutTestIdProps(others);\n const padding = theme.spacing(\n dense ? CARD_CONTENT_PADDING_UNITS.dense : CARD_CONTENT_PADDING_UNITS.normal,\n );\n\n return (\n <View testID={testID} style={[{ padding }, style]} {...viewProps}>\n {renderTextChildren(children, slotTextStyle(theme, ink))}\n </View>\n );\n}\n\nCardContent.displayName = 'CardContent';\n\nconst JUSTIFY: Record<CardActionsAlignment, NonNullable<ViewStyle['justifyContent']>> = {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end',\n 'space-between': 'space-between',\n};\n\nexport function CardActions({\n children,\n disableSpacing = false,\n alignment = 'left',\n ...others\n}: CardActionsProps): React.JSX.Element {\n const theme = useUiTheme();\n const ink = React.useContext(CardInkContext);\n const testID = resolveTestId(others, 'card-actions');\n const { style, ...viewProps } = withoutTestIdProps(others);\n\n return (\n <View\n testID={testID}\n style={[\n styles.actions,\n { justifyContent: JUSTIFY[alignment], gap: disableSpacing ? undefined : CARD_ACTIONS.gap },\n style,\n ]}\n {...viewProps}\n >\n {renderTextChildren(children, slotTextStyle(theme, ink))}\n </View>\n );\n}\n\nCardActions.displayName = 'CardActions';\n\n/**\n * `height` accepts the web's spellings: a number, a numeric string (`\"200\"`, as\n * an `<img height>` takes) or a percentage.\n */\nexport function mediaHeight(height: number | string): DimensionValue {\n if (typeof height === 'number') return height;\n const parsed = Number(height);\n return Number.isFinite(parsed) ? parsed : (height as DimensionValue);\n}\n\nexport function CardMedia({\n image,\n title,\n height = CARD_MEDIA_HEIGHT,\n children,\n ...others\n}: CardMediaProps): React.JSX.Element {\n const testID = resolveTestId(others, 'card-media');\n const { style, ...viewProps } = withoutTestIdProps(others);\n\n return (\n <View\n testID={testID}\n style={[{ height: mediaHeight(height), width: '100%', overflow: 'hidden' }, style]}\n {...viewProps}\n >\n {image != null ? (\n <Image\n source={{ uri: image }}\n accessibilityLabel={title}\n resizeMode=\"cover\"\n style={StyleSheet.absoluteFill}\n />\n ) : null}\n {children}\n </View>\n );\n}\n\nCardMedia.displayName = 'CardMedia';\n\nconst styles = StyleSheet.create({\n header: {\n flexDirection: 'row',\n alignItems: 'center',\n padding: CARD_HEADER.padding,\n },\n headerAvatar: {\n flexGrow: 0,\n flexShrink: 0,\n flexBasis: 'auto',\n marginRight: CARD_HEADER.avatarGap,\n },\n headerContent: {\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: 'auto',\n minWidth: 0,\n },\n headerAction: {\n flexGrow: 0,\n flexShrink: 0,\n flexBasis: 'auto',\n alignSelf: 'flex-start',\n marginTop: CARD_HEADER.action.marginTop,\n marginRight: CARD_HEADER.action.marginRight,\n marginBottom: CARD_HEADER.action.marginBottom,\n },\n actions: {\n flexDirection: 'row',\n alignItems: 'center',\n padding: CARD_ACTIONS.padding,\n },\n});\n"],"mappings":"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","names":["React","StyleSheet","View","jsx","jsxs","View","styles","StyleSheet"]}
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  Skeleton
3
- } from "../chunks/chunk-4KWFRDI2.js";
3
+ } from "../chunks/chunk-SZF56GVJ.js";
4
4
  import "../chunks/chunk-MLQIOKQZ.js";
5
+ import "../chunks/chunk-ZRQHLTYG.js";
5
6
  import "../chunks/chunk-AR5O4BEY.js";
6
7
  import "../chunks/chunk-X6RQGKGF.js";
7
8
  import "../chunks/chunk-R5XVZRDD.js";
@@ -1,3 +1,19 @@
1
+ import {
2
+ ABSOLUTE_INK,
3
+ ATTENTION_INK,
4
+ CELEBRATION_GRADIENTS,
5
+ CODE_EDITOR_CHROME,
6
+ DATA_VIZ_NEON,
7
+ EFFECT_GLOW,
8
+ ELEVATION_SHADOWS,
9
+ GLASS_SLATE,
10
+ HIGHLIGHT_MARK,
11
+ MAP_SURFACE,
12
+ NEUTRAL_RAMP,
13
+ PANEL_SHADOW_INK,
14
+ SOCIAL_BRAND,
15
+ TIMING_PHASES
16
+ } from "./chunks/chunk-ZRQHLTYG.js";
1
17
  import {
2
18
  COLOR_VALUES,
3
19
  SIZE_VALUES,
@@ -39,19 +55,33 @@ import {
39
55
  recomposeColor
40
56
  } from "./chunks/chunk-R5XVZRDD.js";
41
57
  export {
58
+ ABSOLUTE_INK,
59
+ ATTENTION_INK,
60
+ CELEBRATION_GRADIENTS,
61
+ CODE_EDITOR_CHROME,
42
62
  COLOR_VALUES,
63
+ DATA_VIZ_NEON,
43
64
  DEFAULT_BRAND,
44
65
  DEFAULT_FIELD_HEIGHT,
45
66
  DEFAULT_FIELD_RADIUS,
46
67
  DEFAULT_UI_THEME,
68
+ EFFECT_GLOW,
69
+ ELEVATION_SHADOWS,
47
70
  FIELD_BORDER_WIDTH,
48
71
  FIELD_HEIGHT_SCALE,
49
72
  FONT_WEIGHTS,
73
+ GLASS_SLATE,
50
74
  GREY,
51
75
  HEADING_LEVELS,
52
76
  HEADING_SCALE,
77
+ HIGHLIGHT_MARK,
78
+ MAP_SURFACE,
53
79
  NEUTRAL,
80
+ NEUTRAL_RAMP,
81
+ PANEL_SHADOW_INK,
54
82
  SIZE_VALUES,
83
+ SOCIAL_BRAND,
84
+ TIMING_PHASES,
55
85
  TYPE_SIZES,
56
86
  WEB_FONT_FAMILY,
57
87
  WEB_MONOSPACE_FONT_FAMILY,
@@ -1,3 +1,6 @@
1
+ import {
2
+ NEUTRAL_RAMP
3
+ } from "../chunks/chunk-ZRQHLTYG.js";
1
4
  import {
2
5
  resolveTestId,
3
6
  withoutTestIdProps
@@ -42,7 +45,7 @@ function headingGradientStops(theme, color) {
42
45
  case "secondary":
43
46
  return [theme.palette.secondary.main, theme.palette.primary.main];
44
47
  case "neutral":
45
- return [theme.palette.grey[NEUTRAL_GRADIENT_STEPS.from], theme.palette.grey[NEUTRAL_GRADIENT_STEPS.to]];
48
+ return [NEUTRAL_RAMP[NEUTRAL_GRADIENT_STEPS.from], NEUTRAL_RAMP[NEUTRAL_GRADIENT_STEPS.to]];
46
49
  default:
47
50
  return [theme.palette[color].light, theme.palette[color].dark];
48
51
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/typography/Heading/Heading.native.tsx","../../../src/components/typography/Heading/Heading.metrics.ts"],"sourcesContent":["import * as React from 'react';\nimport { Text as RNText, type GestureResponderEvent, type TextStyle } from 'react-native';\n\nimport type { HeadingWeight } from './Heading.base';\nimport {\n HEADING_DEFAULT_COLOR,\n HEADING_DEFAULT_LEVEL,\n HEADING_DEFAULT_WEIGHT,\n HEADING_RANK,\n headingGradientStops,\n headingWeight,\n stepOf,\n} from './Heading.metrics';\nimport type { HeadingProps } from './Heading.types.native';\nimport { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { HeadingLevel } from '../../../tokens/heading-scale';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/** Same mapping as the web `getColorFromTheme`: neutral is body ink, every other colour its slot's main. */\nconst inkFor = (theme: UiTheme, color: ColorValue): string =>\n color === 'neutral' ? theme.palette.text.primary : theme.palette[color].main;\n\nexport interface HeadingStyleArgs {\n /** The step to DRAW — `size ?? level`, already resolved to a name the scale has. */\n size: HeadingLevel;\n color: ColorValue;\n weight: HeadingWeight;\n gradient: boolean;\n}\n\n/**\n * The style the web `headingSx` computes, in absolute numbers. The step comes\n * from the theme's heading scale (`HEADING_SCALE` unless the host built its\n * own), and its `lineHeight` ratio and `letterSpacing` em are multiplied out\n * because React Native has neither unit.\n *\n * `gradient` is the one honest gap: React Native has no `background-clip:\n * text` and no gradient fill in core, so the glyphs take the gradient's first\n * stop as a flat colour — the same choice the native `Button` makes.\n */\nexport function headingStyle(theme: UiTheme, a: HeadingStyleArgs): TextStyle {\n const step = theme.typography.heading[a.size];\n return {\n fontFamily: theme.typography.fontFamily,\n fontSize: step.fontSize,\n lineHeight: step.fontSize * step.lineHeight,\n letterSpacing: step.letterSpacing === undefined ? undefined : step.letterSpacing * step.fontSize,\n fontWeight: String(headingWeight(a.weight, step.normalWeight)) as TextStyle['fontWeight'],\n color: a.gradient ? headingGradientStops(theme, a.color)[0] : inkFor(theme, a.color),\n };\n}\n\nexport const Heading = React.forwardRef<RNText, HeadingProps>(\n (\n {\n level = HEADING_DEFAULT_LEVEL,\n size,\n color = HEADING_DEFAULT_COLOR,\n weight = HEADING_DEFAULT_WEIGHT,\n gradient = false,\n children,\n style,\n onClick,\n onPress,\n ...others\n },\n ref,\n ) => {\n const rest = withoutTestIdProps(others);\n const theme = useUiTheme();\n // The rank is `level`'s; the drawn step is `size`'s, falling back to the\n // rank's — the same two derivations the web makes from the same two props.\n const rank = HEADING_RANK[stepOf(level)];\n const step = stepOf(size ?? level);\n const resolved = React.useMemo(\n () => headingStyle(theme, { size: step, color, weight, gradient }),\n [theme, step, color, weight, gradient],\n );\n const handlePress =\n onClick || onPress\n ? (event: GestureResponderEvent): void => {\n onClick?.(event);\n onPress?.(event);\n }\n : undefined;\n\n return (\n <RNText\n ref={ref}\n role=\"heading\"\n aria-level={rank}\n style={[resolved, style]}\n testID={resolveTestId(others)}\n onPress={handlePress}\n {...rest}\n >\n {children}\n </RNText>\n );\n },\n);\n\nHeading.displayName = 'Heading';\n","import type { HeadingWeight } from './Heading.base';\nimport { HEADING_SCALE, type HeadingLevel } from '../../../tokens/heading-scale';\nimport { FONT_WEIGHTS, type UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Heading` RENDERERS DRAW WITH.\n *\n * The type scale itself is `HEADING_SCALE` in `tokens/heading-scale.ts` (the\n * web reads it through the MUI theme's `headingScale` overrides, native\n * through `UiTheme.typography.heading`). What lives here is everything ELSE\n * `Heading.styles.ts` used to declare inline: the weight table, the defaults,\n * the rank each level announces, and the gradient's angle and stops.\n */\nexport const HEADING_WEIGHTS: Record<HeadingWeight, number> = FONT_WEIGHTS;\n\nexport const HEADING_DEFAULT_LEVEL: HeadingLevel = 'h2';\nexport const HEADING_DEFAULT_WEIGHT: HeadingWeight = 'bold';\nexport const HEADING_DEFAULT_COLOR: ColorValue = 'neutral';\n\nexport type HeadingRank = 1 | 2 | 3 | 4 | 5 | 6;\n\n/**\n * The outline rank each level announces — the tag on the web, `aria-level` on\n * native. `display` is a SIZE, not a rank, so it is an h1: the document still\n * gets one level-one heading rather than an unnamed tag outside the outline.\n */\nexport const HEADING_RANK: Record<HeadingLevel, HeadingRank> = {\n display: 1,\n h1: 1,\n h2: 2,\n h3: 3,\n h4: 4,\n h5: 5,\n h6: 6,\n};\n\n/** A step name the scale actually has, or the documented default (`h2`). */\nexport const stepOf = (value: string | undefined): HeadingLevel =>\n value !== undefined && value in HEADING_SCALE ? (value as HeadingLevel) : HEADING_DEFAULT_LEVEL;\n\nconst isHeadingWeight = (value: string): value is HeadingWeight => value in HEADING_WEIGHTS;\n\n/**\n * The weight a heading draws: `normal` is the weight the step was designed to\n * carry (heavier as the step gets larger), anything else its table entry, and\n * a name outside the vocabulary the default — as `Heading.styles.ts` has\n * always fallen back.\n */\nexport function headingWeight(weight: string, normalWeight: number): number {\n if (weight === 'normal') return normalWeight;\n return HEADING_WEIGHTS[isHeadingWeight(weight) ? weight : HEADING_DEFAULT_WEIGHT];\n}\n\n/** The gradient runs corner to corner. */\nexport const HEADING_GRADIENT_ANGLE = 135;\n\n/**\n * `neutral` has no light/dark pair, so its gradient runs between two steps of\n * the grey ramp.\n */\nexport const NEUTRAL_GRADIENT_STEPS = { from: 500, to: 900 } as const;\n\n/** The CSS the web paints the glyphs with, from the two stops. */\nexport const headingGradient = (from: string, to: string): string =>\n `linear-gradient(${HEADING_GRADIENT_ANGLE}deg, ${from} 0%, ${to} 100%)`;\n\n/**\n * The two stops each colour paints its glyphs with, read off a `UiTheme`. The\n * web's `Heading.styles.ts` keeps its MUI-typed twin of this table; the pairs\n * are the same, and `Heading.native.test.tsx` asserts as much.\n */\nexport function headingGradientStops(theme: UiTheme, color: ColorValue): [string, string] {\n switch (color) {\n case 'primary':\n return [theme.palette.primary.main, theme.palette.secondary.main];\n case 'secondary':\n return [theme.palette.secondary.main, theme.palette.primary.main];\n case 'neutral':\n return [theme.palette.grey[NEUTRAL_GRADIENT_STEPS.from], theme.palette.grey[NEUTRAL_GRADIENT_STEPS.to]];\n default:\n return [theme.palette[color].light, theme.palette[color].dark];\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/typography/Heading/Heading.native.tsx","../../../src/components/typography/Heading/Heading.metrics.ts"],"sourcesContent":["import * as React from 'react';\nimport { Text as RNText, type GestureResponderEvent, type TextStyle } from 'react-native';\n\nimport type { HeadingWeight } from './Heading.base';\nimport {\n HEADING_DEFAULT_COLOR,\n HEADING_DEFAULT_LEVEL,\n HEADING_DEFAULT_WEIGHT,\n HEADING_RANK,\n headingGradientStops,\n headingWeight,\n stepOf,\n} from './Heading.metrics';\nimport type { HeadingProps } from './Heading.types.native';\nimport { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { HeadingLevel } from '../../../tokens/heading-scale';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/** Same mapping as the web `getColorFromTheme`: neutral is body ink, every other colour its slot's main. */\nconst inkFor = (theme: UiTheme, color: ColorValue): string =>\n color === 'neutral' ? theme.palette.text.primary : theme.palette[color].main;\n\nexport interface HeadingStyleArgs {\n /** The step to DRAW — `size ?? level`, already resolved to a name the scale has. */\n size: HeadingLevel;\n color: ColorValue;\n weight: HeadingWeight;\n gradient: boolean;\n}\n\n/**\n * The style the web `headingSx` computes, in absolute numbers. The step comes\n * from the theme's heading scale (`HEADING_SCALE` unless the host built its\n * own), and its `lineHeight` ratio and `letterSpacing` em are multiplied out\n * because React Native has neither unit.\n *\n * `gradient` is the one honest gap: React Native has no `background-clip:\n * text` and no gradient fill in core, so the glyphs take the gradient's first\n * stop as a flat colour — the same choice the native `Button` makes.\n */\nexport function headingStyle(theme: UiTheme, a: HeadingStyleArgs): TextStyle {\n const step = theme.typography.heading[a.size];\n return {\n fontFamily: theme.typography.fontFamily,\n fontSize: step.fontSize,\n lineHeight: step.fontSize * step.lineHeight,\n letterSpacing: step.letterSpacing === undefined ? undefined : step.letterSpacing * step.fontSize,\n fontWeight: String(headingWeight(a.weight, step.normalWeight)) as TextStyle['fontWeight'],\n color: a.gradient ? headingGradientStops(theme, a.color)[0] : inkFor(theme, a.color),\n };\n}\n\nexport const Heading = React.forwardRef<RNText, HeadingProps>(\n (\n {\n level = HEADING_DEFAULT_LEVEL,\n size,\n color = HEADING_DEFAULT_COLOR,\n weight = HEADING_DEFAULT_WEIGHT,\n gradient = false,\n children,\n style,\n onClick,\n onPress,\n ...others\n },\n ref,\n ) => {\n const rest = withoutTestIdProps(others);\n const theme = useUiTheme();\n // The rank is `level`'s; the drawn step is `size`'s, falling back to the\n // rank's — the same two derivations the web makes from the same two props.\n const rank = HEADING_RANK[stepOf(level)];\n const step = stepOf(size ?? level);\n const resolved = React.useMemo(\n () => headingStyle(theme, { size: step, color, weight, gradient }),\n [theme, step, color, weight, gradient],\n );\n const handlePress =\n onClick || onPress\n ? (event: GestureResponderEvent): void => {\n onClick?.(event);\n onPress?.(event);\n }\n : undefined;\n\n return (\n <RNText\n ref={ref}\n role=\"heading\"\n aria-level={rank}\n style={[resolved, style]}\n testID={resolveTestId(others)}\n onPress={handlePress}\n {...rest}\n >\n {children}\n </RNText>\n );\n },\n);\n\nHeading.displayName = 'Heading';\n","import type { HeadingWeight } from './Heading.base';\nimport { HEADING_SCALE, type HeadingLevel } from '../../../tokens/heading-scale';\nimport { NEUTRAL_RAMP } from '../../../tokens/ink.core';\nimport { FONT_WEIGHTS, type UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Heading` RENDERERS DRAW WITH.\n *\n * The type scale itself is `HEADING_SCALE` in `tokens/heading-scale.ts` (the\n * web reads it through the MUI theme's `headingScale` overrides, native\n * through `UiTheme.typography.heading`). What lives here is everything ELSE\n * `Heading.styles.ts` used to declare inline: the weight table, the defaults,\n * the rank each level announces, and the gradient's angle and stops.\n */\nexport const HEADING_WEIGHTS: Record<HeadingWeight, number> = FONT_WEIGHTS;\n\nexport const HEADING_DEFAULT_LEVEL: HeadingLevel = 'h2';\nexport const HEADING_DEFAULT_WEIGHT: HeadingWeight = 'bold';\nexport const HEADING_DEFAULT_COLOR: ColorValue = 'neutral';\n\nexport type HeadingRank = 1 | 2 | 3 | 4 | 5 | 6;\n\n/**\n * The outline rank each level announces — the tag on the web, `aria-level` on\n * native. `display` is a SIZE, not a rank, so it is an h1: the document still\n * gets one level-one heading rather than an unnamed tag outside the outline.\n */\nexport const HEADING_RANK: Record<HeadingLevel, HeadingRank> = {\n display: 1,\n h1: 1,\n h2: 2,\n h3: 3,\n h4: 4,\n h5: 5,\n h6: 6,\n};\n\n/** A step name the scale actually has, or the documented default (`h2`). */\nexport const stepOf = (value: string | undefined): HeadingLevel =>\n value !== undefined && value in HEADING_SCALE ? (value as HeadingLevel) : HEADING_DEFAULT_LEVEL;\n\nconst isHeadingWeight = (value: string): value is HeadingWeight => value in HEADING_WEIGHTS;\n\n/**\n * The weight a heading draws: `normal` is the weight the step was designed to\n * carry (heavier as the step gets larger), anything else its table entry, and\n * a name outside the vocabulary the default — as `Heading.styles.ts` has\n * always fallen back.\n */\nexport function headingWeight(weight: string, normalWeight: number): number {\n if (weight === 'normal') return normalWeight;\n return HEADING_WEIGHTS[isHeadingWeight(weight) ? weight : HEADING_DEFAULT_WEIGHT];\n}\n\n/** The gradient runs corner to corner. */\nexport const HEADING_GRADIENT_ANGLE = 135;\n\n/**\n * `neutral` has no light/dark pair, so its gradient runs between two steps of\n * the grey ramp.\n */\nexport const NEUTRAL_GRADIENT_STEPS = { from: 500, to: 900 } as const;\n\n/** The CSS the web paints the glyphs with, from the two stops. */\nexport const headingGradient = (from: string, to: string): string =>\n `linear-gradient(${HEADING_GRADIENT_ANGLE}deg, ${from} 0%, ${to} 100%)`;\n\n/**\n * The two stops each colour paints its glyphs with, read off a `UiTheme`. The\n * web's `Heading.styles.ts` keeps its MUI-typed twin of this table; the pairs\n * are the same, and `Heading.native.test.tsx` asserts as much.\n */\nexport function headingGradientStops(theme: UiTheme, color: ColorValue): [string, string] {\n switch (color) {\n case 'primary':\n return [theme.palette.primary.main, theme.palette.secondary.main];\n case 'secondary':\n return [theme.palette.secondary.main, theme.palette.primary.main];\n case 'neutral':\n return [NEUTRAL_RAMP[NEUTRAL_GRADIENT_STEPS.from], NEUTRAL_RAMP[NEUTRAL_GRADIENT_STEPS.to]];\n default:\n return [theme.palette[color].light, theme.palette[color].dark];\n }\n}\n"],"mappings":"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","names":[]}