pixelize-native-library 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (808) hide show
  1. package/COMPONENT-GOTCHAS.md +309 -0
  2. package/DESIGN-GUIDE.md +215 -0
  3. package/README.md +44 -0
  4. package/lib/module/core/MODULE.md +22 -16
  5. package/lib/module/core/a11y/MODULE.md +7 -7
  6. package/lib/module/core/a11y/touchTarget.js +6 -0
  7. package/lib/module/core/blur/blur.js +17 -0
  8. package/lib/module/core/blur/index.js +4 -0
  9. package/lib/module/core/device/MODULE.md +5 -8
  10. package/lib/module/core/gradient/AccentGradientFill.js +9 -6
  11. package/lib/module/core/gradient/ShimmerGradientFill.js +79 -0
  12. package/lib/module/core/gradient/index.js +1 -0
  13. package/lib/module/core/haptics/MODULE.md +7 -3
  14. package/lib/module/core/heading/MODULE.md +1 -1
  15. package/lib/module/core/icon/MODULE.md +14 -22
  16. package/lib/module/core/icon/icons/building-2.js +1 -1
  17. package/lib/module/core/icon/icons/trash.js +1 -1
  18. package/lib/module/core/list/VirtualList.js +16 -3
  19. package/lib/module/core/motion/MODULE.md +18 -9
  20. package/lib/module/core/motion/animatedComponents.js +8 -0
  21. package/lib/module/core/motion/index.js +2 -0
  22. package/lib/module/core/motion/motionAnimation.js +87 -0
  23. package/lib/module/core/motion/presets.js +81 -81
  24. package/lib/module/core/motion/reanimatedEasing.js +19 -0
  25. package/lib/module/core/motion/useAnimatedValue.js +2 -14
  26. package/lib/module/core/motion/useMotion.js +19 -20
  27. package/lib/module/core/motion/usePressState.js +0 -5
  28. package/lib/module/core/overlay/MODULE.md +17 -0
  29. package/lib/module/core/overlay/ModalPortalContext.js +8 -0
  30. package/lib/module/core/overlay/index.js +5 -0
  31. package/lib/module/core/overlay/renderWebPortal.js +6 -0
  32. package/lib/module/core/overlay/renderWebPortal.web.js +8 -0
  33. package/lib/module/core/screen-scroll/ScreenScrollContext.js +9 -0
  34. package/lib/module/core/screen-scroll/index.js +4 -0
  35. package/lib/module/core/slot/MODULE.md +9 -0
  36. package/lib/module/core/slot/index.js +4 -0
  37. package/lib/module/core/slot/nodeSlot.js +21 -0
  38. package/lib/module/core/style/focusRing.js +37 -0
  39. package/lib/module/core/style/index.js +1 -1
  40. package/lib/module/index.js +23 -4
  41. package/lib/module/modules/accordion/Accordion.js +50 -108
  42. package/lib/module/modules/accordion/Accordion.variants.js +2 -4
  43. package/lib/module/modules/accordion/AccordionProps.js +4 -0
  44. package/lib/module/modules/accordion/MODULE.md +15 -24
  45. package/lib/module/modules/alert-dialog/AlertDialog.js +19 -2
  46. package/lib/module/modules/alert-dialog/AlertDialogProps.js +4 -0
  47. package/lib/module/modules/alert-dialog/MODULE.md +2 -1
  48. package/lib/module/modules/app-bar/AppBar.js +21 -18
  49. package/lib/module/modules/app-bar/AppBar.variants.js +5 -0
  50. package/lib/module/modules/app-bar/AppBarProps.js +4 -0
  51. package/lib/module/modules/app-bar/MODULE.md +1 -1
  52. package/lib/module/modules/app-switcher/AppSwitcher.js +30 -0
  53. package/lib/module/modules/app-switcher/AppSwitcherProps.js +4 -0
  54. package/lib/module/modules/app-switcher/MODULE.md +14 -0
  55. package/lib/module/modules/app-switcher/index.js +4 -0
  56. package/lib/module/modules/appearance-settings/AppearanceSettings.js +58 -0
  57. package/lib/module/modules/appearance-settings/AppearanceSettingsProps.js +4 -0
  58. package/lib/module/modules/appearance-settings/MODULE.md +9 -0
  59. package/lib/module/modules/appearance-settings/index.js +4 -0
  60. package/lib/module/modules/avatar/Avatar.variants.js +2 -0
  61. package/lib/module/modules/avatar/AvatarProps.js +4 -0
  62. package/lib/module/modules/avatar/MODULE.md +3 -3
  63. package/lib/module/modules/avatar-group/AvatarGroupProps.js +4 -0
  64. package/lib/module/modules/avatar-group/MODULE.md +2 -1
  65. package/lib/module/modules/backdrop/Backdrop.js +38 -0
  66. package/lib/module/modules/backdrop/BackdropProps.js +4 -0
  67. package/lib/module/modules/backdrop/MODULE.md +11 -0
  68. package/lib/module/modules/backdrop/index.js +4 -0
  69. package/lib/module/modules/badge/BadgeProps.js +4 -0
  70. package/lib/module/modules/badge/MODULE.md +6 -4
  71. package/lib/module/modules/banner/Banner.js +2 -2
  72. package/lib/module/modules/banner/Banner.variants.js +3 -1
  73. package/lib/module/modules/banner/BannerProps.js +4 -0
  74. package/lib/module/modules/banner/MODULE.md +20 -31
  75. package/lib/module/modules/bottom-nav/BottomNav.variants.js +2 -2
  76. package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js +18 -19
  77. package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js +8 -7
  78. package/lib/module/modules/bottom-nav/BottomNavProps.js +4 -0
  79. package/lib/module/modules/bottom-nav/BottomNavTab.js +15 -16
  80. package/lib/module/modules/bottom-nav/MODULE.md +13 -13
  81. package/lib/module/modules/bottom-sheet/BottomSheet.js +30 -7
  82. package/lib/module/modules/bottom-sheet/BottomSheetProps.js +4 -0
  83. package/lib/module/modules/bottom-sheet/MODULE.md +11 -1
  84. package/lib/module/modules/breadcrumbs/Breadcrumbs.js +54 -0
  85. package/lib/module/modules/breadcrumbs/Breadcrumbs.variants.js +28 -0
  86. package/lib/module/modules/breadcrumbs/BreadcrumbsProps.js +4 -0
  87. package/lib/module/modules/breadcrumbs/MODULE.md +13 -0
  88. package/lib/module/modules/breadcrumbs/index.js +4 -0
  89. package/lib/module/modules/button/Button.js +6 -4
  90. package/lib/module/modules/button/Button.variants.js +12 -16
  91. package/lib/module/modules/button/ButtonProps.js +4 -0
  92. package/lib/module/modules/button/MODULE.md +6 -11
  93. package/lib/module/modules/button-group/ButtonGroup.js +4 -3
  94. package/lib/module/modules/button-group/ButtonGroup.variants.js +2 -4
  95. package/lib/module/modules/button-group/ButtonGroupProps.js +4 -0
  96. package/lib/module/modules/button-group/MODULE.md +2 -2
  97. package/lib/module/modules/card/Card.js +30 -7
  98. package/lib/module/modules/card/CardProps.js +4 -0
  99. package/lib/module/modules/card/MODULE.md +4 -2
  100. package/lib/module/modules/charts/BarChart.js +6 -4
  101. package/lib/module/modules/charts/BarChartProps.js +4 -0
  102. package/lib/module/modules/charts/BarList.js +2 -1
  103. package/lib/module/modules/charts/BarListProps.js +4 -0
  104. package/lib/module/modules/charts/ChartLegendProps.js +4 -0
  105. package/lib/module/modules/charts/Charts.variants.js +3 -1
  106. package/lib/module/modules/charts/DonutChart.js +3 -2
  107. package/lib/module/modules/charts/DonutChartProps.js +4 -0
  108. package/lib/module/modules/charts/LineChart.js +3 -2
  109. package/lib/module/modules/charts/LineChartProps.js +4 -0
  110. package/lib/module/modules/charts/MODULE.md +14 -14
  111. package/lib/module/modules/charts/PieChart.js +6 -4
  112. package/lib/module/modules/charts/PieChartProps.js +4 -0
  113. package/lib/module/modules/charts/SparklineProps.js +4 -0
  114. package/lib/module/modules/checkbox/Checkbox.js +21 -27
  115. package/lib/module/modules/checkbox/Checkbox.variants.js +4 -2
  116. package/lib/module/modules/checkbox/CheckboxProps.js +4 -0
  117. package/lib/module/modules/checkbox/MODULE.md +12 -6
  118. package/lib/module/modules/chip/Chip.js +49 -32
  119. package/lib/module/modules/chip/Chip.variants.js +3 -2
  120. package/lib/module/modules/chip/ChipGroup.js +16 -5
  121. package/lib/module/modules/chip/ChipGroupProps.js +4 -0
  122. package/lib/module/modules/chip/ChipProps.js +4 -0
  123. package/lib/module/modules/chip/MODULE.md +5 -7
  124. package/lib/module/modules/combobox/Combobox.js +22 -25
  125. package/lib/module/modules/combobox/Combobox.variants.js +2 -3
  126. package/lib/module/modules/combobox/ComboboxProps.js +4 -0
  127. package/lib/module/modules/combobox/MODULE.md +6 -12
  128. package/lib/module/modules/composer/Composer.js +11 -9
  129. package/lib/module/modules/composer/ComposerProps.js +4 -0
  130. package/lib/module/modules/composer/MODULE.md +6 -6
  131. package/lib/module/modules/copy-button/CopyButton.js +14 -6
  132. package/lib/module/modules/copy-button/CopyButton.variants.js +3 -2
  133. package/lib/module/modules/copy-button/CopyButtonProps.js +4 -0
  134. package/lib/module/modules/copy-button/MODULE.md +10 -12
  135. package/lib/module/modules/data-table/DataTable.js +11 -7
  136. package/lib/module/modules/data-table/DataTable.variants.js +2 -2
  137. package/lib/module/modules/data-table/DataTableProps.js +4 -0
  138. package/lib/module/modules/data-table/MODULE.md +5 -10
  139. package/lib/module/modules/date-picker/Calendar.js +11 -8
  140. package/lib/module/modules/date-picker/CalendarProps.js +4 -0
  141. package/lib/module/modules/date-picker/DatePicker.variants.js +2 -1
  142. package/lib/module/modules/date-picker/DatePickerProps.js +4 -0
  143. package/lib/module/modules/date-picker/DateRangePickerProps.js +4 -0
  144. package/lib/module/modules/date-picker/MODULE.md +6 -9
  145. package/lib/module/modules/date-picker/PickerFieldProps.js +4 -0
  146. package/lib/module/modules/date-picker/PickerShell.js +21 -12
  147. package/lib/module/modules/date-picker/PickerShellProps.js +4 -0
  148. package/lib/module/modules/date-picker/TimePicker.js +3 -2
  149. package/lib/module/modules/date-picker/TimePickerProps.js +4 -0
  150. package/lib/module/modules/description-list/DescriptionList.js +90 -0
  151. package/lib/module/modules/description-list/DescriptionList.variants.js +63 -0
  152. package/lib/module/modules/description-list/DescriptionListProps.js +4 -0
  153. package/lib/module/modules/description-list/MODULE.md +15 -0
  154. package/lib/module/modules/description-list/index.js +4 -0
  155. package/lib/module/modules/divider/DividerProps.js +4 -0
  156. package/lib/module/modules/divider/MODULE.md +1 -8
  157. package/lib/module/modules/document-viewer/DocumentViewer.js +35 -0
  158. package/lib/module/modules/document-viewer/DocumentViewerProps.js +4 -0
  159. package/lib/module/modules/document-viewer/MODULE.md +12 -0
  160. package/lib/module/modules/document-viewer/index.js +4 -0
  161. package/lib/module/modules/drawer/Drawer.js +45 -40
  162. package/lib/module/modules/drawer/DrawerProps.js +4 -0
  163. package/lib/module/modules/drawer/MODULE.md +14 -24
  164. package/lib/module/modules/empty-state/EmptyState.js +2 -1
  165. package/lib/module/modules/empty-state/EmptyStateProps.js +4 -0
  166. package/lib/module/modules/empty-state/MODULE.md +4 -9
  167. package/lib/module/modules/fab/Fab.js +9 -11
  168. package/lib/module/modules/fab/Fab.variants.js +10 -4
  169. package/lib/module/modules/fab/FabGroup.js +40 -43
  170. package/lib/module/modules/fab/FabGroupProps.js +4 -0
  171. package/lib/module/modules/fab/FabProps.js +4 -0
  172. package/lib/module/modules/fab/MODULE.md +10 -17
  173. package/lib/module/modules/field-select-modal/FieldSelectModal.js +52 -0
  174. package/lib/module/modules/field-select-modal/FieldSelectModalProps.js +4 -0
  175. package/lib/module/modules/field-select-modal/MODULE.md +13 -0
  176. package/lib/module/modules/field-select-modal/index.js +4 -0
  177. package/lib/module/modules/file-grid/FileGrid.js +3 -2
  178. package/lib/module/modules/file-grid/FileGridProps.js +4 -0
  179. package/lib/module/modules/file-grid/MODULE.md +27 -4
  180. package/lib/module/modules/file-upload/FileUpload.js +56 -15
  181. package/lib/module/modules/file-upload/FileUploadProps.js +4 -0
  182. package/lib/module/modules/file-upload/MODULE.md +10 -14
  183. package/lib/module/modules/filter-bar/FilterBar.js +68 -0
  184. package/lib/module/modules/filter-bar/FilterBarProps.js +4 -0
  185. package/lib/module/modules/filter-bar/MODULE.md +16 -0
  186. package/lib/module/modules/filter-bar/index.js +4 -0
  187. package/lib/module/modules/filter-sheet/FilterChip.js +3 -2
  188. package/lib/module/modules/filter-sheet/FilterChipProps.js +4 -0
  189. package/lib/module/modules/filter-sheet/FilterSheet.js +19 -14
  190. package/lib/module/modules/filter-sheet/FilterSheet.variants.js +2 -3
  191. package/lib/module/modules/filter-sheet/FilterSheetBody.js +26 -16
  192. package/lib/module/modules/filter-sheet/FilterSheetProps.js +2 -0
  193. package/lib/module/modules/filter-sheet/MODULE.md +5 -14
  194. package/lib/module/modules/folder-row/FolderRow.js +6 -4
  195. package/lib/module/modules/folder-row/FolderRowProps.js +4 -0
  196. package/lib/module/modules/folder-row/MODULE.md +6 -5
  197. package/lib/module/modules/form-field/FormField.js +9 -4
  198. package/lib/module/modules/form-field/FormFieldProps.js +4 -0
  199. package/lib/module/modules/form-field/MODULE.md +2 -7
  200. package/lib/module/modules/gantt/Gantt.js +23 -6
  201. package/lib/module/modules/gantt/Gantt.variants.js +12 -4
  202. package/lib/module/modules/gantt/GanttProps.js +4 -0
  203. package/lib/module/modules/gantt/MODULE.md +3 -3
  204. package/lib/module/modules/image-viewer/ImageViewer.js +3 -2
  205. package/lib/module/modules/image-viewer/ImageViewerProps.js +4 -0
  206. package/lib/module/modules/image-viewer/MODULE.md +1 -1
  207. package/lib/module/modules/input/Input.js +55 -20
  208. package/lib/module/modules/input/Input.variants.js +2 -3
  209. package/lib/module/modules/input/InputProps.js +4 -0
  210. package/lib/module/modules/input/MODULE.md +9 -16
  211. package/lib/module/modules/key-value/KeyValue.js +36 -0
  212. package/lib/module/modules/key-value/KeyValueProps.js +4 -0
  213. package/lib/module/modules/key-value/MODULE.md +16 -0
  214. package/lib/module/modules/key-value/index.js +4 -0
  215. package/lib/module/modules/limit-reached-modal/LimitReachedModalProps.js +4 -0
  216. package/lib/module/modules/limit-reached-modal/MODULE.md +1 -6
  217. package/lib/module/modules/list-item/ListItem.js +17 -6
  218. package/lib/module/modules/list-item/ListItemProps.js +4 -0
  219. package/lib/module/modules/list-item/MODULE.md +14 -9
  220. package/lib/module/modules/list-screen/ListScreen.js +63 -0
  221. package/lib/module/modules/list-screen/ListScreenProps.js +4 -0
  222. package/lib/module/modules/list-screen/MODULE.md +12 -0
  223. package/lib/module/modules/list-screen/index.js +4 -0
  224. package/lib/module/modules/markdown/MODULE.md +0 -6
  225. package/lib/module/modules/markdown/MarkdownProps.js +4 -0
  226. package/lib/module/modules/menu/MODULE.md +10 -17
  227. package/lib/module/modules/menu/Menu.js +66 -52
  228. package/lib/module/modules/menu/Menu.variants.js +2 -2
  229. package/lib/module/modules/menu/MenuProps.js +4 -0
  230. package/lib/module/modules/message-bubble/MODULE.md +5 -4
  231. package/lib/module/modules/message-bubble/MessageBubbleProps.js +4 -0
  232. package/lib/module/modules/modal/MODULE.md +56 -93
  233. package/lib/module/modules/modal/Modal.js +99 -30
  234. package/lib/module/modules/modal/ModalPortalContext.js +1 -22
  235. package/lib/module/modules/modal/ModalPortalProvider.js +1 -1
  236. package/lib/module/modules/modal/ModalPortalProviderProps.js +4 -0
  237. package/lib/module/modules/modal/ModalProps.js +4 -0
  238. package/lib/module/modules/modal/renderWebPortal.js +1 -15
  239. package/lib/module/modules/modal/renderWebPortal.web.js +1 -21
  240. package/lib/module/modules/more-items/MODULE.md +0 -2
  241. package/lib/module/modules/more-items/MoreItems.js +10 -7
  242. package/lib/module/modules/more-items/MoreItems.variants.js +2 -1
  243. package/lib/module/modules/more-items/MoreItemsProps.js +4 -0
  244. package/lib/module/modules/multi-select/MODULE.md +5 -11
  245. package/lib/module/modules/multi-select/MultiSelect.js +38 -23
  246. package/lib/module/modules/multi-select/MultiSelect.variants.js +4 -2
  247. package/lib/module/modules/multi-select/MultiSelectProps.js +4 -0
  248. package/lib/module/modules/notification-bell/MODULE.md +8 -0
  249. package/lib/module/modules/notification-bell/NotificationBell.js +43 -0
  250. package/lib/module/modules/notification-bell/NotificationBellProps.js +4 -0
  251. package/lib/module/modules/notification-bell/index.js +4 -0
  252. package/lib/module/modules/number-input/MODULE.md +8 -13
  253. package/lib/module/modules/number-input/NumberInput.js +8 -6
  254. package/lib/module/modules/number-input/NumberInput.variants.js +2 -4
  255. package/lib/module/modules/number-input/NumberInputProps.js +4 -0
  256. package/lib/module/modules/org-switcher/MODULE.md +5 -12
  257. package/lib/module/modules/org-switcher/OrgSwitcher.js +21 -19
  258. package/lib/module/modules/org-switcher/OrgSwitcher.variants.js +4 -2
  259. package/lib/module/modules/org-switcher/OrgSwitcherProps.js +4 -0
  260. package/lib/module/modules/pagination/MODULE.md +2 -5
  261. package/lib/module/modules/pagination/Pagination.js +25 -15
  262. package/lib/module/modules/pagination/Pagination.variants.js +2 -2
  263. package/lib/module/modules/pagination/PaginationControls.js +7 -5
  264. package/lib/module/modules/pagination/PaginationProps.js +4 -0
  265. package/lib/module/modules/person-chip/MODULE.md +11 -0
  266. package/lib/module/modules/person-chip/PersonChip.js +65 -0
  267. package/lib/module/modules/person-chip/PersonChipProps.js +4 -0
  268. package/lib/module/modules/person-chip/index.js +4 -0
  269. package/lib/module/modules/pin-input/MODULE.md +9 -20
  270. package/lib/module/modules/pin-input/PinInput.js +2 -2
  271. package/lib/module/modules/pin-input/PinInput.variants.js +2 -3
  272. package/lib/module/modules/pin-input/PinInputProps.js +4 -0
  273. package/lib/module/modules/plan-badge/MODULE.md +4 -0
  274. package/lib/module/modules/plan-badge/PlanBadge.js +25 -0
  275. package/lib/module/modules/plan-badge/PlanBadgeProps.js +4 -0
  276. package/lib/module/modules/plan-badge/index.js +4 -0
  277. package/lib/module/modules/plan-pill/MODULE.md +4 -0
  278. package/lib/module/modules/plan-pill/PlanPill.js +24 -0
  279. package/lib/module/modules/plan-pill/PlanPillProps.js +4 -0
  280. package/lib/module/modules/plan-pill/index.js +4 -0
  281. package/lib/module/modules/progress-bar/MODULE.md +12 -14
  282. package/lib/module/modules/progress-bar/ProgressBar.js +28 -36
  283. package/lib/module/modules/progress-bar/ProgressBarProps.js +4 -0
  284. package/lib/module/modules/radio-group/MODULE.md +6 -12
  285. package/lib/module/modules/radio-group/RadioGroup.js +7 -6
  286. package/lib/module/modules/radio-group/RadioGroup.variants.js +2 -3
  287. package/lib/module/modules/radio-group/RadioGroupProps.js +4 -0
  288. package/lib/module/modules/reorder/MODULE.md +7 -11
  289. package/lib/module/modules/reorder/Reorder.js +8 -3
  290. package/lib/module/modules/reorder/Reorder.variants.js +3 -4
  291. package/lib/module/modules/reorder/ReorderProps.js +4 -0
  292. package/lib/module/modules/rich-text/MODULE.md +4 -4
  293. package/lib/module/modules/rich-text/RichTextProps.js +4 -0
  294. package/lib/module/modules/rich-text-editor/MODULE.md +6 -16
  295. package/lib/module/modules/rich-text-editor/RichTextEditor.js +5 -4
  296. package/lib/module/modules/rich-text-editor/RichTextEditorProps.js +4 -0
  297. package/lib/module/modules/save-bar/MODULE.md +3 -0
  298. package/lib/module/modules/save-bar/SaveBar.js +49 -0
  299. package/lib/module/modules/save-bar/SaveBarProps.js +4 -0
  300. package/lib/module/modules/save-bar/index.js +4 -0
  301. package/lib/module/modules/screen/MODULE.md +7 -5
  302. package/lib/module/modules/screen/Screen.js +65 -22
  303. package/lib/module/modules/screen/ScreenProps.js +4 -0
  304. package/lib/module/modules/search-bar/MODULE.md +8 -8
  305. package/lib/module/modules/search-bar/SearchBar.js +8 -6
  306. package/lib/module/modules/search-bar/SearchBar.variants.js +2 -4
  307. package/lib/module/modules/search-bar/SearchBarProps.js +4 -0
  308. package/lib/module/modules/section/MODULE.md +1 -1
  309. package/lib/module/modules/section/Section.js +6 -1
  310. package/lib/module/modules/section/SectionProps.js +4 -0
  311. package/lib/module/modules/section-list/MODULE.md +21 -1
  312. package/lib/module/modules/section-list/SectionListProps.js +4 -0
  313. package/lib/module/modules/segmented-control/MODULE.md +30 -28
  314. package/lib/module/modules/segmented-control/SegmentedControl.js +20 -30
  315. package/lib/module/modules/segmented-control/SegmentedControl.variants.js +9 -42
  316. package/lib/module/modules/segmented-control/SegmentedControlProps.js +4 -0
  317. package/lib/module/modules/select/MODULE.md +8 -5
  318. package/lib/module/modules/select/Select.js +38 -25
  319. package/lib/module/modules/select/Select.variants.js +4 -5
  320. package/lib/module/modules/select/SelectProps.js +4 -0
  321. package/lib/module/modules/setting-row/MODULE.md +8 -0
  322. package/lib/module/modules/setting-row/SettingRow.js +50 -0
  323. package/lib/module/modules/setting-row/SettingRowProps.js +4 -0
  324. package/lib/module/modules/setting-row/index.js +4 -0
  325. package/lib/module/modules/settings-section/MODULE.md +7 -0
  326. package/lib/module/modules/settings-section/SettingsSection.js +37 -0
  327. package/lib/module/modules/settings-section/SettingsSectionProps.js +4 -0
  328. package/lib/module/modules/settings-section/index.js +4 -0
  329. package/lib/module/modules/skeleton/MODULE.md +2 -1
  330. package/lib/module/modules/skeleton/Skeleton.js +14 -8
  331. package/lib/module/modules/skeleton/Skeleton.variants.js +4 -9
  332. package/lib/module/modules/skeleton/SkeletonProps.js +4 -0
  333. package/lib/module/modules/slider/MODULE.md +2 -1
  334. package/lib/module/modules/slider/Slider.js +6 -6
  335. package/lib/module/modules/slider/Slider.variants.js +4 -2
  336. package/lib/module/modules/slider/SliderProps.js +4 -0
  337. package/lib/module/modules/spinner/MODULE.md +3 -2
  338. package/lib/module/modules/spinner/SpinnerProps.js +4 -0
  339. package/lib/module/modules/stage-progress/MODULE.md +20 -6
  340. package/lib/module/modules/stage-progress/StageProgress.js +45 -15
  341. package/lib/module/modules/stage-progress/StageProgress.variants.js +40 -8
  342. package/lib/module/modules/stage-progress/StageProgressProps.js +4 -0
  343. package/lib/module/modules/stat-grid/MODULE.md +11 -0
  344. package/lib/module/modules/stat-grid/StatGrid.js +34 -0
  345. package/lib/module/modules/stat-grid/StatGridProps.js +4 -0
  346. package/lib/module/modules/stat-grid/index.js +4 -0
  347. package/lib/module/modules/stat-tile/MODULE.md +12 -1
  348. package/lib/module/modules/stat-tile/StatTile.js +40 -15
  349. package/lib/module/modules/stat-tile/StatTile.variants.js +5 -0
  350. package/lib/module/modules/stat-tile/StatTileProps.js +4 -0
  351. package/lib/module/modules/state-block/MODULE.md +9 -3
  352. package/lib/module/modules/state-block/StateBlock.js +46 -38
  353. package/lib/module/modules/state-block/StateBlockProps.js +4 -0
  354. package/lib/module/modules/stepper/MODULE.md +2 -0
  355. package/lib/module/modules/stepper/Stepper.js +22 -21
  356. package/lib/module/modules/stepper/Stepper.variants.js +2 -0
  357. package/lib/module/modules/stepper/StepperProps.js +4 -0
  358. package/lib/module/modules/surface/MODULE.md +6 -8
  359. package/lib/module/modules/surface/Surface.js +6 -1
  360. package/lib/module/modules/surface/SurfaceProps.js +4 -0
  361. package/lib/module/modules/swipeable-row/MODULE.md +3 -2
  362. package/lib/module/modules/swipeable-row/SwipeableRow.js +31 -8
  363. package/lib/module/modules/swipeable-row/SwipeableRowProps.js +4 -0
  364. package/lib/module/modules/switch/MODULE.md +6 -3
  365. package/lib/module/modules/switch/Switch.js +42 -8
  366. package/lib/module/modules/switch/Switch.variants.js +2 -3
  367. package/lib/module/modules/switch/SwitchProps.js +4 -0
  368. package/lib/module/modules/tabs/MODULE.md +10 -14
  369. package/lib/module/modules/tabs/Tabs.js +84 -39
  370. package/lib/module/modules/tabs/Tabs.variants.js +2 -4
  371. package/lib/module/modules/tabs/TabsProps.js +4 -0
  372. package/lib/module/modules/text/MODULE.md +25 -17
  373. package/lib/module/modules/text/Text.variants.js +9 -1
  374. package/lib/module/modules/text/TextProps.js +4 -0
  375. package/lib/module/modules/textarea/MODULE.md +12 -18
  376. package/lib/module/modules/textarea/Textarea.js +12 -10
  377. package/lib/module/modules/textarea/Textarea.variants.js +4 -1
  378. package/lib/module/modules/textarea/TextareaProps.js +4 -0
  379. package/lib/module/modules/timeline/MODULE.md +8 -17
  380. package/lib/module/modules/timeline/Timeline.js +79 -22
  381. package/lib/module/modules/timeline/Timeline.variants.js +2 -0
  382. package/lib/module/modules/timeline/TimelineProps.js +4 -0
  383. package/lib/module/modules/toast/MODULE.md +13 -20
  384. package/lib/module/modules/toast/Toast.js +53 -51
  385. package/lib/module/modules/toast/Toast.variants.js +2 -5
  386. package/lib/module/modules/tooltip/MODULE.md +9 -13
  387. package/lib/module/modules/tooltip/Tooltip.js +36 -7
  388. package/lib/module/modules/tooltip/TooltipProps.js +4 -0
  389. package/lib/module/modules/typing-indicator/MODULE.md +1 -1
  390. package/lib/module/modules/typing-indicator/TypingIndicator.js +78 -51
  391. package/lib/module/modules/typing-indicator/TypingIndicatorProps.js +4 -0
  392. package/lib/module/modules/upgrade-button/MODULE.md +3 -0
  393. package/lib/module/modules/upgrade-button/UpgradeButton.js +23 -0
  394. package/lib/module/modules/upgrade-button/UpgradeButtonProps.js +4 -0
  395. package/lib/module/modules/upgrade-button/index.js +4 -0
  396. package/lib/module/theme/MODULE.md +2 -0
  397. package/lib/module/theme/platform/MODULE.md +2 -6
  398. package/lib/module/theme/platform/elevation.native.js +1 -7
  399. package/lib/module/theme/provider/PixelizeProvider.js +6 -0
  400. package/lib/module/theme/tokens/MODULE.md +4 -0
  401. package/lib/module/theme/tokens/THEME-CONTRACT.md +53 -3
  402. package/lib/module/theme/tokens/brands/emerald/palette.light.js +5 -3
  403. package/lib/module/theme/tokens/brands/lavender/palette.light.js +4 -4
  404. package/lib/module/theme/tokens/brands/meadow/palette.light.js +2 -2
  405. package/lib/module/theme/tokens/brands/radiant/palette.light.js +3 -3
  406. package/lib/module/theme/tokens/brands/rosewood/palette.light.js +3 -3
  407. package/lib/module/theme/tokens/brands/skyline/palette.light.js +2 -2
  408. package/lib/module/theme/tokens/brands/slate/palette.light.js +3 -3
  409. package/lib/module/theme/tokens/builders/accentText.js +10 -1
  410. package/lib/module/theme/tokens/builders/buildBrandScale.js +42 -0
  411. package/lib/module/theme/tokens/builders/gradientInk.js +23 -0
  412. package/lib/module/theme/tokens/builders/paletteFromAccent.js +30 -0
  413. package/lib/module/theme/tokens/builders/skeletonShimmer.js +22 -0
  414. package/lib/module/theme/tokens/index.js +3 -0
  415. package/lib/module/theme/tokens/primitives/controlSizes.js +16 -0
  416. package/lib/module/theme/tokens/primitives/index.js +1 -0
  417. package/lib/module/theme/tokens/roles/index.js +2 -0
  418. package/lib/typescript/core/a11y/touchTarget.d.ts +4 -0
  419. package/lib/typescript/core/blur/blur.d.ts +14 -0
  420. package/lib/typescript/core/blur/index.d.ts +3 -0
  421. package/lib/typescript/core/gradient/ShimmerGradientFill.d.ts +8 -0
  422. package/lib/typescript/core/gradient/index.d.ts +1 -0
  423. package/lib/typescript/core/list/VirtualList.d.ts +6 -1
  424. package/lib/typescript/core/motion/animatedComponents.d.ts +4 -0
  425. package/lib/typescript/core/motion/index.d.ts +2 -0
  426. package/lib/typescript/core/motion/motionAnimation.d.ts +12 -0
  427. package/lib/typescript/core/motion/presets.d.ts +5 -36
  428. package/lib/typescript/core/motion/reanimatedEasing.d.ts +4 -0
  429. package/lib/typescript/core/motion/useAnimatedValue.d.ts +2 -10
  430. package/lib/typescript/core/motion/useMotion.d.ts +4 -13
  431. package/lib/typescript/core/motion/usePressState.d.ts +0 -1
  432. package/lib/typescript/core/overlay/ModalPortalContext.d.ts +2 -0
  433. package/lib/typescript/core/overlay/index.d.ts +3 -0
  434. package/lib/typescript/core/overlay/renderWebPortal.d.ts +3 -0
  435. package/lib/typescript/core/overlay/renderWebPortal.web.d.ts +3 -0
  436. package/lib/typescript/core/screen-scroll/ScreenScrollContext.d.ts +8 -0
  437. package/lib/typescript/core/screen-scroll/index.d.ts +3 -0
  438. package/lib/typescript/core/slot/index.d.ts +2 -0
  439. package/lib/typescript/core/slot/nodeSlot.d.ts +5 -0
  440. package/lib/typescript/core/style/focusRing.d.ts +10 -0
  441. package/lib/typescript/core/style/index.d.ts +1 -1
  442. package/lib/typescript/index.d.ts +49 -11
  443. package/lib/typescript/modules/accordion/Accordion.d.ts +2 -37
  444. package/lib/typescript/modules/accordion/Accordion.variants.d.ts +2 -3
  445. package/lib/typescript/modules/accordion/AccordionProps.d.ts +49 -0
  446. package/lib/typescript/modules/accordion/index.d.ts +1 -1
  447. package/lib/typescript/modules/alert-dialog/AlertDialog.d.ts +2 -15
  448. package/lib/typescript/modules/alert-dialog/AlertDialogProps.d.ts +20 -0
  449. package/lib/typescript/modules/alert-dialog/index.d.ts +1 -1
  450. package/lib/typescript/modules/app-bar/AppBar.d.ts +1 -20
  451. package/lib/typescript/modules/app-bar/AppBar.variants.d.ts +4 -0
  452. package/lib/typescript/modules/app-bar/AppBarProps.d.ts +25 -0
  453. package/lib/typescript/modules/app-bar/index.d.ts +1 -1
  454. package/lib/typescript/modules/app-switcher/AppSwitcher.d.ts +3 -0
  455. package/lib/typescript/modules/app-switcher/AppSwitcherProps.d.ts +17 -0
  456. package/lib/typescript/modules/app-switcher/index.d.ts +3 -0
  457. package/lib/typescript/modules/appearance-settings/AppearanceSettings.d.ts +3 -0
  458. package/lib/typescript/modules/appearance-settings/AppearanceSettingsProps.d.ts +15 -0
  459. package/lib/typescript/modules/appearance-settings/index.d.ts +3 -0
  460. package/lib/typescript/modules/avatar/Avatar.d.ts +2 -33
  461. package/lib/typescript/modules/avatar/Avatar.variants.d.ts +2 -0
  462. package/lib/typescript/modules/avatar/AvatarProps.d.ts +23 -0
  463. package/lib/typescript/modules/avatar/index.d.ts +1 -1
  464. package/lib/typescript/modules/avatar-group/AvatarGroup.d.ts +1 -18
  465. package/lib/typescript/modules/avatar-group/AvatarGroupProps.d.ts +27 -0
  466. package/lib/typescript/modules/avatar-group/index.d.ts +1 -1
  467. package/lib/typescript/modules/backdrop/Backdrop.d.ts +3 -0
  468. package/lib/typescript/modules/backdrop/BackdropProps.d.ts +11 -0
  469. package/lib/typescript/modules/backdrop/index.d.ts +3 -0
  470. package/lib/typescript/modules/badge/Badge.d.ts +2 -14
  471. package/lib/typescript/modules/badge/BadgeProps.d.ts +17 -0
  472. package/lib/typescript/modules/badge/index.d.ts +1 -1
  473. package/lib/typescript/modules/banner/Banner.d.ts +1 -22
  474. package/lib/typescript/modules/banner/Banner.variants.d.ts +2 -0
  475. package/lib/typescript/modules/banner/BannerProps.d.ts +29 -0
  476. package/lib/typescript/modules/banner/index.d.ts +2 -1
  477. package/lib/typescript/modules/bottom-nav/BottomNav.d.ts +1 -34
  478. package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts +2 -1
  479. package/lib/typescript/modules/bottom-nav/BottomNavProps.d.ts +29 -0
  480. package/lib/typescript/modules/bottom-nav/index.d.ts +2 -1
  481. package/lib/typescript/modules/bottom-sheet/BottomSheet.d.ts +1 -13
  482. package/lib/typescript/modules/bottom-sheet/BottomSheetProps.d.ts +17 -0
  483. package/lib/typescript/modules/bottom-sheet/index.d.ts +1 -1
  484. package/lib/typescript/modules/breadcrumbs/Breadcrumbs.d.ts +3 -0
  485. package/lib/typescript/modules/breadcrumbs/Breadcrumbs.variants.d.ts +6 -0
  486. package/lib/typescript/modules/breadcrumbs/BreadcrumbsProps.d.ts +18 -0
  487. package/lib/typescript/modules/breadcrumbs/index.d.ts +3 -0
  488. package/lib/typescript/modules/button/Button.d.ts +1 -35
  489. package/lib/typescript/modules/button/Button.variants.d.ts +11 -15
  490. package/lib/typescript/modules/button/ButtonProps.d.ts +47 -0
  491. package/lib/typescript/modules/button/index.d.ts +1 -1
  492. package/lib/typescript/modules/button-group/ButtonGroup.d.ts +2 -17
  493. package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts +2 -3
  494. package/lib/typescript/modules/button-group/ButtonGroupProps.d.ts +21 -0
  495. package/lib/typescript/modules/button-group/index.d.ts +1 -1
  496. package/lib/typescript/modules/card/Card.d.ts +2 -15
  497. package/lib/typescript/modules/card/CardProps.d.ts +27 -0
  498. package/lib/typescript/modules/card/index.d.ts +1 -1
  499. package/lib/typescript/modules/charts/BarChart.d.ts +1 -24
  500. package/lib/typescript/modules/charts/BarChartProps.d.ts +36 -0
  501. package/lib/typescript/modules/charts/BarList.d.ts +1 -16
  502. package/lib/typescript/modules/charts/BarListProps.d.ts +22 -0
  503. package/lib/typescript/modules/charts/ChartLegend.d.ts +2 -14
  504. package/lib/typescript/modules/charts/ChartLegendProps.d.ts +19 -0
  505. package/lib/typescript/modules/charts/Charts.variants.d.ts +2 -0
  506. package/lib/typescript/modules/charts/DonutChart.d.ts +1 -19
  507. package/lib/typescript/modules/charts/DonutChartProps.d.ts +27 -0
  508. package/lib/typescript/modules/charts/LineChart.d.ts +1 -28
  509. package/lib/typescript/modules/charts/LineChartProps.d.ts +40 -0
  510. package/lib/typescript/modules/charts/PieChart.d.ts +1 -16
  511. package/lib/typescript/modules/charts/PieChartProps.d.ts +24 -0
  512. package/lib/typescript/modules/charts/Sparkline.d.ts +1 -11
  513. package/lib/typescript/modules/charts/SparklineProps.d.ts +17 -0
  514. package/lib/typescript/modules/charts/index.d.ts +6 -6
  515. package/lib/typescript/modules/checkbox/Checkbox.d.ts +1 -33
  516. package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts +2 -1
  517. package/lib/typescript/modules/checkbox/CheckboxProps.d.ts +27 -0
  518. package/lib/typescript/modules/checkbox/index.d.ts +1 -1
  519. package/lib/typescript/modules/chip/Chip.d.ts +1 -30
  520. package/lib/typescript/modules/chip/Chip.variants.d.ts +2 -1
  521. package/lib/typescript/modules/chip/ChipGroup.d.ts +1 -14
  522. package/lib/typescript/modules/chip/ChipGroupProps.d.ts +16 -0
  523. package/lib/typescript/modules/chip/ChipProps.d.ts +27 -0
  524. package/lib/typescript/modules/chip/index.d.ts +2 -2
  525. package/lib/typescript/modules/combobox/Combobox.d.ts +2 -45
  526. package/lib/typescript/modules/combobox/Combobox.variants.d.ts +3 -1
  527. package/lib/typescript/modules/combobox/ComboboxProps.d.ts +40 -0
  528. package/lib/typescript/modules/combobox/index.d.ts +1 -1
  529. package/lib/typescript/modules/composer/Composer.d.ts +1 -18
  530. package/lib/typescript/modules/composer/ComposerProps.d.ts +20 -0
  531. package/lib/typescript/modules/composer/index.d.ts +1 -1
  532. package/lib/typescript/modules/copy-button/CopyButton.d.ts +1 -15
  533. package/lib/typescript/modules/copy-button/CopyButton.variants.d.ts +2 -1
  534. package/lib/typescript/modules/copy-button/CopyButtonProps.d.ts +18 -0
  535. package/lib/typescript/modules/copy-button/index.d.ts +1 -1
  536. package/lib/typescript/modules/data-table/DataTable.d.ts +2 -31
  537. package/lib/typescript/modules/data-table/DataTable.variants.d.ts +2 -1
  538. package/lib/typescript/modules/data-table/DataTableProps.d.ts +43 -0
  539. package/lib/typescript/modules/data-table/index.d.ts +1 -1
  540. package/lib/typescript/modules/date-picker/Calendar.d.ts +1 -23
  541. package/lib/typescript/modules/date-picker/CalendarProps.d.ts +31 -0
  542. package/lib/typescript/modules/date-picker/DatePicker.d.ts +1 -27
  543. package/lib/typescript/modules/date-picker/DatePicker.variants.d.ts +2 -1
  544. package/lib/typescript/modules/date-picker/DatePickerProps.d.ts +33 -0
  545. package/lib/typescript/modules/date-picker/DateRangePicker.d.ts +1 -23
  546. package/lib/typescript/modules/date-picker/DateRangePickerProps.d.ts +27 -0
  547. package/lib/typescript/modules/date-picker/PickerField.d.ts +1 -17
  548. package/lib/typescript/modules/date-picker/PickerFieldProps.d.ts +19 -0
  549. package/lib/typescript/modules/date-picker/PickerShell.d.ts +1 -12
  550. package/lib/typescript/modules/date-picker/PickerShellProps.d.ts +16 -0
  551. package/lib/typescript/modules/date-picker/TimePicker.d.ts +1 -9
  552. package/lib/typescript/modules/date-picker/TimePickerProps.d.ts +14 -0
  553. package/lib/typescript/modules/date-picker/index.d.ts +4 -4
  554. package/lib/typescript/modules/description-list/DescriptionList.d.ts +8 -0
  555. package/lib/typescript/modules/description-list/DescriptionList.variants.d.ts +29 -0
  556. package/lib/typescript/modules/description-list/DescriptionListProps.d.ts +23 -0
  557. package/lib/typescript/modules/description-list/index.d.ts +4 -0
  558. package/lib/typescript/modules/divider/Divider.d.ts +1 -8
  559. package/lib/typescript/modules/divider/DividerProps.d.ts +11 -0
  560. package/lib/typescript/modules/divider/index.d.ts +1 -1
  561. package/lib/typescript/modules/document-viewer/DocumentViewer.d.ts +3 -0
  562. package/lib/typescript/modules/document-viewer/DocumentViewerProps.d.ts +13 -0
  563. package/lib/typescript/modules/document-viewer/index.d.ts +3 -0
  564. package/lib/typescript/modules/drawer/Drawer.d.ts +2 -7
  565. package/lib/typescript/modules/drawer/DrawerProps.d.ts +9 -0
  566. package/lib/typescript/modules/drawer/index.d.ts +1 -1
  567. package/lib/typescript/modules/empty-state/EmptyState.d.ts +1 -17
  568. package/lib/typescript/modules/empty-state/EmptyStateProps.d.ts +24 -0
  569. package/lib/typescript/modules/empty-state/index.d.ts +1 -1
  570. package/lib/typescript/modules/fab/Fab.d.ts +1 -51
  571. package/lib/typescript/modules/fab/Fab.variants.d.ts +3 -2
  572. package/lib/typescript/modules/fab/FabGroup.d.ts +1 -34
  573. package/lib/typescript/modules/fab/FabGroupProps.d.ts +34 -0
  574. package/lib/typescript/modules/fab/FabProps.d.ts +50 -0
  575. package/lib/typescript/modules/fab/index.d.ts +2 -2
  576. package/lib/typescript/modules/field-select-modal/FieldSelectModal.d.ts +3 -0
  577. package/lib/typescript/modules/field-select-modal/FieldSelectModalProps.d.ts +20 -0
  578. package/lib/typescript/modules/field-select-modal/index.d.ts +3 -0
  579. package/lib/typescript/modules/file-grid/FileGrid.d.ts +1 -18
  580. package/lib/typescript/modules/file-grid/FileGridProps.d.ts +23 -0
  581. package/lib/typescript/modules/file-grid/index.d.ts +1 -1
  582. package/lib/typescript/modules/file-upload/FileUpload.d.ts +1 -27
  583. package/lib/typescript/modules/file-upload/FileUploadProps.d.ts +27 -0
  584. package/lib/typescript/modules/file-upload/index.d.ts +1 -1
  585. package/lib/typescript/modules/filter-bar/FilterBar.d.ts +3 -0
  586. package/lib/typescript/modules/filter-bar/FilterBarProps.d.ts +17 -0
  587. package/lib/typescript/modules/filter-bar/index.d.ts +3 -0
  588. package/lib/typescript/modules/filter-sheet/FilterChip.d.ts +1 -9
  589. package/lib/typescript/modules/filter-sheet/FilterChipProps.d.ts +11 -0
  590. package/lib/typescript/modules/filter-sheet/FilterSheet.d.ts +1 -32
  591. package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts +2 -1
  592. package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts +1 -1
  593. package/lib/typescript/modules/filter-sheet/FilterSheetProps.d.ts +36 -0
  594. package/lib/typescript/modules/filter-sheet/filterSheet.helpers.d.ts +1 -1
  595. package/lib/typescript/modules/filter-sheet/index.d.ts +2 -2
  596. package/lib/typescript/modules/folder-row/FolderRow.d.ts +1 -11
  597. package/lib/typescript/modules/folder-row/FolderRowProps.d.ts +17 -0
  598. package/lib/typescript/modules/folder-row/index.d.ts +1 -1
  599. package/lib/typescript/modules/form-field/FormField.d.ts +2 -17
  600. package/lib/typescript/modules/form-field/FormFieldProps.d.ts +23 -0
  601. package/lib/typescript/modules/form-field/index.d.ts +1 -1
  602. package/lib/typescript/modules/gantt/Gantt.d.ts +2 -9
  603. package/lib/typescript/modules/gantt/Gantt.variants.d.ts +8 -2
  604. package/lib/typescript/modules/gantt/GanttProps.d.ts +13 -0
  605. package/lib/typescript/modules/gantt/index.d.ts +1 -1
  606. package/lib/typescript/modules/image-viewer/ImageViewer.d.ts +2 -15
  607. package/lib/typescript/modules/image-viewer/ImageViewerProps.d.ts +16 -0
  608. package/lib/typescript/modules/image-viewer/index.d.ts +2 -1
  609. package/lib/typescript/modules/input/Input.d.ts +2 -30
  610. package/lib/typescript/modules/input/Input.variants.d.ts +2 -2
  611. package/lib/typescript/modules/input/InputProps.d.ts +43 -0
  612. package/lib/typescript/modules/input/index.d.ts +1 -1
  613. package/lib/typescript/modules/key-value/KeyValue.d.ts +3 -0
  614. package/lib/typescript/modules/key-value/KeyValueProps.d.ts +11 -0
  615. package/lib/typescript/modules/key-value/index.d.ts +3 -0
  616. package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.d.ts +1 -17
  617. package/lib/typescript/modules/limit-reached-modal/LimitReachedModalProps.d.ts +24 -0
  618. package/lib/typescript/modules/limit-reached-modal/index.d.ts +1 -1
  619. package/lib/typescript/modules/list-item/ListItem.d.ts +2 -12
  620. package/lib/typescript/modules/list-item/ListItemProps.d.ts +22 -0
  621. package/lib/typescript/modules/list-item/index.d.ts +1 -1
  622. package/lib/typescript/modules/list-screen/ListScreen.d.ts +5 -0
  623. package/lib/typescript/modules/list-screen/ListScreenProps.d.ts +17 -0
  624. package/lib/typescript/modules/list-screen/index.d.ts +3 -0
  625. package/lib/typescript/modules/markdown/Markdown.d.ts +1 -8
  626. package/lib/typescript/modules/markdown/MarkdownProps.d.ts +12 -0
  627. package/lib/typescript/modules/markdown/index.d.ts +1 -1
  628. package/lib/typescript/modules/menu/Menu.d.ts +2 -19
  629. package/lib/typescript/modules/menu/Menu.variants.d.ts +2 -1
  630. package/lib/typescript/modules/menu/MenuProps.d.ts +26 -0
  631. package/lib/typescript/modules/menu/index.d.ts +1 -1
  632. package/lib/typescript/modules/message-bubble/MessageBubble.d.ts +1 -9
  633. package/lib/typescript/modules/message-bubble/MessageBubbleProps.d.ts +12 -0
  634. package/lib/typescript/modules/message-bubble/index.d.ts +1 -1
  635. package/lib/typescript/modules/modal/Modal.d.ts +2 -10
  636. package/lib/typescript/modules/modal/ModalPortalContext.d.ts +1 -1
  637. package/lib/typescript/modules/modal/ModalPortalProvider.d.ts +2 -12
  638. package/lib/typescript/modules/modal/ModalPortalProviderProps.d.ts +8 -0
  639. package/lib/typescript/modules/modal/ModalProps.d.ts +22 -0
  640. package/lib/typescript/modules/modal/index.d.ts +2 -2
  641. package/lib/typescript/modules/modal/renderWebPortal.d.ts +1 -14
  642. package/lib/typescript/modules/modal/renderWebPortal.web.d.ts +1 -18
  643. package/lib/typescript/modules/more-items/MoreItems.d.ts +2 -10
  644. package/lib/typescript/modules/more-items/MoreItems.variants.d.ts +3 -1
  645. package/lib/typescript/modules/more-items/MoreItemsProps.d.ts +14 -0
  646. package/lib/typescript/modules/more-items/index.d.ts +1 -1
  647. package/lib/typescript/modules/multi-select/MultiSelect.d.ts +1 -19
  648. package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts +2 -1
  649. package/lib/typescript/modules/multi-select/MultiSelectProps.d.ts +29 -0
  650. package/lib/typescript/modules/multi-select/index.d.ts +1 -1
  651. package/lib/typescript/modules/notification-bell/NotificationBell.d.ts +3 -0
  652. package/lib/typescript/modules/notification-bell/NotificationBellProps.d.ts +10 -0
  653. package/lib/typescript/modules/notification-bell/index.d.ts +3 -0
  654. package/lib/typescript/modules/number-input/NumberInput.d.ts +1 -26
  655. package/lib/typescript/modules/number-input/NumberInput.variants.d.ts +2 -3
  656. package/lib/typescript/modules/number-input/NumberInputProps.d.ts +23 -0
  657. package/lib/typescript/modules/number-input/index.d.ts +1 -1
  658. package/lib/typescript/modules/org-switcher/OrgSwitcher.d.ts +1 -24
  659. package/lib/typescript/modules/org-switcher/OrgSwitcher.variants.d.ts +2 -1
  660. package/lib/typescript/modules/org-switcher/OrgSwitcherProps.d.ts +29 -0
  661. package/lib/typescript/modules/org-switcher/index.d.ts +1 -1
  662. package/lib/typescript/modules/pagination/Pagination.d.ts +1 -26
  663. package/lib/typescript/modules/pagination/Pagination.variants.d.ts +2 -1
  664. package/lib/typescript/modules/pagination/PaginationProps.d.ts +28 -0
  665. package/lib/typescript/modules/pagination/index.d.ts +1 -1
  666. package/lib/typescript/modules/person-chip/PersonChip.d.ts +3 -0
  667. package/lib/typescript/modules/person-chip/PersonChipProps.d.ts +17 -0
  668. package/lib/typescript/modules/person-chip/index.d.ts +3 -0
  669. package/lib/typescript/modules/pin-input/PinInput.d.ts +1 -32
  670. package/lib/typescript/modules/pin-input/PinInput.variants.d.ts +2 -2
  671. package/lib/typescript/modules/pin-input/PinInputProps.d.ts +26 -0
  672. package/lib/typescript/modules/pin-input/index.d.ts +1 -1
  673. package/lib/typescript/modules/plan-badge/PlanBadge.d.ts +3 -0
  674. package/lib/typescript/modules/plan-badge/PlanBadgeProps.d.ts +10 -0
  675. package/lib/typescript/modules/plan-badge/index.d.ts +3 -0
  676. package/lib/typescript/modules/plan-pill/PlanPill.d.ts +3 -0
  677. package/lib/typescript/modules/plan-pill/PlanPillProps.d.ts +10 -0
  678. package/lib/typescript/modules/plan-pill/index.d.ts +3 -0
  679. package/lib/typescript/modules/progress-bar/ProgressBar.d.ts +1 -13
  680. package/lib/typescript/modules/progress-bar/ProgressBarProps.d.ts +16 -0
  681. package/lib/typescript/modules/progress-bar/index.d.ts +1 -1
  682. package/lib/typescript/modules/radio-group/RadioGroup.d.ts +2 -22
  683. package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts +2 -2
  684. package/lib/typescript/modules/radio-group/RadioGroupProps.d.ts +21 -0
  685. package/lib/typescript/modules/radio-group/index.d.ts +1 -1
  686. package/lib/typescript/modules/reorder/Reorder.d.ts +1 -13
  687. package/lib/typescript/modules/reorder/Reorder.variants.d.ts +2 -2
  688. package/lib/typescript/modules/reorder/ReorderProps.d.ts +19 -0
  689. package/lib/typescript/modules/reorder/index.d.ts +1 -1
  690. package/lib/typescript/modules/rich-text/RichText.d.ts +2 -10
  691. package/lib/typescript/modules/rich-text/RichTextProps.d.ts +15 -0
  692. package/lib/typescript/modules/rich-text/index.d.ts +1 -1
  693. package/lib/typescript/modules/rich-text-editor/RichTextEditor.d.ts +1 -45
  694. package/lib/typescript/modules/rich-text-editor/RichTextEditorProps.d.ts +40 -0
  695. package/lib/typescript/modules/rich-text-editor/index.d.ts +1 -1
  696. package/lib/typescript/modules/save-bar/SaveBar.d.ts +3 -0
  697. package/lib/typescript/modules/save-bar/SaveBarProps.d.ts +18 -0
  698. package/lib/typescript/modules/save-bar/index.d.ts +3 -0
  699. package/lib/typescript/modules/screen/Screen.d.ts +1 -24
  700. package/lib/typescript/modules/screen/ScreenProps.d.ts +35 -0
  701. package/lib/typescript/modules/screen/index.d.ts +1 -1
  702. package/lib/typescript/modules/search-bar/SearchBar.d.ts +2 -28
  703. package/lib/typescript/modules/search-bar/SearchBar.variants.d.ts +2 -3
  704. package/lib/typescript/modules/search-bar/SearchBarProps.d.ts +30 -0
  705. package/lib/typescript/modules/search-bar/index.d.ts +1 -1
  706. package/lib/typescript/modules/section/Section.d.ts +1 -8
  707. package/lib/typescript/modules/section/SectionProps.d.ts +11 -0
  708. package/lib/typescript/modules/section/index.d.ts +1 -1
  709. package/lib/typescript/modules/section-list/SectionList.d.ts +1 -19
  710. package/lib/typescript/modules/section-list/SectionListProps.d.ts +24 -0
  711. package/lib/typescript/modules/section-list/index.d.ts +1 -1
  712. package/lib/typescript/modules/segmented-control/SegmentedControl.d.ts +2 -41
  713. package/lib/typescript/modules/segmented-control/SegmentedControl.variants.d.ts +5 -44
  714. package/lib/typescript/modules/segmented-control/SegmentedControlProps.d.ts +29 -0
  715. package/lib/typescript/modules/segmented-control/index.d.ts +1 -1
  716. package/lib/typescript/modules/select/Select.d.ts +2 -13
  717. package/lib/typescript/modules/select/Select.variants.d.ts +2 -2
  718. package/lib/typescript/modules/select/SelectProps.d.ts +25 -0
  719. package/lib/typescript/modules/select/index.d.ts +2 -1
  720. package/lib/typescript/modules/setting-row/SettingRow.d.ts +3 -0
  721. package/lib/typescript/modules/setting-row/SettingRowProps.d.ts +14 -0
  722. package/lib/typescript/modules/setting-row/index.d.ts +3 -0
  723. package/lib/typescript/modules/settings-section/SettingsSection.d.ts +3 -0
  724. package/lib/typescript/modules/settings-section/SettingsSectionProps.d.ts +11 -0
  725. package/lib/typescript/modules/settings-section/index.d.ts +3 -0
  726. package/lib/typescript/modules/skeleton/Skeleton.d.ts +2 -12
  727. package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts +3 -5
  728. package/lib/typescript/modules/skeleton/SkeletonProps.d.ts +18 -0
  729. package/lib/typescript/modules/skeleton/index.d.ts +1 -1
  730. package/lib/typescript/modules/slider/Slider.d.ts +1 -24
  731. package/lib/typescript/modules/slider/Slider.variants.d.ts +2 -1
  732. package/lib/typescript/modules/slider/SliderProps.d.ts +27 -0
  733. package/lib/typescript/modules/slider/index.d.ts +1 -1
  734. package/lib/typescript/modules/spinner/Spinner.d.ts +1 -11
  735. package/lib/typescript/modules/spinner/SpinnerProps.d.ts +15 -0
  736. package/lib/typescript/modules/spinner/index.d.ts +1 -1
  737. package/lib/typescript/modules/stage-progress/StageProgress.d.ts +1 -12
  738. package/lib/typescript/modules/stage-progress/StageProgress.variants.d.ts +16 -4
  739. package/lib/typescript/modules/stage-progress/StageProgressProps.d.ts +22 -0
  740. package/lib/typescript/modules/stage-progress/index.d.ts +1 -1
  741. package/lib/typescript/modules/stat-grid/StatGrid.d.ts +3 -0
  742. package/lib/typescript/modules/stat-grid/StatGridProps.d.ts +15 -0
  743. package/lib/typescript/modules/stat-grid/index.d.ts +3 -0
  744. package/lib/typescript/modules/stat-tile/StatTile.d.ts +1 -14
  745. package/lib/typescript/modules/stat-tile/StatTile.variants.d.ts +3 -0
  746. package/lib/typescript/modules/stat-tile/StatTileProps.d.ts +25 -0
  747. package/lib/typescript/modules/stat-tile/index.d.ts +1 -1
  748. package/lib/typescript/modules/state-block/StateBlock.d.ts +1 -32
  749. package/lib/typescript/modules/state-block/StateBlockProps.d.ts +36 -0
  750. package/lib/typescript/modules/state-block/index.d.ts +1 -1
  751. package/lib/typescript/modules/stepper/Stepper.d.ts +3 -11
  752. package/lib/typescript/modules/stepper/Stepper.variants.d.ts +2 -0
  753. package/lib/typescript/modules/stepper/StepperProps.d.ts +12 -0
  754. package/lib/typescript/modules/stepper/index.d.ts +2 -1
  755. package/lib/typescript/modules/surface/Surface.d.ts +1 -14
  756. package/lib/typescript/modules/surface/SurfaceProps.d.ts +17 -0
  757. package/lib/typescript/modules/surface/index.d.ts +1 -1
  758. package/lib/typescript/modules/swipeable-row/SwipeableRow.d.ts +1 -19
  759. package/lib/typescript/modules/swipeable-row/SwipeableRowProps.d.ts +22 -0
  760. package/lib/typescript/modules/swipeable-row/index.d.ts +1 -1
  761. package/lib/typescript/modules/switch/Switch.d.ts +1 -14
  762. package/lib/typescript/modules/switch/Switch.variants.d.ts +2 -2
  763. package/lib/typescript/modules/switch/SwitchProps.d.ts +20 -0
  764. package/lib/typescript/modules/switch/index.d.ts +1 -1
  765. package/lib/typescript/modules/tabs/Tabs.d.ts +1 -17
  766. package/lib/typescript/modules/tabs/Tabs.variants.d.ts +2 -3
  767. package/lib/typescript/modules/tabs/TabsProps.d.ts +29 -0
  768. package/lib/typescript/modules/tabs/index.d.ts +1 -1
  769. package/lib/typescript/modules/text/Text.d.ts +1 -24
  770. package/lib/typescript/modules/text/TextProps.d.ts +35 -0
  771. package/lib/typescript/modules/text/index.d.ts +1 -1
  772. package/lib/typescript/modules/textarea/Textarea.d.ts +1 -19
  773. package/lib/typescript/modules/textarea/Textarea.variants.d.ts +2 -1
  774. package/lib/typescript/modules/textarea/TextareaProps.d.ts +23 -0
  775. package/lib/typescript/modules/textarea/index.d.ts +1 -1
  776. package/lib/typescript/modules/timeline/Timeline.d.ts +1 -16
  777. package/lib/typescript/modules/timeline/Timeline.variants.d.ts +2 -0
  778. package/lib/typescript/modules/timeline/TimelineProps.d.ts +37 -0
  779. package/lib/typescript/modules/timeline/index.d.ts +1 -1
  780. package/lib/typescript/modules/toast/Toast.variants.d.ts +2 -3
  781. package/lib/typescript/modules/tooltip/Tooltip.d.ts +1 -25
  782. package/lib/typescript/modules/tooltip/TooltipProps.d.ts +27 -0
  783. package/lib/typescript/modules/tooltip/index.d.ts +1 -1
  784. package/lib/typescript/modules/typing-indicator/TypingIndicator.d.ts +5 -14
  785. package/lib/typescript/modules/typing-indicator/TypingIndicatorProps.d.ts +11 -0
  786. package/lib/typescript/modules/typing-indicator/index.d.ts +1 -1
  787. package/lib/typescript/modules/upgrade-button/UpgradeButton.d.ts +3 -0
  788. package/lib/typescript/modules/upgrade-button/UpgradeButtonProps.d.ts +11 -0
  789. package/lib/typescript/modules/upgrade-button/index.d.ts +3 -0
  790. package/lib/typescript/test/motionJest.d.ts +12 -0
  791. package/lib/typescript/theme/platform/elevation.native.d.ts +1 -1
  792. package/lib/typescript/theme/tokens/builders/accentText.d.ts +3 -0
  793. package/lib/typescript/theme/tokens/builders/buildBrandScale.d.ts +4 -0
  794. package/lib/typescript/theme/tokens/builders/gradientInk.d.ts +9 -0
  795. package/lib/typescript/theme/tokens/builders/paletteFromAccent.d.ts +3 -0
  796. package/lib/typescript/theme/tokens/builders/skeletonShimmer.d.ts +9 -0
  797. package/lib/typescript/theme/tokens/index.d.ts +3 -0
  798. package/lib/typescript/theme/tokens/primitives/controlSizes.d.ts +6 -0
  799. package/lib/typescript/theme/tokens/primitives/index.d.ts +2 -0
  800. package/lib/typescript/theme/tokens/roles/index.d.ts +2 -0
  801. package/lib/typescript/theme/tokens/types.d.ts +2 -2
  802. package/package.json +106 -5
  803. package/registry.json +109 -14
  804. package/lib/module/core/style/useThemedStyles.js +0 -8
  805. package/lib/module/test/mocks/flashList.js +0 -5
  806. package/lib/module/test/perfHelpers.js +0 -18
  807. package/lib/typescript/core/style/useThemedStyles.d.ts +0 -5
  808. package/lib/typescript/test/mocks/flashList.d.ts +0 -3
