pixelize-native-library 1.2.1 → 1.3.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 (808) hide show
  1. package/COMPONENT-GOTCHAS.md +309 -0
  2. package/DESIGN-GUIDE.md +215 -0
  3. package/README.md +44 -0
  4. package/lib/module/core/MODULE.md +22 -16
  5. package/lib/module/core/a11y/MODULE.md +7 -7
  6. package/lib/module/core/a11y/touchTarget.js +6 -0
  7. package/lib/module/core/blur/blur.js +17 -0
  8. package/lib/module/core/blur/index.js +4 -0
  9. package/lib/module/core/device/MODULE.md +5 -8
  10. package/lib/module/core/gradient/AccentGradientFill.js +9 -6
  11. package/lib/module/core/gradient/ShimmerGradientFill.js +79 -0
  12. package/lib/module/core/gradient/index.js +1 -0
  13. package/lib/module/core/haptics/MODULE.md +7 -3
  14. package/lib/module/core/heading/MODULE.md +1 -1
  15. package/lib/module/core/icon/MODULE.md +14 -22
  16. package/lib/module/core/icon/icons/building-2.js +1 -1
  17. package/lib/module/core/icon/icons/trash.js +1 -1
  18. package/lib/module/core/list/VirtualList.js +16 -3
  19. package/lib/module/core/motion/MODULE.md +18 -9
  20. package/lib/module/core/motion/animatedComponents.js +8 -0
  21. package/lib/module/core/motion/index.js +2 -0
  22. package/lib/module/core/motion/motionAnimation.js +87 -0
  23. package/lib/module/core/motion/presets.js +81 -81
  24. package/lib/module/core/motion/reanimatedEasing.js +19 -0
  25. package/lib/module/core/motion/useAnimatedValue.js +2 -14
  26. package/lib/module/core/motion/useMotion.js +19 -20
  27. package/lib/module/core/motion/usePressState.js +0 -5
  28. package/lib/module/core/overlay/MODULE.md +17 -0
  29. package/lib/module/core/overlay/ModalPortalContext.js +8 -0
  30. package/lib/module/core/overlay/index.js +5 -0
  31. package/lib/module/core/overlay/renderWebPortal.js +6 -0
  32. package/lib/module/core/overlay/renderWebPortal.web.js +8 -0
  33. package/lib/module/core/screen-scroll/ScreenScrollContext.js +9 -0
  34. package/lib/module/core/screen-scroll/index.js +4 -0
  35. package/lib/module/core/slot/MODULE.md +9 -0
  36. package/lib/module/core/slot/index.js +4 -0
  37. package/lib/module/core/slot/nodeSlot.js +21 -0
  38. package/lib/module/core/style/focusRing.js +37 -0
  39. package/lib/module/core/style/index.js +1 -1
  40. package/lib/module/index.js +23 -4
  41. package/lib/module/modules/accordion/Accordion.js +50 -108
  42. package/lib/module/modules/accordion/Accordion.variants.js +2 -4
  43. package/lib/module/modules/accordion/AccordionProps.js +4 -0
  44. package/lib/module/modules/accordion/MODULE.md +15 -24
  45. package/lib/module/modules/alert-dialog/AlertDialog.js +19 -2
  46. package/lib/module/modules/alert-dialog/AlertDialogProps.js +4 -0
  47. package/lib/module/modules/alert-dialog/MODULE.md +2 -1
  48. package/lib/module/modules/app-bar/AppBar.js +21 -18
  49. package/lib/module/modules/app-bar/AppBar.variants.js +5 -0
  50. package/lib/module/modules/app-bar/AppBarProps.js +4 -0
  51. package/lib/module/modules/app-bar/MODULE.md +1 -1
  52. package/lib/module/modules/app-switcher/AppSwitcher.js +30 -0
  53. package/lib/module/modules/app-switcher/AppSwitcherProps.js +4 -0
  54. package/lib/module/modules/app-switcher/MODULE.md +14 -0
  55. package/lib/module/modules/app-switcher/index.js +4 -0
  56. package/lib/module/modules/appearance-settings/AppearanceSettings.js +58 -0
  57. package/lib/module/modules/appearance-settings/AppearanceSettingsProps.js +4 -0
  58. package/lib/module/modules/appearance-settings/MODULE.md +9 -0
  59. package/lib/module/modules/appearance-settings/index.js +4 -0
  60. package/lib/module/modules/avatar/Avatar.variants.js +2 -0
  61. package/lib/module/modules/avatar/AvatarProps.js +4 -0
  62. package/lib/module/modules/avatar/MODULE.md +3 -3
  63. package/lib/module/modules/avatar-group/AvatarGroupProps.js +4 -0
  64. package/lib/module/modules/avatar-group/MODULE.md +2 -1
  65. package/lib/module/modules/backdrop/Backdrop.js +38 -0
  66. package/lib/module/modules/backdrop/BackdropProps.js +4 -0
  67. package/lib/module/modules/backdrop/MODULE.md +11 -0
  68. package/lib/module/modules/backdrop/index.js +4 -0
  69. package/lib/module/modules/badge/BadgeProps.js +4 -0
  70. package/lib/module/modules/badge/MODULE.md +6 -4
  71. package/lib/module/modules/banner/Banner.js +2 -2
  72. package/lib/module/modules/banner/Banner.variants.js +3 -1
  73. package/lib/module/modules/banner/BannerProps.js +4 -0
  74. package/lib/module/modules/banner/MODULE.md +20 -31
  75. package/lib/module/modules/bottom-nav/BottomNav.variants.js +2 -2
  76. package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js +18 -19
  77. package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js +8 -7
  78. package/lib/module/modules/bottom-nav/BottomNavProps.js +4 -0
  79. package/lib/module/modules/bottom-nav/BottomNavTab.js +15 -16
  80. package/lib/module/modules/bottom-nav/MODULE.md +13 -13
  81. package/lib/module/modules/bottom-sheet/BottomSheet.js +30 -7
  82. package/lib/module/modules/bottom-sheet/BottomSheetProps.js +4 -0
  83. package/lib/module/modules/bottom-sheet/MODULE.md +11 -1
  84. package/lib/module/modules/breadcrumbs/Breadcrumbs.js +54 -0
  85. package/lib/module/modules/breadcrumbs/Breadcrumbs.variants.js +28 -0
  86. package/lib/module/modules/breadcrumbs/BreadcrumbsProps.js +4 -0
  87. package/lib/module/modules/breadcrumbs/MODULE.md +13 -0
  88. package/lib/module/modules/breadcrumbs/index.js +4 -0
  89. package/lib/module/modules/button/Button.js +6 -4
  90. package/lib/module/modules/button/Button.variants.js +12 -16
  91. package/lib/module/modules/button/ButtonProps.js +4 -0
  92. package/lib/module/modules/button/MODULE.md +6 -11
  93. package/lib/module/modules/button-group/ButtonGroup.js +4 -3
  94. package/lib/module/modules/button-group/ButtonGroup.variants.js +2 -4
  95. package/lib/module/modules/button-group/ButtonGroupProps.js +4 -0
  96. package/lib/module/modules/button-group/MODULE.md +2 -2
  97. package/lib/module/modules/card/Card.js +30 -7
  98. package/lib/module/modules/card/CardProps.js +4 -0
  99. package/lib/module/modules/card/MODULE.md +4 -2
  100. package/lib/module/modules/charts/BarChart.js +6 -4
  101. package/lib/module/modules/charts/BarChartProps.js +4 -0
  102. package/lib/module/modules/charts/BarList.js +2 -1
  103. package/lib/module/modules/charts/BarListProps.js +4 -0
  104. package/lib/module/modules/charts/ChartLegendProps.js +4 -0
  105. package/lib/module/modules/charts/Charts.variants.js +3 -1
  106. package/lib/module/modules/charts/DonutChart.js +3 -2
  107. package/lib/module/modules/charts/DonutChartProps.js +4 -0
  108. package/lib/module/modules/charts/LineChart.js +3 -2
  109. package/lib/module/modules/charts/LineChartProps.js +4 -0
  110. package/lib/module/modules/charts/MODULE.md +14 -14
  111. package/lib/module/modules/charts/PieChart.js +6 -4
  112. package/lib/module/modules/charts/PieChartProps.js +4 -0
  113. package/lib/module/modules/charts/SparklineProps.js +4 -0
  114. package/lib/module/modules/checkbox/Checkbox.js +21 -27
  115. package/lib/module/modules/checkbox/Checkbox.variants.js +4 -2
  116. package/lib/module/modules/checkbox/CheckboxProps.js +4 -0
  117. package/lib/module/modules/checkbox/MODULE.md +12 -6
  118. package/lib/module/modules/chip/Chip.js +49 -32
  119. package/lib/module/modules/chip/Chip.variants.js +3 -2
  120. package/lib/module/modules/chip/ChipGroup.js +16 -5
  121. package/lib/module/modules/chip/ChipGroupProps.js +4 -0
  122. package/lib/module/modules/chip/ChipProps.js +4 -0
  123. package/lib/module/modules/chip/MODULE.md +5 -7
  124. package/lib/module/modules/combobox/Combobox.js +22 -25
  125. package/lib/module/modules/combobox/Combobox.variants.js +2 -3
  126. package/lib/module/modules/combobox/ComboboxProps.js +4 -0
  127. package/lib/module/modules/combobox/MODULE.md +6 -12
  128. package/lib/module/modules/composer/Composer.js +11 -9
  129. package/lib/module/modules/composer/ComposerProps.js +4 -0
  130. package/lib/module/modules/composer/MODULE.md +6 -6
  131. package/lib/module/modules/copy-button/CopyButton.js +14 -6
  132. package/lib/module/modules/copy-button/CopyButton.variants.js +3 -2
  133. package/lib/module/modules/copy-button/CopyButtonProps.js +4 -0
  134. package/lib/module/modules/copy-button/MODULE.md +10 -12
  135. package/lib/module/modules/data-table/DataTable.js +11 -7
  136. package/lib/module/modules/data-table/DataTable.variants.js +2 -2
  137. package/lib/module/modules/data-table/DataTableProps.js +4 -0
  138. package/lib/module/modules/data-table/MODULE.md +5 -10
  139. package/lib/module/modules/date-picker/Calendar.js +11 -8
  140. package/lib/module/modules/date-picker/CalendarProps.js +4 -0
  141. package/lib/module/modules/date-picker/DatePicker.variants.js +2 -1
  142. package/lib/module/modules/date-picker/DatePickerProps.js +4 -0
  143. package/lib/module/modules/date-picker/DateRangePickerProps.js +4 -0
  144. package/lib/module/modules/date-picker/MODULE.md +6 -9
  145. package/lib/module/modules/date-picker/PickerFieldProps.js +4 -0
  146. package/lib/module/modules/date-picker/PickerShell.js +21 -12
  147. package/lib/module/modules/date-picker/PickerShellProps.js +4 -0
  148. package/lib/module/modules/date-picker/TimePicker.js +3 -2
  149. package/lib/module/modules/date-picker/TimePickerProps.js +4 -0
  150. package/lib/module/modules/description-list/DescriptionList.js +90 -0
  151. package/lib/module/modules/description-list/DescriptionList.variants.js +63 -0
  152. package/lib/module/modules/description-list/DescriptionListProps.js +4 -0
  153. package/lib/module/modules/description-list/MODULE.md +15 -0
  154. package/lib/module/modules/description-list/index.js +4 -0
  155. package/lib/module/modules/divider/DividerProps.js +4 -0
  156. package/lib/module/modules/divider/MODULE.md +1 -8
  157. package/lib/module/modules/document-viewer/DocumentViewer.js +35 -0
  158. package/lib/module/modules/document-viewer/DocumentViewerProps.js +4 -0
  159. package/lib/module/modules/document-viewer/MODULE.md +12 -0
  160. package/lib/module/modules/document-viewer/index.js +4 -0
  161. package/lib/module/modules/drawer/Drawer.js +45 -40
  162. package/lib/module/modules/drawer/DrawerProps.js +4 -0
  163. package/lib/module/modules/drawer/MODULE.md +14 -24
  164. package/lib/module/modules/empty-state/EmptyState.js +2 -1
  165. package/lib/module/modules/empty-state/EmptyStateProps.js +4 -0
  166. package/lib/module/modules/empty-state/MODULE.md +4 -9
  167. package/lib/module/modules/fab/Fab.js +9 -11
  168. package/lib/module/modules/fab/Fab.variants.js +10 -4
  169. package/lib/module/modules/fab/FabGroup.js +40 -43
  170. package/lib/module/modules/fab/FabGroupProps.js +4 -0
  171. package/lib/module/modules/fab/FabProps.js +4 -0
  172. package/lib/module/modules/fab/MODULE.md +10 -17
  173. package/lib/module/modules/field-select-modal/FieldSelectModal.js +52 -0
  174. package/lib/module/modules/field-select-modal/FieldSelectModalProps.js +4 -0
  175. package/lib/module/modules/field-select-modal/MODULE.md +13 -0
  176. package/lib/module/modules/field-select-modal/index.js +4 -0
  177. package/lib/module/modules/file-grid/FileGrid.js +3 -2
  178. package/lib/module/modules/file-grid/FileGridProps.js +4 -0
  179. package/lib/module/modules/file-grid/MODULE.md +27 -4
  180. package/lib/module/modules/file-upload/FileUpload.js +56 -15
  181. package/lib/module/modules/file-upload/FileUploadProps.js +4 -0
  182. package/lib/module/modules/file-upload/MODULE.md +10 -14
  183. package/lib/module/modules/filter-bar/FilterBar.js +68 -0
  184. package/lib/module/modules/filter-bar/FilterBarProps.js +4 -0
  185. package/lib/module/modules/filter-bar/MODULE.md +16 -0
  186. package/lib/module/modules/filter-bar/index.js +4 -0
  187. package/lib/module/modules/filter-sheet/FilterChip.js +3 -2
  188. package/lib/module/modules/filter-sheet/FilterChipProps.js +4 -0
  189. package/lib/module/modules/filter-sheet/FilterSheet.js +19 -14
  190. package/lib/module/modules/filter-sheet/FilterSheet.variants.js +2 -3
  191. package/lib/module/modules/filter-sheet/FilterSheetBody.js +26 -16
  192. package/lib/module/modules/filter-sheet/FilterSheetProps.js +2 -0
  193. package/lib/module/modules/filter-sheet/MODULE.md +5 -14
  194. package/lib/module/modules/folder-row/FolderRow.js +6 -4
  195. package/lib/module/modules/folder-row/FolderRowProps.js +4 -0
  196. package/lib/module/modules/folder-row/MODULE.md +6 -5
  197. package/lib/module/modules/form-field/FormField.js +9 -4
  198. package/lib/module/modules/form-field/FormFieldProps.js +4 -0
  199. package/lib/module/modules/form-field/MODULE.md +2 -7
  200. package/lib/module/modules/gantt/Gantt.js +23 -6
  201. package/lib/module/modules/gantt/Gantt.variants.js +12 -4
  202. package/lib/module/modules/gantt/GanttProps.js +4 -0
  203. package/lib/module/modules/gantt/MODULE.md +3 -3
  204. package/lib/module/modules/image-viewer/ImageViewer.js +3 -2
  205. package/lib/module/modules/image-viewer/ImageViewerProps.js +4 -0
  206. package/lib/module/modules/image-viewer/MODULE.md +1 -1
  207. package/lib/module/modules/input/Input.js +55 -20
  208. package/lib/module/modules/input/Input.variants.js +2 -3
  209. package/lib/module/modules/input/InputProps.js +4 -0
  210. package/lib/module/modules/input/MODULE.md +9 -16
  211. package/lib/module/modules/key-value/KeyValue.js +36 -0
  212. package/lib/module/modules/key-value/KeyValueProps.js +4 -0
  213. package/lib/module/modules/key-value/MODULE.md +16 -0
  214. package/lib/module/modules/key-value/index.js +4 -0
  215. package/lib/module/modules/limit-reached-modal/LimitReachedModalProps.js +4 -0
  216. package/lib/module/modules/limit-reached-modal/MODULE.md +1 -6
  217. package/lib/module/modules/list-item/ListItem.js +17 -6
  218. package/lib/module/modules/list-item/ListItemProps.js +4 -0
  219. package/lib/module/modules/list-item/MODULE.md +14 -9
  220. package/lib/module/modules/list-screen/ListScreen.js +63 -0
  221. package/lib/module/modules/list-screen/ListScreenProps.js +4 -0
  222. package/lib/module/modules/list-screen/MODULE.md +12 -0
  223. package/lib/module/modules/list-screen/index.js +4 -0
  224. package/lib/module/modules/markdown/MODULE.md +0 -6
  225. package/lib/module/modules/markdown/MarkdownProps.js +4 -0
  226. package/lib/module/modules/menu/MODULE.md +10 -17
  227. package/lib/module/modules/menu/Menu.js +66 -52
  228. package/lib/module/modules/menu/Menu.variants.js +2 -2
  229. package/lib/module/modules/menu/MenuProps.js +4 -0
  230. package/lib/module/modules/message-bubble/MODULE.md +5 -4
  231. package/lib/module/modules/message-bubble/MessageBubbleProps.js +4 -0
  232. package/lib/module/modules/modal/MODULE.md +56 -93
  233. package/lib/module/modules/modal/Modal.js +99 -30
  234. package/lib/module/modules/modal/ModalPortalContext.js +1 -22
  235. package/lib/module/modules/modal/ModalPortalProvider.js +1 -1
  236. package/lib/module/modules/modal/ModalPortalProviderProps.js +4 -0
  237. package/lib/module/modules/modal/ModalProps.js +4 -0
  238. package/lib/module/modules/modal/renderWebPortal.js +1 -15
  239. package/lib/module/modules/modal/renderWebPortal.web.js +1 -21
  240. package/lib/module/modules/more-items/MODULE.md +0 -2
  241. package/lib/module/modules/more-items/MoreItems.js +10 -7
  242. package/lib/module/modules/more-items/MoreItems.variants.js +2 -1
  243. package/lib/module/modules/more-items/MoreItemsProps.js +4 -0
  244. package/lib/module/modules/multi-select/MODULE.md +5 -11
  245. package/lib/module/modules/multi-select/MultiSelect.js +38 -23
  246. package/lib/module/modules/multi-select/MultiSelect.variants.js +4 -2
  247. package/lib/module/modules/multi-select/MultiSelectProps.js +4 -0
  248. package/lib/module/modules/notification-bell/MODULE.md +8 -0
  249. package/lib/module/modules/notification-bell/NotificationBell.js +43 -0
  250. package/lib/module/modules/notification-bell/NotificationBellProps.js +4 -0
  251. package/lib/module/modules/notification-bell/index.js +4 -0
  252. package/lib/module/modules/number-input/MODULE.md +8 -13
  253. package/lib/module/modules/number-input/NumberInput.js +8 -6
  254. package/lib/module/modules/number-input/NumberInput.variants.js +2 -4
  255. package/lib/module/modules/number-input/NumberInputProps.js +4 -0
  256. package/lib/module/modules/org-switcher/MODULE.md +5 -12
  257. package/lib/module/modules/org-switcher/OrgSwitcher.js +21 -19
  258. package/lib/module/modules/org-switcher/OrgSwitcher.variants.js +4 -2
  259. package/lib/module/modules/org-switcher/OrgSwitcherProps.js +4 -0
  260. package/lib/module/modules/pagination/MODULE.md +2 -5
  261. package/lib/module/modules/pagination/Pagination.js +25 -15
  262. package/lib/module/modules/pagination/Pagination.variants.js +2 -2
  263. package/lib/module/modules/pagination/PaginationControls.js +7 -5
  264. package/lib/module/modules/pagination/PaginationProps.js +4 -0
  265. package/lib/module/modules/person-chip/MODULE.md +11 -0
  266. package/lib/module/modules/person-chip/PersonChip.js +65 -0
  267. package/lib/module/modules/person-chip/PersonChipProps.js +4 -0
  268. package/lib/module/modules/person-chip/index.js +4 -0
  269. package/lib/module/modules/pin-input/MODULE.md +9 -20
  270. package/lib/module/modules/pin-input/PinInput.js +2 -2
  271. package/lib/module/modules/pin-input/PinInput.variants.js +2 -3
  272. package/lib/module/modules/pin-input/PinInputProps.js +4 -0
  273. package/lib/module/modules/plan-badge/MODULE.md +4 -0
  274. package/lib/module/modules/plan-badge/PlanBadge.js +25 -0
  275. package/lib/module/modules/plan-badge/PlanBadgeProps.js +4 -0
  276. package/lib/module/modules/plan-badge/index.js +4 -0
  277. package/lib/module/modules/plan-pill/MODULE.md +4 -0
  278. package/lib/module/modules/plan-pill/PlanPill.js +24 -0
  279. package/lib/module/modules/plan-pill/PlanPillProps.js +4 -0
  280. package/lib/module/modules/plan-pill/index.js +4 -0
  281. package/lib/module/modules/progress-bar/MODULE.md +12 -14
  282. package/lib/module/modules/progress-bar/ProgressBar.js +28 -36
  283. package/lib/module/modules/progress-bar/ProgressBarProps.js +4 -0
  284. package/lib/module/modules/radio-group/MODULE.md +6 -12
  285. package/lib/module/modules/radio-group/RadioGroup.js +7 -6
  286. package/lib/module/modules/radio-group/RadioGroup.variants.js +2 -3
  287. package/lib/module/modules/radio-group/RadioGroupProps.js +4 -0
  288. package/lib/module/modules/reorder/MODULE.md +7 -11
  289. package/lib/module/modules/reorder/Reorder.js +8 -3
  290. package/lib/module/modules/reorder/Reorder.variants.js +3 -4
  291. package/lib/module/modules/reorder/ReorderProps.js +4 -0
  292. package/lib/module/modules/rich-text/MODULE.md +4 -4
  293. package/lib/module/modules/rich-text/RichTextProps.js +4 -0
  294. package/lib/module/modules/rich-text-editor/MODULE.md +6 -16
  295. package/lib/module/modules/rich-text-editor/RichTextEditor.js +5 -4
  296. package/lib/module/modules/rich-text-editor/RichTextEditorProps.js +4 -0
  297. package/lib/module/modules/save-bar/MODULE.md +3 -0
  298. package/lib/module/modules/save-bar/SaveBar.js +49 -0
  299. package/lib/module/modules/save-bar/SaveBarProps.js +4 -0
  300. package/lib/module/modules/save-bar/index.js +4 -0
  301. package/lib/module/modules/screen/MODULE.md +7 -5
  302. package/lib/module/modules/screen/Screen.js +65 -22
  303. package/lib/module/modules/screen/ScreenProps.js +4 -0
  304. package/lib/module/modules/search-bar/MODULE.md +8 -8
  305. package/lib/module/modules/search-bar/SearchBar.js +8 -6
  306. package/lib/module/modules/search-bar/SearchBar.variants.js +2 -4
  307. package/lib/module/modules/search-bar/SearchBarProps.js +4 -0
  308. package/lib/module/modules/section/MODULE.md +1 -1
  309. package/lib/module/modules/section/Section.js +6 -1
  310. package/lib/module/modules/section/SectionProps.js +4 -0
  311. package/lib/module/modules/section-list/MODULE.md +21 -1
  312. package/lib/module/modules/section-list/SectionListProps.js +4 -0
  313. package/lib/module/modules/segmented-control/MODULE.md +30 -28
  314. package/lib/module/modules/segmented-control/SegmentedControl.js +20 -30
  315. package/lib/module/modules/segmented-control/SegmentedControl.variants.js +9 -42
  316. package/lib/module/modules/segmented-control/SegmentedControlProps.js +4 -0
  317. package/lib/module/modules/select/MODULE.md +8 -5
  318. package/lib/module/modules/select/Select.js +38 -25
  319. package/lib/module/modules/select/Select.variants.js +4 -5
  320. package/lib/module/modules/select/SelectProps.js +4 -0
  321. package/lib/module/modules/setting-row/MODULE.md +8 -0
  322. package/lib/module/modules/setting-row/SettingRow.js +50 -0
  323. package/lib/module/modules/setting-row/SettingRowProps.js +4 -0
  324. package/lib/module/modules/setting-row/index.js +4 -0
  325. package/lib/module/modules/settings-section/MODULE.md +7 -0
  326. package/lib/module/modules/settings-section/SettingsSection.js +37 -0
  327. package/lib/module/modules/settings-section/SettingsSectionProps.js +4 -0
  328. package/lib/module/modules/settings-section/index.js +4 -0
  329. package/lib/module/modules/skeleton/MODULE.md +2 -1
  330. package/lib/module/modules/skeleton/Skeleton.js +14 -8
  331. package/lib/module/modules/skeleton/Skeleton.variants.js +4 -9
  332. package/lib/module/modules/skeleton/SkeletonProps.js +4 -0
  333. package/lib/module/modules/slider/MODULE.md +2 -1
  334. package/lib/module/modules/slider/Slider.js +6 -6
  335. package/lib/module/modules/slider/Slider.variants.js +4 -2
  336. package/lib/module/modules/slider/SliderProps.js +4 -0
  337. package/lib/module/modules/spinner/MODULE.md +3 -2
  338. package/lib/module/modules/spinner/SpinnerProps.js +4 -0
  339. package/lib/module/modules/stage-progress/MODULE.md +20 -6
  340. package/lib/module/modules/stage-progress/StageProgress.js +45 -15
  341. package/lib/module/modules/stage-progress/StageProgress.variants.js +40 -8
  342. package/lib/module/modules/stage-progress/StageProgressProps.js +4 -0
  343. package/lib/module/modules/stat-grid/MODULE.md +11 -0
  344. package/lib/module/modules/stat-grid/StatGrid.js +34 -0
  345. package/lib/module/modules/stat-grid/StatGridProps.js +4 -0
  346. package/lib/module/modules/stat-grid/index.js +4 -0
  347. package/lib/module/modules/stat-tile/MODULE.md +12 -1
  348. package/lib/module/modules/stat-tile/StatTile.js +40 -15
  349. package/lib/module/modules/stat-tile/StatTile.variants.js +5 -0
  350. package/lib/module/modules/stat-tile/StatTileProps.js +4 -0
  351. package/lib/module/modules/state-block/MODULE.md +9 -3
  352. package/lib/module/modules/state-block/StateBlock.js +46 -38
  353. package/lib/module/modules/state-block/StateBlockProps.js +4 -0
  354. package/lib/module/modules/stepper/MODULE.md +2 -0
  355. package/lib/module/modules/stepper/Stepper.js +22 -21
  356. package/lib/module/modules/stepper/Stepper.variants.js +2 -0
  357. package/lib/module/modules/stepper/StepperProps.js +4 -0
  358. package/lib/module/modules/surface/MODULE.md +6 -8
  359. package/lib/module/modules/surface/Surface.js +6 -1
  360. package/lib/module/modules/surface/SurfaceProps.js +4 -0
  361. package/lib/module/modules/swipeable-row/MODULE.md +3 -2
  362. package/lib/module/modules/swipeable-row/SwipeableRow.js +31 -8
  363. package/lib/module/modules/swipeable-row/SwipeableRowProps.js +4 -0
  364. package/lib/module/modules/switch/MODULE.md +6 -3
  365. package/lib/module/modules/switch/Switch.js +42 -8
  366. package/lib/module/modules/switch/Switch.variants.js +2 -3
  367. package/lib/module/modules/switch/SwitchProps.js +4 -0
  368. package/lib/module/modules/tabs/MODULE.md +10 -14
  369. package/lib/module/modules/tabs/Tabs.js +84 -39
  370. package/lib/module/modules/tabs/Tabs.variants.js +2 -4
  371. package/lib/module/modules/tabs/TabsProps.js +4 -0
  372. package/lib/module/modules/text/MODULE.md +25 -17
  373. package/lib/module/modules/text/Text.variants.js +9 -1
  374. package/lib/module/modules/text/TextProps.js +4 -0
  375. package/lib/module/modules/textarea/MODULE.md +12 -18
  376. package/lib/module/modules/textarea/Textarea.js +12 -10
  377. package/lib/module/modules/textarea/Textarea.variants.js +4 -1
  378. package/lib/module/modules/textarea/TextareaProps.js +4 -0
  379. package/lib/module/modules/timeline/MODULE.md +8 -17
  380. package/lib/module/modules/timeline/Timeline.js +79 -22
  381. package/lib/module/modules/timeline/Timeline.variants.js +2 -0
  382. package/lib/module/modules/timeline/TimelineProps.js +4 -0
  383. package/lib/module/modules/toast/MODULE.md +13 -20
  384. package/lib/module/modules/toast/Toast.js +53 -51
  385. package/lib/module/modules/toast/Toast.variants.js +2 -5
  386. package/lib/module/modules/tooltip/MODULE.md +9 -13
  387. package/lib/module/modules/tooltip/Tooltip.js +36 -7
  388. package/lib/module/modules/tooltip/TooltipProps.js +4 -0
  389. package/lib/module/modules/typing-indicator/MODULE.md +1 -1
  390. package/lib/module/modules/typing-indicator/TypingIndicator.js +78 -51
  391. package/lib/module/modules/typing-indicator/TypingIndicatorProps.js +4 -0
  392. package/lib/module/modules/upgrade-button/MODULE.md +3 -0
  393. package/lib/module/modules/upgrade-button/UpgradeButton.js +23 -0
  394. package/lib/module/modules/upgrade-button/UpgradeButtonProps.js +4 -0
  395. package/lib/module/modules/upgrade-button/index.js +4 -0
  396. package/lib/module/theme/MODULE.md +2 -0
  397. package/lib/module/theme/platform/MODULE.md +2 -6
  398. package/lib/module/theme/platform/elevation.native.js +1 -7
  399. package/lib/module/theme/provider/PixelizeProvider.js +6 -0
  400. package/lib/module/theme/tokens/MODULE.md +4 -0
  401. package/lib/module/theme/tokens/THEME-CONTRACT.md +53 -3
  402. package/lib/module/theme/tokens/brands/emerald/palette.light.js +5 -3
  403. package/lib/module/theme/tokens/brands/lavender/palette.light.js +4 -4
  404. package/lib/module/theme/tokens/brands/meadow/palette.light.js +2 -2
  405. package/lib/module/theme/tokens/brands/radiant/palette.light.js +3 -3
  406. package/lib/module/theme/tokens/brands/rosewood/palette.light.js +3 -3
  407. package/lib/module/theme/tokens/brands/skyline/palette.light.js +2 -2
  408. package/lib/module/theme/tokens/brands/slate/palette.light.js +3 -3
  409. package/lib/module/theme/tokens/builders/accentText.js +10 -1
  410. package/lib/module/theme/tokens/builders/buildBrandScale.js +42 -0
  411. package/lib/module/theme/tokens/builders/gradientInk.js +23 -0
  412. package/lib/module/theme/tokens/builders/paletteFromAccent.js +30 -0
  413. package/lib/module/theme/tokens/builders/skeletonShimmer.js +22 -0
  414. package/lib/module/theme/tokens/index.js +3 -0
  415. package/lib/module/theme/tokens/primitives/controlSizes.js +16 -0
  416. package/lib/module/theme/tokens/primitives/index.js +1 -0
  417. package/lib/module/theme/tokens/roles/index.js +2 -0
  418. package/lib/typescript/core/a11y/touchTarget.d.ts +4 -0
  419. package/lib/typescript/core/blur/blur.d.ts +14 -0
  420. package/lib/typescript/core/blur/index.d.ts +3 -0
  421. package/lib/typescript/core/gradient/ShimmerGradientFill.d.ts +8 -0
  422. package/lib/typescript/core/gradient/index.d.ts +1 -0
  423. package/lib/typescript/core/list/VirtualList.d.ts +6 -1
  424. package/lib/typescript/core/motion/animatedComponents.d.ts +4 -0
  425. package/lib/typescript/core/motion/index.d.ts +2 -0
  426. package/lib/typescript/core/motion/motionAnimation.d.ts +12 -0
  427. package/lib/typescript/core/motion/presets.d.ts +5 -36
  428. package/lib/typescript/core/motion/reanimatedEasing.d.ts +4 -0
  429. package/lib/typescript/core/motion/useAnimatedValue.d.ts +2 -10
  430. package/lib/typescript/core/motion/useMotion.d.ts +4 -13
  431. package/lib/typescript/core/motion/usePressState.d.ts +0 -1
  432. package/lib/typescript/core/overlay/ModalPortalContext.d.ts +2 -0
  433. package/lib/typescript/core/overlay/index.d.ts +3 -0
  434. package/lib/typescript/core/overlay/renderWebPortal.d.ts +3 -0
  435. package/lib/typescript/core/overlay/renderWebPortal.web.d.ts +3 -0
  436. package/lib/typescript/core/screen-scroll/ScreenScrollContext.d.ts +8 -0
  437. package/lib/typescript/core/screen-scroll/index.d.ts +3 -0
  438. package/lib/typescript/core/slot/index.d.ts +2 -0
  439. package/lib/typescript/core/slot/nodeSlot.d.ts +5 -0
  440. package/lib/typescript/core/style/focusRing.d.ts +10 -0
  441. package/lib/typescript/core/style/index.d.ts +1 -1
  442. package/lib/typescript/index.d.ts +49 -11
  443. package/lib/typescript/modules/accordion/Accordion.d.ts +2 -37
  444. package/lib/typescript/modules/accordion/Accordion.variants.d.ts +2 -3
  445. package/lib/typescript/modules/accordion/AccordionProps.d.ts +49 -0
  446. package/lib/typescript/modules/accordion/index.d.ts +1 -1
  447. package/lib/typescript/modules/alert-dialog/AlertDialog.d.ts +2 -15
  448. package/lib/typescript/modules/alert-dialog/AlertDialogProps.d.ts +20 -0
  449. package/lib/typescript/modules/alert-dialog/index.d.ts +1 -1
  450. package/lib/typescript/modules/app-bar/AppBar.d.ts +1 -20
  451. package/lib/typescript/modules/app-bar/AppBar.variants.d.ts +4 -0
  452. package/lib/typescript/modules/app-bar/AppBarProps.d.ts +25 -0
  453. package/lib/typescript/modules/app-bar/index.d.ts +1 -1
  454. package/lib/typescript/modules/app-switcher/AppSwitcher.d.ts +3 -0
  455. package/lib/typescript/modules/app-switcher/AppSwitcherProps.d.ts +17 -0
  456. package/lib/typescript/modules/app-switcher/index.d.ts +3 -0
  457. package/lib/typescript/modules/appearance-settings/AppearanceSettings.d.ts +3 -0
  458. package/lib/typescript/modules/appearance-settings/AppearanceSettingsProps.d.ts +15 -0
  459. package/lib/typescript/modules/appearance-settings/index.d.ts +3 -0
  460. package/lib/typescript/modules/avatar/Avatar.d.ts +2 -33
  461. package/lib/typescript/modules/avatar/Avatar.variants.d.ts +2 -0
  462. package/lib/typescript/modules/avatar/AvatarProps.d.ts +23 -0
  463. package/lib/typescript/modules/avatar/index.d.ts +1 -1
  464. package/lib/typescript/modules/avatar-group/AvatarGroup.d.ts +1 -18
  465. package/lib/typescript/modules/avatar-group/AvatarGroupProps.d.ts +27 -0
  466. package/lib/typescript/modules/avatar-group/index.d.ts +1 -1
  467. package/lib/typescript/modules/backdrop/Backdrop.d.ts +3 -0
  468. package/lib/typescript/modules/backdrop/BackdropProps.d.ts +11 -0
  469. package/lib/typescript/modules/backdrop/index.d.ts +3 -0
  470. package/lib/typescript/modules/badge/Badge.d.ts +2 -14
  471. package/lib/typescript/modules/badge/BadgeProps.d.ts +17 -0
  472. package/lib/typescript/modules/badge/index.d.ts +1 -1
  473. package/lib/typescript/modules/banner/Banner.d.ts +1 -22
  474. package/lib/typescript/modules/banner/Banner.variants.d.ts +2 -0
  475. package/lib/typescript/modules/banner/BannerProps.d.ts +29 -0
  476. package/lib/typescript/modules/banner/index.d.ts +2 -1
  477. package/lib/typescript/modules/bottom-nav/BottomNav.d.ts +1 -34
  478. package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts +2 -1
  479. package/lib/typescript/modules/bottom-nav/BottomNavProps.d.ts +29 -0
  480. package/lib/typescript/modules/bottom-nav/index.d.ts +2 -1
  481. package/lib/typescript/modules/bottom-sheet/BottomSheet.d.ts +1 -13
  482. package/lib/typescript/modules/bottom-sheet/BottomSheetProps.d.ts +17 -0
  483. package/lib/typescript/modules/bottom-sheet/index.d.ts +1 -1
  484. package/lib/typescript/modules/breadcrumbs/Breadcrumbs.d.ts +3 -0
  485. package/lib/typescript/modules/breadcrumbs/Breadcrumbs.variants.d.ts +6 -0
  486. package/lib/typescript/modules/breadcrumbs/BreadcrumbsProps.d.ts +18 -0
  487. package/lib/typescript/modules/breadcrumbs/index.d.ts +3 -0
  488. package/lib/typescript/modules/button/Button.d.ts +1 -35
  489. package/lib/typescript/modules/button/Button.variants.d.ts +11 -15
  490. package/lib/typescript/modules/button/ButtonProps.d.ts +47 -0
  491. package/lib/typescript/modules/button/index.d.ts +1 -1
  492. package/lib/typescript/modules/button-group/ButtonGroup.d.ts +2 -17
  493. package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts +2 -3
  494. package/lib/typescript/modules/button-group/ButtonGroupProps.d.ts +21 -0
  495. package/lib/typescript/modules/button-group/index.d.ts +1 -1
  496. package/lib/typescript/modules/card/Card.d.ts +2 -15
  497. package/lib/typescript/modules/card/CardProps.d.ts +27 -0
  498. package/lib/typescript/modules/card/index.d.ts +1 -1
  499. package/lib/typescript/modules/charts/BarChart.d.ts +1 -24
  500. package/lib/typescript/modules/charts/BarChartProps.d.ts +36 -0
  501. package/lib/typescript/modules/charts/BarList.d.ts +1 -16
  502. package/lib/typescript/modules/charts/BarListProps.d.ts +22 -0
  503. package/lib/typescript/modules/charts/ChartLegend.d.ts +2 -14
  504. package/lib/typescript/modules/charts/ChartLegendProps.d.ts +19 -0
  505. package/lib/typescript/modules/charts/Charts.variants.d.ts +2 -0
  506. package/lib/typescript/modules/charts/DonutChart.d.ts +1 -19
  507. package/lib/typescript/modules/charts/DonutChartProps.d.ts +27 -0
  508. package/lib/typescript/modules/charts/LineChart.d.ts +1 -28
  509. package/lib/typescript/modules/charts/LineChartProps.d.ts +40 -0
  510. package/lib/typescript/modules/charts/PieChart.d.ts +1 -16
  511. package/lib/typescript/modules/charts/PieChartProps.d.ts +24 -0
  512. package/lib/typescript/modules/charts/Sparkline.d.ts +1 -11
  513. package/lib/typescript/modules/charts/SparklineProps.d.ts +17 -0
  514. package/lib/typescript/modules/charts/index.d.ts +6 -6
  515. package/lib/typescript/modules/checkbox/Checkbox.d.ts +1 -33
  516. package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts +2 -1
  517. package/lib/typescript/modules/checkbox/CheckboxProps.d.ts +27 -0
  518. package/lib/typescript/modules/checkbox/index.d.ts +1 -1
  519. package/lib/typescript/modules/chip/Chip.d.ts +1 -30
  520. package/lib/typescript/modules/chip/Chip.variants.d.ts +2 -1
  521. package/lib/typescript/modules/chip/ChipGroup.d.ts +1 -14
  522. package/lib/typescript/modules/chip/ChipGroupProps.d.ts +16 -0
  523. package/lib/typescript/modules/chip/ChipProps.d.ts +27 -0
  524. package/lib/typescript/modules/chip/index.d.ts +2 -2
  525. package/lib/typescript/modules/combobox/Combobox.d.ts +2 -45
  526. package/lib/typescript/modules/combobox/Combobox.variants.d.ts +3 -1
  527. package/lib/typescript/modules/combobox/ComboboxProps.d.ts +40 -0
  528. package/lib/typescript/modules/combobox/index.d.ts +1 -1
  529. package/lib/typescript/modules/composer/Composer.d.ts +1 -18
  530. package/lib/typescript/modules/composer/ComposerProps.d.ts +20 -0
  531. package/lib/typescript/modules/composer/index.d.ts +1 -1
  532. package/lib/typescript/modules/copy-button/CopyButton.d.ts +1 -15
  533. package/lib/typescript/modules/copy-button/CopyButton.variants.d.ts +2 -1
  534. package/lib/typescript/modules/copy-button/CopyButtonProps.d.ts +18 -0
  535. package/lib/typescript/modules/copy-button/index.d.ts +1 -1
  536. package/lib/typescript/modules/data-table/DataTable.d.ts +2 -31
  537. package/lib/typescript/modules/data-table/DataTable.variants.d.ts +2 -1
  538. package/lib/typescript/modules/data-table/DataTableProps.d.ts +43 -0
  539. package/lib/typescript/modules/data-table/index.d.ts +1 -1
  540. package/lib/typescript/modules/date-picker/Calendar.d.ts +1 -23
  541. package/lib/typescript/modules/date-picker/CalendarProps.d.ts +31 -0
  542. package/lib/typescript/modules/date-picker/DatePicker.d.ts +1 -27
  543. package/lib/typescript/modules/date-picker/DatePicker.variants.d.ts +2 -1
  544. package/lib/typescript/modules/date-picker/DatePickerProps.d.ts +33 -0
  545. package/lib/typescript/modules/date-picker/DateRangePicker.d.ts +1 -23
  546. package/lib/typescript/modules/date-picker/DateRangePickerProps.d.ts +27 -0
  547. package/lib/typescript/modules/date-picker/PickerField.d.ts +1 -17
  548. package/lib/typescript/modules/date-picker/PickerFieldProps.d.ts +19 -0
  549. package/lib/typescript/modules/date-picker/PickerShell.d.ts +1 -12
  550. package/lib/typescript/modules/date-picker/PickerShellProps.d.ts +16 -0
  551. package/lib/typescript/modules/date-picker/TimePicker.d.ts +1 -9
  552. package/lib/typescript/modules/date-picker/TimePickerProps.d.ts +14 -0
  553. package/lib/typescript/modules/date-picker/index.d.ts +4 -4
  554. package/lib/typescript/modules/description-list/DescriptionList.d.ts +8 -0
  555. package/lib/typescript/modules/description-list/DescriptionList.variants.d.ts +29 -0
  556. package/lib/typescript/modules/description-list/DescriptionListProps.d.ts +23 -0
  557. package/lib/typescript/modules/description-list/index.d.ts +4 -0
  558. package/lib/typescript/modules/divider/Divider.d.ts +1 -8
  559. package/lib/typescript/modules/divider/DividerProps.d.ts +11 -0
  560. package/lib/typescript/modules/divider/index.d.ts +1 -1
  561. package/lib/typescript/modules/document-viewer/DocumentViewer.d.ts +3 -0
  562. package/lib/typescript/modules/document-viewer/DocumentViewerProps.d.ts +13 -0
  563. package/lib/typescript/modules/document-viewer/index.d.ts +3 -0
  564. package/lib/typescript/modules/drawer/Drawer.d.ts +2 -7
  565. package/lib/typescript/modules/drawer/DrawerProps.d.ts +9 -0
  566. package/lib/typescript/modules/drawer/index.d.ts +1 -1
  567. package/lib/typescript/modules/empty-state/EmptyState.d.ts +1 -17
  568. package/lib/typescript/modules/empty-state/EmptyStateProps.d.ts +24 -0
  569. package/lib/typescript/modules/empty-state/index.d.ts +1 -1
  570. package/lib/typescript/modules/fab/Fab.d.ts +1 -51
  571. package/lib/typescript/modules/fab/Fab.variants.d.ts +3 -2
  572. package/lib/typescript/modules/fab/FabGroup.d.ts +1 -34
  573. package/lib/typescript/modules/fab/FabGroupProps.d.ts +34 -0
  574. package/lib/typescript/modules/fab/FabProps.d.ts +50 -0
  575. package/lib/typescript/modules/fab/index.d.ts +2 -2
  576. package/lib/typescript/modules/field-select-modal/FieldSelectModal.d.ts +3 -0
  577. package/lib/typescript/modules/field-select-modal/FieldSelectModalProps.d.ts +20 -0
  578. package/lib/typescript/modules/field-select-modal/index.d.ts +3 -0
  579. package/lib/typescript/modules/file-grid/FileGrid.d.ts +1 -18
  580. package/lib/typescript/modules/file-grid/FileGridProps.d.ts +23 -0
  581. package/lib/typescript/modules/file-grid/index.d.ts +1 -1
  582. package/lib/typescript/modules/file-upload/FileUpload.d.ts +1 -27
  583. package/lib/typescript/modules/file-upload/FileUploadProps.d.ts +27 -0
  584. package/lib/typescript/modules/file-upload/index.d.ts +1 -1
  585. package/lib/typescript/modules/filter-bar/FilterBar.d.ts +3 -0
  586. package/lib/typescript/modules/filter-bar/FilterBarProps.d.ts +17 -0
  587. package/lib/typescript/modules/filter-bar/index.d.ts +3 -0
  588. package/lib/typescript/modules/filter-sheet/FilterChip.d.ts +1 -9
  589. package/lib/typescript/modules/filter-sheet/FilterChipProps.d.ts +11 -0
  590. package/lib/typescript/modules/filter-sheet/FilterSheet.d.ts +1 -32
  591. package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts +2 -1
  592. package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts +1 -1
  593. package/lib/typescript/modules/filter-sheet/FilterSheetProps.d.ts +36 -0
  594. package/lib/typescript/modules/filter-sheet/filterSheet.helpers.d.ts +1 -1
  595. package/lib/typescript/modules/filter-sheet/index.d.ts +2 -2
  596. package/lib/typescript/modules/folder-row/FolderRow.d.ts +1 -11
  597. package/lib/typescript/modules/folder-row/FolderRowProps.d.ts +17 -0
  598. package/lib/typescript/modules/folder-row/index.d.ts +1 -1
  599. package/lib/typescript/modules/form-field/FormField.d.ts +2 -17
  600. package/lib/typescript/modules/form-field/FormFieldProps.d.ts +23 -0
  601. package/lib/typescript/modules/form-field/index.d.ts +1 -1
  602. package/lib/typescript/modules/gantt/Gantt.d.ts +2 -9
  603. package/lib/typescript/modules/gantt/Gantt.variants.d.ts +8 -2
  604. package/lib/typescript/modules/gantt/GanttProps.d.ts +13 -0
  605. package/lib/typescript/modules/gantt/index.d.ts +1 -1
  606. package/lib/typescript/modules/image-viewer/ImageViewer.d.ts +2 -15
  607. package/lib/typescript/modules/image-viewer/ImageViewerProps.d.ts +16 -0
  608. package/lib/typescript/modules/image-viewer/index.d.ts +2 -1
  609. package/lib/typescript/modules/input/Input.d.ts +2 -30
  610. package/lib/typescript/modules/input/Input.variants.d.ts +2 -2
  611. package/lib/typescript/modules/input/InputProps.d.ts +43 -0
  612. package/lib/typescript/modules/input/index.d.ts +1 -1
  613. package/lib/typescript/modules/key-value/KeyValue.d.ts +3 -0
  614. package/lib/typescript/modules/key-value/KeyValueProps.d.ts +11 -0
  615. package/lib/typescript/modules/key-value/index.d.ts +3 -0
  616. package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.d.ts +1 -17
  617. package/lib/typescript/modules/limit-reached-modal/LimitReachedModalProps.d.ts +24 -0
  618. package/lib/typescript/modules/limit-reached-modal/index.d.ts +1 -1
  619. package/lib/typescript/modules/list-item/ListItem.d.ts +2 -12
  620. package/lib/typescript/modules/list-item/ListItemProps.d.ts +22 -0
  621. package/lib/typescript/modules/list-item/index.d.ts +1 -1
  622. package/lib/typescript/modules/list-screen/ListScreen.d.ts +5 -0
  623. package/lib/typescript/modules/list-screen/ListScreenProps.d.ts +17 -0
  624. package/lib/typescript/modules/list-screen/index.d.ts +3 -0
  625. package/lib/typescript/modules/markdown/Markdown.d.ts +1 -8
  626. package/lib/typescript/modules/markdown/MarkdownProps.d.ts +12 -0
  627. package/lib/typescript/modules/markdown/index.d.ts +1 -1
  628. package/lib/typescript/modules/menu/Menu.d.ts +2 -19
  629. package/lib/typescript/modules/menu/Menu.variants.d.ts +2 -1
  630. package/lib/typescript/modules/menu/MenuProps.d.ts +26 -0
  631. package/lib/typescript/modules/menu/index.d.ts +1 -1
  632. package/lib/typescript/modules/message-bubble/MessageBubble.d.ts +1 -9
  633. package/lib/typescript/modules/message-bubble/MessageBubbleProps.d.ts +12 -0
  634. package/lib/typescript/modules/message-bubble/index.d.ts +1 -1
  635. package/lib/typescript/modules/modal/Modal.d.ts +2 -10
  636. package/lib/typescript/modules/modal/ModalPortalContext.d.ts +1 -1
  637. package/lib/typescript/modules/modal/ModalPortalProvider.d.ts +2 -12
  638. package/lib/typescript/modules/modal/ModalPortalProviderProps.d.ts +8 -0
  639. package/lib/typescript/modules/modal/ModalProps.d.ts +22 -0
  640. package/lib/typescript/modules/modal/index.d.ts +2 -2
  641. package/lib/typescript/modules/modal/renderWebPortal.d.ts +1 -14
  642. package/lib/typescript/modules/modal/renderWebPortal.web.d.ts +1 -18
  643. package/lib/typescript/modules/more-items/MoreItems.d.ts +2 -10
  644. package/lib/typescript/modules/more-items/MoreItems.variants.d.ts +3 -1
  645. package/lib/typescript/modules/more-items/MoreItemsProps.d.ts +14 -0
  646. package/lib/typescript/modules/more-items/index.d.ts +1 -1
  647. package/lib/typescript/modules/multi-select/MultiSelect.d.ts +1 -19
  648. package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts +2 -1
  649. package/lib/typescript/modules/multi-select/MultiSelectProps.d.ts +29 -0
  650. package/lib/typescript/modules/multi-select/index.d.ts +1 -1
  651. package/lib/typescript/modules/notification-bell/NotificationBell.d.ts +3 -0
  652. package/lib/typescript/modules/notification-bell/NotificationBellProps.d.ts +10 -0
  653. package/lib/typescript/modules/notification-bell/index.d.ts +3 -0
  654. package/lib/typescript/modules/number-input/NumberInput.d.ts +1 -26
  655. package/lib/typescript/modules/number-input/NumberInput.variants.d.ts +2 -3
  656. package/lib/typescript/modules/number-input/NumberInputProps.d.ts +23 -0
  657. package/lib/typescript/modules/number-input/index.d.ts +1 -1
  658. package/lib/typescript/modules/org-switcher/OrgSwitcher.d.ts +1 -24
  659. package/lib/typescript/modules/org-switcher/OrgSwitcher.variants.d.ts +2 -1
  660. package/lib/typescript/modules/org-switcher/OrgSwitcherProps.d.ts +29 -0
  661. package/lib/typescript/modules/org-switcher/index.d.ts +1 -1
  662. package/lib/typescript/modules/pagination/Pagination.d.ts +1 -26
  663. package/lib/typescript/modules/pagination/Pagination.variants.d.ts +2 -1
  664. package/lib/typescript/modules/pagination/PaginationProps.d.ts +28 -0
  665. package/lib/typescript/modules/pagination/index.d.ts +1 -1
  666. package/lib/typescript/modules/person-chip/PersonChip.d.ts +3 -0
  667. package/lib/typescript/modules/person-chip/PersonChipProps.d.ts +17 -0
  668. package/lib/typescript/modules/person-chip/index.d.ts +3 -0
  669. package/lib/typescript/modules/pin-input/PinInput.d.ts +1 -32
  670. package/lib/typescript/modules/pin-input/PinInput.variants.d.ts +2 -2
  671. package/lib/typescript/modules/pin-input/PinInputProps.d.ts +26 -0
  672. package/lib/typescript/modules/pin-input/index.d.ts +1 -1
  673. package/lib/typescript/modules/plan-badge/PlanBadge.d.ts +3 -0
  674. package/lib/typescript/modules/plan-badge/PlanBadgeProps.d.ts +10 -0
  675. package/lib/typescript/modules/plan-badge/index.d.ts +3 -0
  676. package/lib/typescript/modules/plan-pill/PlanPill.d.ts +3 -0
  677. package/lib/typescript/modules/plan-pill/PlanPillProps.d.ts +10 -0
  678. package/lib/typescript/modules/plan-pill/index.d.ts +3 -0
  679. package/lib/typescript/modules/progress-bar/ProgressBar.d.ts +1 -13
  680. package/lib/typescript/modules/progress-bar/ProgressBarProps.d.ts +16 -0
  681. package/lib/typescript/modules/progress-bar/index.d.ts +1 -1
  682. package/lib/typescript/modules/radio-group/RadioGroup.d.ts +2 -22
  683. package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts +2 -2
  684. package/lib/typescript/modules/radio-group/RadioGroupProps.d.ts +21 -0
  685. package/lib/typescript/modules/radio-group/index.d.ts +1 -1
  686. package/lib/typescript/modules/reorder/Reorder.d.ts +1 -13
  687. package/lib/typescript/modules/reorder/Reorder.variants.d.ts +2 -2
  688. package/lib/typescript/modules/reorder/ReorderProps.d.ts +19 -0
  689. package/lib/typescript/modules/reorder/index.d.ts +1 -1
  690. package/lib/typescript/modules/rich-text/RichText.d.ts +2 -10
  691. package/lib/typescript/modules/rich-text/RichTextProps.d.ts +15 -0
  692. package/lib/typescript/modules/rich-text/index.d.ts +1 -1
  693. package/lib/typescript/modules/rich-text-editor/RichTextEditor.d.ts +1 -45
  694. package/lib/typescript/modules/rich-text-editor/RichTextEditorProps.d.ts +40 -0
  695. package/lib/typescript/modules/rich-text-editor/index.d.ts +1 -1
  696. package/lib/typescript/modules/save-bar/SaveBar.d.ts +3 -0
  697. package/lib/typescript/modules/save-bar/SaveBarProps.d.ts +18 -0
  698. package/lib/typescript/modules/save-bar/index.d.ts +3 -0
  699. package/lib/typescript/modules/screen/Screen.d.ts +1 -24
  700. package/lib/typescript/modules/screen/ScreenProps.d.ts +35 -0
  701. package/lib/typescript/modules/screen/index.d.ts +1 -1
  702. package/lib/typescript/modules/search-bar/SearchBar.d.ts +2 -28
  703. package/lib/typescript/modules/search-bar/SearchBar.variants.d.ts +2 -3
  704. package/lib/typescript/modules/search-bar/SearchBarProps.d.ts +30 -0
  705. package/lib/typescript/modules/search-bar/index.d.ts +1 -1
  706. package/lib/typescript/modules/section/Section.d.ts +1 -8
  707. package/lib/typescript/modules/section/SectionProps.d.ts +11 -0
  708. package/lib/typescript/modules/section/index.d.ts +1 -1
  709. package/lib/typescript/modules/section-list/SectionList.d.ts +1 -19
  710. package/lib/typescript/modules/section-list/SectionListProps.d.ts +24 -0
  711. package/lib/typescript/modules/section-list/index.d.ts +1 -1
  712. package/lib/typescript/modules/segmented-control/SegmentedControl.d.ts +2 -41
  713. package/lib/typescript/modules/segmented-control/SegmentedControl.variants.d.ts +5 -44
  714. package/lib/typescript/modules/segmented-control/SegmentedControlProps.d.ts +29 -0
  715. package/lib/typescript/modules/segmented-control/index.d.ts +1 -1
  716. package/lib/typescript/modules/select/Select.d.ts +2 -13
  717. package/lib/typescript/modules/select/Select.variants.d.ts +2 -2
  718. package/lib/typescript/modules/select/SelectProps.d.ts +25 -0
  719. package/lib/typescript/modules/select/index.d.ts +2 -1
  720. package/lib/typescript/modules/setting-row/SettingRow.d.ts +3 -0
  721. package/lib/typescript/modules/setting-row/SettingRowProps.d.ts +14 -0
  722. package/lib/typescript/modules/setting-row/index.d.ts +3 -0
  723. package/lib/typescript/modules/settings-section/SettingsSection.d.ts +3 -0
  724. package/lib/typescript/modules/settings-section/SettingsSectionProps.d.ts +11 -0
  725. package/lib/typescript/modules/settings-section/index.d.ts +3 -0
  726. package/lib/typescript/modules/skeleton/Skeleton.d.ts +2 -12
  727. package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts +3 -5
  728. package/lib/typescript/modules/skeleton/SkeletonProps.d.ts +18 -0
  729. package/lib/typescript/modules/skeleton/index.d.ts +1 -1
  730. package/lib/typescript/modules/slider/Slider.d.ts +1 -24
  731. package/lib/typescript/modules/slider/Slider.variants.d.ts +2 -1
  732. package/lib/typescript/modules/slider/SliderProps.d.ts +27 -0
  733. package/lib/typescript/modules/slider/index.d.ts +1 -1
  734. package/lib/typescript/modules/spinner/Spinner.d.ts +1 -11
  735. package/lib/typescript/modules/spinner/SpinnerProps.d.ts +15 -0
  736. package/lib/typescript/modules/spinner/index.d.ts +1 -1
  737. package/lib/typescript/modules/stage-progress/StageProgress.d.ts +1 -12
  738. package/lib/typescript/modules/stage-progress/StageProgress.variants.d.ts +16 -4
  739. package/lib/typescript/modules/stage-progress/StageProgressProps.d.ts +22 -0
  740. package/lib/typescript/modules/stage-progress/index.d.ts +1 -1
  741. package/lib/typescript/modules/stat-grid/StatGrid.d.ts +3 -0
  742. package/lib/typescript/modules/stat-grid/StatGridProps.d.ts +15 -0
  743. package/lib/typescript/modules/stat-grid/index.d.ts +3 -0
  744. package/lib/typescript/modules/stat-tile/StatTile.d.ts +1 -14
  745. package/lib/typescript/modules/stat-tile/StatTile.variants.d.ts +3 -0
  746. package/lib/typescript/modules/stat-tile/StatTileProps.d.ts +25 -0
  747. package/lib/typescript/modules/stat-tile/index.d.ts +1 -1
  748. package/lib/typescript/modules/state-block/StateBlock.d.ts +1 -32
  749. package/lib/typescript/modules/state-block/StateBlockProps.d.ts +36 -0
  750. package/lib/typescript/modules/state-block/index.d.ts +1 -1
  751. package/lib/typescript/modules/stepper/Stepper.d.ts +3 -11
  752. package/lib/typescript/modules/stepper/Stepper.variants.d.ts +2 -0
  753. package/lib/typescript/modules/stepper/StepperProps.d.ts +12 -0
  754. package/lib/typescript/modules/stepper/index.d.ts +2 -1
  755. package/lib/typescript/modules/surface/Surface.d.ts +1 -14
  756. package/lib/typescript/modules/surface/SurfaceProps.d.ts +17 -0
  757. package/lib/typescript/modules/surface/index.d.ts +1 -1
  758. package/lib/typescript/modules/swipeable-row/SwipeableRow.d.ts +1 -19
  759. package/lib/typescript/modules/swipeable-row/SwipeableRowProps.d.ts +22 -0
  760. package/lib/typescript/modules/swipeable-row/index.d.ts +1 -1
  761. package/lib/typescript/modules/switch/Switch.d.ts +1 -14
  762. package/lib/typescript/modules/switch/Switch.variants.d.ts +2 -2
  763. package/lib/typescript/modules/switch/SwitchProps.d.ts +20 -0
  764. package/lib/typescript/modules/switch/index.d.ts +1 -1
  765. package/lib/typescript/modules/tabs/Tabs.d.ts +1 -17
  766. package/lib/typescript/modules/tabs/Tabs.variants.d.ts +2 -3
  767. package/lib/typescript/modules/tabs/TabsProps.d.ts +29 -0
  768. package/lib/typescript/modules/tabs/index.d.ts +1 -1
  769. package/lib/typescript/modules/text/Text.d.ts +1 -24
  770. package/lib/typescript/modules/text/TextProps.d.ts +35 -0
  771. package/lib/typescript/modules/text/index.d.ts +1 -1
  772. package/lib/typescript/modules/textarea/Textarea.d.ts +1 -19
  773. package/lib/typescript/modules/textarea/Textarea.variants.d.ts +2 -1
  774. package/lib/typescript/modules/textarea/TextareaProps.d.ts +23 -0
  775. package/lib/typescript/modules/textarea/index.d.ts +1 -1
  776. package/lib/typescript/modules/timeline/Timeline.d.ts +1 -16
  777. package/lib/typescript/modules/timeline/Timeline.variants.d.ts +2 -0
  778. package/lib/typescript/modules/timeline/TimelineProps.d.ts +37 -0
  779. package/lib/typescript/modules/timeline/index.d.ts +1 -1
  780. package/lib/typescript/modules/toast/Toast.variants.d.ts +2 -3
  781. package/lib/typescript/modules/tooltip/Tooltip.d.ts +1 -25
  782. package/lib/typescript/modules/tooltip/TooltipProps.d.ts +27 -0
  783. package/lib/typescript/modules/tooltip/index.d.ts +1 -1
  784. package/lib/typescript/modules/typing-indicator/TypingIndicator.d.ts +5 -14
  785. package/lib/typescript/modules/typing-indicator/TypingIndicatorProps.d.ts +11 -0
  786. package/lib/typescript/modules/typing-indicator/index.d.ts +1 -1
  787. package/lib/typescript/modules/upgrade-button/UpgradeButton.d.ts +3 -0
  788. package/lib/typescript/modules/upgrade-button/UpgradeButtonProps.d.ts +11 -0
  789. package/lib/typescript/modules/upgrade-button/index.d.ts +3 -0
  790. package/lib/typescript/test/motionJest.d.ts +12 -0
  791. package/lib/typescript/theme/platform/elevation.native.d.ts +1 -1
  792. package/lib/typescript/theme/tokens/builders/accentText.d.ts +3 -0
  793. package/lib/typescript/theme/tokens/builders/buildBrandScale.d.ts +4 -0
  794. package/lib/typescript/theme/tokens/builders/gradientInk.d.ts +9 -0
  795. package/lib/typescript/theme/tokens/builders/paletteFromAccent.d.ts +3 -0
  796. package/lib/typescript/theme/tokens/builders/skeletonShimmer.d.ts +9 -0
  797. package/lib/typescript/theme/tokens/index.d.ts +3 -0
  798. package/lib/typescript/theme/tokens/primitives/controlSizes.d.ts +6 -0
  799. package/lib/typescript/theme/tokens/primitives/index.d.ts +2 -0
  800. package/lib/typescript/theme/tokens/roles/index.d.ts +2 -0
  801. package/lib/typescript/theme/tokens/types.d.ts +2 -2
  802. package/package.json +106 -5
  803. package/registry.json +109 -14
  804. package/lib/module/core/style/useThemedStyles.js +0 -8
  805. package/lib/module/test/mocks/flashList.js +0 -5
  806. package/lib/module/test/perfHelpers.js +0 -18
  807. package/lib/typescript/core/style/useThemedStyles.d.ts +0 -5
  808. package/lib/typescript/test/mocks/flashList.d.ts +0 -3
