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
@@ -2,8 +2,7 @@
2
2
 
3
3
  `SegmentedControl` switches between 2–5 mutually exclusive options (filters, view modes, date
4
4
  ranges) inside one rounded track. The active segment is marked by a pill that slides to its
5
- measured position — the same `onLayout` + `Animated.Value` mechanism `Tabs`' sliding indicator
6
- uses — but unlike `Tabs`/`ButtonGroup`, the pill is a **neutral raised surface**, not an
5
+ measured position — the same `onLayout` + shared-value mechanism `Tabs`' sliding indicator uses — but unlike `Tabs`/`ButtonGroup`, the pill is a **neutral raised surface**, not an
7
6
  accent-coloured fill: elevation, not colour, is the selection cue here.
8
7
 
9
8
  ## Files
@@ -14,7 +13,7 @@ accent-coloured fill: elevation, not colour, is the selection cue here.
14
13
  | `SegmentedControl.variants.ts` | Pure resolvers (`resolveSegmentedControlColors`, `resolveSegmentedControlSegmentAccessibility`, `resolveSegmentedControlSegmentHitSlop`) + the themed structural resolvers (`segmentedControlTrackStructure`, `segmentedControlPillStructure`, `segmentedControlSegmentStructure`). No React, no lucide. |
15
14
  | `index.ts` | Public surface: `SegmentedControl`, `SegmentedControlProps`, `SegmentedControlOption`, `SegmentedControlSize`, `IconName` (re-exported from `core/icon`). |
16
15
  | `__tests__/SegmentedControl.test.ts` | Pure: WCAG contrast (all brands × modes) + touch target + a11y contract. |
17
- | `__tests__/SegmentedControl.render.test.tsx` | Render: strip/segment roles, selection state, per-option and whole-group `disabled`, pill animation respects reduced motion. |
16
+ | `__tests__/SegmentedControl.render.test.tsx` | Render: track/segment roles, selection state, per-option and whole-group `disabled`, pill animation respects reduced motion. |
18
17
  | `__tests__/SegmentedControl.motion.test.tsx` | Motion: reduce-motion snap, the real slide, and the device tier's `durationScale` reaching the pill. |
19
18
 
20
19
  ## Props
@@ -30,9 +29,10 @@ accent-coloured fill: elevation, not colour, is the selection cue here.
30
29
  | `style` | `LayoutStyle` | — | Layout-only, outermost (the track `View`), applied exactly once, last. |
31
30
  | `testID` | `string` | — | Seeds `${testID}-pill`, `${testID}-${option.value}` and, while focused, `${testID}-${option.value}-focus-ring`. |
32
31
 
33
- No `tone`/`variant` union — the selected fill is always the neutral raised pill and the track is
34
- always `bg.sunken`; there is nothing for a closed union to resolve, the same reasoning `Tabs`/
35
- `RadioGroup` document for their own single-purpose shape.
32
+ No `tone`/`variant` union — the selected fill is always the neutral raised pill; there is nothing
33
+ for a closed union to resolve, the same reasoning `Tabs`/`RadioGroup` document for their own
34
+ single-purpose shape. Track and pill backgrounds are resolved live from `floatingBackground`, not
35
+ from `resolveSegmentedControlColors` (which only maps the two label colours) — see 1.4.11 below.
36
36
 
37
37
  ## Accessibility contract (WCAG)
38
38
 
@@ -49,32 +49,33 @@ always `bg.sunken`; there is nothing for a closed union to resolve, the same rea
49
49
  tap. Rather than tune a per-edge exception, every segment's own rendered `minWidth: 44` carries
50
50
  the width floor instead (the only axis this spec requires — `fullWidth` segments are already well
51
51
  over 44dp in practice).