@@ -9,35 +9,23 @@
9
9
  */
10
10
 
11
11
  import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
12
- import { Animated, Pressable, StyleSheet, Text, View } from "react-native";
13
- import Reanimated, { FadeInDown, ReduceMotion } from "react-native-reanimated";
14
- import { useAnimatedValue, useMotion } from "../../core/motion/index.js";
12
+ import { Pressable, StyleSheet, Text, View } from "react-native";
13
+ import Reanimated, { FadeInDown, FadeOut, LinearTransition, ReduceMotion, interpolate, useAnimatedStyle } from "react-native-reanimated";
14
+ import { motionParallel, useMotion, useAnimatedValue } from "../../core/motion/index.js";
15
15
  import { usePressState } from "../../core/motion/usePressState.js";
16
16
  import { Icon } from "../../core/icon/index.js";
17
- import { useThemedStyles } from "../../core/style/index.js";
17
+ import { FOCUS_RING_GAP, FOCUS_RING_WIDTH } from "../../core/style/focusRing.js";
18
18
  import { stateLayerScrim } from "../../theme/platform/stateLayer.native.js";
19
19
  import { VirtualList } from "../../core/list/index.js";
20
+ import { renderNodeSlot } from "../../core/slot/index.js";
20
21
  import { useTheme } from "../../theme/hooks.js";