@@ -10,17 +10,14 @@ VoiceOver's escape gesture via `onAccessibilityEscape`).
10
10
 
11
11
  | File | Role |
12
12
  |------|------|
13
- | `Modal.tsx` | The component. RN `<Modal>` composition, backdrop, overlay, panel, title. Falls back to the web portal mechanism below when opted in. |
13
+ | `Modal.tsx` | The component. RN `<Modal>` composition, backdrop, overlay, panel, title. Panel lift/scrim opacity use `useMotion` + `useAnimatedValue` (Reanimated). Falls back to the web portal mechanism below when opted in. |
14
14
  | `Modal.variants.ts` | Pure resolvers (`MODAL_SIZES`, `resolveModalPanelColors`, `resolveModalAnimationType`) + the themed structural resolvers (`modalOverlayStructure`, `modalPanelStructure`). No React, no lucide. Untouched by the web portal mechanism — see below. |
15
15
  | `ModalPortalContext.ts` | The web-only portal-container `React.Context<unknown>`, default `null`. Read by `Modal`, `Select`, `MultiSelect`, and `Menu`. |
16
16
  | `ModalPortalProvider.tsx` | Public provider wrapping `ModalPortalContext.Provider`. A consumer's opt-in API. |
17
17
  | `renderWebPortal.ts` / `renderWebPortal.web.ts` | The platform-split portal renderer — see "Web portal mechanism" below. |