52
- - **1.4.3** — the active label (`fg.default`, read on the pill's `bg.surface`) and the inactive
53
- label (`fg.muted`, read on the track's `bg.sunken`) are each measured ≥ 4.5:1 for all 8 brands ×
54
- both modes, including the inactive label against its own pressed background (`bg.raised`) — not
55
- just the resting track.
56
- - **1.4.11** — deliberately **not** satisfied by colour: `bg.surface` (the pill) against
57
- `bg.sunken` (the track) measures as low as 1.08:1, nowhere near 3:1, so this pairing could never
58
- clear it on its own. The boundary is instead carried by elevation (`theme.elevation.md`, the
59
- identical treatment `Card`'s `elevated` variant uses to differentiate itself with no border
60
- either) a decorative, not textual, distinction and selection reaches assistive tech
61
- independently via `aria-selected`, never by colour alone.
52
+ - **1.4.3** — the active label (`fg.default`, read on the pill `floatingBackground(theme, 'md')`)
53
+ and the inactive label (`fg.muted`, read on the track `floatingBackground(theme, 'sm')`) are
54
+ each measured ≥ 4.5:1 for all 9 brands × both modes, including the inactive label against its own
55
+ pressed overlay (`stateLayerScrim` at `STATE_LAYER_OPACITY.pressed`, composited onto the track).
56
+ - **1.4.11** — deliberately **not** satisfied by colour: the pill/track pairing measures ~1.1:1,
57
+ nowhere near 3:1, in dark mode. The pill is one `floatingBackground` level above the track
58
+ (`'md'` vs `'sm'`, the same step `Card`'s `elevated` variant uses), which guarantees it is
59
+ **lighter**, never darker a real regression once shipped raw `bg.surface` under `theme.elevation.md`,
60
+ which measured pill *darker* than track (1.04–1.12:1 inverted) since that shadow token is
61
+ mode-unaware. Selection reaches assistive tech independently via `aria-selected`, never by colour.
62
62
  - **2.4.7** — the focused segment draws a `border.focus` ring
63
63
  (`${testID}-${option.value}-focus-ring`), the same treatment `BottomNavTab` uses. The pill is
64
64
  **not** it: it marks selection and moves only on change. Drawn *inside* the segment's bounds —
65
65
  segments render flush, so a gap-outside ring would spill over its neighbour.
66
- - **2.3.3** — the pill's movement is two `Animated.Value`s (`x`, `width`) driven off each segment's
67
- own `onLayout` measurement, exactly `Tabs`' mechanism. Under reduced motion they're set with
68
- `setValue` (an instant snap) instead of a tweenverified in the render tests by spying on
69
- `Animated.timing` and asserting it isn't called when reduced motion is on.
66
+ - **2.3.3** — only the pill's `translateX` animates: one Reanimated shared value driven off each
67
+ segment's own `onLayout` measurement (the pill's `width` is set straight from that measurement, not
68
+ tweened). Under reduced motion the value is assigned directly an instant snap instead of a tween,
69
+ verified in the render and motion tests by asserting `withTiming` is not called.
70
70
 
71
71
  ## Motion
72
72
 
73
- The slide goes through **`useMotion()`**, not a direct `MOTION_DURATION` import: passing the
74
- configured constant straight to `Animated.timing` read the CONFIGURED duration, never the one
75
- resolved against the device tier, so `MOTION_TIER[tier].durationScale` never reached the pill.
76
- Reduce-motion is `motion.enabled` no second `useReducedMotion()` call (`core/motion/MODULE.md`
77
- rule 6). The in-flight slide is stopped on effect cleanup and on unmount.
73
+ The slide goes through **`useMotion()`**, never a direct `MOTION_DURATION` import only
74
+ `motion.timing` applies `MOTION_TIER[tier].durationScale`, so a raw constant would ignore the device
75
+ tier. Reduce-motion is `motion.enabled` no second `useReducedMotion()` call (`core/motion/MODULE.md`
76
+ rule 6). Segment presses use `usePressState` (scale + state-layer overlay), a bounded
77
+ `android_ripple` (gated off while the segment is disabled), and fire `haptics.selection()` on change.
78
+ The in-flight slide is stopped on effect cleanup and on unmount.
78
79
 
79
80
  ## Patterns copied from Tabs / ButtonGroup / Card
80
81
 
@@ -90,10 +91,13 @@ rule 6). The in-flight slide is stopped on effect cleanup and on unmount.
90
91
 
91
92
  ## Design decisions specific to this module
92
93
 
93
- - **The pill is neutral (`bg.surface`), not accent-coloured.** This is what the spec this module
94
+ - **The pill is a neutral raised surface, not accent-coloured.** This is what the spec this module
94
95
  was built against calls for, and it is also the only choice that keeps every segment's label the
95
96
  same colour whether or not it happens to be selected in a given render — no per-brand accent
96
97
  contrast to chase the way `ButtonGroup`'s `accent.solid` fill required a whole edge-colour fix.
98
+ - **Nested radii stay concentric.** Pill, focus ring and segment all use `radii.base` (8) —
99
+ `radii.md` (12) minus the track's `space[1]` inset (4) — never `radii.sm`, which under-rounds
100
+ them by 4dp against the track's own corner.
97
101
  - **Horizontal `hitSlop` is zero, full stop** — no per-edge "outer edge gets slop" exception like
98
102
  `ButtonGroup`'s. Only the vertical target is spec-mandated here; adding the outer-edge case would
99
103
  be unrequested surface area for a control whose segments (especially `fullWidth`) are already
@@ -1,30 +1,104 @@
1
1
  "use strict";
2
2
 
3
- /**
4
- * SegmentedControl — an inline, iOS-style single-choice control for switching between 2–5 mutually
5
- * exclusive options (filters, view modes, date ranges). A rounded track (`bg.sunken`) holds every
6
- * segment; the active one is marked by a raised pill (`bg.surface` + `Card`'s own elevation
7
- * treatment) that slides to the selected segment's measured position — the identical
8
- * measure-via-`onLayout` + `Animated.Value` mechanism `Tabs`' sliding indicator uses, keyed by
9
- * `value` so reordering `options` can never apply a stale measurement to the wrong segment.
10
- *
11
- * Unlike `ButtonGroup`/`Tabs`, the active state is NOT accent-coloured: the pill is a neutral raised
12
- * surface, and elevation — not colour — is what marks it, because `bg.surface` vs `bg.sunken` alone
13
- * measures nowhere near WCAG 1.4.11's 3:1 (see `SegmentedControl.variants.ts`). Selection reaches
14
- * assistive tech independently via `accessibilityState.selected`.
15
- *
16
- * The pill is a SELECTION marker, never a focus one — keyboard/AT focus draws its own inset ring on
17
- * the focused segment (WCAG 2.4.7), the same treatment `BottomNavTab` uses.
18
- */
3
+ /** Inline single-choice control; see `MODULE.md` for the elevation/a11y contract. */
19
4
 
20
- import { memo, useCallback, useEffect, useRef, useState } from "react";
21
- import { Animated, Pressable, StyleSheet, Text, View } from "react-native";
5
+ import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
6
+ import { Platform, Pressable, StyleSheet, Text, View } from "react-native";
7
+ import Reanimated, { useAnimatedStyle } from "react-native-reanimated";
22
8
  import { useAnimatedValue, useMotion } from "../../core/motion/index.js";
9
+ import { useHaptics } from "../../core/haptics/index.js";
10
+ import { usePressState } from "../../core/motion/usePressState.js";
23
11
  import { Icon } from "../../core/icon/index.js";
12
+ import { rippleColor, stateLayerScrim } from "../../theme/platform/stateLayer.native.js";
24
13
  import { useTheme } from "../../theme/hooks.js";
14
+ import { floatingBackground, floatingSurfaceStyle } from "../../theme/platform/index.js";
25
15
  import { resolveSegmentedControlColors, resolveSegmentedControlSegmentAccessibility, resolveSegmentedControlSegmentHitSlop, SEGMENTED_CONTROL_SIZES, segmentedControlFocusRingStructure, segmentedControlPillStructure, segmentedControlSegmentStructure, segmentedControlTrackStructure } from "./SegmentedControl.variants.js";
26
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
27
17
  const ICON_STROKE = 2;
18
+ const AnimatedPressable = Reanimated.createAnimatedComponent(Pressable);
19
+ const SegmentButton = /*#__PURE__*/memo(function SegmentButton({
20
+ option,
21
+ selected,
22
+ segmentDisabled,
23
+ size,
24
+ fullWidth,
25
+ labelColor,
26
+ hitSlop,
27
+ focused,
28
+ onChange,
29
+ onLayout,
30
+ onFocus,
31
+ onBlur,
32
+ testID
33
+ }) {
34
+ const theme = useTheme();
35
+ const press = usePressState(segmentDisabled);
36
+ const a11y = resolveSegmentedControlSegmentAccessibility({
37
+ selected,
38
+ disabled: segmentDisabled
39
+ });
40
+ const spec = SEGMENTED_CONTROL_SIZES[size];
41
+ const overlayStaticStyle = useMemo(() => ({
42
+ backgroundColor: stateLayerScrim(theme.mode),
43
+ borderRadius: theme.radii.md,
44
+ borderCurve: "continuous"
45
+ }), [theme.mode, theme.radii.md]);
46
+ const androidRipple = useMemo(() => {
47
+ if (Platform.OS !== "android" || segmentDisabled) return undefined;
48
+ return {
49
+ color: rippleColor(theme.mode),
50
+ borderless: false
51
+ };
52
+ }, [segmentDisabled, theme.mode]);
53
+ return /*#__PURE__*/_jsxs(AnimatedPressable, {
54
+ testID: testID,
55
+ accessibilityRole: a11y.accessibilityRole,
56
+ "aria-selected": a11y["aria-selected"],
57
+ "aria-disabled": a11y["aria-disabled"],
58
+ accessibilityLabel: option.label,
59
+ disabled: a11y.disabled,
60
+ onPress: segmentDisabled ? undefined : () => onChange(option.value),
61
+ onLayout: event => {
62
+ press.onLayout(event);
63
+ onLayout(option.value, event);
64
+ },
65
+ onFocus: () => onFocus(option.value),
66
+ onBlur: () => onBlur(option.value),
67
+ onPressIn: press.handlers.onPressIn,
68
+ onPressOut: press.handlers.onPressOut,
69
+ hitSlop: hitSlop,
70
+ android_ripple: androidRipple,
71
+ style: [segmentedControlSegmentStructure(theme, {
72
+ size,
73
+ fullWidth: fullWidth ? "on" : "off"
74
+ }), {
75
+ overflow: "hidden"
76
+ }, press.animatedStyle, option.disabled === true && !segmentDisabled && styles.dimmed],
77
+ children: [/*#__PURE__*/_jsx(Reanimated.View, {
78
+ style: [StyleSheet.absoluteFill, overlayStaticStyle, press.overlayStyle, {
79
+ pointerEvents: "none"
80
+ }]
81
+ }), focused && /*#__PURE__*/_jsx(View, {
82
+ testID: testID ? `${testID}-focus-ring` : undefined,
83
+ style: [segmentedControlFocusRingStructure(theme), {
84
+ borderColor: theme.colors.border.focus,
85
+ pointerEvents: "none"
86
+ }]
87
+ }), option.icon !== undefined && /*#__PURE__*/_jsx(Icon, {
88
+ name: option.icon,
89
+ size: spec.iconSize,
90
+ color: labelColor,
91
+ strokeWidth: ICON_STROKE
92
+ }), /*#__PURE__*/_jsx(Text, {
93
+ numberOfLines: 1,
94
+ style: [theme.fontStyleForWeight(theme.fontWeights.medium), {
95
+ fontSize: spec.fontSize,
96
+ color: labelColor
97
+ }],
98
+ children: option.label
99
+ })]
100
+ });
101
+ });
28
102
  function SegmentedControlImpl({
29
103
  options,
30
104
  value,
@@ -37,8 +111,8 @@ function SegmentedControlImpl({
37
111
  }) {
38
112
  const theme = useTheme();
39
113
  const motion = useMotion();
114
+ const haptics = useHaptics();
40
115
  const colors = resolveSegmentedControlColors(theme.colors);
41
- const spec = SEGMENTED_CONTROL_SIZES[size];
42
116
  const hitSlop = resolveSegmentedControlSegmentHitSlop(size);
43
117
  const [layouts, setLayouts] = useState({});
44
118
  // Which segment holds keyboard/AT focus. One value rather than per-segment state: only one segment
@@ -46,6 +120,11 @@ function SegmentedControlImpl({
46
120
  const [focusedValue, setFocusedValue] = useState(null);
47
121
  const pillX = useAnimatedValue(0);
48
122
  const running = useRef(null);
123
+ const pillMotionStyle = useAnimatedStyle(() => ({
124
+ transform: [{
125
+ translateX: pillX.value
126
+ }]
127
+ }));
49
128
  const activeLayout = layouts[value];
50
129
  const handleSegmentLayout = useCallback((optionValue, event) => {
51
130
  const {
@@ -68,7 +147,7 @@ function SegmentedControlImpl({
68
147
  if (activeLayout === undefined) return undefined;
69
148
  running.current?.stop();
70
149
  if (!motion.enabled) {
71
- pillX.setValue(activeLayout.x);
150
+ pillX.value = activeLayout.x;
72
151
  return undefined;
73
152
  }
74
153
  running.current = motion.timing(pillX, activeLayout.x, {
@@ -78,69 +157,44 @@ function SegmentedControlImpl({
78
157
  return () => running.current?.stop();
79
158
  }, [activeLayout, motion, pillX]);
80
159
  useEffect(() => () => running.current?.stop(), []);
160
+ const handleChange = useCallback(optionValue => {
161
+ haptics.selection();
162
+ onChange(optionValue);
163
+ }, [haptics, onChange]);
81
164
  return /*#__PURE__*/_jsxs(View, {
82
165
  testID: testID,
83
166
  accessibilityRole: "tablist",
84
167
  style: [segmentedControlTrackStructure(theme), {
85
- backgroundColor: colors.track
168
+ backgroundColor: floatingBackground(theme, "sm"),
169
+ ...floatingSurfaceStyle(theme, "sm")
86
170
  }, disabled && styles.dimmed, style],
87
- children: [/*#__PURE__*/_jsx(Animated.View, {
88
- pointerEvents: "none",
171
+ children: [/*#__PURE__*/_jsx(Reanimated.View, {
89
172
  testID: testID ? `${testID}-pill` : undefined,
90
- style: [segmentedControlPillStructure(theme), theme.elevation.md, {
91
- backgroundColor: colors.pill,
173
+ style: [segmentedControlPillStructure(theme), {
174
+ backgroundColor: floatingBackground(theme, "md"),
92
175
  width: activeLayout?.width ?? 0,
93
- transform: [{
94
- translateX: pillX
95
- }]
176
+ ...floatingSurfaceStyle(theme, "md")
177
+ }, pillMotionStyle, {
178
+ pointerEvents: "none"
96
179
  }]
97
180
  }), options.map(option => {
98
181
  const selected = option.value === value;
99
182
  const segmentDisabled = disabled || option.disabled === true;
100
- const a11y = resolveSegmentedControlSegmentAccessibility({
101
- selected,
102
- disabled: segmentDisabled
103
- });
104
183
  const labelColor = selected ? colors.activeLabel : colors.inactiveLabel;
105
- return /*#__PURE__*/_jsxs(Pressable, {
106
- testID: testID ? `${testID}-${option.value}` : undefined,
107
- accessibilityRole: a11y.accessibilityRole,
108
- "aria-selected": a11y["aria-selected"],
109
- "aria-disabled": a11y["aria-disabled"],
110
- accessibilityLabel: option.label,
111
- disabled: a11y.disabled,
112
- onPress: segmentDisabled ? undefined : () => onChange(option.value),
113
- onLayout: event => handleSegmentLayout(option.value, event),
114
- onFocus: () => setFocusedValue(option.value),
115
- onBlur: () => setFocusedValue(current => current === option.value ? null : current),
184
+ return /*#__PURE__*/_jsx(SegmentButton, {
185
+ option: option,
186
+ selected: selected,
187
+ segmentDisabled: segmentDisabled,
188
+ size: size,
189
+ fullWidth: fullWidth,
190
+ labelColor: labelColor,
116
191
  hitSlop: hitSlop,
117
- style: ({
118
- pressed
119
- }) => [segmentedControlSegmentStructure(theme, {
120
- size,
121
- fullWidth: fullWidth ? "on" : "off"
122
- }), pressed && !selected && !segmentDisabled && {
123
- backgroundColor: colors.pressedSegment
124
- }, option.disabled === true && !disabled && styles.dimmed],
125
- children: [focusedValue === option.value && /*#__PURE__*/_jsx(View, {
126
- pointerEvents: "none",
127
- testID: testID ? `${testID}-${option.value}-focus-ring` : undefined,
128
- style: [segmentedControlFocusRingStructure(theme), {
129
- borderColor: theme.colors.border.focus
130
- }]
131
- }), option.icon !== undefined && /*#__PURE__*/_jsx(Icon, {
132
- name: option.icon,
133
- size: spec.iconSize,
134
- color: labelColor,
135
- strokeWidth: ICON_STROKE
136
- }), /*#__PURE__*/_jsx(Text, {
137
- numberOfLines: 1,
138
- style: [theme.fontStyleForWeight(theme.fontWeights.medium), {
139
- fontSize: spec.fontSize,
140
- color: labelColor
141
- }],
142
- children: option.label
143
- })]
192
+ focused: focusedValue === option.value,
193
+ onChange: handleChange,
194
+ onLayout: handleSegmentLayout,
195
+ onFocus: setFocusedValue,
196
+ onBlur: v => setFocusedValue(current => current === v ? null : current),
197
+ testID: testID ? `${testID}-${option.value}` : undefined
144
198
  }, option.value);
145
199
  })]
146
200
  });
@@ -1,23 +1,10 @@
1
1
  "use strict";
2
2
 
3
- /**
4
- * SegmentedControl's style + behaviour resolution — pure, React/lucide-free, same split as Tabs:
5
- * - STRUCTURE (track padding/radius, segment height/padding, pill radius) lives in the
6
- * `createThemedVariants` resolvers below, registered once per (theme, size) — never rebuilt per
7
- * render.
8
- * - COLOUR is resolved from the theme's ROLE colours (`resolveSegmentedControlColors`), never a raw
9
- * hex: the track is always `bg.sunken`, the pill is always `bg.surface` (a neutral raised
10
- * surface, NOT the accent role — unlike `ButtonGroup`/`Tabs`, selection here is conveyed by
11
- * elevation + position, not by brand colour).
12
- * - `resolveSegmentedControlSegmentAccessibility` derives the per-segment a11y surface purely, so
13
- * the "selected"/"disabled" contract is unit-testable without rendering React Native.
14
- */
3
+ /** Pure style + a11y resolvers for SegmentedControl — no React, no lucide. */
15
4
 
5
+ import { MIN_TOUCH_TARGET, slopFor } from "../../core/a11y/touchTarget.js";
16
6
  import { createThemedVariants } from "../../core/style/index.js";
17
- /** Same floor as Button/Input/Tabs/ButtonGroup — 44dp (WCAG 2.5.5 / HIG). Duplicated, not imported:
18
- * modules stay isolated. */
19
- export const MIN_TOUCH_TARGET = 44;
20
- const slopFor = height => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - height) / 2));
7
+ export { MIN_TOUCH_TARGET };
21
8
  export const SEGMENTED_CONTROL_SIZES = {
22
9
  sm: {
23
10
  height: 32,
@@ -32,24 +19,11 @@ export const SEGMENTED_CONTROL_SIZES = {
32
19
  hitSlop: slopFor(40)
33
20
  }
34
21
  };
35
- /**
36
- * Maps the control's fixed visual roles onto ROLE colours — never a hardcoded hex. There is no
37
- * per-segment `tone`: like `RadioGroup`/`Tabs`, this is pure indirection, not a union to resolve.
38
- *
39
- * The pill deliberately reads `bg.surface`, NOT an accent fill: `bg.surface` vs `bg.sunken` alone
40
- * measures as low as 1.08:1 (nowhere near WCAG 1.4.11's 3:1 — see `SegmentedControl.test.ts`), so
41
- * the boundary between the pill and the track is carried by elevation (`theme.elevation.md`, the
42
- * same treatment `Card`'s `elevated` variant uses to differentiate itself with no border either),
43
- * not by a colour contrast this pairing could never clear on its own. Selection is additionally
44
- * conveyed to assistive tech via `accessibilityState.selected`, never by colour alone.
45
- */
22
+ /** Label colours only — track/pill/pressed backgrounds are resolved live in `SegmentedControl.tsx`. */
46
23
  export function resolveSegmentedControlColors(colors) {
47
24
  return {
48
- track: colors.bg.sunken,
49
- pill: colors.bg.surface,
50
25
  activeLabel: colors.fg.default,
51
- inactiveLabel: colors.fg.muted,
52
- pressedSegment: colors.bg.raised
26
+ inactiveLabel: colors.fg.muted
53
27
  };
54
28
  }
55
29
  export function resolveSegmentedControlSegmentAccessibility(input) {
@@ -86,25 +60,19 @@ export const segmentedControlTrackStructure = createThemedVariants(theme => ({
86
60
  base: {
87
61
  flexDirection: "row",
88
62
  position: "relative",
89
- borderRadius: theme.radii.base,
63
+ borderRadius: theme.radii.md,
64
+ borderCurve: "continuous",
90
65
  padding: theme.space[1]
91
66
  }
92
67
  }));
93
68
 
94
- /**
95
- * The pill. `theme.radii.sm` — one step down from the track's `theme.radii.base` — nests cleanly
96
- * inside the track's own `space[1]` inset, the same "inner radius ≈ outer radius − inset" geometry
97
- * a nested rounded rect needs to read as concentric rather than mismatched. `top`/`bottom` pin it to
98
- * the row's own height (set by the segments, its flow siblings); `left`/`width` are driven by
99
- * `Animated.Value`s in `SegmentedControl.tsx`, keyed off each segment's own `onLayout` measurement —
100
- * same mechanism as `Tabs`' sliding indicator.
101
- */
69
+ /** `radii.base` (12 − the track's `space[1]` inset of 4) nests concentric inside `radii.md`. */
102
70
  export const segmentedControlPillStructure = createThemedVariants(theme => ({
103
71
  base: {
104
72
  position: "absolute",
105
73
  top: 0,
106
74
  bottom: 0,
107
- borderRadius: theme.radii.sm
75
+ borderRadius: theme.radii.base
108
76
  }
109
77
  }));
110
78
 
@@ -122,7 +90,7 @@ export const segmentedControlFocusRingStructure = createThemedVariants(theme =>
122
90
  right: 0,
123
91
  bottom: 0,
124
92
  borderWidth: theme.borderWidths.thick,
125
- borderRadius: theme.radii.sm
93
+ borderRadius: theme.radii.base
126
94
  }
127
95
  }));
128
96
 
@@ -138,7 +106,7 @@ export const segmentedControlSegmentStructure = createThemedVariants(theme => ({
138
106
  alignItems: "center",
139
107
  justifyContent: "center",
140
108
  minWidth: MIN_TOUCH_TARGET,
141
- borderRadius: theme.radii.sm,
109
+ borderRadius: theme.radii.base,
142
110
  columnGap: theme.space[1]
143
111
  },
144
112
  variants: {
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=SegmentedControlProps.js.map
@@ -17,21 +17,24 @@ context + a stateless helper with no React-tree footprint of its own, not a depe
17
17
  |------|------|
18
18
  | `Select.tsx` | The component. Trigger + `Modal` composition, open/close state, focus handling. Option list is `core/list`'s `VirtualList` (device-tier windowing over FlashList-or-FlatList), built only while `open`. |
19
19
  | `Select.variants.ts` | Pure resolvers (`SELECT_SIZES`, `resolveSelectTriggerColors`, `resolveSelectRowColors`, `resolveSelectAccessibility`) + the themed structural resolvers (`selectTriggerStructure`, `selectOverlayStructure`, `selectSheetStructure`, `selectRowStructure`). No React, no lucide. |
20
- | `index.ts` | Public surface: `Select`, `SelectProps`, `SelectOption`, `SelectSize`. |
20
+ | `index.ts` | Public surface: `Select`, `SelectProps`, `SelectOption`, `SelectOptionTone`, `SelectOptionCustomColors`, `SelectSize`. |
21
21
  | `__tests__/Select.test.ts` | Pure: WCAG contrast (all brands × modes) + touch target + a11y contract. |
22
22
  | `__tests__/Select.render.test.tsx` | Render: display, open/close, disabled gating, selection, backdrop dismiss, the row's resolved 44dp `minHeight`, and the web-portal opt-in branch (mocking `renderWebPortal`). |
23
23
  | `__tests__/Select.keyboard.test.tsx` | Web keyboard: tab stop opens on the selected option, arrows/Home/End/typeahead, Space selection, Escape. |
24
- | `__tests__/Select.motion.test.tsx` | Reduce-motion (WCAG 2.3.3): check-glyph and press feedback snap to their final values, and `Animated.timing` is never called. |
24
+ | `__tests__/Select.motion.test.tsx` | Reduce-motion (WCAG 2.3.3): check-glyph and press feedback snap to their final values, and no Reanimated timing runs. |
25
+ | `__tests__/Select.dom.test.tsx` | Real DOM (`jest.web.config.js`): the trigger and sheet under `react-dom`. |
25
26
 
26
27
  ## Props
27
28
 
28
29
  | Prop | Type | Default | Notes |
29
30
  |------|------|---------|-------|
30
- | `options` | `{ label: string; value: string; leading?: ReactNode }[]` | — | Required. `leading` is an optional fixed-size adornment (status chip / priority glyph / avatar) rendered before the row label AND on the trigger while that option is selected — the ReactNode content-slot precedent set by `ListItem`'s `leading`. |
31
+ | `options` | `SelectOption[]` | — | Required. Each option may set `tone` / `customColors` (same `custom` escape hatch as `Badge`). |
31
32
  | `value` | `string` | — | The currently selected option's `value`. |
32
33
  | `onValueChange` | `(value: string) => void` | — | Required. Fired on row press; the menu closes right after. |
33
34
  | `placeholder` | `string` | — | Shown when `value` matches no option. |
34
35
  | `label` | `string` | — | Field label above the trigger; also folded into its accessible name. |
36
+ | `status` | `InputStatus` | `"default"` | `"error"` paints the danger border and sets `aria-invalid`, same union as `Input`. |
37
+ | `errorText` | `string` | — | Rendered below the trigger, but only while `status="error"`. |
35
38
  | `disabled` | `boolean` | `false` | Blocks opening the menu; dimmed like Button's disabled state. |
36
39
  | `size` | `sm \| md \| lg` | `md` | 32 / 40 / 48 dp; short sizes reach 44 via `hitSlop`. |
37
40
  | `containerStyle` | `LayoutStyle` | — | Layout-only, outermost, applied exactly once, last. |
@@ -40,6 +43,16 @@ context + a stateless helper with no React-tree footprint of its own, not a depe
40
43
  No `icon` prop — the chevron/check glyphs are fixed to the component's own semantics, not
41
44
  caller-configurable.
42
45
 
46
+ ### `SelectOption`
47
+
48
+ | Field | Type | Notes |
49
+ |-------|------|-------|
50
+ | `label` | `string` | Row label (required). |
51
+ | `value` | `string` | Stable id (required). |
52
+ | `leading` | `ReactNode` | Optional fixed-size adornment on the row and trigger. |
53
+ | `tone` | `SelectOptionTone` | Optional label colour from role tokens, or `"custom"`. |
54
+ | `customColors` | `{ bg, fg }` | Required when `tone="custom"`. Label reads `fg`. |
55
+
43
56
  ## Accessibility contract (WCAG)
44
57
 
45
58
  - **2.5.x target size** — every trigger size reaches ≥ 44dp via `hitSlop`; option rows have a
@@ -56,14 +69,25 @@ caller-configurable.
56
69
  `bg.selected` isn't proven ≥ 4.5:1 against `fg.default` on every brand (measured: fails on
57
70
  radiant/rosewood light), so `resolveSelectRowColors` keeps the row fill at `bg.surface` for every
58
71
  row, selected or not.
59
- - Each option row is `accessibilityRole="menuitem"` with flat `aria-selected`; the "check" icon is
60
- the sighted echo of the same state, never the only signal.
72
+ - Each option row is `accessibilityRole="option"` with flat `aria-selected`; the "check" icon is
73
+ the sighted echo of the same state, never the only signal. **2026-08 sweep:** rows were
74
+ `accessibilityRole="menuitem"`, which made `aria-selected` invalid ARIA (only valid on
75
+ `option`/`row`/`tab`/`gridcell`/`treeitem`). Unlike `OrgSwitcher`'s identical bug — fixed to
76
+ `role="radio"` + `aria-checked` because that sheet's row list carries no `listbox` role — Select's
77
+ rows sit inside a `SELECT_LISTBOX_ROLE` (`"listbox"`) container, so `option` + `aria-selected` is
78
+ the textbook-correct ARIA listbox pattern; only the row's `accessibilityRole` changed, `aria-selected`
79
+ was already the right prop.
61
80
  - **2.3.3** — RN's `Modal animationType` is always `"none"`; the reveal is `core/motion`'s
62
81
  `useReveal`, which snaps to the final state (no tween) under reduce-motion. Row press feedback
63
82
  and the check fade go through the same `motion.enabled` gate. Covered by
64
83
  `__tests__/Select.motion.test.tsx`.
65
84
  - Disabled is exempt from the contrast minimum (WCAG 1.4.3) — like Button, it's signalled by a
66
85
  uniform `opacity: 0.5` dim rather than a separate, still-must-pass colour pair.
86
+ - **Android touch feedback** — the trigger and every option row carry `android_ripple`
87
+ (`rippleColor(theme.mode)`, `borderless: false`), gated on `Platform.OS === "android"`. The trigger
88
+ and the sheet container both gained `overflow: "hidden"` so the ripple clips to their rounded
89
+ bounds — rows have no radius of their own, the sheet does. The backdrop carries no ripple; it is
90
+ `accessible={false}` and not a real press target.
67
91
 
68
92
  ## Patterns copied from Button (the reference module)
69
93
 
@@ -86,9 +110,9 @@ the tab stop, and `useFocusTrap` needs the focused node to still be tabbable or
86
110
  sheet. `useFocusTrap` also restores focus to the trigger on close; `useDismissOnEscape` closes on
87
111
  Escape.
88
112
 
89
- **`useRovingKeys` gets no `onActivate`.** RNW already presses a `menuitem` on Enter, and Space is
113
+ **`useRovingKeys` gets no `onActivate`.** RNW already presses on Enter regardless of role, and Space is
90
114
  supplied per row by `useSpaceActivation` (RNW's `isValidKeyPress` needs a `button` tag/role, which
91
- `menuitem` deliberately is not) — passing `onActivate` too would select twice.
115
+ `option` deliberately is not) — passing `onActivate` too would select twice.
92
116
 
93
117
  The list container is `SELECT_LISTBOX_ROLE`: RN 0.86's role unions have no `listbox`, so the
94
118
  widening is one audited cast in `Select.variants.ts` rather than a cast at the call site.
@@ -99,9 +123,7 @@ widening is one audited cast in `Select.variants.ts` rather than a cast at the c
99
123
  was built against. A future `Combobox`/`MultiSelect` would be a separate module, not a prop
100
124
  added here (closed-prop-contract).
101
125
  - The trigger's focus ring is a border-colour swap (`border.focus`), not Button's offset ring —
102
- intentional: Select mimics Input-style focus conventions, which this library has not built an
103
- `Input` module to confirm against yet (parallel build). Revisit if `Input` lands a different
104
- convention and the two should be reconciled.
126
+ intentional: Select follows `input/`'s focus convention rather than Button's.
105
127
  - No measured anchor position — the overlay always centers within its container, regardless of
106
128
  where the trigger sits on screen, same as Menu's identical `justifyContent: "center"` overlay
107
129
  (see `menu/MODULE.md`'s Known gaps). A real anchor would need `Button` to forward refs (it
@@ -156,3 +178,5 @@ Via `core/motion` only — `opacity`/`transform`, native driver, all reduce-moti
156
178
 
157
179
  - Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
158
180
  - List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
181
+
182
+ Backdrop scrim uses MOTION_TRANSFORM.scrimOpacity (aligned with Modal).