21
22
  import { Badge } from "../badge/index.js";
22
23
  import { ACCORDION_SIZES, accordionContentStructure, accordionHeaderStructure, accordionItemStructure, resolveAccordionColors, resolveAccordionHeaderAccessibility } from "./Accordion.variants.js";
23
24
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
24
25
  const VIRTUALIZE_THRESHOLD = 20;
25
26
  const ICON_STROKE = 2;
26
- const FOCUS_RING_WIDTH = 2;
27
- const FOCUS_RING_GAP = 2;
28
27
  const AnimatedPressable = Reanimated.createAnimatedComponent(Pressable);
29
28
  const toArray = v => v === undefined ? [] : Array.isArray(v) ? v : [v];
30
- let reanimatedModule;
31
- function getReanimated() {
32
- if (reanimatedModule !== undefined) return reanimatedModule;
33
- try {
34
- // eslint-disable-next-line @typescript-eslint/no-require-imports
35
- reanimatedModule = require("react-native-reanimated");
36
- } catch {
37
- reanimatedModule = null;
38
- }
39
- return reanimatedModule;
40
- }
41
29
  export const Accordion = /*#__PURE__*/memo(function Accordion(props) {
42
30
  const {
43
31
  items,
@@ -82,6 +70,7 @@ export const Accordion = /*#__PURE__*/memo(function Accordion(props) {
82
70
  theme: theme,
83
71
  colors: colors,
84
72
  onToggle: toggle,
73
+ mountAnimation: false,
85
74
  testID: testID ? `${testID}-${item.value}` : undefined
86
75
  }), [openValues, disabled, size, theme, colors, toggle, testID]);
87
76
  const keyExtractor = useCallback(item => item.value, []);
@@ -97,9 +86,10 @@ export const Accordion = /*#__PURE__*/memo(function Accordion(props) {
97
86
  })
98
87
  });