18
18
  | `index.ts` | Public surface: `Modal`, `ModalProps`, `ModalSize`, `ModalPortalProvider`, `ModalPortalProviderProps`. |
19
- | `__tests__/Modal.test.ts` | Pure: WCAG contrast (all brands × modes), size-cap sanity, reduced-motion contract. |
20
- | `__tests__/Modal.render.test.tsx` | Render: visibility, title semantics, backdrop dismissal, and the web-portal opt-in branch (mocking `renderWebPortal`). |
21
- | `__tests__/ModalPortalProvider.test.tsx` | The provider forwards `container` onto `ModalPortalContext`; an unwrapped tree reads the `null` default. |
22
- | `__tests__/renderWebPortal.test.ts` / `renderWebPortal.web.test.ts` | Each platform file in isolation — the native file is always a no-op; the web file calls `ReactDOM.createPortal` with the exact children/container (mocked — no real DOM under Jest). |
23
- | `__tests__/Modal.keyboard.web.test.tsx` | Escape / Tab trap / focus restore on the portal branch, and their deliberate ABSENCE on the RNModal branch. |
19
+ | `__tests__/Modal.test.ts` / `Modal.render.test.tsx` | Pure (WCAG contrast, size caps, reduced motion) + render (visibility, title semantics, backdrop dismissal, portal branch). |
20
+ | `__tests__/ModalPortalProvider.test.tsx`, `renderWebPortal*.test.ts`, `Modal.keyboard.web.test.tsx` | Provider context default; each platform portal file in isolation; Escape/Tab-trap/focus-restore on the portal branch and their deliberate absence on the RNModal branch. |
24
21
 
