pixelize-native-library 1.2.0 → 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 (921) 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 +23 -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 +83 -0
  11. package/lib/module/core/gradient/ShimmerGradientFill.js +79 -0
  12. package/lib/module/core/gradient/darkenHex.js +13 -0
  13. package/lib/module/core/gradient/gradientStops.js +27 -0
  14. package/lib/module/core/gradient/index.js +8 -0
  15. package/lib/module/core/gradient/withAlpha.js +19 -0
  16. package/lib/module/core/haptics/MODULE.md +8 -0
  17. package/lib/module/core/haptics/context.js +7 -0
  18. package/lib/module/core/haptics/haptics.js +17 -0
  19. package/lib/module/core/haptics/index.js +6 -0
  20. package/lib/module/core/haptics/useHaptics.js +73 -0
  21. package/lib/module/core/heading/MODULE.md +1 -1
  22. package/lib/module/core/icon/MODULE.md +22 -23
  23. package/lib/module/core/icon/icons/building-2.js +1 -1
  24. package/lib/module/core/icon/icons/trash.js +1 -1
  25. package/lib/module/core/icon/icons/trending-up.js +10 -0
  26. package/lib/module/core/icon/resolve.js +2 -0
  27. package/lib/module/core/list/VirtualList.js +16 -3
  28. package/lib/module/core/media/expoImage.js +6 -0
  29. package/lib/module/core/motion/MODULE.md +25 -16
  30. package/lib/module/core/motion/animatedComponents.js +8 -0
  31. package/lib/module/core/motion/config.js +4 -1
  32. package/lib/module/core/motion/index.js +4 -1
  33. package/lib/module/core/motion/motionAnimation.js +87 -0
  34. package/lib/module/core/motion/presets.js +81 -81
  35. package/lib/module/core/motion/reanimatedEasing.js +19 -0
  36. package/lib/module/core/motion/useAnimatedValue.js +2 -14
  37. package/lib/module/core/motion/useMotion.js +19 -20
  38. package/lib/module/core/motion/usePressState.js +140 -0
  39. package/lib/module/core/overlay/MODULE.md +17 -0
  40. package/lib/module/core/overlay/ModalPortalContext.js +8 -0
  41. package/lib/module/core/overlay/index.js +5 -0
  42. package/lib/module/core/overlay/renderWebPortal.js +6 -0
  43. package/lib/module/core/overlay/renderWebPortal.web.js +8 -0
  44. package/lib/module/core/screen-scroll/ScreenScrollContext.js +9 -0
  45. package/lib/module/core/screen-scroll/index.js +4 -0
  46. package/lib/module/core/slot/MODULE.md +9 -0
  47. package/lib/module/core/slot/index.js +4 -0
  48. package/lib/module/core/slot/nodeSlot.js +21 -0
  49. package/lib/module/core/style/focusRing.js +37 -0
  50. package/lib/module/core/style/index.js +2 -1
  51. package/lib/module/core/style/radius.js +4 -0
  52. package/lib/module/index.js +24 -4
  53. package/lib/module/modules/accordion/Accordion.js +115 -153
  54. package/lib/module/modules/accordion/Accordion.variants.js +6 -7
  55. package/lib/module/modules/accordion/AccordionProps.js +4 -0
  56. package/lib/module/modules/accordion/MODULE.md +15 -23
  57. package/lib/module/modules/alert-dialog/AlertDialog.js +25 -7
  58. package/lib/module/modules/alert-dialog/AlertDialog.variants.js +4 -0
  59. package/lib/module/modules/alert-dialog/AlertDialogProps.js +4 -0
  60. package/lib/module/modules/alert-dialog/MODULE.md +2 -1
  61. package/lib/module/modules/app-bar/AppBar.js +27 -22
  62. package/lib/module/modules/app-bar/AppBar.variants.js +6 -2
  63. package/lib/module/modules/app-bar/AppBarProps.js +4 -0
  64. package/lib/module/modules/app-bar/MODULE.md +1 -1
  65. package/lib/module/modules/app-switcher/AppSwitcher.js +30 -0
  66. package/lib/module/modules/app-switcher/AppSwitcherProps.js +4 -0
  67. package/lib/module/modules/app-switcher/MODULE.md +14 -0
  68. package/lib/module/modules/app-switcher/index.js +4 -0
  69. package/lib/module/modules/appearance-settings/AppearanceSettings.js +58 -0
  70. package/lib/module/modules/appearance-settings/AppearanceSettingsProps.js +4 -0
  71. package/lib/module/modules/appearance-settings/MODULE.md +9 -0
  72. package/lib/module/modules/appearance-settings/index.js +4 -0
  73. package/lib/module/modules/avatar/Avatar.js +7 -1
  74. package/lib/module/modules/avatar/Avatar.variants.js +3 -1
  75. package/lib/module/modules/avatar/AvatarProps.js +4 -0
  76. package/lib/module/modules/avatar/MODULE.md +3 -3
  77. package/lib/module/modules/avatar-group/AvatarGroup.js +10 -6
  78. package/lib/module/modules/avatar-group/AvatarGroup.variants.js +23 -0
  79. package/lib/module/modules/avatar-group/AvatarGroupProps.js +4 -0
  80. package/lib/module/modules/avatar-group/MODULE.md +17 -0
  81. package/lib/module/modules/backdrop/Backdrop.js +38 -0
  82. package/lib/module/modules/backdrop/BackdropProps.js +4 -0
  83. package/lib/module/modules/backdrop/MODULE.md +11 -0
  84. package/lib/module/modules/backdrop/index.js +4 -0
  85. package/lib/module/modules/badge/Badge.js +11 -5
  86. package/lib/module/modules/badge/Badge.variants.js +2 -1
  87. package/lib/module/modules/badge/BadgeProps.js +4 -0
  88. package/lib/module/modules/badge/MODULE.md +11 -9
  89. package/lib/module/modules/banner/Banner.js +106 -60
  90. package/lib/module/modules/banner/Banner.variants.js +5 -3
  91. package/lib/module/modules/banner/BannerProps.js +4 -0
  92. package/lib/module/modules/banner/MODULE.md +27 -33
  93. package/lib/module/modules/bottom-nav/BottomNav.js +6 -3
  94. package/lib/module/modules/bottom-nav/BottomNav.variants.js +11 -12
  95. package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js +18 -19
  96. package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js +35 -10
  97. package/lib/module/modules/bottom-nav/BottomNavProps.js +4 -0
  98. package/lib/module/modules/bottom-nav/BottomNavTab.js +38 -15
  99. package/lib/module/modules/bottom-nav/MODULE.md +14 -5
  100. package/lib/module/modules/bottom-sheet/BottomSheet.js +49 -13
  101. package/lib/module/modules/bottom-sheet/BottomSheet.variants.js +15 -5
  102. package/lib/module/modules/bottom-sheet/BottomSheetProps.js +4 -0
  103. package/lib/module/modules/bottom-sheet/MODULE.md +24 -3
  104. package/lib/module/modules/breadcrumbs/Breadcrumbs.js +54 -0
  105. package/lib/module/modules/breadcrumbs/Breadcrumbs.variants.js +28 -0
  106. package/lib/module/modules/breadcrumbs/BreadcrumbsProps.js +4 -0
  107. package/lib/module/modules/breadcrumbs/MODULE.md +13 -0
  108. package/lib/module/modules/breadcrumbs/index.js +4 -0
  109. package/lib/module/modules/button/Button.js +89 -101
  110. package/lib/module/modules/button/Button.variants.js +14 -17
  111. package/lib/module/modules/button/ButtonProps.js +4 -0
  112. package/lib/module/modules/button/MODULE.md +11 -10
  113. package/lib/module/modules/button-group/ButtonGroup.js +38 -38
  114. package/lib/module/modules/button-group/ButtonGroup.variants.js +23 -50
  115. package/lib/module/modules/button-group/ButtonGroupProps.js +4 -0
  116. package/lib/module/modules/button-group/MODULE.md +27 -32
  117. package/lib/module/modules/card/Card.js +140 -19
  118. package/lib/module/modules/card/Card.variants.js +1 -0
  119. package/lib/module/modules/card/CardProps.js +4 -0
  120. package/lib/module/modules/card/MODULE.md +17 -12
  121. package/lib/module/modules/charts/BarChart.js +35 -18
  122. package/lib/module/modules/charts/BarChartProps.js +4 -0
  123. package/lib/module/modules/charts/BarList.js +33 -19
  124. package/lib/module/modules/charts/BarListProps.js +4 -0
  125. package/lib/module/modules/charts/ChartLegendProps.js +4 -0
  126. package/lib/module/modules/charts/Charts.variants.js +69 -3
  127. package/lib/module/modules/charts/DonutChart.js +12 -6
  128. package/lib/module/modules/charts/DonutChartProps.js +4 -0
  129. package/lib/module/modules/charts/LineChart.js +8 -5
  130. package/lib/module/modules/charts/LineChartProps.js +4 -0
  131. package/lib/module/modules/charts/MODULE.md +33 -20
  132. package/lib/module/modules/charts/PieChart.js +19 -8
  133. package/lib/module/modules/charts/PieChartProps.js +4 -0
  134. package/lib/module/modules/charts/Sparkline.js +4 -2
  135. package/lib/module/modules/charts/SparklineProps.js +4 -0
  136. package/lib/module/modules/checkbox/Checkbox.js +30 -28
  137. package/lib/module/modules/checkbox/Checkbox.variants.js +4 -2
  138. package/lib/module/modules/checkbox/CheckboxProps.js +4 -0
  139. package/lib/module/modules/checkbox/MODULE.md +17 -6
  140. package/lib/module/modules/chip/Chip.js +116 -54
  141. package/lib/module/modules/chip/Chip.variants.js +18 -5
  142. package/lib/module/modules/chip/ChipGroup.js +16 -5
  143. package/lib/module/modules/chip/ChipGroupProps.js +4 -0
  144. package/lib/module/modules/chip/ChipProps.js +4 -0
  145. package/lib/module/modules/chip/MODULE.md +8 -8
  146. package/lib/module/modules/combobox/Combobox.js +111 -78
  147. package/lib/module/modules/combobox/Combobox.variants.js +24 -10
  148. package/lib/module/modules/combobox/ComboboxProps.js +4 -0
  149. package/lib/module/modules/combobox/MODULE.md +14 -10
  150. package/lib/module/modules/composer/Composer.js +20 -11
  151. package/lib/module/modules/composer/Composer.variants.js +2 -0
  152. package/lib/module/modules/composer/ComposerProps.js +4 -0
  153. package/lib/module/modules/composer/MODULE.md +7 -2
  154. package/lib/module/modules/copy-button/CopyButton.js +35 -9
  155. package/lib/module/modules/copy-button/CopyButton.variants.js +7 -4
  156. package/lib/module/modules/copy-button/CopyButtonProps.js +4 -0
  157. package/lib/module/modules/copy-button/MODULE.md +11 -8
  158. package/lib/module/modules/data-table/DataTable.js +37 -14
  159. package/lib/module/modules/data-table/DataTable.variants.js +5 -4
  160. package/lib/module/modules/data-table/DataTableProps.js +4 -0
  161. package/lib/module/modules/data-table/MODULE.md +6 -10
  162. package/lib/module/modules/date-picker/Calendar.js +78 -29
  163. package/lib/module/modules/date-picker/CalendarProps.js +4 -0
  164. package/lib/module/modules/date-picker/DatePicker.variants.js +26 -10
  165. package/lib/module/modules/date-picker/DatePickerProps.js +4 -0
  166. package/lib/module/modules/date-picker/DateRangePickerProps.js +4 -0
  167. package/lib/module/modules/date-picker/MODULE.md +29 -11
  168. package/lib/module/modules/date-picker/PickerField.js +13 -4
  169. package/lib/module/modules/date-picker/PickerFieldProps.js +4 -0
  170. package/lib/module/modules/date-picker/PickerShell.js +23 -12
  171. package/lib/module/modules/date-picker/PickerShellProps.js +4 -0
  172. package/lib/module/modules/date-picker/TimePicker.js +15 -19
  173. package/lib/module/modules/date-picker/TimePickerProps.js +4 -0
  174. package/lib/module/modules/description-list/DescriptionList.js +90 -0
  175. package/lib/module/modules/description-list/DescriptionList.variants.js +63 -0
  176. package/lib/module/modules/description-list/DescriptionListProps.js +4 -0
  177. package/lib/module/modules/description-list/MODULE.md +15 -0
  178. package/lib/module/modules/description-list/index.js +4 -0
  179. package/lib/module/modules/divider/Divider.variants.js +6 -5
  180. package/lib/module/modules/divider/DividerProps.js +4 -0
  181. package/lib/module/modules/divider/MODULE.md +1 -6
  182. package/lib/module/modules/document-viewer/DocumentViewer.js +35 -0
  183. package/lib/module/modules/document-viewer/DocumentViewerProps.js +4 -0
  184. package/lib/module/modules/document-viewer/MODULE.md +12 -0
  185. package/lib/module/modules/document-viewer/index.js +4 -0
  186. package/lib/module/modules/drawer/Drawer.js +62 -45
  187. package/lib/module/modules/drawer/Drawer.variants.js +4 -4
  188. package/lib/module/modules/drawer/DrawerProps.js +4 -0
  189. package/lib/module/modules/drawer/MODULE.md +14 -21
  190. package/lib/module/modules/empty-state/EmptyState.js +19 -29
  191. package/lib/module/modules/empty-state/EmptyState.variants.js +7 -0
  192. package/lib/module/modules/empty-state/EmptyStateProps.js +4 -0
  193. package/lib/module/modules/empty-state/MODULE.md +5 -9
  194. package/lib/module/modules/fab/Fab.js +47 -69
  195. package/lib/module/modules/fab/Fab.variants.js +25 -5
  196. package/lib/module/modules/fab/FabGroup.js +113 -89
  197. package/lib/module/modules/fab/FabGroupProps.js +4 -0
  198. package/lib/module/modules/fab/FabProps.js +4 -0
  199. package/lib/module/modules/fab/MODULE.md +17 -11
  200. package/lib/module/modules/field-select-modal/FieldSelectModal.js +52 -0
  201. package/lib/module/modules/field-select-modal/FieldSelectModalProps.js +4 -0
  202. package/lib/module/modules/field-select-modal/MODULE.md +13 -0
  203. package/lib/module/modules/field-select-modal/index.js +4 -0
  204. package/lib/module/modules/file-grid/FileGrid.js +31 -16
  205. package/lib/module/modules/file-grid/FileGrid.variants.js +2 -2
  206. package/lib/module/modules/file-grid/FileGridProps.js +4 -0
  207. package/lib/module/modules/file-grid/MODULE.md +29 -4
  208. package/lib/module/modules/file-upload/FileUpload.js +56 -15
  209. package/lib/module/modules/file-upload/FileUpload.variants.js +3 -1
  210. package/lib/module/modules/file-upload/FileUploadProps.js +4 -0
  211. package/lib/module/modules/file-upload/MODULE.md +10 -12
  212. package/lib/module/modules/filter-bar/FilterBar.js +68 -0
  213. package/lib/module/modules/filter-bar/FilterBarProps.js +4 -0
  214. package/lib/module/modules/filter-bar/MODULE.md +16 -0
  215. package/lib/module/modules/filter-bar/index.js +4 -0
  216. package/lib/module/modules/filter-sheet/FilterChip.js +13 -4
  217. package/lib/module/modules/filter-sheet/FilterChipProps.js +4 -0
  218. package/lib/module/modules/filter-sheet/FilterSheet.js +19 -14
  219. package/lib/module/modules/filter-sheet/FilterSheet.variants.js +2 -3
  220. package/lib/module/modules/filter-sheet/FilterSheetBody.js +39 -17
  221. package/lib/module/modules/filter-sheet/FilterSheetProps.js +2 -0
  222. package/lib/module/modules/filter-sheet/MODULE.md +4 -4
  223. package/lib/module/modules/folder-row/FolderRow.js +33 -19
  224. package/lib/module/modules/folder-row/FolderRow.variants.js +4 -2
  225. package/lib/module/modules/folder-row/FolderRowProps.js +4 -0
  226. package/lib/module/modules/folder-row/MODULE.md +6 -4
  227. package/lib/module/modules/form-field/FormField.js +9 -4
  228. package/lib/module/modules/form-field/FormFieldProps.js +4 -0
  229. package/lib/module/modules/form-field/MODULE.md +2 -7
  230. package/lib/module/modules/gantt/Gantt.js +52 -14
  231. package/lib/module/modules/gantt/Gantt.variants.js +47 -3
  232. package/lib/module/modules/gantt/GanttProps.js +4 -0
  233. package/lib/module/modules/gantt/MODULE.md +14 -4
  234. package/lib/module/modules/image-viewer/ImageViewer.js +37 -6
  235. package/lib/module/modules/image-viewer/ImageViewerProps.js +4 -0
  236. package/lib/module/modules/image-viewer/MODULE.md +7 -1
  237. package/lib/module/modules/input/Input.js +75 -27
  238. package/lib/module/modules/input/Input.variants.js +10 -10
  239. package/lib/module/modules/input/InputProps.js +4 -0
  240. package/lib/module/modules/input/MODULE.md +9 -14
  241. package/lib/module/modules/key-value/KeyValue.js +36 -0
  242. package/lib/module/modules/key-value/KeyValueProps.js +4 -0
  243. package/lib/module/modules/key-value/MODULE.md +16 -0
  244. package/lib/module/modules/key-value/index.js +4 -0
  245. package/lib/module/modules/limit-reached-modal/LimitReachedModalProps.js +4 -0
  246. package/lib/module/modules/limit-reached-modal/MODULE.md +1 -6
  247. package/lib/module/modules/list-item/ListItem.js +60 -27
  248. package/lib/module/modules/list-item/ListItem.variants.js +11 -2
  249. package/lib/module/modules/list-item/ListItemProps.js +4 -0
  250. package/lib/module/modules/list-item/MODULE.md +14 -10
  251. package/lib/module/modules/list-screen/ListScreen.js +63 -0
  252. package/lib/module/modules/list-screen/ListScreenProps.js +4 -0
  253. package/lib/module/modules/list-screen/MODULE.md +12 -0
  254. package/lib/module/modules/list-screen/index.js +4 -0
  255. package/lib/module/modules/markdown/MODULE.md +6 -5
  256. package/lib/module/modules/markdown/Markdown.js +57 -22
  257. package/lib/module/modules/markdown/Markdown.variants.js +2 -1
  258. package/lib/module/modules/markdown/MarkdownProps.js +4 -0
  259. package/lib/module/modules/menu/MODULE.md +11 -7
  260. package/lib/module/modules/menu/Menu.js +149 -76
  261. package/lib/module/modules/menu/Menu.variants.js +5 -5
  262. package/lib/module/modules/menu/MenuProps.js +4 -0
  263. package/lib/module/modules/message-bubble/MODULE.md +7 -3
  264. package/lib/module/modules/message-bubble/MessageBubble.js +4 -5
  265. package/lib/module/modules/message-bubble/MessageBubble.variants.js +5 -5
  266. package/lib/module/modules/message-bubble/MessageBubbleProps.js +4 -0
  267. package/lib/module/modules/modal/MODULE.md +63 -89
  268. package/lib/module/modules/modal/Modal.js +168 -47
  269. package/lib/module/modules/modal/Modal.variants.js +2 -2
  270. package/lib/module/modules/modal/ModalPortalContext.js +1 -22
  271. package/lib/module/modules/modal/ModalPortalProvider.js +1 -1
  272. package/lib/module/modules/modal/ModalPortalProviderProps.js +4 -0
  273. package/lib/module/modules/modal/ModalProps.js +4 -0
  274. package/lib/module/modules/modal/renderWebPortal.js +1 -15
  275. package/lib/module/modules/modal/renderWebPortal.web.js +1 -21
  276. package/lib/module/modules/more-items/MODULE.md +3 -0
  277. package/lib/module/modules/more-items/MoreItems.js +16 -7
  278. package/lib/module/modules/more-items/MoreItems.variants.js +6 -2
  279. package/lib/module/modules/more-items/MoreItemsProps.js +4 -0
  280. package/lib/module/modules/multi-select/MODULE.md +5 -6
  281. package/lib/module/modules/multi-select/MultiSelect.js +61 -24
  282. package/lib/module/modules/multi-select/MultiSelect.variants.js +8 -4
  283. package/lib/module/modules/multi-select/MultiSelectProps.js +4 -0
  284. package/lib/module/modules/notification-bell/MODULE.md +8 -0
  285. package/lib/module/modules/notification-bell/NotificationBell.js +43 -0
  286. package/lib/module/modules/notification-bell/NotificationBellProps.js +4 -0
  287. package/lib/module/modules/notification-bell/index.js +4 -0
  288. package/lib/module/modules/number-input/MODULE.md +10 -14
  289. package/lib/module/modules/number-input/NumberInput.js +100 -85
  290. package/lib/module/modules/number-input/NumberInput.variants.js +11 -10
  291. package/lib/module/modules/number-input/NumberInputProps.js +4 -0
  292. package/lib/module/modules/org-switcher/MODULE.md +13 -8
  293. package/lib/module/modules/org-switcher/OrgSwitcher.js +34 -21
  294. package/lib/module/modules/org-switcher/OrgSwitcher.variants.js +8 -4
  295. package/lib/module/modules/org-switcher/OrgSwitcherProps.js +4 -0
  296. package/lib/module/modules/pagination/MODULE.md +4 -7
  297. package/lib/module/modules/pagination/Pagination.js +97 -48
  298. package/lib/module/modules/pagination/Pagination.variants.js +6 -4
  299. package/lib/module/modules/pagination/PaginationControls.js +58 -36
  300. package/lib/module/modules/pagination/PaginationProps.js +4 -0
  301. package/lib/module/modules/person-chip/MODULE.md +11 -0
  302. package/lib/module/modules/person-chip/PersonChip.js +65 -0
  303. package/lib/module/modules/person-chip/PersonChipProps.js +4 -0
  304. package/lib/module/modules/person-chip/index.js +4 -0
  305. package/lib/module/modules/pin-input/MODULE.md +12 -19
  306. package/lib/module/modules/pin-input/PinInput.js +10 -3
  307. package/lib/module/modules/pin-input/PinInput.variants.js +4 -4
  308. package/lib/module/modules/pin-input/PinInputProps.js +4 -0
  309. package/lib/module/modules/plan-badge/MODULE.md +4 -0
  310. package/lib/module/modules/plan-badge/PlanBadge.js +25 -0
  311. package/lib/module/modules/plan-badge/PlanBadgeProps.js +4 -0
  312. package/lib/module/modules/plan-badge/index.js +4 -0
  313. package/lib/module/modules/plan-pill/MODULE.md +4 -0
  314. package/lib/module/modules/plan-pill/PlanPill.js +24 -0
  315. package/lib/module/modules/plan-pill/PlanPillProps.js +4 -0
  316. package/lib/module/modules/plan-pill/index.js +4 -0
  317. package/lib/module/modules/progress-bar/MODULE.md +12 -14
  318. package/lib/module/modules/progress-bar/ProgressBar.js +28 -36
  319. package/lib/module/modules/progress-bar/ProgressBarProps.js +4 -0
  320. package/lib/module/modules/radio-group/MODULE.md +7 -13
  321. package/lib/module/modules/radio-group/RadioGroup.js +125 -65
  322. package/lib/module/modules/radio-group/RadioGroup.variants.js +4 -4
  323. package/lib/module/modules/radio-group/RadioGroupProps.js +4 -0
  324. package/lib/module/modules/reorder/MODULE.md +7 -9
  325. package/lib/module/modules/reorder/Reorder.js +12 -6
  326. package/lib/module/modules/reorder/Reorder.variants.js +7 -6
  327. package/lib/module/modules/reorder/ReorderProps.js +4 -0
  328. package/lib/module/modules/rich-text/MODULE.md +5 -3
  329. package/lib/module/modules/rich-text/RichText.js +42 -22
  330. package/lib/module/modules/rich-text/RichTextProps.js +4 -0
  331. package/lib/module/modules/rich-text-editor/MODULE.md +8 -15
  332. package/lib/module/modules/rich-text-editor/RichTextEditor.js +13 -5
  333. package/lib/module/modules/rich-text-editor/RichTextEditor.variants.js +9 -6
  334. package/lib/module/modules/rich-text-editor/RichTextEditorProps.js +4 -0
  335. package/lib/module/modules/save-bar/MODULE.md +3 -0
  336. package/lib/module/modules/save-bar/SaveBar.js +49 -0
  337. package/lib/module/modules/save-bar/SaveBarProps.js +4 -0
  338. package/lib/module/modules/save-bar/index.js +4 -0
  339. package/lib/module/modules/screen/MODULE.md +14 -5
  340. package/lib/module/modules/screen/Screen.js +109 -33
  341. package/lib/module/modules/screen/Screen.variants.js +18 -0
  342. package/lib/module/modules/screen/ScreenProps.js +4 -0
  343. package/lib/module/modules/search-bar/MODULE.md +9 -8
  344. package/lib/module/modules/search-bar/SearchBar.js +49 -27
  345. package/lib/module/modules/search-bar/SearchBar.variants.js +13 -12
  346. package/lib/module/modules/search-bar/SearchBarProps.js +4 -0
  347. package/lib/module/modules/section/MODULE.md +3 -1
  348. package/lib/module/modules/section/Section.js +14 -16
  349. package/lib/module/modules/section/Section.variants.js +1 -6
  350. package/lib/module/modules/section/SectionProps.js +4 -0
  351. package/lib/module/modules/section-list/MODULE.md +21 -1
  352. package/lib/module/modules/section-list/SectionListProps.js +4 -0
  353. package/lib/module/modules/segmented-control/MODULE.md +30 -26
  354. package/lib/module/modules/segmented-control/SegmentedControl.js +124 -70
  355. package/lib/module/modules/segmented-control/SegmentedControl.variants.js +11 -43
  356. package/lib/module/modules/segmented-control/SegmentedControlProps.js +4 -0
  357. package/lib/module/modules/select/MODULE.md +34 -10
  358. package/lib/module/modules/select/Select.js +74 -34
  359. package/lib/module/modules/select/Select.variants.js +39 -16
  360. package/lib/module/modules/select/SelectProps.js +4 -0
  361. package/lib/module/modules/setting-row/MODULE.md +8 -0
  362. package/lib/module/modules/setting-row/SettingRow.js +50 -0
  363. package/lib/module/modules/setting-row/SettingRowProps.js +4 -0
  364. package/lib/module/modules/setting-row/index.js +4 -0
  365. package/lib/module/modules/settings-section/MODULE.md +7 -0
  366. package/lib/module/modules/settings-section/SettingsSection.js +37 -0
  367. package/lib/module/modules/settings-section/SettingsSectionProps.js +4 -0
  368. package/lib/module/modules/settings-section/index.js +4 -0
  369. package/lib/module/modules/skeleton/MODULE.md +25 -28
  370. package/lib/module/modules/skeleton/Skeleton.js +54 -53
  371. package/lib/module/modules/skeleton/Skeleton.variants.js +11 -74
  372. package/lib/module/modules/skeleton/SkeletonProps.js +4 -0
  373. package/lib/module/modules/slider/MODULE.md +4 -1
  374. package/lib/module/modules/slider/Slider.js +7 -6
  375. package/lib/module/modules/slider/Slider.variants.js +4 -2
  376. package/lib/module/modules/slider/SliderProps.js +4 -0
  377. package/lib/module/modules/spinner/MODULE.md +3 -2
  378. package/lib/module/modules/spinner/SpinnerProps.js +4 -0
  379. package/lib/module/modules/stage-progress/MODULE.md +32 -14
  380. package/lib/module/modules/stage-progress/StageProgress.js +136 -59
  381. package/lib/module/modules/stage-progress/StageProgress.variants.js +57 -20
  382. package/lib/module/modules/stage-progress/StageProgressProps.js +4 -0
  383. package/lib/module/modules/stat-grid/MODULE.md +11 -0
  384. package/lib/module/modules/stat-grid/StatGrid.js +34 -0
  385. package/lib/module/modules/stat-grid/StatGridProps.js +4 -0
  386. package/lib/module/modules/stat-grid/index.js +4 -0
  387. package/lib/module/modules/stat-tile/MODULE.md +14 -1
  388. package/lib/module/modules/stat-tile/StatTile.js +51 -21
  389. package/lib/module/modules/stat-tile/StatTile.variants.js +7 -0
  390. package/lib/module/modules/stat-tile/StatTileProps.js +4 -0
  391. package/lib/module/modules/state-block/MODULE.md +12 -3
  392. package/lib/module/modules/state-block/StateBlock.js +54 -41
  393. package/lib/module/modules/state-block/StateBlock.variants.js +7 -0
  394. package/lib/module/modules/state-block/StateBlockProps.js +4 -0
  395. package/lib/module/modules/stepper/MODULE.md +2 -0
  396. package/lib/module/modules/stepper/Stepper.js +22 -21
  397. package/lib/module/modules/stepper/Stepper.variants.js +2 -0
  398. package/lib/module/modules/stepper/StepperProps.js +4 -0
  399. package/lib/module/modules/surface/MODULE.md +57 -0
  400. package/lib/module/modules/surface/Surface.js +47 -0
  401. package/lib/module/modules/surface/Surface.variants.js +33 -0
  402. package/lib/module/modules/surface/SurfaceProps.js +4 -0
  403. package/lib/module/modules/surface/index.js +4 -0
  404. package/lib/module/modules/swipeable-row/MODULE.md +12 -2
  405. package/lib/module/modules/swipeable-row/SwipeableRow.js +57 -13
  406. package/lib/module/modules/swipeable-row/SwipeableRowProps.js +4 -0
  407. package/lib/module/modules/switch/MODULE.md +7 -2
  408. package/lib/module/modules/switch/Switch.js +49 -9
  409. package/lib/module/modules/switch/Switch.variants.js +2 -3
  410. package/lib/module/modules/switch/SwitchProps.js +4 -0
  411. package/lib/module/modules/tabs/MODULE.md +11 -14
  412. package/lib/module/modules/tabs/Tabs.js +115 -51
  413. package/lib/module/modules/tabs/Tabs.variants.js +6 -6
  414. package/lib/module/modules/tabs/TabsProps.js +4 -0
  415. package/lib/module/modules/text/MODULE.md +25 -14
  416. package/lib/module/modules/text/Text.js +18 -6
  417. package/lib/module/modules/text/Text.variants.js +116 -44
  418. package/lib/module/modules/text/TextProps.js +4 -0
  419. package/lib/module/modules/textarea/MODULE.md +12 -16
  420. package/lib/module/modules/textarea/Textarea.js +15 -12
  421. package/lib/module/modules/textarea/Textarea.variants.js +6 -2
  422. package/lib/module/modules/textarea/TextareaProps.js +4 -0
  423. package/lib/module/modules/timeline/MODULE.md +8 -17
  424. package/lib/module/modules/timeline/Timeline.js +79 -22
  425. package/lib/module/modules/timeline/Timeline.variants.js +2 -0
  426. package/lib/module/modules/timeline/TimelineProps.js +4 -0
  427. package/lib/module/modules/toast/MODULE.md +15 -18
  428. package/lib/module/modules/toast/Toast.js +75 -55
  429. package/lib/module/modules/toast/Toast.variants.js +7 -5
  430. package/lib/module/modules/tooltip/MODULE.md +22 -22
  431. package/lib/module/modules/tooltip/Tooltip.js +77 -16
  432. package/lib/module/modules/tooltip/Tooltip.variants.js +8 -1
  433. package/lib/module/modules/tooltip/TooltipProps.js +4 -0
  434. package/lib/module/modules/typing-indicator/MODULE.md +1 -1
  435. package/lib/module/modules/typing-indicator/TypingIndicator.js +78 -51
  436. package/lib/module/modules/typing-indicator/TypingIndicatorProps.js +4 -0
  437. package/lib/module/modules/upgrade-button/MODULE.md +3 -0
  438. package/lib/module/modules/upgrade-button/UpgradeButton.js +23 -0
  439. package/lib/module/modules/upgrade-button/UpgradeButtonProps.js +4 -0
  440. package/lib/module/modules/upgrade-button/index.js +4 -0
  441. package/lib/module/theme/MODULE.md +5 -1
  442. package/lib/module/theme/platform/MODULE.md +16 -8
  443. package/lib/module/theme/platform/elevation.native.js +1 -51
  444. package/lib/module/theme/platform/floatingSurface.native.js +75 -0
  445. package/lib/module/theme/platform/highlight.native.js +59 -0
  446. package/lib/module/theme/platform/index.js +5 -0
  447. package/lib/module/theme/platform/motion.native.js +31 -11
  448. package/lib/module/theme/platform/stateLayer.native.js +14 -0
  449. package/lib/module/theme/platform/surfaces.native.js +11 -0
  450. package/lib/module/theme/provider/PixelizeProvider.js +18 -5
  451. package/lib/module/theme/tokens/MODULE.md +36 -28
  452. package/lib/module/theme/tokens/THEME-CONTRACT.md +187 -0
  453. package/lib/module/theme/tokens/assertPalette.js +29 -0
  454. package/lib/module/theme/tokens/brands/emerald/palette.light.js +12 -9
  455. package/lib/module/theme/tokens/brands/lavender/palette.light.js +7 -6
  456. package/lib/module/theme/tokens/brands/meadow/palette.light.js +9 -8
  457. package/lib/module/theme/tokens/brands/radiant/palette.light.js +10 -9
  458. package/lib/module/theme/tokens/brands/rosewood/palette.light.js +10 -9
  459. package/lib/module/theme/tokens/brands/skyline/palette.light.js +9 -8
  460. package/lib/module/theme/tokens/brands/slate/palette.light.js +11 -13
  461. package/lib/module/theme/tokens/brands/storefront/palette.light.js +7 -6
  462. package/lib/module/theme/tokens/brands/zinc/palette.dark.js +3 -2
  463. package/lib/module/theme/tokens/brands/zinc/palette.light.js +3 -2
  464. package/lib/module/theme/tokens/builders/accentText.js +10 -1
  465. package/lib/module/theme/tokens/builders/buildBrandScale.js +42 -0
  466. package/lib/module/theme/tokens/builders/buildDarkPalette.js +3 -2
  467. package/lib/module/theme/tokens/builders/finalizePalette.js +34 -0
  468. package/lib/module/theme/tokens/builders/gradientInk.js +23 -0
  469. package/lib/module/theme/tokens/builders/liftToContrast.js +44 -0
  470. package/lib/module/theme/tokens/builders/paletteFromAccent.js +30 -0
  471. package/lib/module/theme/tokens/builders/placeholderInk.js +22 -0
  472. package/lib/module/theme/tokens/builders/semanticText.js +14 -0
  473. package/lib/module/theme/tokens/builders/skeletonShimmer.js +22 -0
  474. package/lib/module/theme/tokens/builders/surfaceRungs.js +44 -0
  475. package/lib/module/theme/tokens/index.js +8 -0
  476. package/lib/module/theme/tokens/primitives/controlSizes.js +16 -0
  477. package/lib/module/theme/tokens/primitives/index.js +1 -0
  478. package/lib/module/theme/tokens/roles/index.js +7 -0
  479. package/lib/typescript/core/a11y/touchTarget.d.ts +4 -0
  480. package/lib/typescript/core/blur/blur.d.ts +14 -0
  481. package/lib/typescript/core/blur/index.d.ts +3 -0
  482. package/lib/typescript/core/gradient/AccentGradientFill.d.ts +7 -0
  483. package/lib/typescript/core/gradient/ShimmerGradientFill.d.ts +8 -0
  484. package/lib/typescript/core/gradient/darkenHex.d.ts +2 -0
  485. package/lib/typescript/core/gradient/gradientStops.d.ts +10 -0
  486. package/lib/typescript/core/gradient/index.d.ts +6 -0
  487. package/lib/typescript/core/gradient/withAlpha.d.ts +2 -0
  488. package/lib/typescript/core/haptics/context.d.ts +3 -0
  489. package/lib/typescript/core/haptics/haptics.d.ts +33 -0
  490. package/lib/typescript/core/haptics/index.d.ts +6 -0
  491. package/lib/typescript/core/haptics/useHaptics.d.ts +12 -0
  492. package/lib/typescript/core/icon/icons/trending-up.d.ts +3 -0
  493. package/lib/typescript/core/icon/names.d.ts +1 -1
  494. package/lib/typescript/core/list/VirtualList.d.ts +6 -1
  495. package/lib/typescript/core/media/expoImage.d.ts +15 -6
  496. package/lib/typescript/core/media/pickers.d.ts +5 -5
  497. package/lib/typescript/core/motion/animatedComponents.d.ts +4 -0
  498. package/lib/typescript/core/motion/config.d.ts +2 -1
  499. package/lib/typescript/core/motion/index.d.ts +5 -1
  500. package/lib/typescript/core/motion/motionAnimation.d.ts +12 -0
  501. package/lib/typescript/core/motion/presets.d.ts +5 -36
  502. package/lib/typescript/core/motion/reanimatedEasing.d.ts +4 -0
  503. package/lib/typescript/core/motion/useAnimatedValue.d.ts +2 -10
  504. package/lib/typescript/core/motion/useMotion.d.ts +4 -13
  505. package/lib/typescript/core/motion/usePressState.d.ts +20 -0
  506. package/lib/typescript/core/overlay/ModalPortalContext.d.ts +2 -0
  507. package/lib/typescript/core/overlay/index.d.ts +3 -0
  508. package/lib/typescript/core/overlay/renderWebPortal.d.ts +3 -0
  509. package/lib/typescript/core/overlay/renderWebPortal.web.d.ts +3 -0
  510. package/lib/typescript/core/screen-scroll/ScreenScrollContext.d.ts +8 -0
  511. package/lib/typescript/core/screen-scroll/index.d.ts +3 -0
  512. package/lib/typescript/core/slot/index.d.ts +2 -0
  513. package/lib/typescript/core/slot/nodeSlot.d.ts +5 -0
  514. package/lib/typescript/core/style/focusRing.d.ts +10 -0
  515. package/lib/typescript/core/style/index.d.ts +2 -1
  516. package/lib/typescript/core/style/radius.d.ts +2 -0
  517. package/lib/typescript/index.d.ts +52 -12
  518. package/lib/typescript/modules/accordion/Accordion.d.ts +2 -37
  519. package/lib/typescript/modules/accordion/Accordion.variants.d.ts +4 -5
  520. package/lib/typescript/modules/accordion/AccordionProps.d.ts +49 -0
  521. package/lib/typescript/modules/accordion/index.d.ts +1 -1
  522. package/lib/typescript/modules/alert-dialog/AlertDialog.d.ts +2 -15
  523. package/lib/typescript/modules/alert-dialog/AlertDialog.variants.d.ts +1 -0
  524. package/lib/typescript/modules/alert-dialog/AlertDialogProps.d.ts +20 -0
  525. package/lib/typescript/modules/alert-dialog/index.d.ts +1 -1
  526. package/lib/typescript/modules/app-bar/AppBar.d.ts +1 -20
  527. package/lib/typescript/modules/app-bar/AppBar.variants.d.ts +4 -0
  528. package/lib/typescript/modules/app-bar/AppBarProps.d.ts +25 -0
  529. package/lib/typescript/modules/app-bar/index.d.ts +1 -1
  530. package/lib/typescript/modules/app-switcher/AppSwitcher.d.ts +3 -0
  531. package/lib/typescript/modules/app-switcher/AppSwitcherProps.d.ts +17 -0
  532. package/lib/typescript/modules/app-switcher/index.d.ts +3 -0
  533. package/lib/typescript/modules/appearance-settings/AppearanceSettings.d.ts +3 -0
  534. package/lib/typescript/modules/appearance-settings/AppearanceSettingsProps.d.ts +15 -0
  535. package/lib/typescript/modules/appearance-settings/index.d.ts +3 -0
  536. package/lib/typescript/modules/avatar/Avatar.d.ts +2 -33
  537. package/lib/typescript/modules/avatar/Avatar.variants.d.ts +3 -1
  538. package/lib/typescript/modules/avatar/AvatarProps.d.ts +23 -0
  539. package/lib/typescript/modules/avatar/index.d.ts +1 -1
  540. package/lib/typescript/modules/avatar-group/AvatarGroup.d.ts +5 -20
  541. package/lib/typescript/modules/avatar-group/AvatarGroup.variants.d.ts +19 -0
  542. package/lib/typescript/modules/avatar-group/AvatarGroupProps.d.ts +27 -0
  543. package/lib/typescript/modules/avatar-group/index.d.ts +1 -1
  544. package/lib/typescript/modules/backdrop/Backdrop.d.ts +3 -0
  545. package/lib/typescript/modules/backdrop/BackdropProps.d.ts +11 -0
  546. package/lib/typescript/modules/backdrop/index.d.ts +3 -0
  547. package/lib/typescript/modules/badge/Badge.d.ts +2 -14
  548. package/lib/typescript/modules/badge/BadgeProps.d.ts +17 -0
  549. package/lib/typescript/modules/badge/index.d.ts +1 -1
  550. package/lib/typescript/modules/banner/Banner.d.ts +1 -20
  551. package/lib/typescript/modules/banner/Banner.variants.d.ts +2 -0
  552. package/lib/typescript/modules/banner/BannerProps.d.ts +29 -0
  553. package/lib/typescript/modules/banner/index.d.ts +2 -1
  554. package/lib/typescript/modules/bottom-nav/BottomNav.d.ts +1 -34
  555. package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts +3 -4
  556. package/lib/typescript/modules/bottom-nav/BottomNavProps.d.ts +29 -0
  557. package/lib/typescript/modules/bottom-nav/index.d.ts +2 -1
  558. package/lib/typescript/modules/bottom-sheet/BottomSheet.d.ts +1 -13
  559. package/lib/typescript/modules/bottom-sheet/BottomSheet.variants.d.ts +3 -1
  560. package/lib/typescript/modules/bottom-sheet/BottomSheetProps.d.ts +17 -0
  561. package/lib/typescript/modules/bottom-sheet/index.d.ts +1 -1
  562. package/lib/typescript/modules/breadcrumbs/Breadcrumbs.d.ts +3 -0
  563. package/lib/typescript/modules/breadcrumbs/Breadcrumbs.variants.d.ts +6 -0
  564. package/lib/typescript/modules/breadcrumbs/BreadcrumbsProps.d.ts +18 -0
  565. package/lib/typescript/modules/breadcrumbs/index.d.ts +3 -0
  566. package/lib/typescript/modules/button/Button.d.ts +1 -60
  567. package/lib/typescript/modules/button/Button.variants.d.ts +11 -15
  568. package/lib/typescript/modules/button/ButtonProps.d.ts +47 -0
  569. package/lib/typescript/modules/button/index.d.ts +1 -1
  570. package/lib/typescript/modules/button-group/ButtonGroup.d.ts +2 -36
  571. package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts +24 -59
  572. package/lib/typescript/modules/button-group/ButtonGroupProps.d.ts +21 -0
  573. package/lib/typescript/modules/button-group/index.d.ts +1 -1
  574. package/lib/typescript/modules/card/Card.d.ts +4 -15
  575. package/lib/typescript/modules/card/CardProps.d.ts +27 -0
  576. package/lib/typescript/modules/card/index.d.ts +1 -1
  577. package/lib/typescript/modules/charts/BarChart.d.ts +1 -24
  578. package/lib/typescript/modules/charts/BarChartProps.d.ts +36 -0
  579. package/lib/typescript/modules/charts/BarList.d.ts +1 -16
  580. package/lib/typescript/modules/charts/BarListProps.d.ts +22 -0
  581. package/lib/typescript/modules/charts/ChartLegend.d.ts +2 -14
  582. package/lib/typescript/modules/charts/ChartLegendProps.d.ts +19 -0
  583. package/lib/typescript/modules/charts/Charts.variants.d.ts +31 -1
  584. package/lib/typescript/modules/charts/DonutChart.d.ts +1 -19
  585. package/lib/typescript/modules/charts/DonutChartProps.d.ts +27 -0
  586. package/lib/typescript/modules/charts/LineChart.d.ts +1 -28
  587. package/lib/typescript/modules/charts/LineChartProps.d.ts +40 -0
  588. package/lib/typescript/modules/charts/PieChart.d.ts +1 -16
  589. package/lib/typescript/modules/charts/PieChartProps.d.ts +24 -0
  590. package/lib/typescript/modules/charts/Sparkline.d.ts +1 -11
  591. package/lib/typescript/modules/charts/SparklineProps.d.ts +17 -0
  592. package/lib/typescript/modules/charts/index.d.ts +6 -6
  593. package/lib/typescript/modules/checkbox/Checkbox.d.ts +1 -33
  594. package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts +2 -1
  595. package/lib/typescript/modules/checkbox/CheckboxProps.d.ts +27 -0
  596. package/lib/typescript/modules/checkbox/index.d.ts +1 -1
  597. package/lib/typescript/modules/chip/Chip.d.ts +1 -28
  598. package/lib/typescript/modules/chip/Chip.variants.d.ts +8 -3
  599. package/lib/typescript/modules/chip/ChipGroup.d.ts +1 -14
  600. package/lib/typescript/modules/chip/ChipGroupProps.d.ts +16 -0
  601. package/lib/typescript/modules/chip/ChipProps.d.ts +27 -0
  602. package/lib/typescript/modules/chip/index.d.ts +3 -3
  603. package/lib/typescript/modules/combobox/Combobox.d.ts +2 -45
  604. package/lib/typescript/modules/combobox/Combobox.variants.d.ts +20 -5
  605. package/lib/typescript/modules/combobox/ComboboxProps.d.ts +40 -0
  606. package/lib/typescript/modules/combobox/index.d.ts +1 -1
  607. package/lib/typescript/modules/composer/Composer.d.ts +1 -18
  608. package/lib/typescript/modules/composer/ComposerProps.d.ts +20 -0
  609. package/lib/typescript/modules/composer/index.d.ts +1 -1
  610. package/lib/typescript/modules/copy-button/CopyButton.d.ts +1 -15
  611. package/lib/typescript/modules/copy-button/CopyButton.variants.d.ts +2 -1
  612. package/lib/typescript/modules/copy-button/CopyButtonProps.d.ts +18 -0
  613. package/lib/typescript/modules/copy-button/index.d.ts +1 -1
  614. package/lib/typescript/modules/data-table/DataTable.d.ts +2 -31
  615. package/lib/typescript/modules/data-table/DataTable.variants.d.ts +3 -2
  616. package/lib/typescript/modules/data-table/DataTableProps.d.ts +43 -0
  617. package/lib/typescript/modules/data-table/index.d.ts +1 -1
  618. package/lib/typescript/modules/date-picker/Calendar.d.ts +1 -23
  619. package/lib/typescript/modules/date-picker/CalendarProps.d.ts +31 -0
  620. package/lib/typescript/modules/date-picker/DatePicker.d.ts +1 -27
  621. package/lib/typescript/modules/date-picker/DatePicker.variants.d.ts +17 -4
  622. package/lib/typescript/modules/date-picker/DatePickerProps.d.ts +33 -0
  623. package/lib/typescript/modules/date-picker/DateRangePicker.d.ts +1 -23
  624. package/lib/typescript/modules/date-picker/DateRangePickerProps.d.ts +27 -0
  625. package/lib/typescript/modules/date-picker/PickerField.d.ts +1 -17
  626. package/lib/typescript/modules/date-picker/PickerFieldProps.d.ts +19 -0
  627. package/lib/typescript/modules/date-picker/PickerShell.d.ts +1 -12
  628. package/lib/typescript/modules/date-picker/PickerShellProps.d.ts +16 -0
  629. package/lib/typescript/modules/date-picker/TimePicker.d.ts +2 -16
  630. package/lib/typescript/modules/date-picker/TimePickerProps.d.ts +14 -0
  631. package/lib/typescript/modules/date-picker/index.d.ts +4 -4
  632. package/lib/typescript/modules/description-list/DescriptionList.d.ts +8 -0
  633. package/lib/typescript/modules/description-list/DescriptionList.variants.d.ts +29 -0
  634. package/lib/typescript/modules/description-list/DescriptionListProps.d.ts +23 -0
  635. package/lib/typescript/modules/description-list/index.d.ts +4 -0
  636. package/lib/typescript/modules/divider/Divider.d.ts +1 -8
  637. package/lib/typescript/modules/divider/Divider.variants.d.ts +4 -4
  638. package/lib/typescript/modules/divider/DividerProps.d.ts +11 -0
  639. package/lib/typescript/modules/divider/index.d.ts +1 -1
  640. package/lib/typescript/modules/document-viewer/DocumentViewer.d.ts +3 -0
  641. package/lib/typescript/modules/document-viewer/DocumentViewerProps.d.ts +13 -0
  642. package/lib/typescript/modules/document-viewer/index.d.ts +3 -0
  643. package/lib/typescript/modules/drawer/Drawer.d.ts +2 -7
  644. package/lib/typescript/modules/drawer/DrawerProps.d.ts +9 -0
  645. package/lib/typescript/modules/drawer/index.d.ts +1 -1
  646. package/lib/typescript/modules/empty-state/EmptyState.d.ts +1 -15
  647. package/lib/typescript/modules/empty-state/EmptyState.variants.d.ts +1 -0
  648. package/lib/typescript/modules/empty-state/EmptyStateProps.d.ts +24 -0
  649. package/lib/typescript/modules/empty-state/index.d.ts +1 -1
  650. package/lib/typescript/modules/fab/Fab.d.ts +1 -51
  651. package/lib/typescript/modules/fab/Fab.variants.d.ts +5 -2
  652. package/lib/typescript/modules/fab/FabGroup.d.ts +1 -34
  653. package/lib/typescript/modules/fab/FabGroupProps.d.ts +34 -0
  654. package/lib/typescript/modules/fab/FabProps.d.ts +50 -0
  655. package/lib/typescript/modules/fab/index.d.ts +2 -2
  656. package/lib/typescript/modules/field-select-modal/FieldSelectModal.d.ts +3 -0
  657. package/lib/typescript/modules/field-select-modal/FieldSelectModalProps.d.ts +20 -0
  658. package/lib/typescript/modules/field-select-modal/index.d.ts +3 -0
  659. package/lib/typescript/modules/file-grid/FileGrid.d.ts +1 -18
  660. package/lib/typescript/modules/file-grid/FileGridProps.d.ts +23 -0
  661. package/lib/typescript/modules/file-grid/index.d.ts +1 -1
  662. package/lib/typescript/modules/file-upload/FileUpload.d.ts +1 -27
  663. package/lib/typescript/modules/file-upload/FileUploadProps.d.ts +27 -0
  664. package/lib/typescript/modules/file-upload/index.d.ts +1 -1
  665. package/lib/typescript/modules/filter-bar/FilterBar.d.ts +3 -0
  666. package/lib/typescript/modules/filter-bar/FilterBarProps.d.ts +17 -0
  667. package/lib/typescript/modules/filter-bar/index.d.ts +3 -0
  668. package/lib/typescript/modules/filter-sheet/FilterChip.d.ts +1 -9
  669. package/lib/typescript/modules/filter-sheet/FilterChipProps.d.ts +11 -0
  670. package/lib/typescript/modules/filter-sheet/FilterSheet.d.ts +1 -32
  671. package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts +2 -1
  672. package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts +1 -1
  673. package/lib/typescript/modules/filter-sheet/FilterSheetProps.d.ts +36 -0
  674. package/lib/typescript/modules/filter-sheet/filterSheet.helpers.d.ts +1 -1
  675. package/lib/typescript/modules/filter-sheet/index.d.ts +2 -2
  676. package/lib/typescript/modules/folder-row/FolderRow.d.ts +1 -19
  677. package/lib/typescript/modules/folder-row/FolderRowProps.d.ts +17 -0
  678. package/lib/typescript/modules/folder-row/index.d.ts +1 -1
  679. package/lib/typescript/modules/form-field/FormField.d.ts +2 -17
  680. package/lib/typescript/modules/form-field/FormFieldProps.d.ts +23 -0
  681. package/lib/typescript/modules/form-field/index.d.ts +1 -1
  682. package/lib/typescript/modules/gantt/Gantt.d.ts +2 -9
  683. package/lib/typescript/modules/gantt/Gantt.variants.d.ts +29 -2
  684. package/lib/typescript/modules/gantt/GanttProps.d.ts +13 -0
  685. package/lib/typescript/modules/gantt/index.d.ts +1 -1
  686. package/lib/typescript/modules/image-viewer/ImageViewer.d.ts +2 -15
  687. package/lib/typescript/modules/image-viewer/ImageViewerProps.d.ts +16 -0
  688. package/lib/typescript/modules/image-viewer/index.d.ts +2 -1
  689. package/lib/typescript/modules/input/Input.d.ts +2 -30
  690. package/lib/typescript/modules/input/Input.variants.d.ts +8 -8
  691. package/lib/typescript/modules/input/InputProps.d.ts +43 -0
  692. package/lib/typescript/modules/input/index.d.ts +1 -1
  693. package/lib/typescript/modules/key-value/KeyValue.d.ts +3 -0
  694. package/lib/typescript/modules/key-value/KeyValueProps.d.ts +11 -0
  695. package/lib/typescript/modules/key-value/index.d.ts +3 -0
  696. package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.d.ts +1 -17
  697. package/lib/typescript/modules/limit-reached-modal/LimitReachedModalProps.d.ts +24 -0
  698. package/lib/typescript/modules/limit-reached-modal/index.d.ts +1 -1
  699. package/lib/typescript/modules/list-item/ListItem.d.ts +3 -17
  700. package/lib/typescript/modules/list-item/ListItem.variants.d.ts +137 -1
  701. package/lib/typescript/modules/list-item/ListItemProps.d.ts +22 -0
  702. package/lib/typescript/modules/list-item/index.d.ts +1 -1
  703. package/lib/typescript/modules/list-screen/ListScreen.d.ts +5 -0
  704. package/lib/typescript/modules/list-screen/ListScreenProps.d.ts +17 -0
  705. package/lib/typescript/modules/list-screen/index.d.ts +3 -0
  706. package/lib/typescript/modules/markdown/Markdown.d.ts +8 -8
  707. package/lib/typescript/modules/markdown/MarkdownProps.d.ts +12 -0
  708. package/lib/typescript/modules/markdown/index.d.ts +1 -1
  709. package/lib/typescript/modules/menu/Menu.d.ts +2 -19
  710. package/lib/typescript/modules/menu/Menu.variants.d.ts +2 -1
  711. package/lib/typescript/modules/menu/MenuProps.d.ts +26 -0
  712. package/lib/typescript/modules/menu/index.d.ts +1 -1
  713. package/lib/typescript/modules/message-bubble/MessageBubble.d.ts +3 -11
  714. package/lib/typescript/modules/message-bubble/MessageBubble.variants.d.ts +1 -2
  715. package/lib/typescript/modules/message-bubble/MessageBubbleProps.d.ts +12 -0
  716. package/lib/typescript/modules/message-bubble/index.d.ts +1 -1
  717. package/lib/typescript/modules/modal/Modal.d.ts +2 -10
  718. package/lib/typescript/modules/modal/ModalPortalContext.d.ts +1 -1
  719. package/lib/typescript/modules/modal/ModalPortalProvider.d.ts +2 -12
  720. package/lib/typescript/modules/modal/ModalPortalProviderProps.d.ts +8 -0
  721. package/lib/typescript/modules/modal/ModalProps.d.ts +22 -0
  722. package/lib/typescript/modules/modal/index.d.ts +2 -2
  723. package/lib/typescript/modules/modal/renderWebPortal.d.ts +1 -14
  724. package/lib/typescript/modules/modal/renderWebPortal.web.d.ts +1 -18
  725. package/lib/typescript/modules/more-items/MoreItems.d.ts +2 -10
  726. package/lib/typescript/modules/more-items/MoreItems.variants.d.ts +3 -1
  727. package/lib/typescript/modules/more-items/MoreItemsProps.d.ts +14 -0
  728. package/lib/typescript/modules/more-items/index.d.ts +1 -1
  729. package/lib/typescript/modules/multi-select/MultiSelect.d.ts +1 -19
  730. package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts +2 -1
  731. package/lib/typescript/modules/multi-select/MultiSelectProps.d.ts +29 -0
  732. package/lib/typescript/modules/multi-select/index.d.ts +1 -1
  733. package/lib/typescript/modules/notification-bell/NotificationBell.d.ts +3 -0
  734. package/lib/typescript/modules/notification-bell/NotificationBellProps.d.ts +10 -0
  735. package/lib/typescript/modules/notification-bell/index.d.ts +3 -0
  736. package/lib/typescript/modules/number-input/NumberInput.d.ts +1 -26
  737. package/lib/typescript/modules/number-input/NumberInput.variants.d.ts +9 -8
  738. package/lib/typescript/modules/number-input/NumberInputProps.d.ts +23 -0
  739. package/lib/typescript/modules/number-input/index.d.ts +1 -1
  740. package/lib/typescript/modules/org-switcher/OrgSwitcher.d.ts +1 -24
  741. package/lib/typescript/modules/org-switcher/OrgSwitcher.variants.d.ts +2 -1
  742. package/lib/typescript/modules/org-switcher/OrgSwitcherProps.d.ts +29 -0
  743. package/lib/typescript/modules/org-switcher/index.d.ts +1 -1
  744. package/lib/typescript/modules/pagination/Pagination.d.ts +1 -26
  745. package/lib/typescript/modules/pagination/Pagination.variants.d.ts +2 -1
  746. package/lib/typescript/modules/pagination/PaginationControls.d.ts +1 -4
  747. package/lib/typescript/modules/pagination/PaginationProps.d.ts +28 -0
  748. package/lib/typescript/modules/pagination/index.d.ts +1 -1
  749. package/lib/typescript/modules/person-chip/PersonChip.d.ts +3 -0
  750. package/lib/typescript/modules/person-chip/PersonChipProps.d.ts +17 -0
  751. package/lib/typescript/modules/person-chip/index.d.ts +3 -0
  752. package/lib/typescript/modules/pin-input/PinInput.d.ts +1 -32
  753. package/lib/typescript/modules/pin-input/PinInput.variants.d.ts +2 -2
  754. package/lib/typescript/modules/pin-input/PinInputProps.d.ts +26 -0
  755. package/lib/typescript/modules/pin-input/index.d.ts +1 -1
  756. package/lib/typescript/modules/plan-badge/PlanBadge.d.ts +3 -0
  757. package/lib/typescript/modules/plan-badge/PlanBadgeProps.d.ts +10 -0
  758. package/lib/typescript/modules/plan-badge/index.d.ts +3 -0
  759. package/lib/typescript/modules/plan-pill/PlanPill.d.ts +3 -0
  760. package/lib/typescript/modules/plan-pill/PlanPillProps.d.ts +10 -0
  761. package/lib/typescript/modules/plan-pill/index.d.ts +3 -0
  762. package/lib/typescript/modules/progress-bar/ProgressBar.d.ts +1 -13
  763. package/lib/typescript/modules/progress-bar/ProgressBarProps.d.ts +16 -0
  764. package/lib/typescript/modules/progress-bar/index.d.ts +1 -1
  765. package/lib/typescript/modules/radio-group/RadioGroup.d.ts +2 -22
  766. package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts +2 -2
  767. package/lib/typescript/modules/radio-group/RadioGroupProps.d.ts +21 -0
  768. package/lib/typescript/modules/radio-group/index.d.ts +1 -1
  769. package/lib/typescript/modules/reorder/Reorder.d.ts +2 -14
  770. package/lib/typescript/modules/reorder/Reorder.variants.d.ts +2 -2
  771. package/lib/typescript/modules/reorder/ReorderProps.d.ts +19 -0
  772. package/lib/typescript/modules/reorder/index.d.ts +1 -1
  773. package/lib/typescript/modules/rich-text/RichText.d.ts +2 -10
  774. package/lib/typescript/modules/rich-text/RichTextProps.d.ts +15 -0
  775. package/lib/typescript/modules/rich-text/index.d.ts +1 -1
  776. package/lib/typescript/modules/rich-text-editor/RichTextEditor.d.ts +1 -45
  777. package/lib/typescript/modules/rich-text-editor/RichTextEditorProps.d.ts +40 -0
  778. package/lib/typescript/modules/rich-text-editor/index.d.ts +1 -1
  779. package/lib/typescript/modules/save-bar/SaveBar.d.ts +3 -0
  780. package/lib/typescript/modules/save-bar/SaveBarProps.d.ts +18 -0
  781. package/lib/typescript/modules/save-bar/index.d.ts +3 -0
  782. package/lib/typescript/modules/screen/Screen.d.ts +2 -31
  783. package/lib/typescript/modules/screen/Screen.variants.d.ts +4 -0
  784. package/lib/typescript/modules/screen/ScreenProps.d.ts +35 -0
  785. package/lib/typescript/modules/screen/index.d.ts +1 -1
  786. package/lib/typescript/modules/search-bar/SearchBar.d.ts +2 -28
  787. package/lib/typescript/modules/search-bar/SearchBar.variants.d.ts +8 -9
  788. package/lib/typescript/modules/search-bar/SearchBarProps.d.ts +30 -0
  789. package/lib/typescript/modules/search-bar/index.d.ts +1 -1
  790. package/lib/typescript/modules/section/Section.d.ts +1 -8
  791. package/lib/typescript/modules/section/Section.variants.d.ts +0 -3
  792. package/lib/typescript/modules/section/SectionProps.d.ts +11 -0
  793. package/lib/typescript/modules/section/index.d.ts +1 -1
  794. package/lib/typescript/modules/section-list/SectionList.d.ts +1 -19
  795. package/lib/typescript/modules/section-list/SectionListProps.d.ts +24 -0
  796. package/lib/typescript/modules/section-list/index.d.ts +1 -1
  797. package/lib/typescript/modules/segmented-control/SegmentedControl.d.ts +2 -41
  798. package/lib/typescript/modules/segmented-control/SegmentedControl.variants.d.ts +5 -44
  799. package/lib/typescript/modules/segmented-control/SegmentedControlProps.d.ts +29 -0
  800. package/lib/typescript/modules/segmented-control/index.d.ts +1 -1
  801. package/lib/typescript/modules/select/Select.d.ts +5 -13
  802. package/lib/typescript/modules/select/Select.variants.d.ts +24 -10
  803. package/lib/typescript/modules/select/SelectProps.d.ts +25 -0
  804. package/lib/typescript/modules/select/index.d.ts +3 -2
  805. package/lib/typescript/modules/setting-row/SettingRow.d.ts +3 -0
  806. package/lib/typescript/modules/setting-row/SettingRowProps.d.ts +14 -0
  807. package/lib/typescript/modules/setting-row/index.d.ts +3 -0
  808. package/lib/typescript/modules/settings-section/SettingsSection.d.ts +3 -0
  809. package/lib/typescript/modules/settings-section/SettingsSectionProps.d.ts +11 -0
  810. package/lib/typescript/modules/settings-section/index.d.ts +3 -0
  811. package/lib/typescript/modules/skeleton/Skeleton.d.ts +3 -28
  812. package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts +8 -66
  813. package/lib/typescript/modules/skeleton/SkeletonProps.d.ts +18 -0
  814. package/lib/typescript/modules/skeleton/index.d.ts +1 -1
  815. package/lib/typescript/modules/slider/Slider.d.ts +1 -24
  816. package/lib/typescript/modules/slider/Slider.variants.d.ts +2 -1
  817. package/lib/typescript/modules/slider/SliderProps.d.ts +27 -0
  818. package/lib/typescript/modules/slider/index.d.ts +1 -1
  819. package/lib/typescript/modules/spinner/Spinner.d.ts +1 -11
  820. package/lib/typescript/modules/spinner/SpinnerProps.d.ts +15 -0
  821. package/lib/typescript/modules/spinner/index.d.ts +1 -1
  822. package/lib/typescript/modules/stage-progress/StageProgress.d.ts +1 -12
  823. package/lib/typescript/modules/stage-progress/StageProgress.variants.d.ts +31 -10
  824. package/lib/typescript/modules/stage-progress/StageProgressProps.d.ts +22 -0
  825. package/lib/typescript/modules/stage-progress/index.d.ts +1 -1
  826. package/lib/typescript/modules/stat-grid/StatGrid.d.ts +3 -0
  827. package/lib/typescript/modules/stat-grid/StatGridProps.d.ts +15 -0
  828. package/lib/typescript/modules/stat-grid/index.d.ts +3 -0
  829. package/lib/typescript/modules/stat-tile/StatTile.d.ts +1 -14
  830. package/lib/typescript/modules/stat-tile/StatTile.variants.d.ts +3 -0
  831. package/lib/typescript/modules/stat-tile/StatTileProps.d.ts +25 -0
  832. package/lib/typescript/modules/stat-tile/index.d.ts +1 -1
  833. package/lib/typescript/modules/state-block/StateBlock.d.ts +1 -28
  834. package/lib/typescript/modules/state-block/StateBlock.variants.d.ts +1 -0
  835. package/lib/typescript/modules/state-block/StateBlockProps.d.ts +36 -0
  836. package/lib/typescript/modules/state-block/index.d.ts +1 -1
  837. package/lib/typescript/modules/stepper/Stepper.d.ts +3 -11
  838. package/lib/typescript/modules/stepper/Stepper.variants.d.ts +2 -0
  839. package/lib/typescript/modules/stepper/StepperProps.d.ts +12 -0
  840. package/lib/typescript/modules/stepper/index.d.ts +2 -1
  841. package/lib/typescript/modules/surface/Surface.d.ts +6 -0
  842. package/lib/typescript/modules/surface/Surface.variants.d.ts +15 -0
  843. package/lib/typescript/modules/surface/SurfaceProps.d.ts +17 -0
  844. package/lib/typescript/modules/surface/index.d.ts +4 -0
  845. package/lib/typescript/modules/swipeable-row/SwipeableRow.d.ts +1 -19
  846. package/lib/typescript/modules/swipeable-row/SwipeableRowProps.d.ts +22 -0
  847. package/lib/typescript/modules/swipeable-row/index.d.ts +1 -1
  848. package/lib/typescript/modules/switch/Switch.d.ts +1 -14
  849. package/lib/typescript/modules/switch/Switch.variants.d.ts +2 -2
  850. package/lib/typescript/modules/switch/SwitchProps.d.ts +20 -0
  851. package/lib/typescript/modules/switch/index.d.ts +1 -1
  852. package/lib/typescript/modules/tabs/Tabs.d.ts +1 -17
  853. package/lib/typescript/modules/tabs/Tabs.variants.d.ts +2 -3
  854. package/lib/typescript/modules/tabs/TabsProps.d.ts +29 -0
  855. package/lib/typescript/modules/tabs/index.d.ts +1 -1
  856. package/lib/typescript/modules/text/Text.d.ts +1 -20
  857. package/lib/typescript/modules/text/Text.variants.d.ts +14 -11
  858. package/lib/typescript/modules/text/TextProps.d.ts +35 -0
  859. package/lib/typescript/modules/text/index.d.ts +1 -1
  860. package/lib/typescript/modules/textarea/Textarea.d.ts +1 -19
  861. package/lib/typescript/modules/textarea/Textarea.variants.d.ts +2 -1
  862. package/lib/typescript/modules/textarea/TextareaProps.d.ts +23 -0
  863. package/lib/typescript/modules/textarea/index.d.ts +1 -1
  864. package/lib/typescript/modules/timeline/Timeline.d.ts +1 -16
  865. package/lib/typescript/modules/timeline/Timeline.variants.d.ts +2 -0
  866. package/lib/typescript/modules/timeline/TimelineProps.d.ts +37 -0
  867. package/lib/typescript/modules/timeline/index.d.ts +1 -1
  868. package/lib/typescript/modules/toast/Toast.variants.d.ts +4 -3
  869. package/lib/typescript/modules/tooltip/Tooltip.d.ts +1 -25
  870. package/lib/typescript/modules/tooltip/Tooltip.variants.d.ts +7 -0
  871. package/lib/typescript/modules/tooltip/TooltipProps.d.ts +27 -0
  872. package/lib/typescript/modules/tooltip/index.d.ts +1 -1
  873. package/lib/typescript/modules/typing-indicator/TypingIndicator.d.ts +5 -14
  874. package/lib/typescript/modules/typing-indicator/TypingIndicatorProps.d.ts +11 -0
  875. package/lib/typescript/modules/typing-indicator/index.d.ts +1 -1
  876. package/lib/typescript/modules/upgrade-button/UpgradeButton.d.ts +3 -0
  877. package/lib/typescript/modules/upgrade-button/UpgradeButtonProps.d.ts +11 -0
  878. package/lib/typescript/modules/upgrade-button/index.d.ts +3 -0
  879. package/lib/typescript/test/motionJest.d.ts +12 -0
  880. package/lib/typescript/theme/index.d.ts +1 -1
  881. package/lib/typescript/theme/platform/elevation.native.d.ts +1 -31
  882. package/lib/typescript/theme/platform/floatingSurface.native.d.ts +10 -0
  883. package/lib/typescript/theme/platform/highlight.native.d.ts +17 -0
  884. package/lib/typescript/theme/platform/index.d.ts +9 -0
  885. package/lib/typescript/theme/platform/motion.native.d.ts +33 -13
  886. package/lib/typescript/theme/platform/stateLayer.native.d.ts +11 -0
  887. package/lib/typescript/theme/platform/surfaces.native.d.ts +8 -0
  888. package/lib/typescript/theme/provider/PixelizeProvider.d.ts +1 -1
  889. package/lib/typescript/theme/provider/types.d.ts +8 -0
  890. package/lib/typescript/theme/tokens/assertPalette.d.ts +10 -0
  891. package/lib/typescript/theme/tokens/brands/emerald/palette.light.d.ts +4 -3
  892. package/lib/typescript/theme/tokens/brands/lavender/palette.light.d.ts +4 -3
  893. package/lib/typescript/theme/tokens/brands/meadow/palette.light.d.ts +4 -3
  894. package/lib/typescript/theme/tokens/brands/radiant/palette.light.d.ts +4 -3
  895. package/lib/typescript/theme/tokens/brands/rosewood/palette.light.d.ts +4 -3
  896. package/lib/typescript/theme/tokens/brands/skyline/palette.light.d.ts +4 -3
  897. package/lib/typescript/theme/tokens/brands/slate/palette.light.d.ts +4 -3
  898. package/lib/typescript/theme/tokens/brands/storefront/palette.light.d.ts +4 -3
  899. package/lib/typescript/theme/tokens/brands/zinc/palette.light.d.ts +4 -3
  900. package/lib/typescript/theme/tokens/builders/accentText.d.ts +3 -0
  901. package/lib/typescript/theme/tokens/builders/buildBrandScale.d.ts +4 -0
  902. package/lib/typescript/theme/tokens/builders/finalizePalette.d.ts +4 -0
  903. package/lib/typescript/theme/tokens/builders/gradientInk.d.ts +9 -0
  904. package/lib/typescript/theme/tokens/builders/liftToContrast.d.ts +9 -0
  905. package/lib/typescript/theme/tokens/builders/paletteFromAccent.d.ts +3 -0
  906. package/lib/typescript/theme/tokens/builders/placeholderInk.d.ts +13 -0
  907. package/lib/typescript/theme/tokens/builders/semanticText.d.ts +4 -0
  908. package/lib/typescript/theme/tokens/builders/skeletonShimmer.d.ts +9 -0
  909. package/lib/typescript/theme/tokens/builders/surfaceRungs.d.ts +12 -0
  910. package/lib/typescript/theme/tokens/index.d.ts +8 -0
  911. package/lib/typescript/theme/tokens/primitives/controlSizes.d.ts +6 -0
  912. package/lib/typescript/theme/tokens/primitives/index.d.ts +2 -0
  913. package/lib/typescript/theme/tokens/roles/index.d.ts +3 -0
  914. package/lib/typescript/theme/tokens/types.d.ts +10 -9
  915. package/package.json +114 -5
  916. package/registry.json +114 -14
  917. package/lib/module/core/style/useThemedStyles.js +0 -8
  918. package/lib/module/test/mocks/flashList.js +0 -5
  919. package/lib/module/test/perfHelpers.js +0 -18
  920. package/lib/typescript/core/style/useThemedStyles.d.ts +0 -5
  921. 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,101 +61,78 @@ 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>`.
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.
117
98
 
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.
99
+ ## Patterns copied from Button / Select (the reference modules)
122
100
 
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.
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.
125
104
 
126
- ## Patterns copied from Button / Select (the reference modules)
105
+ ## Android edge-to-edge
127
106
 
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.
107
+ Every RN `<Modal transparent>` in this library (`Modal`, `Select`, `MultiSelect`, `Combobox`,
108
+ `Menu`, `OrgSwitcher`, `PickerShell`, `Drawer`) also sets `statusBarTranslucent` and
109
+ `navigationBarTranslucent`, both `true`. Without them, Android edge-to-edge (Expo default since
110
+ SDK 53) paints the modal's backing window opaque instead of transparent — the whole screen goes
111
+ solid white on open. Add both any time a new module renders its own RN `<Modal transparent>`.
137
112
 
138
113
  ## Known gaps
139
114
 
140
- - **No full SCREEN-READER trap.** iOS gets `accessibilityViewIsModal` (constrains VoiceOver to the
141
- panel). Android has no JS-level equivalent for marking background siblings
142
- `importantForAccessibility="no-hide-descendants"` from inside this component (that prop applies
143
- to the element it's set on, not to arbitrary siblings elsewhere in the tree) — a full Android
144
- reader trap needs the app root to cooperate. Out of scope for v1. (The web *keyboard* trap above
145
- 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.
146
118
  - **The web keyboard trap only cycles Tab.** It does not pull focus back if focus leaves the panel
147
119
  by a click outside or a programmatic `focus()` — that needs sentinel nodes at the panel's edges,
148
120
  a component-level change nobody has needed yet. Inherited from `core/a11y/keyboard`.
149
121
  - **No built-in scrolling.** The panel caps at `maxHeight: "92%"` but does not wrap `children` in a
150
122
  `ScrollView` — forcing one risks nested-`VirtualizedList` warnings if a consumer's content is
151
123
  already scrollable. Tall content is the consumer's own `ScrollView`/`FlatList` to add.
152
- - No close ("×") button — not in this module's prop contract; dismissal is backdrop press, Android
153
- back, or iOS VoiceOver's escape gesture. A consumer wanting an explicit close control renders its
154
- 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.
155
127
 
156
128
  ## Performance
157
129
 
158
- 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.
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.
159
132
 
160
- ## Modernization (v1.0.7)
133
+ ## Motion
161
134
 
162
- - Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
163
- - List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
164
- - `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
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`.
@@ -33,110 +33,231 @@
33
33
  * which is where all three silently went missing.
34
34
  */
35
35
 
36
- import { memo, useContext, useEffect, useMemo, useRef } from "react";
37
- import { Animated, Modal as RNModal, Platform, Pressable, StyleSheet, Text, View } from "react-native";
36
+ import { memo, useContext, useEffect, useMemo, useRef, useState } from "react";
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 { 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";
42
+ import { withAlpha } from "../../core/gradient/index.js";
43
+ import { elevation, floatingBackground, floatingSurfaceStyle, highlight } from "../../theme/platform/index.js";
44
+ import { elevation as elevationTokens } from "../../theme/tokens/primitives/index.js";
40
45
  import { useTheme } from "../../theme/hooks.js";
46
+ import { Button } from "../button/index.js";
47
+ import { Spinner } from "../spinner/index.js";
48
+ import { Heading, Text } from "../text/index.js";
41
49
  import { ModalPortalContext } from "./ModalPortalContext.js";
42
50
  import { renderWebPortal } from "./renderWebPortal";
43
- import { modalOverlayStructure, modalPanelStructure, resolveModalAnimationType, resolveModalPanelColors } from "./Modal.variants.js";
51
+ import { modalOverlayStructure, modalPanelStructure, resolveModalAnimationType } from "./Modal.variants.js";
44
52
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
45
- // Decorative dismiss scrim behind the panel — a design constant, not a role token: it is neither
46
- // text nor an interactive boundary, so WCAG's contrast minimums don't apply to it. Same
47
- // justification as Button's PRESS_SCRIM_DARK/LIGHT and Select's BACKDROP_SCRIM.
48
- const MODAL_BACKDROP = "#00000080";
53
+ // Decorative dismiss scrim, not a role token same reasoning Button's PRESS_SCRIM and Select's
54
+ // BACKDROP_SCRIM record. Opacity is the shared `scrimOpacity` knob, not a locally-guessed hex.
55
+ const MODAL_BACKDROP = withAlpha("#000000", MOTION_TRANSFORM.scrimOpacity);
49
56
  export const Modal = /*#__PURE__*/memo(function Modal({
50
57
  visible,
51
58
  onRequestClose,
52
59
  title,
60
+ subtitle,
53
61
  children,
62
+ footer,
63
+ isLoading = false,
64
+ hideCloseButton = true,
54
65
  size = "md",
55
66
  testID
56
67
  }) {
57
68
  const theme = useTheme();
58
69
  const motion = useMotion();
59
- const panelColors = useMemo(() => resolveModalPanelColors(theme.colors), [theme.colors]);
60
70
  const portalContainer = useContext(ModalPortalContext);
61
71
  const panelRef = useRef(null);
62
72
  const portalled = Platform.OS === "web" && portalContainer != null;
63
73
  useDismissOnEscape(portalled && visible, onRequestClose);
64
74
  useFocusTrap(panelRef, portalled && visible);
75
+
76
+ // `mounted` only gates the web-portal render below — the RNModal branch keeps handing `visible`
77
+ // straight to RN's own <Modal>, which still owns that surface's native fade in and out.
78
+ const [mounted, setMounted] = useState(visible);
79
+ const mountedRef = useRef(mounted);
80
+ mountedRef.current = mounted;
65
81
  const enter = useAnimatedValue(visible ? 1 : 0);
66
- const entering = useRef(null);
82
+ const running = useRef(null);
83
+ const offsetY = motion.transform.offsetY;
84
+ const unmountTimer = useRef(null);
67
85
  useEffect(() => {
68
- entering.current?.stop();
69
- if (!visible) {
70
- enter.setValue(0);
86
+ const clearUnmount = () => {
87
+ if (unmountTimer.current !== null) {
88
+ clearTimeout(unmountTimer.current);
89
+ unmountTimer.current = null;
90
+ }
91
+ };
92
+ running.current?.stop();
93
+ clearUnmount();
94
+ if (visible) {
95
+ setMounted(true);
96
+ if (!motion.enabled) {
97
+ enter.value = 1;
98
+ return;
99
+ }
100
+ enter.value = 0;
101
+ running.current = motion.timing(enter, 1, {
102
+ easing: "decelerate"
103
+ });
104
+ running.current.start();
71
105
  return;
72
106
  }
73
- if (!motion.enabled) {
74
- enter.setValue(1);
107
+ if (!mountedRef.current) return;
108
+ const exitMs = motion.duration("fast");
109
+ if (!motion.enabled || exitMs === 0) {
110
+ enter.value = 0;
111
+ setMounted(false);
75
112
  return;
76
113
  }
77
- enter.setValue(0);
78
- entering.current = motion.timing(enter, 1, {
79
- easing: "decelerate"
114
+ running.current = motion.timing(enter, 0, {
115
+ duration: "fast",
116
+ easing: "accelerate"
80
117
  });
81
- entering.current.start();
118
+ running.current.start();
119
+ unmountTimer.current = setTimeout(() => {
120
+ unmountTimer.current = null;
121
+ setMounted(false);
122
+ }, exitMs);
123
+ return clearUnmount;
82
124
  }, [visible, motion, enter]);
83
- useEffect(() => () => entering.current?.stop(), []);
84
- const panelStyle = useMemo(() => [modalPanelStructure(theme, {
125
+ useEffect(() => () => {
126
+ running.current?.stop();
127
+ if (unmountTimer.current !== null) clearTimeout(unmountTimer.current);
128
+ }, []);
129
+ const floatingStyle = useMemo(() => {
130
+ highlight("subtle", theme.mode);
131
+ elevation(elevationTokens.lg);
132
+ void theme.elevatedSurfaces;
133
+ return {
134
+ backgroundColor: floatingBackground(theme, "lg"),
135
+ ...floatingSurfaceStyle(theme, "lg")
136
+ };
137
+ }, [theme]);
138
+ const panelStaticStyle = useMemo(() => [modalPanelStructure(theme, {
85
139
  size
86
- }), {
87
- backgroundColor: panelColors.background,
140
+ }), floatingStyle], [theme, size, floatingStyle]);
141
+ const panelAnimatedStyle = useAnimatedStyle(() => ({
142
+ opacity: enter.value,
88
143
  transform: [{
89
- translateY: enter.interpolate({
90
- inputRange: [0, 1],
91
- outputRange: [motion.transform.offsetY, 0]
92
- })
144
+ translateY: interpolate(enter.value, [0, 1], [offsetY, 0])
93
145
  }]
94
- }], [theme, size, panelColors.background, enter, motion.transform.offsetY]);
95
- const titleStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.semibold), {
96
- fontSize: theme.fontSizes.lg,
97
- color: panelColors.title,
98
- marginBottom: theme.space[3]
99
- }], [theme, panelColors.title]);
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",
185
+ style: {
186
+ marginBottom: theme.space[3]
187
+ },
188
+ children: subtitle
189
+ }) : null;
100
190
  const overlay = /*#__PURE__*/_jsxs(_Fragment, {
101
191
  children: [/*#__PURE__*/_jsx(Pressable, {
102
192
  testID: testID ? `${testID}-backdrop` : undefined,
103
193
  accessible: false,
104
194
  tabIndex: -1,
105
- style: styles.backdrop,
106
- onPress: onRequestClose
195
+ style: StyleSheet.absoluteFill,
196
+ onPress: onRequestClose,
197
+ children: /*#__PURE__*/_jsx(Reanimated.View, {
198
+ style: [styles.backdrop, backdropAnimatedStyle, {
199
+ pointerEvents: 'none'
200
+ }]
201
+ })
107
202
  }), /*#__PURE__*/_jsx(View, {
108
- style: modalOverlayStructure(theme),
109
- pointerEvents: "box-none",
110
- children: /*#__PURE__*/_jsxs(Animated.View, {
203
+ style: [modalOverlayStructure(theme), {
204
+ pointerEvents: 'box-none'
205
+ }],
206
+ children: /*#__PURE__*/_jsx(Reanimated.View, {
111
207
  ref: panelRef,
112
208
  testID: testID ? `${testID}-panel` : undefined,
113
209
  accessibilityViewIsModal: true,
114
210
  onAccessibilityEscape: onRequestClose,
115
- style: panelStyle,
116
- children: [title !== undefined && /*#__PURE__*/_jsx(Text, {
117
- accessibilityRole: "header",
118
- style: titleStyle,
119
- children: title
120
- }), 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
+ })
121
239
  })
122
240
  })]
123
241
  });
124
242
  if (portalled) {
125
- if (!visible) return null;
243
+ if (!mounted) return null;
126
244
  // RN's own <Modal> supplies a `position: fixed`/full-screen ancestor for `overlay`'s children
127
245
  // to size against (see ModalPortalContext.ts) — reproduce just that sizing here (never touching
128
246
  // the shared `modalOverlayStructure`/`modalPanelStructure` resolvers the RNModal path below
129
247
  // still uses untouched) so the same tree fills `portalContainer`'s bounds instead of the
130
248
  // viewport.
131
249
  return renderWebPortal(/*#__PURE__*/_jsx(View, {
132
- style: StyleSheet.absoluteFill,
133
- pointerEvents: "box-none",
250
+ style: [StyleSheet.absoluteFill, {
251
+ pointerEvents: 'box-none'
252
+ }],
134
253
  children: overlay
135
254
  }), portalContainer);
136
255
  }
137
256
  return /*#__PURE__*/_jsx(RNModal, {
138
257
  visible: visible,
139
258
  transparent: true,
259
+ statusBarTranslucent: true,
260
+ navigationBarTranslucent: true,
140
261
  animationType: resolveModalAnimationType(!motion.enabled),
141
262
  onRequestClose: onRequestClose,
142
263
  children: overlay
@@ -69,8 +69,8 @@ export const modalPanelStructure = createThemedVariants(theme => ({
69
69
  width: "100%",
70
70
  maxHeight: "92%",
71
71
  borderRadius: theme.radii.lg,
72
- padding: theme.space[5],
73
- ...theme.elevation.lg
72
+ borderCurve: "continuous",
73
+ padding: theme.space[5]
74
74
  },
75
75
  variants: {
76
76
  size: {
@@ -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
@@ -34,6 +34,9 @@ Renders `null` when the count is ≤0 and there is no `triggerText` — nothing
34
34
  - **Touch target (WCAG 2.5.5 / 2.5.8)** — the trigger carries `minHeight: 44` (this library's
35
35
  floor). It is a standalone node with no neighbouring target to overlap, so the floor is real
36
36
  height via `minHeight`, not `hitSlop` expansion the way `Button`'s shorter sizes reach it.
37
+ - **Android touch feedback** — the trigger carries `android_ripple` (`rippleColor(theme.mode)`,
38
+ `borderless: false`), gated on `Platform.OS === "android"`. The scrim `Pressable` gets none — it is
39
+ the same `accessible={false}` decoy described under Modal semantics below, not a real press target.
37
40
  - **Label in Name (WCAG 2.5.3)** — the accessible name is built to CONTAIN the visible text
38
41
  (`"${triggerText} +${count} more"`, or just `"+${count} more"` with no leading text), not a
39
42
  separately-worded `"${count} more items"`. Voice control says what it reads; the old name shared no