99
88
  }
100
- return /*#__PURE__*/_jsx(View, {
89
+ return /*#__PURE__*/_jsx(Reanimated.View, {
101
90
  testID: testID,
102
91
  style: style,
92
+ layout: LinearTransition.reduceMotion(ReduceMotion.System),
103
93
  children: items.map(item => /*#__PURE__*/_jsx(AccordionRow, {
104
94
  item: item,
105
95
  expanded: openValues.includes(item.value),
@@ -108,6 +98,7 @@ export const Accordion = /*#__PURE__*/memo(function Accordion(props) {
108
98
  theme: theme,
109
99
  colors: colors,
110
100
  onToggle: toggle,
101
+ mountAnimation: true,
111
102
  testID: testID ? `${testID}-${item.value}` : undefined
112
103
  }, item.value))
113
104
  });
@@ -120,6 +111,7 @@ const AccordionRow = /*#__PURE__*/memo(function AccordionRow({
120
111
  theme,
121
112
  colors,
122
113
  onToggle,
114
+ mountAnimation,
123
115
  testID
124
116
  }) {
125
117
  const spec = ACCORDION_SIZES[size];
@@ -132,26 +124,32 @@ const AccordionRow = /*#__PURE__*/memo(function AccordionRow({
132
124
  const handlePress = useCallback(() => onToggle(item.value), [onToggle, item.value]);
133
125
  const handleFocus = useCallback(() => setFocused(true), []);
134
126
  const handleBlur = useCallback(() => setFocused(false), []);
135
- const headerPressedStyle = useThemedStyles(t => accordionHeaderStructure(t, {
127
+ const headerPressedStyle = useMemo(() => accordionHeaderStructure(theme, {
136
128
  size
137
- }), theme, [size]);
138
- const contentStyle = useThemedStyles(t => accordionContentStructure(t, {
129
+ }), [theme, size]);
130
+ const contentStyle = useMemo(() => accordionContentStructure(theme, {
139
131
  size
140
- }), theme, [size]);
141
- const itemBody = item.renderContent?.() ?? item.content;
132
+ }), [theme, size]);
133
+ const rawBody = item.renderContent?.() ?? item.content;
134
+ const bodyTextStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
135
+ fontSize: theme.fontSizes.sm,
136
+ color: colors.title
137
+ }], [theme, colors.title]);
138
+ const itemBody = renderNodeSlot(rawBody, bodyTextStyle);
142
139
  const overlayStaticStyle = useMemo(() => ({
143
140
  backgroundColor: stateLayerScrim(theme.mode),
144
141
  borderRadius: theme.radii.sm
145
142
  }), [theme.mode, theme.radii.sm]);
146
143
  return /*#__PURE__*/_jsxs(Reanimated.View, {
147
- entering: FadeInDown.springify().reduceMotion(ReduceMotion.System),
144
+ entering: mountAnimation ? FadeInDown.springify().reduceMotion(ReduceMotion.System) : undefined,
145
+ exiting: FadeOut.reduceMotion(ReduceMotion.System),
146
+ layout: LinearTransition.reduceMotion(ReduceMotion.System),
148
147
  style: [accordionItemStructure(theme), {
149
148
  borderBottomColor: colors.divider
150
149
  }],
151
150
  children: [/*#__PURE__*/_jsxs(View, {
152
151
  style: styles.headerHost,
153
152
  children: [focused && /*#__PURE__*/_jsx(View, {
154
- pointerEvents: "none",
155
153
  testID: testID ? `${testID}-focus-ring` : undefined,
156
154
  style: {
157
155
  position: "absolute",
@@ -161,7 +159,8 @@ const AccordionRow = /*#__PURE__*/memo(function AccordionRow({
161
159
  bottom: -(FOCUS_RING_GAP + FOCUS_RING_WIDTH),
162
160
  borderWidth: FOCUS_RING_WIDTH,
163
161
  borderColor: colors.focusRing,
164
- borderRadius: theme.radii.sm + FOCUS_RING_GAP + FOCUS_RING_WIDTH
162
+ borderRadius: theme.radii.sm + FOCUS_RING_GAP + FOCUS_RING_WIDTH,
163
+ pointerEvents: "none"
165
164
  }
166
165
  }), /*#__PURE__*/_jsxs(AnimatedPressable, {
167
166
  testID: testID,
@@ -181,8 +180,9 @@ const AccordionRow = /*#__PURE__*/memo(function AccordionRow({
181
180
  overflow: "hidden"
182
181
  }, press.animatedStyle, rowDisabled && styles.dimmed],
183
182
  children: [/*#__PURE__*/_jsx(Reanimated.View, {
184
- pointerEvents: "none",
185
- style: [StyleSheet.absoluteFill, overlayStaticStyle, press.overlayStyle]
183
+ style: [StyleSheet.absoluteFill, overlayStaticStyle, press.overlayStyle, {
184
+ pointerEvents: 'none'
185
+ }]
186
186
  }), item.icon !== undefined && /*#__PURE__*/_jsx(Icon, {
187
187
  name: item.icon,
188
188
  size: spec.iconSize,
@@ -237,99 +237,44 @@ const AccordionAnimatedContent = /*#__PURE__*/memo(function AccordionAnimatedCon
237
237
  const skipEnterAnimation = useRef(expanded);
238
238
  const running = useRef(null);
239
239
  const offsetY = motion.transform.offsetY;
240
+ const animatedStyle = useAnimatedStyle(() => ({
241
+ opacity: opacity.value,
242
+ transform: [{
243
+ translateY: translateY.value
244
+ }]
245
+ }));
240
246
  useEffect(() => {
241
247
  running.current?.stop();
242
248
  if (!expanded) {
243
- // Reset while unmounted so the next expand can't paint its first frame opaque.
244
- opacity.setValue(0);
245
- translateY.setValue(-offsetY);
249
+ opacity.value = 0;
250
+ translateY.value = -offsetY;
246
251
  return undefined;
247
252
  }
248
253
  if (!motion.enabled || skipEnterAnimation.current) {
249
254
  skipEnterAnimation.current = false;
250
- opacity.setValue(1);
251
- translateY.setValue(0);
255
+ opacity.value = 1;
256
+ translateY.value = 0;
252
257
  return undefined;
253
258
  }
254
- opacity.setValue(0);
255
- translateY.setValue(-offsetY);
256
- running.current = Animated.parallel([motion.timing(opacity, 1, {
259
+ opacity.value = 0;
260
+ translateY.value = -offsetY;
261
+ running.current = motionParallel(motion.timing(opacity, 1, {
257
262
  easing: "decelerate"
258
263
  }), motion.timing(translateY, 0, {
259
264
  easing: "decelerate"
260
- })]);
265
+ }));
261
266
  running.current.start();
262
267
  return () => running.current?.stop();
263
268
  }, [expanded, motion, opacity, translateY, offsetY]);
264
269
  useEffect(() => () => running.current?.stop(), []);
265
-
266
- // Synchronous unmount, deliberately with no exit fade: `filter-sheet`'s test asserts the closed
267
- // section is gone on the very next render. Never gate this on an animation.
268
270
  if (!expanded) return null;
269
- return /*#__PURE__*/_jsx(Animated.View, {
271
+ return /*#__PURE__*/_jsx(Reanimated.View, {
270
272
  testID: testID,
271
- style: [style, {
272
- opacity,
273
- transform: [{
274
- translateY
275
- }]
276
- }],
273
+ style: [style, animatedStyle],
277
274
  children: children
278
275
  });
279
276
  });
280
277
  const AccordionChevron = /*#__PURE__*/memo(function AccordionChevron({
281
- expanded,
282
- disabled,
283
- size,
284
- colors
285
- }) {
286
- const Reanimated = getReanimated();
287
- if (Reanimated) {
288
- return /*#__PURE__*/_jsx(AccordionChevronReanimated, {
289
- expanded: expanded,
290
- disabled: disabled,
291
- size: size,
292
- colors: colors,
293
- reanimated: Reanimated
294
- });
295
- }
296
- return /*#__PURE__*/_jsx(AccordionChevronAnimated, {
297
- expanded: expanded,
298
- disabled: disabled,
299
- size: size,
300
- colors: colors
301
- });
302
- });
303
- function AccordionChevronReanimated({
304
- expanded,
305
- size,
306
- colors,
307
- reanimated
308
- }) {
309
- const motion = useMotion();
310
- const spec = ACCORDION_SIZES[size];
311
- const rotation = reanimated.useSharedValue(expanded ? 1 : 0);
312
- useEffect(() => {
313
- rotation.value = motion.enabled ? reanimated.withTiming(expanded ? 1 : 0, {
314
- duration: motion.duration("normal")
315
- }) : expanded ? 1 : 0;
316
- }, [expanded, motion, rotation, reanimated]);
317
- const animatedStyle = reanimated.useAnimatedStyle(() => ({
318
- transform: [{
319
- rotate: `${rotation.value * 180}deg`
320
- }]
321
- }));
322
- return /*#__PURE__*/_jsx(reanimated.default.View, {
323
- style: animatedStyle,
324
- children: /*#__PURE__*/_jsx(Icon, {
325
- name: "chevron-down",
326
- size: spec.iconSize,
327
- color: colors.icon,
328
- strokeWidth: ICON_STROKE
329
- })
330
- });
331
- }
332
- function AccordionChevronAnimated({
333
278
  expanded,
334
279
  size,
335
280
  colors
@@ -341,7 +286,7 @@ function AccordionChevronAnimated({
341
286
  useEffect(() => {
342
287
  running.current?.stop();
343
288
  if (!motion.enabled) {
344
- rotation.setValue(expanded ? 1 : 0);
289
+ rotation.value = expanded ? 1 : 0;
345
290
  return undefined;
346
291
  }
347
292
  running.current = motion.timing(rotation, expanded ? 1 : 0, {
@@ -351,15 +296,12 @@ function AccordionChevronAnimated({
351
296
  return () => running.current?.stop();
352
297
  }, [expanded, motion, rotation]);
353
298
  useEffect(() => () => running.current?.stop(), []);
354
- const chevronStyle = useMemo(() => ({
299
+ const chevronStyle = useAnimatedStyle(() => ({
355
300
  transform: [{
356
- rotate: rotation.interpolate({
357
- inputRange: [0, 1],
358
- outputRange: ["0deg", "180deg"]
359
- })
301
+ rotate: `${interpolate(rotation.value, [0, 1], [0, 180])}deg`
360
302
  }]
361
- }), [rotation]);
362
- return /*#__PURE__*/_jsx(Animated.View, {
303
+ }));
304
+ return /*#__PURE__*/_jsx(Reanimated.View, {
363
305
  style: chevronStyle,
364
306
  children: /*#__PURE__*/_jsx(Icon, {
365
307
  name: "chevron-down",
@@ -368,7 +310,7 @@ function AccordionChevronAnimated({
368
310
  strokeWidth: ICON_STROKE
369
311
  })
370
312
  });
371
- }
313
+ });
372
314
  const styles = StyleSheet.create({
373
315
  dimmed: {
374
316
  opacity: 0.5
@@ -14,12 +14,10 @@
14
14
  * rendering React Native.
15
15
  */
16
16
 
17
+ import { MIN_TOUCH_TARGET, slopFor } from "../../core/a11y/touchTarget.js";
17
18
  import { StyleSheet } from "react-native";
18
19
  import { createThemedVariants } from "../../core/style/index.js";
19
- /** Same floor as Button/Tabs/Select — 44dp (WCAG 2.5.5 AAA / HIG). Duplicated, not imported: modules
20
- * stay isolated. */
21
- export const MIN_TOUCH_TARGET = 44;
22
- const slopFor = height => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - height) / 2));
20
+ export { MIN_TOUCH_TARGET };
23
21
  /**
24
22
  * Accordion-specific dimensions. Kept a plain constant — no theme dependency — so the hit-target
25
23
  * test can assert `headerMinHeight + 2·hitSlop ≥ 44` without a provider, same as `BUTTON_SIZES`.
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=AccordionProps.js.map
@@ -20,12 +20,12 @@ too. `type="multiple"` lets every section toggle independently.
20
20
 
21
21
  | Prop | Type | Default | Notes |
22
22
  |------|------|---------|-------|
23
- | `items` | `{ value: string; title: string; content: ReactNode }[]` || Rendered in order. `content` is ordinary composition rendered directly under a `View` when expanded — same contract as `Card.children`: wrap your own raw text in `Text` yourself. |
23
+ | `items` | `AccordionItem[]` | — | Rendered in order. Each item: `value`, `title`, optional `subtitle`, `icon` (`IconName`), `badge`, `disabled`, and its body as either `content` (eager) or `renderContent: () => ReactNode` (lazyuse it when a section is heavy). The body is ordinary composition rendered directly under a `View` when expanded — same contract as `Card.children`: wrap your own raw text in `Text` yourself. |
24
24
  | `type` | `single \| multiple` | `single` | Discriminates the shape of `value`/`defaultValue`/`onValueChange` below. |
25
25
  | `value` | `string` (single) / `string[]` (multiple) | — | Controlled open value(s). Omit for uncontrolled. |
26
26
  | `defaultValue` | `string` (single) / `string[]` (multiple) | — | Initial open value(s) when uncontrolled. |
27
27
  | `onValueChange` | `(value: string) => void` (single) / `(value: string[]) => void` (multiple) | — | Fires on every toggle, in both controlled and uncontrolled use. |
28
- | `disabled` | `boolean` | `false` | Blocks every header's toggle at once there is no per-item `disabled`. |
28
+ | `disabled` | `boolean` | `false` | Blocks every header that is not already individually disabled via `items[].disabled`. |
29
29
  | `size` | `sm \| md \| lg` | `md` | 40 / 48 / 56 dp header floor; `sm` reaches 44 via `hitSlop`. |
30
30
  | `style` | `LayoutStyle` | — | Layout-only, outermost (the container `View`), applied exactly once, last. |
31
31
  | `testID` | `string` | — | Container's testID; each header gets `` `${testID}-${item.value}` ``, its content `` `${testID}-${item.value}-content` ``, and its focus ring `` `${testID}-${item.value}-focus-ring` ``, when set. |
@@ -62,21 +62,19 @@ way so far, because a disclosure list's open state is commonly local UI state, n
62
62
 
63
63
  ## Motion
64
64
 
65
- Everything routes through **`useMotion()`** — no module-local timing constant, no raw `Easing.`
66
- (`ACCORDION_TIMING` and `CONTENT_EASE_IN` are gone). Both consequences are the point: the content
67
- reveal and the chevron now pick up the device tier's `durationScale` and the global `MOTION_SCALE` /
68
- `MOTION_ENABLED` switches, which a module-scope read of `MOTION_DURATION.normal` never could. The
69
- slide distance is `MOTION_TRANSFORM.offsetY`; reduce-motion is `motion.enabled`, never a second
70
- `useReducedMotion()` call (`core/motion/MODULE.md` rule 6). Header presses use `usePressState`
71
- (scale + state-layer overlay).
65
+ Everything routes through **`useMotion()`** (Reanimated shared values) — no module-local timing
66
+ constant, no raw `Easing.`, so the content reveal and the chevron pick up the device tier's
67
+ `durationScale` and the global `MOTION_SCALE` / `MOTION_ENABLED` switches. The slide distance is
68
+ `MOTION_TRANSFORM.offsetY`; reduce-motion is `motion.enabled`, never a second `useReducedMotion()`
69
+ call (`core/motion/MODULE.md` rule 6). Header presses use `usePressState`. Rows themselves carry
70
+ Reanimated `entering`/`exiting`/`layout` (`FadeInDown` / `FadeOut` / `LinearTransition`), all
71
+ `reduceMotion(ReduceMotion.System)`.
72
72
 
73
73
  ## Why content is not height-animated
74
74
 
75
- React Native has no native height transition without a measure-then-animate hack: mount the content
76
- off-screen, measure it via `onLayout`, then tween an `Animated.Value` from 0 to the measured height.
77
- That hack is fragile (a resize invalidates the cached measurement, a wrong first frame is visible)
78
- and is not meaningfully testable under this repo's test renderer, which never runs real layout (see
79
- `Tabs`' own documented gap for its indicator's `onLayout` dependency). Instead, expanded content uses
75
+ React Native has no native height transition without a measure-then-animate hack, which is fragile
76
+ (a resize invalidates the cached measurement) and not meaningfully testable under this repo's test
77
+ renderer, which never runs real layout. Instead, expanded content uses
80
78
  a native-driver **opacity + translateY** reveal, and unmounts on collapse without an exit
81
79
  tween — no layout measurement, no scroll jank. Mounting is derived from `expanded` rather than
82
80
  gated on an animation callback: a tween that is interrupted, or never runs, must never be able to
@@ -85,13 +83,6 @@ strand collapsed content in the tree. **The missing exit fade is deliberate and
85
83
  an exit animation here breaks that — `Accordion.motion.test.tsx` pins the synchronous unmount. Sections that start open (`defaultValue`) snap in with no
86
84
  enter animation. Under reduced motion, content snaps instantly the same way the chevron does.
87
85
 
88
- ## Why `disabled` is whole-accordion, not per-item
89
-
90
- The spec's prop list has one `disabled`, not a per-item flag on `AccordionItem` — mirroring how
91
- `RadioGroup`'s `disabled` blocks every row at once. A consumer needing a single non-collapsible
92
- section can omit that item from `items` reactively, or simply not wire its header (this library
93
- does not attempt to special-case that; flagged here rather than silently guessed at).
94
-
95
86
  ## Patterns (copied from Button / Tabs / Select)
96
87
 
97
88
  1. **Structure vs colour split.** Header height floor/padding and the separator's border WIDTH are
@@ -107,9 +98,9 @@ does not attempt to special-case that; flagged here rather than silently guessed
107
98
 
108
99
  ## Known gaps
109
100
 
110
- - No per-item `disabled` (see above — a deliberate scope decision, not an oversight).
111
- - No horizontal scrolling / virtualization concern v1 assumes `items` is a normal-length list
112
- (same scope decision `RadioGroup`/`Tabs` made for their own lists).
101
+ - No height tween on the reveal (see above)opacity + translateY only.
102
+ - At 20 or more `items` the stack swaps to `VirtualList`, which drops the per-row enter/exit and
103
+ `layout` animations the short-list path gets.
113
104
 
114
105
  ## Performance
115
106
 
@@ -8,10 +8,11 @@
8
8
  * actions appear, in what order, and which tone the confirm action carries.
9
9
  */
10
10
 
11
- import { memo } from "react";
11
+ import { memo, useEffect, useMemo, useState } from "react";
12
12
  import { View } from "react-native";
13
13
  import { useTheme } from "../../theme/hooks.js";
14
14
  import { Button } from "../button/index.js";
15
+ import { Input } from "../input/index.js";
15
16
  import { Modal } from "../modal/index.js";
16
17
  import { Text } from "../text/index.js";
17
18
  import { alertDialogActionsStructure, resolveAlertDialogConfirmTone } from "./AlertDialog.variants.js";
@@ -26,11 +27,17 @@ export const AlertDialog = /*#__PURE__*/memo(function AlertDialog({
26
27
  onConfirm,
27
28
  onCancel,
28
29
  tone = "default",
30
+ confirmationText,
29
31
  testID
30
32
  }) {
31
33
  const theme = useTheme();
32
34
  const confirmTone = resolveAlertDialogConfirmTone(tone);
33
35
  const cancelPress = onCancel ?? onRequestClose;
36
+ const [typed, setTyped] = useState("");
37
+ const confirmArmed = useMemo(() => confirmationText === undefined || typed === confirmationText, [confirmationText, typed]);
38
+ useEffect(() => {
39
+ if (!visible) setTyped("");
40
+ }, [visible]);
34
41
  return /*#__PURE__*/_jsxs(Modal, {
35
42
  visible: visible,
36
43
  onRequestClose: onRequestClose,
@@ -43,7 +50,16 @@ export const AlertDialog = /*#__PURE__*/memo(function AlertDialog({
43
50
  marginBottom: theme.space[5]
44
51
  },
45
52
  children: description
46
- }), /*#__PURE__*/_jsxs(View, {
53
+ }), confirmationText !== undefined ? /*#__PURE__*/_jsx(Input, {
54
+ value: typed,
55
+ onChangeText: setTyped,
56
+ label: `Type ${confirmationText} to confirm`,
57
+ accessibilityLabel: `Type ${confirmationText} to confirm`,
58
+ containerStyle: {
59
+ marginBottom: theme.space[4]
60
+ },
61
+ testID: testID ? `${testID}-confirmation` : undefined
62
+ }) : null, /*#__PURE__*/_jsxs(View, {
47
63
  style: alertDialogActionsStructure(theme),
48
64
  children: [/*#__PURE__*/_jsx(Button, {
49
65
  variant: "outline",
@@ -55,6 +71,7 @@ export const AlertDialog = /*#__PURE__*/memo(function AlertDialog({
55
71
  tone: confirmTone,
56
72
  label: confirmLabel,
57
73
  onPress: onConfirm,
74
+ disabled: !confirmArmed,
58
75
  testID: testID ? `${testID}-confirm` : undefined
59
76
  })]
60
77
  })]
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=AlertDialogProps.js.map
@@ -28,7 +28,8 @@ exactly one thing of its own: which two actions appear and which tone the confir
28
28
  | `onConfirm` | `() => void` | — | Required. Wired to the confirm Button's `onPress`. |
29
29
  | `onCancel` | `() => void` | `onRequestClose` | Wired to the cancel Button's `onPress`. Cancelling and dismissing mean the same thing unless overridden. |
30
30
  | `tone` | `"default" \| "danger"` | `"default"` | Closed union. `"danger"` passes `tone="danger"` to the confirm `Button`, mirroring Button's own destructive-action tone; `"default"` maps to Button's own default (`"accent"`). |
31
- | `testID` | `string` | — | Forwarded to `Modal` (seeds `${testID}-backdrop`/`${testID}-panel`) and also seeds `${testID}-cancel` / `${testID}-confirm` on the two actions. |
31
+ | `confirmationText` | `string` | — | When set, renders a confirmation `Input` and keeps confirm disabled until the typed value matches exactly. Clears when `visible` becomes false. |
32
+ | `testID` | `string` | — | Forwarded to `Modal` (seeds `${testID}-backdrop`/`${testID}-panel`) and also seeds `${testID}-cancel` / `${testID}-confirm` on the two actions. Seeds `${testID}-confirmation` on the guard field when `confirmationText` is set. |
32
33
 
33
34
  No `style` — same reasoning as `Modal` (see its "Why no `style`" section): there is no parent
34
35
  layout flow to place a full-screen dialog within.
@@ -17,7 +17,8 @@
17
17
  */
18
18
 
19
19
  import { memo, useEffect, useMemo, useRef, useState } from "react";
20
- import { Animated, Text, View } from "react-native";
20
+ import { Text, View } from "react-native";
21
+ import Reanimated, { useAnimatedStyle } from "react-native-reanimated";
21
22
  import { HEADING_LEVEL, HeadingText } from "../../core/heading/index.js";
22
23
  import { useAnimatedValue, useMotion } from "../../core/motion/index.js";
23
24
  import { useTheme } from "../../theme/hooks.js";
@@ -45,52 +46,56 @@ function useTitleCrossfade(title, subtitle) {
45
46
  title,
46
47
  subtitle
47
48
  });
49
+ const [hideFromA11y, setHideFromA11y] = useState(false);
50
+ const titleBoxMotionStyle = useAnimatedStyle(() => ({
51
+ opacity: opacity.value
52
+ }));
48
53
  useEffect(() => {
49
54
  if (displayed.title === title && displayed.subtitle === subtitle) {
50
55
  if (!fadeInPending.current) return;
51
56
  fadeInPending.current = false;
52
57
  running.current?.stop();
53
58
  if (!motion.enabled) {
54
- opacity.setValue(1);
59
+ opacity.value = 1;
60
+ setHideFromA11y(false);
55
61
  return;
56
62
  }
57
63
  running.current = motion.timing(opacity, 1, {
58
64
  duration: "fast",
59
65
  easing: "decelerate"
60
66
  });
61
- running.current.start();
67
+ running.current.start(() => queueMicrotask(() => setHideFromA11y(false)));
62
68
  return;
63
69
  }
64
70
  running.current?.stop();
71
+ setHideFromA11y(true);
65
72
  if (!motion.enabled) {
66
- opacity.setValue(1);
73
+ opacity.value = 1;
67
74
  setDisplayed({
68
75
  title,
69
76
  subtitle
70
77
  });
78
+ setHideFromA11y(false);
71
79
  return;
72
80
  }
73
81
  running.current = motion.timing(opacity, 0, {
74
82
  duration: "fast",
75
83
  easing: "accelerate"
76
84
  });
77
- running.current.start(({
78
- finished
79
- }) => {
80
- if (!finished) return;
85
+ running.current.start(result => {
86
+ if (!result?.finished) return;
81
87
  fadeInPending.current = true;
82
- setDisplayed({
88
+ queueMicrotask(() => setDisplayed({
83
89
  title,
84
90
  subtitle
85
- });
91
+ }));
86
92
  });
87
93
  }, [title, subtitle, displayed, motion, opacity]);
88
94
  useEffect(() => () => running.current?.stop(), []);
89
- const stale = displayed.title !== title || displayed.subtitle !== subtitle;
90
95
  return {
91
96
  displayed,
92
- opacity,
93
- stale
97
+ titleBoxMotionStyle,
98
+ stale: hideFromA11y
94
99
  };
95
100
  }
96
101
  export const AppBar = /*#__PURE__*/memo(function AppBar({
@@ -107,12 +112,10 @@ export const AppBar = /*#__PURE__*/memo(function AppBar({
107
112
  const trailingActions = useMemo(() => normalizeTrailingActions(trailing), [trailing]);
108
113
  const {
109
114
  displayed,
110
- opacity,
115
+ titleBoxMotionStyle,
111
116
  stale
112
117
  } = useTitleCrossfade(title, subtitle);
113
- const titleBoxStyle = useMemo(() => [appBarTitleBoxStructure(theme), {
114
- opacity
115
- }], [theme, opacity]);
118
+ const titleBoxStyle = useMemo(() => [appBarTitleBoxStructure(theme), titleBoxMotionStyle], [theme, titleBoxMotionStyle]);
116
119
  const barDepth = useMemo(() => ({
117
120
  backgroundColor: floatingBackground(theme, "sm"),
118
121
  ...floatingSurfaceStyle(theme, "sm")
@@ -137,7 +140,7 @@ export const AppBar = /*#__PURE__*/memo(function AppBar({
137
140
  onPress: leading.onPress,
138
141
  testID: testID === undefined ? undefined : `${testID}-leading`
139
142
  }) : null
140
- }), /*#__PURE__*/_jsxs(Animated.View, {
143
+ }), /*#__PURE__*/_jsxs(Reanimated.View, {
141
144
  style: titleBoxStyle
142
145
  // The outgoing title is still mounted (and still an accessibility element) while it fades,
143
146
  // so without this a screen reader can announce the title of the screen just left.
@@ -11,6 +11,7 @@
11
11
  * `react-native`'s `StyleSheet`, as `core/style` and every sibling module's tests do).
12
12
  */
13
13
 
14
+ import { MIN_TOUCH_TARGET } from "../../core/a11y/touchTarget.js";
14
15
  import { createThemedVariants } from "../../core/style/index.js";
15
16
 
16
17
  /** Matches `Button`'s `MIN_TOUCH_TARGET` — each side slot reserves at least 44dp for icon actions. */
@@ -19,6 +20,7 @@ export const APP_BAR_SIDE_MIN_WIDTH = 44;
19
20
  * Maps AppBar onto the theme's role colours. No `tone`/`color` prop to widen — every colour this
20
21
  * bar can show is one of these role lookups (same reasoning as `Divider`/`Card`).
21
22
  */
23
+ export { MIN_TOUCH_TARGET };
22
24
  export function resolveAppBarColors(colors) {
23
25
  return {
24
26
  background: colors.bg.surface,
@@ -68,4 +70,7 @@ export const appBarActionsRowStructure = createThemedVariants(theme => ({
68
70
  columnGap: theme.space[1]
69
71
  }
70
72
  }));
73
+
74
+ /** Scroll distance over which a `scrollEffect="collapse*"` AppBar eases subtitle/padding. */
75
+ export const APP_BAR_SCROLL_COLLAPSE_RANGE = 64;
71
76
  //# sourceMappingURL=AppBar.variants.js.map
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=AppBarProps.js.map
@@ -23,7 +23,7 @@ ghost) driven by a closed `IconName` — never a consumer `ReactNode` slot.
23
23
  | `subtitle` | `string` | — | Optional. Single-line, `fg.muted`. |
24
24
  | `onBack` | `() => void` | — | Renders `arrow-left` ghost button labelled "Back". |
25
25
  | `leading` | `AppBarAction` | — | Custom leading action when `onBack` is absent. |
26
- | `trailing` | `AppBarAction \| AppBarAction[]` | — | One or more trailing icon actions. |
26
+ | `trailing` | `AppBarAction \| readonly AppBarAction[]` | — | One or more trailing icon actions. |
27
27
  | `style` | `LayoutStyle` | — | Layout-only, outermost, applied exactly once, last. |
28
28
  | `testID` | `string` | — | Forwarded to the outermost `View`. |
29
29
 
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ import { memo, useCallback } from "react";
4
+ import { View } from "react-native";
5
+ import { useTheme } from "../../theme/hooks.js";
6
+ import { ListItem } from "../list-item/index.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export const AppSwitcher = /*#__PURE__*/memo(function AppSwitcher({
9
+ apps,
10
+ activeAppId,
11
+ onSelect,
12
+ style,
13
+ testID
14
+ }) {
15
+ const theme = useTheme();
16
+ const makePress = useCallback(id => () => onSelect(id), [onSelect]);
17
+ return /*#__PURE__*/_jsx(View, {
18
+ testID: testID,
19
+ style: [{
20
+ gap: theme.space[1]
21
+ }, style],
22
+ children: apps.map(app => /*#__PURE__*/_jsx(ListItem, {
23
+ title: app.label,
24
+ subtitle: app.id === activeAppId ? "Current" : undefined,
25
+ onPress: makePress(app.id),
26
+ testID: testID ? `${testID}-${app.id}` : undefined
27
+ }, app.id))
28
+ });
29
+ });
30
+ //# sourceMappingURL=AppSwitcher.js.map
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=AppSwitcherProps.js.map
@@ -0,0 +1,14 @@
1
+ # app-switcher/ — a suite picker list for switching between apps
2
+
3
+ Suite picker list (no keyboard shortcuts). Subpath-only.
4
+
5
+ ## Exports
6
+
7
+ - `AppSwitcher` — `apps`, `activeAppId`, `onSelect`, layout-only `style`, `testID`
8
+ - `AppSwitcherApp` — `id`, `label`, `icon`
9
+
10
+ Each app renders as a `ListItem` whose subtitle is `"Current"` for `activeAppId`.
11
+
12
+ ## Known gaps
13
+
14
+ - `AppSwitcherApp.icon` is accepted and silently ignored — nothing renders it.