25
22
  ## Props
26
23
 
@@ -29,7 +26,11 @@ VoiceOver's escape gesture via `onAccessibilityEscape`).
29
26
  | `visible` | `boolean` | — | Required. Fully controlled — no internal open state. |
30
27
  | `onRequestClose` | `() => void` | — | Required. Fired by the backdrop press, Android hardware back, and iOS VoiceOver's escape gesture (`onAccessibilityEscape` on the panel). |
31
28
  | `title` | `string` | — | Optional heading, rendered `accessibilityRole="header"`. |
29
+ | `subtitle` | `string` | — | Optional muted line under the title (`fg.muted`). |
32
30
  | `children` | `ReactNode` | — | Required. Panel content. |
31
+ | `footer` | `ReactNode` | — | Actions row below body (e.g. Cancel / Save). |
32
+ | `isLoading` | `boolean` | `false` | Scrim + centered `Spinner` over the panel; swallows taps, so footer and body cannot be activated while it is up. |
33
+ | `hideCloseButton` | `boolean` | `true` | When `false`, renders an explicit header close control wired to `onRequestClose`. |
33
34
  | `size` | `sm \| md \| lg` | `md` | Closed union — panel max width, reusing the shared `sizes` primitive (384/448/512dp). |
34
35
  | `testID` | `string` | — | Also seeds `${testID}-backdrop` and `${testID}-panel`. |
35
36
 
@@ -44,16 +45,12 @@ No `style`/`containerStyle` — see "Why no `style`" below.
44
45
  - **2.3.3** — `resolveModalAnimationType(reducedMotion)` returns `"none"` instead of `"fade"` when
45
46
  the OS reduce-motion setting is on.
46
47
  - The title is `accessibilityRole="header"`, giving it heading semantics for screen readers.
47
- - The backdrop is `accessible={false}` — a decorative dismiss target, not a focusable element (same
48
- treatment as `Select`'s backdrop). It is never the *only* way to close: Android hardware back also
49
- fires `onRequestClose`, and the panel's `onAccessibilityEscape={onRequestClose}` gives iOS
50
- VoiceOver users a real two-finger-Z "escape" gesture to dismiss without hunting for the invisible
51
- backdrop. (RN's `<Modal>` only treats a swipe as a dismiss when `allowSwipeDismissal` is passed
52
- this component doesn't set it and `transparent` with no `presentationStyle` forces
53
- `overFullScreen`, which has no native iOS swipe-to-dismiss gesture at all; `onAccessibilityEscape`
54
- is the real, working native hook here, not a swipe.)
55
- - No touch-target sizing needed: the only interactive surface is the full-screen backdrop, already
56
- far larger than the 44dp floor.
48
+ - The backdrop is `accessible={false}` — a decorative dismiss target, never the *only* way to
49
+ close: Android hardware back fires `onRequestClose`, and `onAccessibilityEscape` on the panel
50
+ gives VoiceOver a real two-finger-Z dismiss. There is no iOS swipe-to-dismiss here —
51
+ `transparent` with no `presentationStyle` forces `overFullScreen`, which has no such gesture.
52
+ - Touch targets need no local sizing: the backdrop is full-screen, and the optional header close
53
+ control is a library `Button`, which already enforces the 44dp floor.
57
54
 
58
55
  ## Why no `style`
59
56
 
@@ -64,76 +61,46 @@ component spec omits `style` rather than including it as an unused escape hatch.
64
61
 
65
62
  ## Web portal mechanism (opt-in)
66
63
 
67
- `react-native-web`'s own `<Modal>` unconditionally portals to `document.body`
68
- (`ModalPortal.js` in the installed 0.21.2 does `document.body.appendChild(...)` then
69
- `createPortal(children, elementRef.current)` no `container`/`portalHost` prop exists to
70
- override it, confirmed by reading the source). That's correct for a full app, but breaks visual
71
- containment inside a fixed-size preview frame (`example/DeviceFrame.tsx`'s 390px phone card): the
72
- overlay renders full-browser-viewport instead of clipped to the frame. Same problem, same fix, for
73
- `Select`'s option sheet, `MultiSelect`'s option sheet, and `Menu`'s action sheet all three render
74
- their own RN `<Modal>` directly (never this module's `Modal` component) and read the identical
75
- mechanism below.
76
-
77
- - **`ModalPortalContext`** — a `React.Context<unknown>`, default `null`. `unknown` because this
78
- package has no `"dom"` lib entry (native has no DOM) — a `HTMLElement` type here wouldn't
79
- compile. Internal; a consumer never reads it directly.
64
+ `react-native-web`'s `<Modal>` portals to `document.body` unconditionally with no `container` prop
65
+ to override it, which breaks containment inside a fixed-size preview frame
66
+ (`example/DeviceFrame.tsx`). `Select`, `MultiSelect` and `Menu` render their own RN `<Modal>`
67
+ directly (never this component) and read the identical mechanism.
68
+
69
+ - **`ModalPortalContext`** `React.Context<unknown>`, default `null`. `unknown` because the
70
+ package has no `"dom"` lib entry, so `HTMLElement` would not compile. Internal.
80
71
  - **`ModalPortalProvider`** — the public opt-in. `<ModalPortalProvider container={node}>` makes
81
- every `Modal` / `AlertDialog` / `Select` / `MultiSelect` / `Menu` underneath portal into `node`
82
- instead of `document.body`. Safe to mount unconditionally on every platform there's no DOM to
83
- portal into outside web, so `container` is simply never read off the context there.
84
- - **`renderWebPortal.ts` (base) / `renderWebPortal.web.ts` (web)** a Metro platform-extension
85
- pair, same idea as `theme/platform/*.native.ts` but the other direction: the BASE file (no
86
- suffix) is the safe default every platform except an actual web bundle resolves to (a pure
87
- no-op — always returns `null`), and `renderWebPortal.web.ts` (the only file that imports
88
- `react-dom`) is what an actual web bundle resolves to instead. Metro never resolves
89
- `react-dom` for a native bundle, so it's never part of that dependency graph — verified via
90
- `expo export --platform ios` vs `--platform web`, grepping each bundle for a marker string
91
- unique to each file. Jest's `react-native` preset has no `web` haste platform either, so every
92
- test also resolves the base file by default — this is why `Modal.render.test.tsx` /
93
- `Select.render.test.tsx` / `MultiSelect.render.test.tsx` / `Menu.render.test.tsx` mock
94
- `renderWebPortal` directly to exercise the opt-in branch, and `renderWebPortal.web.test.ts` is the
95
- one place the real `ReactDOM.createPortal` call is verified (mocking `react-dom` itself — no real
96
- DOM under Jest).
72
+ every `Modal` / `AlertDialog` / `Select` / `MultiSelect` / `Menu` underneath portal into `node`.
73
+ Safe to mount on every platform; off web, `container` is never read.
74
+ - **`renderWebPortal.ts` / `.web.ts`** a Metro platform-extension pair where the BASE file is the
75
+ no-op default and only the `.web` file imports `react-dom`, so `react-dom` never enters a native
76
+ bundle. Jest has no `web` haste platform either, so render tests mock `renderWebPortal` to reach
77
+ the opt-in branch; `renderWebPortal.web.test.ts` is the only place the real `createPortal` is
78
+ verified.
97
79
  - **Backward compatibility (the hard bar):** `Platform.OS === "web" && portalContainer != null`
98
- gates the whole mechanism every existing consumer (native, or web with no provider) takes the
99
- exact same code path as before this mechanism existed: RN's own `<Modal>`, untouched. Neither
100
- `Modal.variants.ts` nor `Select.variants.ts`/`MultiSelect.variants.ts`/`Menu.variants.ts`'s
101
- structural resolvers were touched — the portal path reproduces just the sizing RN's `<Modal>`
102
- otherwise supplies (a `StyleSheet.absoluteFill` wrapper around the SAME backdrop+panel tree)
103
- rather than changing the shared resolvers, so the default path's styles are provably unaffected.
104
- - **Known simplification:** the portal path skips RN `<Modal>`'s open/close animation entirely
105
- (mounts/unmounts on `visible`/`open` directly) — `resolveModalAnimationType`/reduced-motion only
106
- apply to the RNModal path. Acceptable: the goal is containment, not animation fidelity, and this
107
- only affects a consumer that has opted in.
80
+ gates the whole mechanism, so native and provider-less web take the untouched RN `<Modal>` path.
81
+ No shared structural resolver was changed the portal path only reproduces the sizing RN's
82
+ `<Modal>` otherwise supplies around the same backdrop+panel tree.
83
+ - **The portal path runs its own motion**, not RN `<Modal>`'s: the shared `enter` value drives the
84
+ panel and scrim, and `mounted` holds the tree through a timed exit rather than unmounting on
85
+ `visible`. `resolveModalAnimationType` applies only to the RNModal branch.
108
86
  - `react-dom` is an **optional peer dependency** (`peerDependenciesMeta.react-dom.optional`) —
109
87
  only needed by an app that actually renders for web; native-only consumers never install it.
110
88
 
111
89
  ### Keyboard — the portal branch has to supply its own
112
90
 
113
- Every keyboard behaviour a web `<Modal>` has comes from `react-native-web`'s own `ModalContent`
114
- (Escape) and `ModalFocusTrap` (Tab cycling + focus restore). The portal branch renders no
115
- `<RNModal>`, so mounting a `ModalPortalProvider` silently lost all three at once: Escape did
116
- nothing, Tab walked into the page behind the scrim, and closing dropped focus on `<body>`.
117
-
118
- `Modal.tsx` therefore calls `useDismissOnEscape` + `useFocusTrap` (`core/a11y/keyboard`, imported
119
- directly not through the `core/a11y` barrel) gated on `portalled && visible`. **The RNModal path
120
- must stay unwired**: two Escape listeners and two competing traps on one dialog is a worse bug than
121
- the one being fixed. Both hooks are no-ops on native by file resolution, so nothing changes there.
122
-
123
- `AlertDialog`, `LimitReachedModal` and `ImageViewer` compose this component and inherit all of it —
124
- none of them contains keyboard code, and each has a test asserting the inheritance.
91
+ Escape, Tab cycling and focus restore all come from `react-native-web`'s own `ModalContent` /
92
+ `ModalFocusTrap`, which the portal branch never renders. `Modal.tsx` therefore calls
93
+ `useDismissOnEscape` + `useFocusTrap` (`core/a11y/keyboard`, imported directly) gated on
94
+ `portalled && visible`. **The RNModal path must stay unwired** two Escape listeners and two
95
+ competing traps is a worse bug than the one being fixed. Both hooks are native no-ops by file
96
+ resolution. `AlertDialog`, `LimitReachedModal` and `ImageViewer` compose this and inherit all of
97
+ it, each with a test asserting the inheritance.
125
98
 
126
99
  ## Patterns copied from Button / Select (the reference modules)
127
100
 
128
- 1. **Structure vs colour split** sizing/spacing/radius via `createThemedVariants`; colour
129
- resolved from `RoleColors`, applied inline.
130
- 2. **Pure, testable resolvers** in `Modal.variants.ts` WCAG contrast and the reduced-motion
131
- contract are unit-tested against real palettes, never eyeballed.
132
- 3. **RN's own `<Modal>`, not a hand-rolled portal** — `transparent` + backdrop `Pressable` +
133
- `pointerEvents="box-none"` overlay, the same shape `Select`'s option list uses (converged on
134
- independently — this module owns none of that code, built in parallel).
135
- 4. **Closed `size` union** reusing the shared `sizes` primitive (384/448/512dp) instead of
136
- Modal-local numbers — `theme/tokens/primitives/sizes.ts` is documented for exactly this case.
101
+ Structure vs colour split (`createThemedVariants` for sizing, `RoleColors` inline); pure resolvers
102
+ in `Modal.variants.ts` unit-tested against real palettes; RN's own `<Modal>` rather than a
103
+ hand-rolled portal; a closed `size` union reusing the shared `sizes` primitive.
137
104
 
138
105
  ## Android edge-to-edge
139
106
 
@@ -145,31 +112,27 @@ solid white on open. Add both any time a new module renders its own RN `<Modal t
145
112
 
146
113
  ## Known gaps
147
114
 
148
- - **No full SCREEN-READER trap.** iOS gets `accessibilityViewIsModal` (constrains VoiceOver to the
149
- panel). Android has no JS-level equivalent for marking background siblings
150
- `importantForAccessibility="no-hide-descendants"` from inside this component (that prop applies
151
- to the element it's set on, not to arbitrary siblings elsewhere in the tree) — a full Android
152
- reader trap needs the app root to cooperate. Out of scope for v1. (The web *keyboard* trap above
153
- is a separate mechanism and is wired.)
115
+ - **No full SCREEN-READER trap on Android.** iOS gets `accessibilityViewIsModal`; Android has no
116
+ JS-level way to mark background siblings hidden from inside this component, so a reader trap
117
+ there needs the app root to cooperate. The web *keyboard* trap above is separate, and is wired.
154
118
  - **The web keyboard trap only cycles Tab.** It does not pull focus back if focus leaves the panel
155
119
  by a click outside or a programmatic `focus()` — that needs sentinel nodes at the panel's edges,
156
120
  a component-level change nobody has needed yet. Inherited from `core/a11y/keyboard`.
157
121
  - **No built-in scrolling.** The panel caps at `maxHeight: "92%"` but does not wrap `children` in a
158
122
  `ScrollView` — forcing one risks nested-`VirtualizedList` warnings if a consumer's content is
159
123
  already scrollable. Tall content is the consumer's own `ScrollView`/`FlatList` to add.
160
- - No close ("×") button — not in this module's prop contract; dismissal is backdrop press, Android
161
- back, or iOS VoiceOver's escape gesture. A consumer wanting an explicit close control renders its
162
- own `Button` (`icon="x"`) inside `children`.
124
+ - **`isLoading` was visual-only before this release** the spinner scrim rendered with
125
+ `pointerEvents: "none"`, so taps reached the footer underneath and a consumer could fire a submit
126
+ twice. A consumer pinned to an older version must still disable its own footer buttons.
163
127
 
164
128
  ## Performance
165
129
 
166
- Both `Modal` and `ModalPortalProvider` are wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). `Modal.tsx` has no `.map()` lists and no library child components (only RN host elements); `ModalPortalProvider` just passes `container`/`children` into a `Context.Provider` — nothing to memoize in either.
167
-
168
- ## Modernization (v1.0.7)
130
+ Both `Modal` and `ModalPortalProvider` are wrapped in `React.memo`. Neither has a `.map()` list or
131
+ a memoizable child — `ModalPortalProvider` only passes `container`/`children` into a provider.
169
132
 
170
- - Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
171
- - List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
172
- - `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
133
+ ## Motion
173
134
 
174
- - **Round 2 visual** — radii retarget (`radii.md`/`lg`/`xl`/`full`), `borderCurve: continuous` on md+ corners; floating surfaces wire platform elevation/highlight where applicable.
175
- - **Round 5 motion** — dropped the ad hoc reanimated `FadeInDown`/`FadeOut` layer; the panel's own `enter` value now drives backdrop opacity too, so scrim fade and panel slide+fade are one gesture on both the RNModal and web-portal paths. The portal branch now tracks `mounted` through a real timed exit instead of unmounting instantly. `MODAL_BACKDROP`'s opacity comes from `MOTION_TRANSFORM.scrimOpacity`.
135
+ One `enter` shared value drives panel slide+fade and scrim opacity together on both branches, so
136
+ they are a single gesture; `MODAL_BACKDROP` takes its alpha from `MOTION_TRANSFORM.scrimOpacity`.
137
+ The inner content layer additionally carries `FadeInDown`/`FadeOut`/`LinearTransition`, each with
138
+ `ReduceMotion.System`.
@@ -34,14 +34,18 @@
34
34
  */
35
35
 
36
36
  import { memo, useContext, useEffect, useMemo, useRef, useState } from "react";
37
- import { Animated, Modal as RNModal, Platform, Pressable, StyleSheet, View } from "react-native";
37
+ import { Modal as RNModal, Platform, Pressable, StyleSheet, View } from "react-native";
38
+ import Reanimated, { FadeInDown, FadeOut, interpolate, LinearTransition, ReduceMotion, useAnimatedStyle } from "react-native-reanimated";
38
39
  import { useDismissOnEscape, useFocusTrap } from "../../core/a11y/keyboard";
39
- import { MOTION_TRANSFORM, useAnimatedValue, useMotion } from "../../core/motion/index.js";
40
+ import { renderNodeSlot } from "../../core/slot/index.js";
41
+ import { MOTION_TRANSFORM, useMotion, useAnimatedValue } from "../../core/motion/index.js";
40
42
  import { withAlpha } from "../../core/gradient/index.js";
41
43
  import { elevation, floatingBackground, floatingSurfaceStyle, highlight } from "../../theme/platform/index.js";
42
44
  import { elevation as elevationTokens } from "../../theme/tokens/primitives/index.js";
43
45
  import { useTheme } from "../../theme/hooks.js";
44
- import { Heading } from "../text/index.js";
46
+ import { Button } from "../button/index.js";
47
+ import { Spinner } from "../spinner/index.js";
48
+ import { Heading, Text } from "../text/index.js";
45
49
  import { ModalPortalContext } from "./ModalPortalContext.js";
46
50
  import { renderWebPortal } from "./renderWebPortal";
47
51
  import { modalOverlayStructure, modalPanelStructure, resolveModalAnimationType } from "./Modal.variants.js";
@@ -53,7 +57,11 @@ export const Modal = /*#__PURE__*/memo(function Modal({
53
57
  visible,
54
58
  onRequestClose,
55
59
  title,
60
+ subtitle,
56
61
  children,
62
+ footer,
63
+ isLoading = false,
64
+ hideCloseButton = true,
57
65
  size = "md",
58
66
  testID
59
67
  }) {
@@ -72,6 +80,7 @@ export const Modal = /*#__PURE__*/memo(function Modal({
72
80
  mountedRef.current = mounted;
73
81
  const enter = useAnimatedValue(visible ? 1 : 0);
74
82
  const running = useRef(null);
83
+ const offsetY = motion.transform.offsetY;
75
84
  const unmountTimer = useRef(null);
76
85
  useEffect(() => {
77
86
  const clearUnmount = () => {
@@ -85,10 +94,10 @@ export const Modal = /*#__PURE__*/memo(function Modal({
85
94
  if (visible) {
86
95
  setMounted(true);
87
96
  if (!motion.enabled) {
88
- enter.setValue(1);
97
+ enter.value = 1;
89
98
  return;
90
99
  }
91
- enter.setValue(0);
100
+ enter.value = 0;
92
101
  running.current = motion.timing(enter, 1, {
93
102
  easing: "decelerate"
94
103
  });
@@ -98,7 +107,7 @@ export const Modal = /*#__PURE__*/memo(function Modal({
98
107
  if (!mountedRef.current) return;
99
108
  const exitMs = motion.duration("fast");
100
109
  if (!motion.enabled || exitMs === 0) {
101
- enter.setValue(0);
110
+ enter.value = 0;
102
111
  setMounted(false);
103
112
  return;
104
113
  }
@@ -126,26 +135,57 @@ export const Modal = /*#__PURE__*/memo(function Modal({
126
135
  ...floatingSurfaceStyle(theme, "lg")
127
136
  };
128
137
  }, [theme]);
129
- const panelStyle = useMemo(() => [modalPanelStructure(theme, {
138
+ const panelStaticStyle = useMemo(() => [modalPanelStructure(theme, {
130
139
  size
131
- }), floatingStyle, {
132
- opacity: enter,
140
+ }), floatingStyle], [theme, size, floatingStyle]);
141
+ const panelAnimatedStyle = useAnimatedStyle(() => ({
142
+ opacity: enter.value,
133
143
  transform: [{
134
- translateY: enter.interpolate({
135
- inputRange: [0, 1],
136
- outputRange: [motion.transform.offsetY, 0]
137
- })
144
+ translateY: interpolate(enter.value, [0, 1], [offsetY, 0])
138
145
  }]
139
- }], [theme, size, floatingStyle, enter, motion.transform.offsetY]);
140
- const backdropStyle = useMemo(() => [styles.backdrop, {
141
- opacity: enter
142
- }], [enter]);
143
- const titleBlock = title !== undefined ? /*#__PURE__*/_jsx(Heading, {
144
- variant: "h3",
146
+ }));
147
+ const backdropAnimatedStyle = useAnimatedStyle(() => ({
148
+ opacity: enter.value
149
+ }));
150
+ const panelSlotTextStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
151
+ color: theme.colors.fg.default,
152
+ fontSize: theme.fontSizes.md
153
+ }], [theme]);
154
+ const titleBlock = title !== undefined || !hideCloseButton ? /*#__PURE__*/_jsxs(View, {
155
+ style: {
156
+ flexDirection: "row",
157
+ alignItems: "flex-start",
158
+ justifyContent: "space-between",
159
+ gap: theme.space[2],
160
+ marginBottom: theme.space[3]
161
+ },
162
+ children: [/*#__PURE__*/_jsxs(View, {
163
+ style: {
164
+ flex: 1,
165
+ gap: theme.space[1]
166
+ },
167
+ children: [title !== undefined ? /*#__PURE__*/_jsx(Heading, {
168
+ variant: "h3",
169
+ children: title
170
+ }) : null, subtitle !== undefined ? /*#__PURE__*/_jsx(Text, {
171
+ variant: "body-sm",
172
+ color: "muted",
173
+ children: subtitle
174
+ }) : null]
175
+ }), !hideCloseButton ? /*#__PURE__*/_jsx(Button, {
176
+ variant: "ghost",
177
+ icon: "x",
178
+ accessibilityLabel: "Close",
179
+ onPress: onRequestClose,
180
+ testID: testID ? `${testID}-close` : undefined
181
+ }) : null]
182
+ }) : subtitle !== undefined ? /*#__PURE__*/_jsx(Text, {
183
+ variant: "body-sm",
184
+ color: "muted",
145
185
  style: {
146
186
  marginBottom: theme.space[3]
147
187
  },
148
- children: title
188
+ children: subtitle
149
189
  }) : null;
150
190
  const overlay = /*#__PURE__*/_jsxs(_Fragment, {
151
191
  children: [/*#__PURE__*/_jsx(Pressable, {
@@ -154,20 +194,48 @@ export const Modal = /*#__PURE__*/memo(function Modal({
154
194
  tabIndex: -1,
155
195
  style: StyleSheet.absoluteFill,
156
196
  onPress: onRequestClose,
157
- children: /*#__PURE__*/_jsx(Animated.View, {
158
- pointerEvents: "none",
159
- style: backdropStyle
197
+ children: /*#__PURE__*/_jsx(Reanimated.View, {
198
+ style: [styles.backdrop, backdropAnimatedStyle, {
199
+ pointerEvents: 'none'
200
+ }]
160
201
  })
161
202
  }), /*#__PURE__*/_jsx(View, {
162
- style: modalOverlayStructure(theme),
163
- pointerEvents: "box-none",
164
- children: /*#__PURE__*/_jsxs(Animated.View, {
203
+ style: [modalOverlayStructure(theme), {
204
+ pointerEvents: 'box-none'
205
+ }],
206
+ children: /*#__PURE__*/_jsx(Reanimated.View, {
165
207
  ref: panelRef,
166
208
  testID: testID ? `${testID}-panel` : undefined,
167
209
  accessibilityViewIsModal: true,
168
210
  onAccessibilityEscape: onRequestClose,
169
- style: panelStyle,
170
- children: [titleBlock, children]
211
+ style: [panelStaticStyle, panelAnimatedStyle],
212
+ children: /*#__PURE__*/_jsxs(Reanimated.View, {
213
+ entering: FadeInDown.springify().reduceMotion(ReduceMotion.System),
214
+ exiting: FadeOut.reduceMotion(ReduceMotion.System),
215
+ layout: LinearTransition.reduceMotion(ReduceMotion.System),
216
+ style: {
217
+ position: "relative"
218
+ },
219
+ children: [titleBlock, renderNodeSlot(children, panelSlotTextStyle), footer !== undefined ? /*#__PURE__*/_jsx(View, {
220
+ style: {
221
+ marginTop: theme.space[4],
222
+ gap: theme.space[2]
223
+ },
224
+ children: renderNodeSlot(footer, panelSlotTextStyle)
225
+ }) : null, isLoading ? /*#__PURE__*/_jsx(View, {
226
+ testID: testID ? `${testID}-loading-overlay` : undefined,
227
+ style: {
228
+ ...StyleSheet.absoluteFill,
229
+ alignItems: "center",
230
+ justifyContent: "center",
231
+ backgroundColor: withAlpha(theme.colors.bg.surface, 0.72),
232
+ pointerEvents: 'auto'
233
+ },
234
+ children: /*#__PURE__*/_jsx(Spinner, {
235
+ testID: testID ? `${testID}-loading` : undefined
236
+ })
237
+ }) : null]
238
+ })
171
239
  })
172
240
  })]
173
241
  });
@@ -179,8 +247,9 @@ export const Modal = /*#__PURE__*/memo(function Modal({
179
247
  // still uses untouched) so the same tree fills `portalContainer`'s bounds instead of the
180
248
  // viewport.
181
249
  return renderWebPortal(/*#__PURE__*/_jsx(View, {
182
- style: StyleSheet.absoluteFill,
183
- pointerEvents: "box-none",
250
+ style: [StyleSheet.absoluteFill, {
251
+ pointerEvents: 'box-none'
252
+ }],
184
253
  children: overlay
185
254
  }), portalContainer);
186
255
  }
@@ -1,25 +1,4 @@
1
1
  "use strict";
2
2
 
3
- /**
4
- * Web-only escape hatch for where Modal (and, via this same context, Select/Menu's option/action
5
- * sheets) portal their overlay content on `react-native-web`.
6
- *
7
- * `react-native-web`'s own `<Modal>` unconditionally portals to `document.body`
8
- * (`react-native-web/src/exports/Modal/ModalPortal.js` — `document.body.appendChild(...)`, then
9
- * `createPortal(children, elementRef.current)`; no `container`/`portalHost` prop exists to
10
- * override it, verified against the installed 0.21.2 source). That is correct for a full app, but
11
- * breaks visual containment inside a fixed-size preview frame (see `example/DeviceFrame.tsx`): the
12
- * overlay renders full-browser-viewport instead of clipped to the frame.
13
- *
14
- * Defaults to `null` — every existing consumer, native or web, reads `null` here and keeps
15
- * rendering through RN's own `<Modal>` exactly as before this context existed. A consumer opts in
16
- * via `ModalPortalProvider` (`./ModalPortalProvider`).
17
- *
18
- * Typed `unknown`, not a DOM type: this package has no `"dom"` lib entry (native has no DOM), so a
19
- * `HTMLElement`/`Element` annotation here would fail to compile. On web the value must be a real
20
- * DOM node capable of receiving `ReactDOM.createPortal` — `renderWebPortal.web.ts` is the one place
21
- * that actually dereferences it, and does the environment-appropriate cast there.
22
- */
23
- import { createContext } from "react";
24
- export const ModalPortalContext = /*#__PURE__*/createContext(null);
3
+ export { ModalPortalContext } from "../../core/overlay/ModalPortalContext.js";
25
4
  //# sourceMappingURL=ModalPortalContext.js.map
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { memo } from "react";
4
- import { ModalPortalContext } from "./ModalPortalContext.js";
4
+ import { ModalPortalContext } from "../../core/overlay/ModalPortalContext.js";
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
6
  /**
7
7
  * Opts a subtree into containing its Modal / AlertDialog / Select / Menu overlays inside
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=ModalPortalProviderProps.js.map
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=ModalProps.js.map
@@ -1,18 +1,4 @@
1
1
  "use strict";
2
2
 
3
- /**
4
- * Native/default counterpart of `renderWebPortal.web.ts`. There is no DOM to portal into outside a
5
- * web environment, so this always returns `null` — the caller (Modal/Select/Menu) then falls back
6
- * to rendering through RN's own `<Modal>`, exactly as it did before this mechanism existed.
7
- *
8
- * Exists so the bare specifier `import { renderWebPortal } from "./renderWebPortal"` has a
9
- * same-shaped default to resolve to on every platform except an actual web bundle: Metro's
10
- * platform-extension resolution picks `renderWebPortal.web.ts` only when bundling for web, and
11
- * falls back to THIS file everywhere else (iOS, Android, and Jest — Jest's `react-native` preset
12
- * haste config has no `web` platform, so it also always resolves here). `react-dom` therefore never
13
- * enters a native dependency graph.
14
- */
15
- export function renderWebPortal(_children, _container) {
16
- return null;
17
- }
3
+ export { renderWebPortal } from "../../core/overlay/renderWebPortal";
18
4
  //# sourceMappingURL=renderWebPortal.js.map
@@ -1,24 +1,4 @@
1
1
  "use strict";
2
2
 
3
- import { createPortal } from "react-dom";
4
- /**
5
- * Web implementation: portals `children` into `container` via `ReactDOM.createPortal`, bypassing
6
- * `react-native-web`'s own `<Modal>` (which always portals to `document.body` — see
7
- * `ModalPortalContext.ts`). Returns `null` when `container` is nullish so the caller falls back to
8
- * the default `<Modal>` path.
9
- *
10
- * `container` is cast from `unknown` to `Element` here — the one place this mechanism's `unknown`
11
- * portal-container contract gets a concrete DOM type, since only this file (Metro only ever
12
- * resolves it for an actual web bundle — see `renderWebPortal.ts`) has a real DOM environment to
13
- * assume. A caller that passes something that isn't really a DOM node fails at `createPortal`'s own
14
- * runtime, same as any other incorrect `ReactDOM.createPortal` call would.
15
- *
16
- * This module's exported signature stays identical to `renderWebPortal.ts`'s (`ReactNode`,
17
- * `unknown` — never a `react-dom` type), so a consumer never needs `@types/react-dom` just because
18
- * they import `pixelize-native-library/modal`; that type dependency stays internal to this one file.
19
- */
20
- export function renderWebPortal(children, container) {
21
- if (container == null) return null;
22
- return /*#__PURE__*/createPortal(children, container);
23
- }
3
+ export { renderWebPortal } from "../../core/overlay/renderWebPortal.web.js";
24
4
  //# sourceMappingURL=renderWebPortal.web.js.map
@@ -73,5 +73,3 @@ Renders `null` when the count is ≤0 and there is no `triggerText` — nothing
73
73
 
74
74
  - Rows are display-only — no press/selection. A selectable overflow list would be a different
75
75
  component (`Select`/`Menu`), not a prop added here.
76
-
77
- - **Round 2 visual** — radii retarget (`radii.md`/`lg`/`xl`/`full`), `borderCurve: continuous` on md+ corners; floating surfaces wire platform elevation/highlight where applicable.
@@ -5,14 +5,16 @@
5
5
  */
6
6
 
7
7
  import { memo, useCallback, useMemo, useState } from "react";
8
- import { Animated, Modal, Platform, Pressable, StyleSheet, Text, View } from "react-native";
8
+ import { Modal, Platform, Pressable, StyleSheet, Text, View } from "react-native";
9
+ import Reanimated from "react-native-reanimated";
9
10
  import { VirtualList } from "../../core/list/index.js";
10
- import { useEnterExit, usePressMotion } from "../../core/motion/index.js";
11
+ import { withAlpha } from "../../core/gradient/index.js";
12
+ import { MOTION_TRANSFORM, useEnterExit, usePressMotion } from "../../core/motion/index.js";
11
13
  import { useTheme } from "../../theme/hooks.js";
12
14
  import { rippleColor } from "../../theme/platform/stateLayer.native.js";
13
15
  import { moreItemsBadgeStructure, moreItemsDotStructure, moreItemsOverlayStructure, moreItemsRowStructure, moreItemsSheetStructure, moreItemsTriggerContentStructure, moreItemsTriggerStructure, resolveMoreItemsCount, resolveMoreItemsDotColor } from "./MoreItems.variants.js";
14
16
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
15
- const BACKDROP = "#00000080";
17
+ const BACKDROP = withAlpha("#000000", MOTION_TRANSFORM.scrimOpacity);
16
18
  const MoreItemsRow = /*#__PURE__*/memo(function MoreItemsRow({
17
19
  item,
18
20
  theme,
@@ -109,7 +111,7 @@ export const MoreItems = /*#__PURE__*/memo(function MoreItems({
109
111
  onPressOut: press.onPressOut,
110
112
  android_ripple: androidRipple,
111
113
  style: triggerStyle,
112
- children: /*#__PURE__*/_jsxs(Animated.View, {
114
+ children: /*#__PURE__*/_jsxs(Reanimated.View, {
113
115
  style: [triggerContentStructure, press.style],
114
116
  children: [triggerText !== undefined && /*#__PURE__*/_jsx(Text, {
115
117
  numberOfLines: 1,
@@ -137,9 +139,10 @@ export const MoreItems = /*#__PURE__*/memo(function MoreItems({
137
139
  style: styles.backdrop
138
140
  })
139
141
  }), /*#__PURE__*/_jsx(View, {
140
- style: overlayStructure,
141
- pointerEvents: "box-none",
142
- children: /*#__PURE__*/_jsx(Animated.View, {
142
+ style: [overlayStructure, {
143
+ pointerEvents: 'box-none'
144
+ }],
145
+ children: /*#__PURE__*/_jsx(Reanimated.View, {
143
146
  testID: testID ? `${testID}-sheet` : undefined
144
147
  // The modal-semantics pair every other overlay in this library gives its panel, plus a
145
148
  // name: the sheet had neither, so VoiceOver could wander into the row behind it.
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
 
3
+ import { MIN_TOUCH_TARGET } from "../../core/a11y/touchTarget.js";
3
4
  import { createThemedVariants } from "../../core/style/index.js";
4
5
  import { resolveBadgeTone } from "../badge/Badge.variants.js";
6
+ export { MIN_TOUCH_TARGET };
5
7
  export function resolveMoreItemsCount(moreCount, itemsLength) {
6
8
  return moreCount ?? itemsLength;
7
9
  }
@@ -18,7 +20,6 @@ export const MORE_ITEMS_SHEET_MAX_HEIGHT = 280;
18
20
  * neighbouring target to overlap, and a slop-expanded rectangle would still leave a ~22dp visual
19
21
  * control that misses under an unsteady finger.
20
22
  */
21
- export const MIN_TOUCH_TARGET = 44;
22
23
  export const moreItemsTriggerStructure = createThemedVariants(_theme => ({
23
24
  base: {
24
25
  maxWidth: 250,
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=MoreItemsProps.js.map