pixelize-native-library 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (808) hide show
  1. package/COMPONENT-GOTCHAS.md +309 -0
  2. package/DESIGN-GUIDE.md +215 -0
  3. package/README.md +44 -0
  4. package/lib/module/core/MODULE.md +22 -16
  5. package/lib/module/core/a11y/MODULE.md +7 -7
  6. package/lib/module/core/a11y/touchTarget.js +6 -0
  7. package/lib/module/core/blur/blur.js +17 -0
  8. package/lib/module/core/blur/index.js +4 -0
  9. package/lib/module/core/device/MODULE.md +5 -8
  10. package/lib/module/core/gradient/AccentGradientFill.js +9 -6
  11. package/lib/module/core/gradient/ShimmerGradientFill.js +79 -0
  12. package/lib/module/core/gradient/index.js +1 -0
  13. package/lib/module/core/haptics/MODULE.md +7 -3
  14. package/lib/module/core/heading/MODULE.md +1 -1
  15. package/lib/module/core/icon/MODULE.md +14 -22
  16. package/lib/module/core/icon/icons/building-2.js +1 -1
  17. package/lib/module/core/icon/icons/trash.js +1 -1
  18. package/lib/module/core/list/VirtualList.js +16 -3
  19. package/lib/module/core/motion/MODULE.md +18 -9
  20. package/lib/module/core/motion/animatedComponents.js +8 -0
  21. package/lib/module/core/motion/index.js +2 -0
  22. package/lib/module/core/motion/motionAnimation.js +87 -0
  23. package/lib/module/core/motion/presets.js +81 -81
  24. package/lib/module/core/motion/reanimatedEasing.js +19 -0
  25. package/lib/module/core/motion/useAnimatedValue.js +2 -14
  26. package/lib/module/core/motion/useMotion.js +19 -20
  27. package/lib/module/core/motion/usePressState.js +0 -5
  28. package/lib/module/core/overlay/MODULE.md +17 -0
  29. package/lib/module/core/overlay/ModalPortalContext.js +8 -0
  30. package/lib/module/core/overlay/index.js +5 -0
  31. package/lib/module/core/overlay/renderWebPortal.js +6 -0
  32. package/lib/module/core/overlay/renderWebPortal.web.js +8 -0
  33. package/lib/module/core/screen-scroll/ScreenScrollContext.js +9 -0
  34. package/lib/module/core/screen-scroll/index.js +4 -0
  35. package/lib/module/core/slot/MODULE.md +9 -0
  36. package/lib/module/core/slot/index.js +4 -0
  37. package/lib/module/core/slot/nodeSlot.js +21 -0
  38. package/lib/module/core/style/focusRing.js +37 -0
  39. package/lib/module/core/style/index.js +1 -1
  40. package/lib/module/index.js +23 -4
  41. package/lib/module/modules/accordion/Accordion.js +50 -108
  42. package/lib/module/modules/accordion/Accordion.variants.js +2 -4
  43. package/lib/module/modules/accordion/AccordionProps.js +4 -0
  44. package/lib/module/modules/accordion/MODULE.md +15 -24
  45. package/lib/module/modules/alert-dialog/AlertDialog.js +19 -2
  46. package/lib/module/modules/alert-dialog/AlertDialogProps.js +4 -0
  47. package/lib/module/modules/alert-dialog/MODULE.md +2 -1
  48. package/lib/module/modules/app-bar/AppBar.js +21 -18
  49. package/lib/module/modules/app-bar/AppBar.variants.js +5 -0
  50. package/lib/module/modules/app-bar/AppBarProps.js +4 -0
  51. package/lib/module/modules/app-bar/MODULE.md +1 -1
  52. package/lib/module/modules/app-switcher/AppSwitcher.js +30 -0
  53. package/lib/module/modules/app-switcher/AppSwitcherProps.js +4 -0
  54. package/lib/module/modules/app-switcher/MODULE.md +14 -0
  55. package/lib/module/modules/app-switcher/index.js +4 -0
  56. package/lib/module/modules/appearance-settings/AppearanceSettings.js +58 -0
  57. package/lib/module/modules/appearance-settings/AppearanceSettingsProps.js +4 -0
  58. package/lib/module/modules/appearance-settings/MODULE.md +9 -0
  59. package/lib/module/modules/appearance-settings/index.js +4 -0
  60. package/lib/module/modules/avatar/Avatar.variants.js +2 -0
  61. package/lib/module/modules/avatar/AvatarProps.js +4 -0
  62. package/lib/module/modules/avatar/MODULE.md +3 -3
  63. package/lib/module/modules/avatar-group/AvatarGroupProps.js +4 -0
  64. package/lib/module/modules/avatar-group/MODULE.md +2 -1
  65. package/lib/module/modules/backdrop/Backdrop.js +38 -0
  66. package/lib/module/modules/backdrop/BackdropProps.js +4 -0
  67. package/lib/module/modules/backdrop/MODULE.md +11 -0
  68. package/lib/module/modules/backdrop/index.js +4 -0
  69. package/lib/module/modules/badge/BadgeProps.js +4 -0
  70. package/lib/module/modules/badge/MODULE.md +6 -4
  71. package/lib/module/modules/banner/Banner.js +2 -2
  72. package/lib/module/modules/banner/Banner.variants.js +3 -1
  73. package/lib/module/modules/banner/BannerProps.js +4 -0
  74. package/lib/module/modules/banner/MODULE.md +20 -31
  75. package/lib/module/modules/bottom-nav/BottomNav.variants.js +2 -2
  76. package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js +18 -19
  77. package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js +8 -7
  78. package/lib/module/modules/bottom-nav/BottomNavProps.js +4 -0
  79. package/lib/module/modules/bottom-nav/BottomNavTab.js +15 -16
  80. package/lib/module/modules/bottom-nav/MODULE.md +13 -13
  81. package/lib/module/modules/bottom-sheet/BottomSheet.js +30 -7
  82. package/lib/module/modules/bottom-sheet/BottomSheetProps.js +4 -0
  83. package/lib/module/modules/bottom-sheet/MODULE.md +11 -1
  84. package/lib/module/modules/breadcrumbs/Breadcrumbs.js +54 -0
  85. package/lib/module/modules/breadcrumbs/Breadcrumbs.variants.js +28 -0
  86. package/lib/module/modules/breadcrumbs/BreadcrumbsProps.js +4 -0
  87. package/lib/module/modules/breadcrumbs/MODULE.md +13 -0
  88. package/lib/module/modules/breadcrumbs/index.js +4 -0
  89. package/lib/module/modules/button/Button.js +6 -4
  90. package/lib/module/modules/button/Button.variants.js +12 -16
  91. package/lib/module/modules/button/ButtonProps.js +4 -0
  92. package/lib/module/modules/button/MODULE.md +6 -11
  93. package/lib/module/modules/button-group/ButtonGroup.js +4 -3
  94. package/lib/module/modules/button-group/ButtonGroup.variants.js +2 -4
  95. package/lib/module/modules/button-group/ButtonGroupProps.js +4 -0
  96. package/lib/module/modules/button-group/MODULE.md +2 -2
  97. package/lib/module/modules/card/Card.js +30 -7
  98. package/lib/module/modules/card/CardProps.js +4 -0
  99. package/lib/module/modules/card/MODULE.md +4 -2
  100. package/lib/module/modules/charts/BarChart.js +6 -4
  101. package/lib/module/modules/charts/BarChartProps.js +4 -0
  102. package/lib/module/modules/charts/BarList.js +2 -1
  103. package/lib/module/modules/charts/BarListProps.js +4 -0
  104. package/lib/module/modules/charts/ChartLegendProps.js +4 -0
  105. package/lib/module/modules/charts/Charts.variants.js +3 -1
  106. package/lib/module/modules/charts/DonutChart.js +3 -2
  107. package/lib/module/modules/charts/DonutChartProps.js +4 -0
  108. package/lib/module/modules/charts/LineChart.js +3 -2
  109. package/lib/module/modules/charts/LineChartProps.js +4 -0
  110. package/lib/module/modules/charts/MODULE.md +14 -14
  111. package/lib/module/modules/charts/PieChart.js +6 -4
  112. package/lib/module/modules/charts/PieChartProps.js +4 -0
  113. package/lib/module/modules/charts/SparklineProps.js +4 -0
  114. package/lib/module/modules/checkbox/Checkbox.js +21 -27
  115. package/lib/module/modules/checkbox/Checkbox.variants.js +4 -2
  116. package/lib/module/modules/checkbox/CheckboxProps.js +4 -0
  117. package/lib/module/modules/checkbox/MODULE.md +12 -6
  118. package/lib/module/modules/chip/Chip.js +49 -32
  119. package/lib/module/modules/chip/Chip.variants.js +3 -2
  120. package/lib/module/modules/chip/ChipGroup.js +16 -5
  121. package/lib/module/modules/chip/ChipGroupProps.js +4 -0
  122. package/lib/module/modules/chip/ChipProps.js +4 -0
  123. package/lib/module/modules/chip/MODULE.md +5 -7
  124. package/lib/module/modules/combobox/Combobox.js +22 -25
  125. package/lib/module/modules/combobox/Combobox.variants.js +2 -3
  126. package/lib/module/modules/combobox/ComboboxProps.js +4 -0
  127. package/lib/module/modules/combobox/MODULE.md +6 -12
  128. package/lib/module/modules/composer/Composer.js +11 -9
  129. package/lib/module/modules/composer/ComposerProps.js +4 -0
  130. package/lib/module/modules/composer/MODULE.md +6 -6
  131. package/lib/module/modules/copy-button/CopyButton.js +14 -6
  132. package/lib/module/modules/copy-button/CopyButton.variants.js +3 -2
  133. package/lib/module/modules/copy-button/CopyButtonProps.js +4 -0
  134. package/lib/module/modules/copy-button/MODULE.md +10 -12
  135. package/lib/module/modules/data-table/DataTable.js +11 -7
  136. package/lib/module/modules/data-table/DataTable.variants.js +2 -2
  137. package/lib/module/modules/data-table/DataTableProps.js +4 -0
  138. package/lib/module/modules/data-table/MODULE.md +5 -10
  139. package/lib/module/modules/date-picker/Calendar.js +11 -8
  140. package/lib/module/modules/date-picker/CalendarProps.js +4 -0
  141. package/lib/module/modules/date-picker/DatePicker.variants.js +2 -1
  142. package/lib/module/modules/date-picker/DatePickerProps.js +4 -0
  143. package/lib/module/modules/date-picker/DateRangePickerProps.js +4 -0
  144. package/lib/module/modules/date-picker/MODULE.md +6 -9
  145. package/lib/module/modules/date-picker/PickerFieldProps.js +4 -0
  146. package/lib/module/modules/date-picker/PickerShell.js +21 -12
  147. package/lib/module/modules/date-picker/PickerShellProps.js +4 -0
  148. package/lib/module/modules/date-picker/TimePicker.js +3 -2
  149. package/lib/module/modules/date-picker/TimePickerProps.js +4 -0
  150. package/lib/module/modules/description-list/DescriptionList.js +90 -0
  151. package/lib/module/modules/description-list/DescriptionList.variants.js +63 -0
  152. package/lib/module/modules/description-list/DescriptionListProps.js +4 -0
  153. package/lib/module/modules/description-list/MODULE.md +15 -0
  154. package/lib/module/modules/description-list/index.js +4 -0
  155. package/lib/module/modules/divider/DividerProps.js +4 -0
  156. package/lib/module/modules/divider/MODULE.md +1 -8
  157. package/lib/module/modules/document-viewer/DocumentViewer.js +35 -0
  158. package/lib/module/modules/document-viewer/DocumentViewerProps.js +4 -0
  159. package/lib/module/modules/document-viewer/MODULE.md +12 -0
  160. package/lib/module/modules/document-viewer/index.js +4 -0
  161. package/lib/module/modules/drawer/Drawer.js +45 -40
  162. package/lib/module/modules/drawer/DrawerProps.js +4 -0
  163. package/lib/module/modules/drawer/MODULE.md +14 -24
  164. package/lib/module/modules/empty-state/EmptyState.js +2 -1
  165. package/lib/module/modules/empty-state/EmptyStateProps.js +4 -0
  166. package/lib/module/modules/empty-state/MODULE.md +4 -9
  167. package/lib/module/modules/fab/Fab.js +9 -11
  168. package/lib/module/modules/fab/Fab.variants.js +10 -4
  169. package/lib/module/modules/fab/FabGroup.js +40 -43
  170. package/lib/module/modules/fab/FabGroupProps.js +4 -0
  171. package/lib/module/modules/fab/FabProps.js +4 -0
  172. package/lib/module/modules/fab/MODULE.md +10 -17
  173. package/lib/module/modules/field-select-modal/FieldSelectModal.js +52 -0
  174. package/lib/module/modules/field-select-modal/FieldSelectModalProps.js +4 -0
  175. package/lib/module/modules/field-select-modal/MODULE.md +13 -0
  176. package/lib/module/modules/field-select-modal/index.js +4 -0
  177. package/lib/module/modules/file-grid/FileGrid.js +3 -2
  178. package/lib/module/modules/file-grid/FileGridProps.js +4 -0
  179. package/lib/module/modules/file-grid/MODULE.md +27 -4
  180. package/lib/module/modules/file-upload/FileUpload.js +56 -15
  181. package/lib/module/modules/file-upload/FileUploadProps.js +4 -0
  182. package/lib/module/modules/file-upload/MODULE.md +10 -14
  183. package/lib/module/modules/filter-bar/FilterBar.js +68 -0
  184. package/lib/module/modules/filter-bar/FilterBarProps.js +4 -0
  185. package/lib/module/modules/filter-bar/MODULE.md +16 -0
  186. package/lib/module/modules/filter-bar/index.js +4 -0
  187. package/lib/module/modules/filter-sheet/FilterChip.js +3 -2
  188. package/lib/module/modules/filter-sheet/FilterChipProps.js +4 -0
  189. package/lib/module/modules/filter-sheet/FilterSheet.js +19 -14
  190. package/lib/module/modules/filter-sheet/FilterSheet.variants.js +2 -3
  191. package/lib/module/modules/filter-sheet/FilterSheetBody.js +26 -16
  192. package/lib/module/modules/filter-sheet/FilterSheetProps.js +2 -0
  193. package/lib/module/modules/filter-sheet/MODULE.md +5 -14
  194. package/lib/module/modules/folder-row/FolderRow.js +6 -4
  195. package/lib/module/modules/folder-row/FolderRowProps.js +4 -0
  196. package/lib/module/modules/folder-row/MODULE.md +6 -5
  197. package/lib/module/modules/form-field/FormField.js +9 -4
  198. package/lib/module/modules/form-field/FormFieldProps.js +4 -0
  199. package/lib/module/modules/form-field/MODULE.md +2 -7
  200. package/lib/module/modules/gantt/Gantt.js +23 -6
  201. package/lib/module/modules/gantt/Gantt.variants.js +12 -4
  202. package/lib/module/modules/gantt/GanttProps.js +4 -0
  203. package/lib/module/modules/gantt/MODULE.md +3 -3
  204. package/lib/module/modules/image-viewer/ImageViewer.js +3 -2
  205. package/lib/module/modules/image-viewer/ImageViewerProps.js +4 -0
  206. package/lib/module/modules/image-viewer/MODULE.md +1 -1
  207. package/lib/module/modules/input/Input.js +55 -20
  208. package/lib/module/modules/input/Input.variants.js +2 -3
  209. package/lib/module/modules/input/InputProps.js +4 -0
  210. package/lib/module/modules/input/MODULE.md +9 -16
  211. package/lib/module/modules/key-value/KeyValue.js +36 -0
  212. package/lib/module/modules/key-value/KeyValueProps.js +4 -0
  213. package/lib/module/modules/key-value/MODULE.md +16 -0
  214. package/lib/module/modules/key-value/index.js +4 -0
  215. package/lib/module/modules/limit-reached-modal/LimitReachedModalProps.js +4 -0
  216. package/lib/module/modules/limit-reached-modal/MODULE.md +1 -6
  217. package/lib/module/modules/list-item/ListItem.js +17 -6
  218. package/lib/module/modules/list-item/ListItemProps.js +4 -0
  219. package/lib/module/modules/list-item/MODULE.md +14 -9
  220. package/lib/module/modules/list-screen/ListScreen.js +63 -0
  221. package/lib/module/modules/list-screen/ListScreenProps.js +4 -0
  222. package/lib/module/modules/list-screen/MODULE.md +12 -0
  223. package/lib/module/modules/list-screen/index.js +4 -0
  224. package/lib/module/modules/markdown/MODULE.md +0 -6
  225. package/lib/module/modules/markdown/MarkdownProps.js +4 -0
  226. package/lib/module/modules/menu/MODULE.md +10 -17
  227. package/lib/module/modules/menu/Menu.js +66 -52
  228. package/lib/module/modules/menu/Menu.variants.js +2 -2
  229. package/lib/module/modules/menu/MenuProps.js +4 -0
  230. package/lib/module/modules/message-bubble/MODULE.md +5 -4
  231. package/lib/module/modules/message-bubble/MessageBubbleProps.js +4 -0
  232. package/lib/module/modules/modal/MODULE.md +56 -93
  233. package/lib/module/modules/modal/Modal.js +99 -30
  234. package/lib/module/modules/modal/ModalPortalContext.js +1 -22
  235. package/lib/module/modules/modal/ModalPortalProvider.js +1 -1
  236. package/lib/module/modules/modal/ModalPortalProviderProps.js +4 -0
  237. package/lib/module/modules/modal/ModalProps.js +4 -0
  238. package/lib/module/modules/modal/renderWebPortal.js +1 -15
  239. package/lib/module/modules/modal/renderWebPortal.web.js +1 -21
  240. package/lib/module/modules/more-items/MODULE.md +0 -2
  241. package/lib/module/modules/more-items/MoreItems.js +10 -7
  242. package/lib/module/modules/more-items/MoreItems.variants.js +2 -1
  243. package/lib/module/modules/more-items/MoreItemsProps.js +4 -0
  244. package/lib/module/modules/multi-select/MODULE.md +5 -11
  245. package/lib/module/modules/multi-select/MultiSelect.js +38 -23
  246. package/lib/module/modules/multi-select/MultiSelect.variants.js +4 -2
  247. package/lib/module/modules/multi-select/MultiSelectProps.js +4 -0
  248. package/lib/module/modules/notification-bell/MODULE.md +8 -0
  249. package/lib/module/modules/notification-bell/NotificationBell.js +43 -0
  250. package/lib/module/modules/notification-bell/NotificationBellProps.js +4 -0
  251. package/lib/module/modules/notification-bell/index.js +4 -0
  252. package/lib/module/modules/number-input/MODULE.md +8 -13
  253. package/lib/module/modules/number-input/NumberInput.js +8 -6
  254. package/lib/module/modules/number-input/NumberInput.variants.js +2 -4
  255. package/lib/module/modules/number-input/NumberInputProps.js +4 -0
  256. package/lib/module/modules/org-switcher/MODULE.md +5 -12
  257. package/lib/module/modules/org-switcher/OrgSwitcher.js +21 -19
  258. package/lib/module/modules/org-switcher/OrgSwitcher.variants.js +4 -2
  259. package/lib/module/modules/org-switcher/OrgSwitcherProps.js +4 -0
  260. package/lib/module/modules/pagination/MODULE.md +2 -5
  261. package/lib/module/modules/pagination/Pagination.js +25 -15
  262. package/lib/module/modules/pagination/Pagination.variants.js +2 -2
  263. package/lib/module/modules/pagination/PaginationControls.js +7 -5
  264. package/lib/module/modules/pagination/PaginationProps.js +4 -0
  265. package/lib/module/modules/person-chip/MODULE.md +11 -0
  266. package/lib/module/modules/person-chip/PersonChip.js +65 -0
  267. package/lib/module/modules/person-chip/PersonChipProps.js +4 -0
  268. package/lib/module/modules/person-chip/index.js +4 -0
  269. package/lib/module/modules/pin-input/MODULE.md +9 -20
  270. package/lib/module/modules/pin-input/PinInput.js +2 -2
  271. package/lib/module/modules/pin-input/PinInput.variants.js +2 -3
  272. package/lib/module/modules/pin-input/PinInputProps.js +4 -0
  273. package/lib/module/modules/plan-badge/MODULE.md +4 -0
  274. package/lib/module/modules/plan-badge/PlanBadge.js +25 -0
  275. package/lib/module/modules/plan-badge/PlanBadgeProps.js +4 -0
  276. package/lib/module/modules/plan-badge/index.js +4 -0
  277. package/lib/module/modules/plan-pill/MODULE.md +4 -0
  278. package/lib/module/modules/plan-pill/PlanPill.js +24 -0
  279. package/lib/module/modules/plan-pill/PlanPillProps.js +4 -0
  280. package/lib/module/modules/plan-pill/index.js +4 -0
  281. package/lib/module/modules/progress-bar/MODULE.md +12 -14
  282. package/lib/module/modules/progress-bar/ProgressBar.js +28 -36
  283. package/lib/module/modules/progress-bar/ProgressBarProps.js +4 -0
  284. package/lib/module/modules/radio-group/MODULE.md +6 -12
  285. package/lib/module/modules/radio-group/RadioGroup.js +7 -6
  286. package/lib/module/modules/radio-group/RadioGroup.variants.js +2 -3
  287. package/lib/module/modules/radio-group/RadioGroupProps.js +4 -0
  288. package/lib/module/modules/reorder/MODULE.md +7 -11
  289. package/lib/module/modules/reorder/Reorder.js +8 -3
  290. package/lib/module/modules/reorder/Reorder.variants.js +3 -4
  291. package/lib/module/modules/reorder/ReorderProps.js +4 -0
  292. package/lib/module/modules/rich-text/MODULE.md +4 -4
  293. package/lib/module/modules/rich-text/RichTextProps.js +4 -0
  294. package/lib/module/modules/rich-text-editor/MODULE.md +6 -16
  295. package/lib/module/modules/rich-text-editor/RichTextEditor.js +5 -4
  296. package/lib/module/modules/rich-text-editor/RichTextEditorProps.js +4 -0
  297. package/lib/module/modules/save-bar/MODULE.md +3 -0
  298. package/lib/module/modules/save-bar/SaveBar.js +49 -0
  299. package/lib/module/modules/save-bar/SaveBarProps.js +4 -0
  300. package/lib/module/modules/save-bar/index.js +4 -0
  301. package/lib/module/modules/screen/MODULE.md +7 -5
  302. package/lib/module/modules/screen/Screen.js +65 -22
  303. package/lib/module/modules/screen/ScreenProps.js +4 -0
  304. package/lib/module/modules/search-bar/MODULE.md +8 -8
  305. package/lib/module/modules/search-bar/SearchBar.js +8 -6
  306. package/lib/module/modules/search-bar/SearchBar.variants.js +2 -4
  307. package/lib/module/modules/search-bar/SearchBarProps.js +4 -0
  308. package/lib/module/modules/section/MODULE.md +1 -1
  309. package/lib/module/modules/section/Section.js +6 -1
  310. package/lib/module/modules/section/SectionProps.js +4 -0
  311. package/lib/module/modules/section-list/MODULE.md +21 -1
  312. package/lib/module/modules/section-list/SectionListProps.js +4 -0
  313. package/lib/module/modules/segmented-control/MODULE.md +30 -28
  314. package/lib/module/modules/segmented-control/SegmentedControl.js +20 -30
  315. package/lib/module/modules/segmented-control/SegmentedControl.variants.js +9 -42
  316. package/lib/module/modules/segmented-control/SegmentedControlProps.js +4 -0
  317. package/lib/module/modules/select/MODULE.md +8 -5
  318. package/lib/module/modules/select/Select.js +38 -25
  319. package/lib/module/modules/select/Select.variants.js +4 -5
  320. package/lib/module/modules/select/SelectProps.js +4 -0
  321. package/lib/module/modules/setting-row/MODULE.md +8 -0
  322. package/lib/module/modules/setting-row/SettingRow.js +50 -0
  323. package/lib/module/modules/setting-row/SettingRowProps.js +4 -0
  324. package/lib/module/modules/setting-row/index.js +4 -0
  325. package/lib/module/modules/settings-section/MODULE.md +7 -0
  326. package/lib/module/modules/settings-section/SettingsSection.js +37 -0
  327. package/lib/module/modules/settings-section/SettingsSectionProps.js +4 -0
  328. package/lib/module/modules/settings-section/index.js +4 -0
  329. package/lib/module/modules/skeleton/MODULE.md +2 -1
  330. package/lib/module/modules/skeleton/Skeleton.js +14 -8
  331. package/lib/module/modules/skeleton/Skeleton.variants.js +4 -9
  332. package/lib/module/modules/skeleton/SkeletonProps.js +4 -0
  333. package/lib/module/modules/slider/MODULE.md +2 -1
  334. package/lib/module/modules/slider/Slider.js +6 -6
  335. package/lib/module/modules/slider/Slider.variants.js +4 -2
  336. package/lib/module/modules/slider/SliderProps.js +4 -0
  337. package/lib/module/modules/spinner/MODULE.md +3 -2
  338. package/lib/module/modules/spinner/SpinnerProps.js +4 -0
  339. package/lib/module/modules/stage-progress/MODULE.md +20 -6
  340. package/lib/module/modules/stage-progress/StageProgress.js +45 -15
  341. package/lib/module/modules/stage-progress/StageProgress.variants.js +40 -8
  342. package/lib/module/modules/stage-progress/StageProgressProps.js +4 -0
  343. package/lib/module/modules/stat-grid/MODULE.md +11 -0
  344. package/lib/module/modules/stat-grid/StatGrid.js +34 -0
  345. package/lib/module/modules/stat-grid/StatGridProps.js +4 -0
  346. package/lib/module/modules/stat-grid/index.js +4 -0
  347. package/lib/module/modules/stat-tile/MODULE.md +12 -1
  348. package/lib/module/modules/stat-tile/StatTile.js +40 -15
  349. package/lib/module/modules/stat-tile/StatTile.variants.js +5 -0
  350. package/lib/module/modules/stat-tile/StatTileProps.js +4 -0
  351. package/lib/module/modules/state-block/MODULE.md +9 -3
  352. package/lib/module/modules/state-block/StateBlock.js +46 -38
  353. package/lib/module/modules/state-block/StateBlockProps.js +4 -0
  354. package/lib/module/modules/stepper/MODULE.md +2 -0
  355. package/lib/module/modules/stepper/Stepper.js +22 -21
  356. package/lib/module/modules/stepper/Stepper.variants.js +2 -0
  357. package/lib/module/modules/stepper/StepperProps.js +4 -0
  358. package/lib/module/modules/surface/MODULE.md +6 -8
  359. package/lib/module/modules/surface/Surface.js +6 -1
  360. package/lib/module/modules/surface/SurfaceProps.js +4 -0
  361. package/lib/module/modules/swipeable-row/MODULE.md +3 -2
  362. package/lib/module/modules/swipeable-row/SwipeableRow.js +31 -8
  363. package/lib/module/modules/swipeable-row/SwipeableRowProps.js +4 -0
  364. package/lib/module/modules/switch/MODULE.md +6 -3
  365. package/lib/module/modules/switch/Switch.js +42 -8
  366. package/lib/module/modules/switch/Switch.variants.js +2 -3
  367. package/lib/module/modules/switch/SwitchProps.js +4 -0
  368. package/lib/module/modules/tabs/MODULE.md +10 -14
  369. package/lib/module/modules/tabs/Tabs.js +84 -39
  370. package/lib/module/modules/tabs/Tabs.variants.js +2 -4
  371. package/lib/module/modules/tabs/TabsProps.js +4 -0
  372. package/lib/module/modules/text/MODULE.md +25 -17
  373. package/lib/module/modules/text/Text.variants.js +9 -1
  374. package/lib/module/modules/text/TextProps.js +4 -0
  375. package/lib/module/modules/textarea/MODULE.md +12 -18
  376. package/lib/module/modules/textarea/Textarea.js +12 -10
  377. package/lib/module/modules/textarea/Textarea.variants.js +4 -1
  378. package/lib/module/modules/textarea/TextareaProps.js +4 -0
  379. package/lib/module/modules/timeline/MODULE.md +8 -17
  380. package/lib/module/modules/timeline/Timeline.js +79 -22
  381. package/lib/module/modules/timeline/Timeline.variants.js +2 -0
  382. package/lib/module/modules/timeline/TimelineProps.js +4 -0
  383. package/lib/module/modules/toast/MODULE.md +13 -20
  384. package/lib/module/modules/toast/Toast.js +53 -51
  385. package/lib/module/modules/toast/Toast.variants.js +2 -5
  386. package/lib/module/modules/tooltip/MODULE.md +9 -13
  387. package/lib/module/modules/tooltip/Tooltip.js +36 -7
  388. package/lib/module/modules/tooltip/TooltipProps.js +4 -0
  389. package/lib/module/modules/typing-indicator/MODULE.md +1 -1
  390. package/lib/module/modules/typing-indicator/TypingIndicator.js +78 -51
  391. package/lib/module/modules/typing-indicator/TypingIndicatorProps.js +4 -0
  392. package/lib/module/modules/upgrade-button/MODULE.md +3 -0
  393. package/lib/module/modules/upgrade-button/UpgradeButton.js +23 -0
  394. package/lib/module/modules/upgrade-button/UpgradeButtonProps.js +4 -0
  395. package/lib/module/modules/upgrade-button/index.js +4 -0
  396. package/lib/module/theme/MODULE.md +2 -0
  397. package/lib/module/theme/platform/MODULE.md +2 -6
  398. package/lib/module/theme/platform/elevation.native.js +1 -7
  399. package/lib/module/theme/provider/PixelizeProvider.js +6 -0
  400. package/lib/module/theme/tokens/MODULE.md +4 -0
  401. package/lib/module/theme/tokens/THEME-CONTRACT.md +53 -3
  402. package/lib/module/theme/tokens/brands/emerald/palette.light.js +5 -3
  403. package/lib/module/theme/tokens/brands/lavender/palette.light.js +4 -4
  404. package/lib/module/theme/tokens/brands/meadow/palette.light.js +2 -2
  405. package/lib/module/theme/tokens/brands/radiant/palette.light.js +3 -3
  406. package/lib/module/theme/tokens/brands/rosewood/palette.light.js +3 -3
  407. package/lib/module/theme/tokens/brands/skyline/palette.light.js +2 -2
  408. package/lib/module/theme/tokens/brands/slate/palette.light.js +3 -3
  409. package/lib/module/theme/tokens/builders/accentText.js +10 -1
  410. package/lib/module/theme/tokens/builders/buildBrandScale.js +42 -0
  411. package/lib/module/theme/tokens/builders/gradientInk.js +23 -0
  412. package/lib/module/theme/tokens/builders/paletteFromAccent.js +30 -0
  413. package/lib/module/theme/tokens/builders/skeletonShimmer.js +22 -0
  414. package/lib/module/theme/tokens/index.js +3 -0
  415. package/lib/module/theme/tokens/primitives/controlSizes.js +16 -0
  416. package/lib/module/theme/tokens/primitives/index.js +1 -0
  417. package/lib/module/theme/tokens/roles/index.js +2 -0
  418. package/lib/typescript/core/a11y/touchTarget.d.ts +4 -0
  419. package/lib/typescript/core/blur/blur.d.ts +14 -0
  420. package/lib/typescript/core/blur/index.d.ts +3 -0
  421. package/lib/typescript/core/gradient/ShimmerGradientFill.d.ts +8 -0
  422. package/lib/typescript/core/gradient/index.d.ts +1 -0
  423. package/lib/typescript/core/list/VirtualList.d.ts +6 -1
  424. package/lib/typescript/core/motion/animatedComponents.d.ts +4 -0
  425. package/lib/typescript/core/motion/index.d.ts +2 -0
  426. package/lib/typescript/core/motion/motionAnimation.d.ts +12 -0
  427. package/lib/typescript/core/motion/presets.d.ts +5 -36
  428. package/lib/typescript/core/motion/reanimatedEasing.d.ts +4 -0
  429. package/lib/typescript/core/motion/useAnimatedValue.d.ts +2 -10
  430. package/lib/typescript/core/motion/useMotion.d.ts +4 -13
  431. package/lib/typescript/core/motion/usePressState.d.ts +0 -1
  432. package/lib/typescript/core/overlay/ModalPortalContext.d.ts +2 -0
  433. package/lib/typescript/core/overlay/index.d.ts +3 -0
  434. package/lib/typescript/core/overlay/renderWebPortal.d.ts +3 -0
  435. package/lib/typescript/core/overlay/renderWebPortal.web.d.ts +3 -0
  436. package/lib/typescript/core/screen-scroll/ScreenScrollContext.d.ts +8 -0
  437. package/lib/typescript/core/screen-scroll/index.d.ts +3 -0
  438. package/lib/typescript/core/slot/index.d.ts +2 -0
  439. package/lib/typescript/core/slot/nodeSlot.d.ts +5 -0
  440. package/lib/typescript/core/style/focusRing.d.ts +10 -0
  441. package/lib/typescript/core/style/index.d.ts +1 -1
  442. package/lib/typescript/index.d.ts +49 -11
  443. package/lib/typescript/modules/accordion/Accordion.d.ts +2 -37
  444. package/lib/typescript/modules/accordion/Accordion.variants.d.ts +2 -3
  445. package/lib/typescript/modules/accordion/AccordionProps.d.ts +49 -0
  446. package/lib/typescript/modules/accordion/index.d.ts +1 -1
  447. package/lib/typescript/modules/alert-dialog/AlertDialog.d.ts +2 -15
  448. package/lib/typescript/modules/alert-dialog/AlertDialogProps.d.ts +20 -0
  449. package/lib/typescript/modules/alert-dialog/index.d.ts +1 -1
  450. package/lib/typescript/modules/app-bar/AppBar.d.ts +1 -20
  451. package/lib/typescript/modules/app-bar/AppBar.variants.d.ts +4 -0
  452. package/lib/typescript/modules/app-bar/AppBarProps.d.ts +25 -0
  453. package/lib/typescript/modules/app-bar/index.d.ts +1 -1
  454. package/lib/typescript/modules/app-switcher/AppSwitcher.d.ts +3 -0
  455. package/lib/typescript/modules/app-switcher/AppSwitcherProps.d.ts +17 -0
  456. package/lib/typescript/modules/app-switcher/index.d.ts +3 -0
  457. package/lib/typescript/modules/appearance-settings/AppearanceSettings.d.ts +3 -0
  458. package/lib/typescript/modules/appearance-settings/AppearanceSettingsProps.d.ts +15 -0
  459. package/lib/typescript/modules/appearance-settings/index.d.ts +3 -0
  460. package/lib/typescript/modules/avatar/Avatar.d.ts +2 -33
  461. package/lib/typescript/modules/avatar/Avatar.variants.d.ts +2 -0
  462. package/lib/typescript/modules/avatar/AvatarProps.d.ts +23 -0
  463. package/lib/typescript/modules/avatar/index.d.ts +1 -1
  464. package/lib/typescript/modules/avatar-group/AvatarGroup.d.ts +1 -18
  465. package/lib/typescript/modules/avatar-group/AvatarGroupProps.d.ts +27 -0
  466. package/lib/typescript/modules/avatar-group/index.d.ts +1 -1
  467. package/lib/typescript/modules/backdrop/Backdrop.d.ts +3 -0
  468. package/lib/typescript/modules/backdrop/BackdropProps.d.ts +11 -0
  469. package/lib/typescript/modules/backdrop/index.d.ts +3 -0
  470. package/lib/typescript/modules/badge/Badge.d.ts +2 -14
  471. package/lib/typescript/modules/badge/BadgeProps.d.ts +17 -0
  472. package/lib/typescript/modules/badge/index.d.ts +1 -1
  473. package/lib/typescript/modules/banner/Banner.d.ts +1 -22
  474. package/lib/typescript/modules/banner/Banner.variants.d.ts +2 -0
  475. package/lib/typescript/modules/banner/BannerProps.d.ts +29 -0
  476. package/lib/typescript/modules/banner/index.d.ts +2 -1
  477. package/lib/typescript/modules/bottom-nav/BottomNav.d.ts +1 -34
  478. package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts +2 -1
  479. package/lib/typescript/modules/bottom-nav/BottomNavProps.d.ts +29 -0
  480. package/lib/typescript/modules/bottom-nav/index.d.ts +2 -1
  481. package/lib/typescript/modules/bottom-sheet/BottomSheet.d.ts +1 -13
  482. package/lib/typescript/modules/bottom-sheet/BottomSheetProps.d.ts +17 -0
  483. package/lib/typescript/modules/bottom-sheet/index.d.ts +1 -1
  484. package/lib/typescript/modules/breadcrumbs/Breadcrumbs.d.ts +3 -0
  485. package/lib/typescript/modules/breadcrumbs/Breadcrumbs.variants.d.ts +6 -0
  486. package/lib/typescript/modules/breadcrumbs/BreadcrumbsProps.d.ts +18 -0
  487. package/lib/typescript/modules/breadcrumbs/index.d.ts +3 -0
  488. package/lib/typescript/modules/button/Button.d.ts +1 -35
  489. package/lib/typescript/modules/button/Button.variants.d.ts +11 -15
  490. package/lib/typescript/modules/button/ButtonProps.d.ts +47 -0
  491. package/lib/typescript/modules/button/index.d.ts +1 -1
  492. package/lib/typescript/modules/button-group/ButtonGroup.d.ts +2 -17
  493. package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts +2 -3
  494. package/lib/typescript/modules/button-group/ButtonGroupProps.d.ts +21 -0
  495. package/lib/typescript/modules/button-group/index.d.ts +1 -1
  496. package/lib/typescript/modules/card/Card.d.ts +2 -15
  497. package/lib/typescript/modules/card/CardProps.d.ts +27 -0
  498. package/lib/typescript/modules/card/index.d.ts +1 -1
  499. package/lib/typescript/modules/charts/BarChart.d.ts +1 -24
  500. package/lib/typescript/modules/charts/BarChartProps.d.ts +36 -0
  501. package/lib/typescript/modules/charts/BarList.d.ts +1 -16
  502. package/lib/typescript/modules/charts/BarListProps.d.ts +22 -0
  503. package/lib/typescript/modules/charts/ChartLegend.d.ts +2 -14
  504. package/lib/typescript/modules/charts/ChartLegendProps.d.ts +19 -0
  505. package/lib/typescript/modules/charts/Charts.variants.d.ts +2 -0
  506. package/lib/typescript/modules/charts/DonutChart.d.ts +1 -19
  507. package/lib/typescript/modules/charts/DonutChartProps.d.ts +27 -0
  508. package/lib/typescript/modules/charts/LineChart.d.ts +1 -28
  509. package/lib/typescript/modules/charts/LineChartProps.d.ts +40 -0
  510. package/lib/typescript/modules/charts/PieChart.d.ts +1 -16
  511. package/lib/typescript/modules/charts/PieChartProps.d.ts +24 -0
  512. package/lib/typescript/modules/charts/Sparkline.d.ts +1 -11
  513. package/lib/typescript/modules/charts/SparklineProps.d.ts +17 -0
  514. package/lib/typescript/modules/charts/index.d.ts +6 -6
  515. package/lib/typescript/modules/checkbox/Checkbox.d.ts +1 -33
  516. package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts +2 -1
  517. package/lib/typescript/modules/checkbox/CheckboxProps.d.ts +27 -0
  518. package/lib/typescript/modules/checkbox/index.d.ts +1 -1
  519. package/lib/typescript/modules/chip/Chip.d.ts +1 -30
  520. package/lib/typescript/modules/chip/Chip.variants.d.ts +2 -1
  521. package/lib/typescript/modules/chip/ChipGroup.d.ts +1 -14
  522. package/lib/typescript/modules/chip/ChipGroupProps.d.ts +16 -0
  523. package/lib/typescript/modules/chip/ChipProps.d.ts +27 -0
  524. package/lib/typescript/modules/chip/index.d.ts +2 -2
  525. package/lib/typescript/modules/combobox/Combobox.d.ts +2 -45
  526. package/lib/typescript/modules/combobox/Combobox.variants.d.ts +3 -1
  527. package/lib/typescript/modules/combobox/ComboboxProps.d.ts +40 -0
  528. package/lib/typescript/modules/combobox/index.d.ts +1 -1
  529. package/lib/typescript/modules/composer/Composer.d.ts +1 -18
  530. package/lib/typescript/modules/composer/ComposerProps.d.ts +20 -0
  531. package/lib/typescript/modules/composer/index.d.ts +1 -1
  532. package/lib/typescript/modules/copy-button/CopyButton.d.ts +1 -15
  533. package/lib/typescript/modules/copy-button/CopyButton.variants.d.ts +2 -1
  534. package/lib/typescript/modules/copy-button/CopyButtonProps.d.ts +18 -0
  535. package/lib/typescript/modules/copy-button/index.d.ts +1 -1
  536. package/lib/typescript/modules/data-table/DataTable.d.ts +2 -31
  537. package/lib/typescript/modules/data-table/DataTable.variants.d.ts +2 -1
  538. package/lib/typescript/modules/data-table/DataTableProps.d.ts +43 -0
  539. package/lib/typescript/modules/data-table/index.d.ts +1 -1
  540. package/lib/typescript/modules/date-picker/Calendar.d.ts +1 -23
  541. package/lib/typescript/modules/date-picker/CalendarProps.d.ts +31 -0
  542. package/lib/typescript/modules/date-picker/DatePicker.d.ts +1 -27
  543. package/lib/typescript/modules/date-picker/DatePicker.variants.d.ts +2 -1
  544. package/lib/typescript/modules/date-picker/DatePickerProps.d.ts +33 -0
  545. package/lib/typescript/modules/date-picker/DateRangePicker.d.ts +1 -23
  546. package/lib/typescript/modules/date-picker/DateRangePickerProps.d.ts +27 -0
  547. package/lib/typescript/modules/date-picker/PickerField.d.ts +1 -17
  548. package/lib/typescript/modules/date-picker/PickerFieldProps.d.ts +19 -0
  549. package/lib/typescript/modules/date-picker/PickerShell.d.ts +1 -12
  550. package/lib/typescript/modules/date-picker/PickerShellProps.d.ts +16 -0
  551. package/lib/typescript/modules/date-picker/TimePicker.d.ts +1 -9
  552. package/lib/typescript/modules/date-picker/TimePickerProps.d.ts +14 -0
  553. package/lib/typescript/modules/date-picker/index.d.ts +4 -4
  554. package/lib/typescript/modules/description-list/DescriptionList.d.ts +8 -0
  555. package/lib/typescript/modules/description-list/DescriptionList.variants.d.ts +29 -0
  556. package/lib/typescript/modules/description-list/DescriptionListProps.d.ts +23 -0
  557. package/lib/typescript/modules/description-list/index.d.ts +4 -0
  558. package/lib/typescript/modules/divider/Divider.d.ts +1 -8
  559. package/lib/typescript/modules/divider/DividerProps.d.ts +11 -0
  560. package/lib/typescript/modules/divider/index.d.ts +1 -1
  561. package/lib/typescript/modules/document-viewer/DocumentViewer.d.ts +3 -0
  562. package/lib/typescript/modules/document-viewer/DocumentViewerProps.d.ts +13 -0
  563. package/lib/typescript/modules/document-viewer/index.d.ts +3 -0
  564. package/lib/typescript/modules/drawer/Drawer.d.ts +2 -7
  565. package/lib/typescript/modules/drawer/DrawerProps.d.ts +9 -0
  566. package/lib/typescript/modules/drawer/index.d.ts +1 -1
  567. package/lib/typescript/modules/empty-state/EmptyState.d.ts +1 -17
  568. package/lib/typescript/modules/empty-state/EmptyStateProps.d.ts +24 -0
  569. package/lib/typescript/modules/empty-state/index.d.ts +1 -1
  570. package/lib/typescript/modules/fab/Fab.d.ts +1 -51
  571. package/lib/typescript/modules/fab/Fab.variants.d.ts +3 -2
  572. package/lib/typescript/modules/fab/FabGroup.d.ts +1 -34
  573. package/lib/typescript/modules/fab/FabGroupProps.d.ts +34 -0
  574. package/lib/typescript/modules/fab/FabProps.d.ts +50 -0
  575. package/lib/typescript/modules/fab/index.d.ts +2 -2
  576. package/lib/typescript/modules/field-select-modal/FieldSelectModal.d.ts +3 -0
  577. package/lib/typescript/modules/field-select-modal/FieldSelectModalProps.d.ts +20 -0
  578. package/lib/typescript/modules/field-select-modal/index.d.ts +3 -0
  579. package/lib/typescript/modules/file-grid/FileGrid.d.ts +1 -18
  580. package/lib/typescript/modules/file-grid/FileGridProps.d.ts +23 -0
  581. package/lib/typescript/modules/file-grid/index.d.ts +1 -1
  582. package/lib/typescript/modules/file-upload/FileUpload.d.ts +1 -27
  583. package/lib/typescript/modules/file-upload/FileUploadProps.d.ts +27 -0
  584. package/lib/typescript/modules/file-upload/index.d.ts +1 -1
  585. package/lib/typescript/modules/filter-bar/FilterBar.d.ts +3 -0
  586. package/lib/typescript/modules/filter-bar/FilterBarProps.d.ts +17 -0
  587. package/lib/typescript/modules/filter-bar/index.d.ts +3 -0
  588. package/lib/typescript/modules/filter-sheet/FilterChip.d.ts +1 -9
  589. package/lib/typescript/modules/filter-sheet/FilterChipProps.d.ts +11 -0
  590. package/lib/typescript/modules/filter-sheet/FilterSheet.d.ts +1 -32
  591. package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts +2 -1
  592. package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts +1 -1
  593. package/lib/typescript/modules/filter-sheet/FilterSheetProps.d.ts +36 -0
  594. package/lib/typescript/modules/filter-sheet/filterSheet.helpers.d.ts +1 -1
  595. package/lib/typescript/modules/filter-sheet/index.d.ts +2 -2
  596. package/lib/typescript/modules/folder-row/FolderRow.d.ts +1 -11
  597. package/lib/typescript/modules/folder-row/FolderRowProps.d.ts +17 -0
  598. package/lib/typescript/modules/folder-row/index.d.ts +1 -1
  599. package/lib/typescript/modules/form-field/FormField.d.ts +2 -17
  600. package/lib/typescript/modules/form-field/FormFieldProps.d.ts +23 -0
  601. package/lib/typescript/modules/form-field/index.d.ts +1 -1
  602. package/lib/typescript/modules/gantt/Gantt.d.ts +2 -9
  603. package/lib/typescript/modules/gantt/Gantt.variants.d.ts +8 -2
  604. package/lib/typescript/modules/gantt/GanttProps.d.ts +13 -0
  605. package/lib/typescript/modules/gantt/index.d.ts +1 -1
  606. package/lib/typescript/modules/image-viewer/ImageViewer.d.ts +2 -15
  607. package/lib/typescript/modules/image-viewer/ImageViewerProps.d.ts +16 -0
  608. package/lib/typescript/modules/image-viewer/index.d.ts +2 -1
  609. package/lib/typescript/modules/input/Input.d.ts +2 -30
  610. package/lib/typescript/modules/input/Input.variants.d.ts +2 -2
  611. package/lib/typescript/modules/input/InputProps.d.ts +43 -0
  612. package/lib/typescript/modules/input/index.d.ts +1 -1
  613. package/lib/typescript/modules/key-value/KeyValue.d.ts +3 -0
  614. package/lib/typescript/modules/key-value/KeyValueProps.d.ts +11 -0
  615. package/lib/typescript/modules/key-value/index.d.ts +3 -0
  616. package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.d.ts +1 -17
  617. package/lib/typescript/modules/limit-reached-modal/LimitReachedModalProps.d.ts +24 -0
  618. package/lib/typescript/modules/limit-reached-modal/index.d.ts +1 -1
  619. package/lib/typescript/modules/list-item/ListItem.d.ts +2 -12
  620. package/lib/typescript/modules/list-item/ListItemProps.d.ts +22 -0
  621. package/lib/typescript/modules/list-item/index.d.ts +1 -1
  622. package/lib/typescript/modules/list-screen/ListScreen.d.ts +5 -0
  623. package/lib/typescript/modules/list-screen/ListScreenProps.d.ts +17 -0
  624. package/lib/typescript/modules/list-screen/index.d.ts +3 -0
  625. package/lib/typescript/modules/markdown/Markdown.d.ts +1 -8
  626. package/lib/typescript/modules/markdown/MarkdownProps.d.ts +12 -0
  627. package/lib/typescript/modules/markdown/index.d.ts +1 -1
  628. package/lib/typescript/modules/menu/Menu.d.ts +2 -19
  629. package/lib/typescript/modules/menu/Menu.variants.d.ts +2 -1
  630. package/lib/typescript/modules/menu/MenuProps.d.ts +26 -0
  631. package/lib/typescript/modules/menu/index.d.ts +1 -1
  632. package/lib/typescript/modules/message-bubble/MessageBubble.d.ts +1 -9
  633. package/lib/typescript/modules/message-bubble/MessageBubbleProps.d.ts +12 -0
  634. package/lib/typescript/modules/message-bubble/index.d.ts +1 -1
  635. package/lib/typescript/modules/modal/Modal.d.ts +2 -10
  636. package/lib/typescript/modules/modal/ModalPortalContext.d.ts +1 -1
  637. package/lib/typescript/modules/modal/ModalPortalProvider.d.ts +2 -12
  638. package/lib/typescript/modules/modal/ModalPortalProviderProps.d.ts +8 -0
  639. package/lib/typescript/modules/modal/ModalProps.d.ts +22 -0
  640. package/lib/typescript/modules/modal/index.d.ts +2 -2
  641. package/lib/typescript/modules/modal/renderWebPortal.d.ts +1 -14
  642. package/lib/typescript/modules/modal/renderWebPortal.web.d.ts +1 -18
  643. package/lib/typescript/modules/more-items/MoreItems.d.ts +2 -10
  644. package/lib/typescript/modules/more-items/MoreItems.variants.d.ts +3 -1
  645. package/lib/typescript/modules/more-items/MoreItemsProps.d.ts +14 -0
  646. package/lib/typescript/modules/more-items/index.d.ts +1 -1
  647. package/lib/typescript/modules/multi-select/MultiSelect.d.ts +1 -19
  648. package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts +2 -1
  649. package/lib/typescript/modules/multi-select/MultiSelectProps.d.ts +29 -0
  650. package/lib/typescript/modules/multi-select/index.d.ts +1 -1
  651. package/lib/typescript/modules/notification-bell/NotificationBell.d.ts +3 -0
  652. package/lib/typescript/modules/notification-bell/NotificationBellProps.d.ts +10 -0
  653. package/lib/typescript/modules/notification-bell/index.d.ts +3 -0
  654. package/lib/typescript/modules/number-input/NumberInput.d.ts +1 -26
  655. package/lib/typescript/modules/number-input/NumberInput.variants.d.ts +2 -3
  656. package/lib/typescript/modules/number-input/NumberInputProps.d.ts +23 -0
  657. package/lib/typescript/modules/number-input/index.d.ts +1 -1
  658. package/lib/typescript/modules/org-switcher/OrgSwitcher.d.ts +1 -24
  659. package/lib/typescript/modules/org-switcher/OrgSwitcher.variants.d.ts +2 -1
  660. package/lib/typescript/modules/org-switcher/OrgSwitcherProps.d.ts +29 -0
  661. package/lib/typescript/modules/org-switcher/index.d.ts +1 -1
  662. package/lib/typescript/modules/pagination/Pagination.d.ts +1 -26
  663. package/lib/typescript/modules/pagination/Pagination.variants.d.ts +2 -1
  664. package/lib/typescript/modules/pagination/PaginationProps.d.ts +28 -0
  665. package/lib/typescript/modules/pagination/index.d.ts +1 -1
  666. package/lib/typescript/modules/person-chip/PersonChip.d.ts +3 -0
  667. package/lib/typescript/modules/person-chip/PersonChipProps.d.ts +17 -0
  668. package/lib/typescript/modules/person-chip/index.d.ts +3 -0
  669. package/lib/typescript/modules/pin-input/PinInput.d.ts +1 -32
  670. package/lib/typescript/modules/pin-input/PinInput.variants.d.ts +2 -2
  671. package/lib/typescript/modules/pin-input/PinInputProps.d.ts +26 -0
  672. package/lib/typescript/modules/pin-input/index.d.ts +1 -1
  673. package/lib/typescript/modules/plan-badge/PlanBadge.d.ts +3 -0
  674. package/lib/typescript/modules/plan-badge/PlanBadgeProps.d.ts +10 -0
  675. package/lib/typescript/modules/plan-badge/index.d.ts +3 -0
  676. package/lib/typescript/modules/plan-pill/PlanPill.d.ts +3 -0
  677. package/lib/typescript/modules/plan-pill/PlanPillProps.d.ts +10 -0
  678. package/lib/typescript/modules/plan-pill/index.d.ts +3 -0
  679. package/lib/typescript/modules/progress-bar/ProgressBar.d.ts +1 -13
  680. package/lib/typescript/modules/progress-bar/ProgressBarProps.d.ts +16 -0
  681. package/lib/typescript/modules/progress-bar/index.d.ts +1 -1
  682. package/lib/typescript/modules/radio-group/RadioGroup.d.ts +2 -22
  683. package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts +2 -2
  684. package/lib/typescript/modules/radio-group/RadioGroupProps.d.ts +21 -0
  685. package/lib/typescript/modules/radio-group/index.d.ts +1 -1
  686. package/lib/typescript/modules/reorder/Reorder.d.ts +1 -13
  687. package/lib/typescript/modules/reorder/Reorder.variants.d.ts +2 -2
  688. package/lib/typescript/modules/reorder/ReorderProps.d.ts +19 -0
  689. package/lib/typescript/modules/reorder/index.d.ts +1 -1
  690. package/lib/typescript/modules/rich-text/RichText.d.ts +2 -10
  691. package/lib/typescript/modules/rich-text/RichTextProps.d.ts +15 -0
  692. package/lib/typescript/modules/rich-text/index.d.ts +1 -1
  693. package/lib/typescript/modules/rich-text-editor/RichTextEditor.d.ts +1 -45
  694. package/lib/typescript/modules/rich-text-editor/RichTextEditorProps.d.ts +40 -0
  695. package/lib/typescript/modules/rich-text-editor/index.d.ts +1 -1
  696. package/lib/typescript/modules/save-bar/SaveBar.d.ts +3 -0
  697. package/lib/typescript/modules/save-bar/SaveBarProps.d.ts +18 -0
  698. package/lib/typescript/modules/save-bar/index.d.ts +3 -0
  699. package/lib/typescript/modules/screen/Screen.d.ts +1 -24
  700. package/lib/typescript/modules/screen/ScreenProps.d.ts +35 -0
  701. package/lib/typescript/modules/screen/index.d.ts +1 -1
  702. package/lib/typescript/modules/search-bar/SearchBar.d.ts +2 -28
  703. package/lib/typescript/modules/search-bar/SearchBar.variants.d.ts +2 -3
  704. package/lib/typescript/modules/search-bar/SearchBarProps.d.ts +30 -0
  705. package/lib/typescript/modules/search-bar/index.d.ts +1 -1
  706. package/lib/typescript/modules/section/Section.d.ts +1 -8
  707. package/lib/typescript/modules/section/SectionProps.d.ts +11 -0
  708. package/lib/typescript/modules/section/index.d.ts +1 -1
  709. package/lib/typescript/modules/section-list/SectionList.d.ts +1 -19
  710. package/lib/typescript/modules/section-list/SectionListProps.d.ts +24 -0
  711. package/lib/typescript/modules/section-list/index.d.ts +1 -1
  712. package/lib/typescript/modules/segmented-control/SegmentedControl.d.ts +2 -41
  713. package/lib/typescript/modules/segmented-control/SegmentedControl.variants.d.ts +5 -44
  714. package/lib/typescript/modules/segmented-control/SegmentedControlProps.d.ts +29 -0
  715. package/lib/typescript/modules/segmented-control/index.d.ts +1 -1
  716. package/lib/typescript/modules/select/Select.d.ts +2 -13
  717. package/lib/typescript/modules/select/Select.variants.d.ts +2 -2
  718. package/lib/typescript/modules/select/SelectProps.d.ts +25 -0
  719. package/lib/typescript/modules/select/index.d.ts +2 -1
  720. package/lib/typescript/modules/setting-row/SettingRow.d.ts +3 -0
  721. package/lib/typescript/modules/setting-row/SettingRowProps.d.ts +14 -0
  722. package/lib/typescript/modules/setting-row/index.d.ts +3 -0
  723. package/lib/typescript/modules/settings-section/SettingsSection.d.ts +3 -0
  724. package/lib/typescript/modules/settings-section/SettingsSectionProps.d.ts +11 -0
  725. package/lib/typescript/modules/settings-section/index.d.ts +3 -0
  726. package/lib/typescript/modules/skeleton/Skeleton.d.ts +2 -12
  727. package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts +3 -5
  728. package/lib/typescript/modules/skeleton/SkeletonProps.d.ts +18 -0
  729. package/lib/typescript/modules/skeleton/index.d.ts +1 -1
  730. package/lib/typescript/modules/slider/Slider.d.ts +1 -24
  731. package/lib/typescript/modules/slider/Slider.variants.d.ts +2 -1
  732. package/lib/typescript/modules/slider/SliderProps.d.ts +27 -0
  733. package/lib/typescript/modules/slider/index.d.ts +1 -1
  734. package/lib/typescript/modules/spinner/Spinner.d.ts +1 -11
  735. package/lib/typescript/modules/spinner/SpinnerProps.d.ts +15 -0
  736. package/lib/typescript/modules/spinner/index.d.ts +1 -1
  737. package/lib/typescript/modules/stage-progress/StageProgress.d.ts +1 -12
  738. package/lib/typescript/modules/stage-progress/StageProgress.variants.d.ts +16 -4
  739. package/lib/typescript/modules/stage-progress/StageProgressProps.d.ts +22 -0
  740. package/lib/typescript/modules/stage-progress/index.d.ts +1 -1
  741. package/lib/typescript/modules/stat-grid/StatGrid.d.ts +3 -0
  742. package/lib/typescript/modules/stat-grid/StatGridProps.d.ts +15 -0
  743. package/lib/typescript/modules/stat-grid/index.d.ts +3 -0
  744. package/lib/typescript/modules/stat-tile/StatTile.d.ts +1 -14
  745. package/lib/typescript/modules/stat-tile/StatTile.variants.d.ts +3 -0
  746. package/lib/typescript/modules/stat-tile/StatTileProps.d.ts +25 -0
  747. package/lib/typescript/modules/stat-tile/index.d.ts +1 -1
  748. package/lib/typescript/modules/state-block/StateBlock.d.ts +1 -32
  749. package/lib/typescript/modules/state-block/StateBlockProps.d.ts +36 -0
  750. package/lib/typescript/modules/state-block/index.d.ts +1 -1
  751. package/lib/typescript/modules/stepper/Stepper.d.ts +3 -11
  752. package/lib/typescript/modules/stepper/Stepper.variants.d.ts +2 -0
  753. package/lib/typescript/modules/stepper/StepperProps.d.ts +12 -0
  754. package/lib/typescript/modules/stepper/index.d.ts +2 -1
  755. package/lib/typescript/modules/surface/Surface.d.ts +1 -14
  756. package/lib/typescript/modules/surface/SurfaceProps.d.ts +17 -0
  757. package/lib/typescript/modules/surface/index.d.ts +1 -1
  758. package/lib/typescript/modules/swipeable-row/SwipeableRow.d.ts +1 -19
  759. package/lib/typescript/modules/swipeable-row/SwipeableRowProps.d.ts +22 -0
  760. package/lib/typescript/modules/swipeable-row/index.d.ts +1 -1
  761. package/lib/typescript/modules/switch/Switch.d.ts +1 -14
  762. package/lib/typescript/modules/switch/Switch.variants.d.ts +2 -2
  763. package/lib/typescript/modules/switch/SwitchProps.d.ts +20 -0
  764. package/lib/typescript/modules/switch/index.d.ts +1 -1
  765. package/lib/typescript/modules/tabs/Tabs.d.ts +1 -17
  766. package/lib/typescript/modules/tabs/Tabs.variants.d.ts +2 -3
  767. package/lib/typescript/modules/tabs/TabsProps.d.ts +29 -0
  768. package/lib/typescript/modules/tabs/index.d.ts +1 -1
  769. package/lib/typescript/modules/text/Text.d.ts +1 -24
  770. package/lib/typescript/modules/text/TextProps.d.ts +35 -0
  771. package/lib/typescript/modules/text/index.d.ts +1 -1
  772. package/lib/typescript/modules/textarea/Textarea.d.ts +1 -19
  773. package/lib/typescript/modules/textarea/Textarea.variants.d.ts +2 -1
  774. package/lib/typescript/modules/textarea/TextareaProps.d.ts +23 -0
  775. package/lib/typescript/modules/textarea/index.d.ts +1 -1
  776. package/lib/typescript/modules/timeline/Timeline.d.ts +1 -16
  777. package/lib/typescript/modules/timeline/Timeline.variants.d.ts +2 -0
  778. package/lib/typescript/modules/timeline/TimelineProps.d.ts +37 -0
  779. package/lib/typescript/modules/timeline/index.d.ts +1 -1
  780. package/lib/typescript/modules/toast/Toast.variants.d.ts +2 -3
  781. package/lib/typescript/modules/tooltip/Tooltip.d.ts +1 -25
  782. package/lib/typescript/modules/tooltip/TooltipProps.d.ts +27 -0
  783. package/lib/typescript/modules/tooltip/index.d.ts +1 -1
  784. package/lib/typescript/modules/typing-indicator/TypingIndicator.d.ts +5 -14
  785. package/lib/typescript/modules/typing-indicator/TypingIndicatorProps.d.ts +11 -0
  786. package/lib/typescript/modules/typing-indicator/index.d.ts +1 -1
  787. package/lib/typescript/modules/upgrade-button/UpgradeButton.d.ts +3 -0
  788. package/lib/typescript/modules/upgrade-button/UpgradeButtonProps.d.ts +11 -0
  789. package/lib/typescript/modules/upgrade-button/index.d.ts +3 -0
  790. package/lib/typescript/test/motionJest.d.ts +12 -0
  791. package/lib/typescript/theme/platform/elevation.native.d.ts +1 -1
  792. package/lib/typescript/theme/tokens/builders/accentText.d.ts +3 -0
  793. package/lib/typescript/theme/tokens/builders/buildBrandScale.d.ts +4 -0
  794. package/lib/typescript/theme/tokens/builders/gradientInk.d.ts +9 -0
  795. package/lib/typescript/theme/tokens/builders/paletteFromAccent.d.ts +3 -0
  796. package/lib/typescript/theme/tokens/builders/skeletonShimmer.d.ts +9 -0
  797. package/lib/typescript/theme/tokens/index.d.ts +3 -0
  798. package/lib/typescript/theme/tokens/primitives/controlSizes.d.ts +6 -0
  799. package/lib/typescript/theme/tokens/primitives/index.d.ts +2 -0
  800. package/lib/typescript/theme/tokens/roles/index.d.ts +2 -0
  801. package/lib/typescript/theme/tokens/types.d.ts +2 -2
  802. package/package.json +106 -5
  803. package/registry.json +109 -14
  804. package/lib/module/core/style/useThemedStyles.js +0 -8
  805. package/lib/module/test/mocks/flashList.js +0 -5
  806. package/lib/module/test/perfHelpers.js +0 -18
  807. package/lib/typescript/core/style/useThemedStyles.d.ts +0 -5
  808. package/lib/typescript/test/mocks/flashList.d.ts +0 -3
@@ -9,13 +9,13 @@
9
9
  * accessible node per lane, holding the whole relationship, is what a screen reader can act on.
10
10
  */
11
11
 
12
- import { memo, useCallback, useMemo, useState } from "react";
12
+ import { memo, useCallback, useLayoutEffect, useMemo, useRef, useState } from "react";
13
13
  import { Platform, Pressable, ScrollView, StyleSheet, Text, useWindowDimensions, View } from "react-native";
14
14
  import { useDeviceTier } from "../../core/device/index.js";
15
15
  import { useTheme } from "../../theme/hooks.js";
16
16
  import { rippleColor } from "../../theme/platform/stateLayer.native.js";
17
17
  import { Button } from "../button/Button.js";
18
- import { computeGanttModel, resolveGanttColors, resolveVisibleGanttLanes, GANTT_BAR_H, GANTT_BAR_HIT_SLOP, GANTT_LABEL_W, GANTT_ROW_H, MAX_RENDERED_LANES } from "./Gantt.variants.js";
18
+ import { computeGanttModel, resolveGanttColors, resolveGanttInitialScrollX, resolveVisibleGanttLanes, GANTT_BAR_H, GANTT_BAR_HIT_SLOP, GANTT_LABEL_W, GANTT_ROW_H, MAX_RENDERED_LANES } from "./Gantt.variants.js";
19
19
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
20
  const BAR_TOP = (GANTT_ROW_H - GANTT_BAR_H) / 2;
21
21
  const BAR_RADIUS = 5;
@@ -84,8 +84,9 @@ const GanttLaneBar = /*#__PURE__*/memo(function GanttLaneBar({
84
84
  android_ripple: androidRipple,
85
85
  style: barStyle,
86
86
  children: !isMarker ? /*#__PURE__*/_jsx(View, {
87
- pointerEvents: "none",
88
- style: fillStyle
87
+ style: [fillStyle, {
88
+ pointerEvents: 'none'
89
+ }]
89
90
  }) : null
90
91
  })
91
92
  });
@@ -103,11 +104,24 @@ export const Gantt = /*#__PURE__*/memo(function Gantt({
103
104
  const [now] = useState(() => Date.now());
104
105
  const tier = useDeviceTier();
105
106
  const [expanded, setExpanded] = useState(false);
107
+ const scrollRef = useRef(null);
108
+ const [chartViewportWidth, setChartViewportWidth] = useState(0);
106
109
  const model = useMemo(() => computeGanttModel(lanes, winW, now), [lanes, winW, now]);
110
+ const initialScrollX = useMemo(() => resolveGanttInitialScrollX(model, chartViewportWidth), [model, chartViewportWidth]);
107
111
  const colors = useMemo(() => resolveGanttColors(theme.colors), [theme.colors]);
108
112
  const maxLanes = MAX_RENDERED_LANES[tier];
109
113
  const visible = useMemo(() => resolveVisibleGanttLanes(model, maxLanes, expanded), [model, maxLanes, expanded]);
110
114
  const handleShowAll = useCallback(() => setExpanded(true), []);
115
+ const handleChartLayout = useCallback(event => {
116
+ setChartViewportWidth(event.nativeEvent.layout.width);
117
+ }, []);
118
+ useLayoutEffect(() => {
119
+ if (chartViewportWidth <= 0) return;
120
+ scrollRef.current?.scrollTo({
121
+ x: initialScrollX,
122
+ animated: false
123
+ });
124
+ }, [initialScrollX, chartViewportWidth, lanes]);
111
125
  const rootStyle = useMemo(() => [{
112
126
  gap: theme.space[2]
113
127
  }, style], [theme, style]);
@@ -175,9 +189,11 @@ export const Gantt = /*#__PURE__*/memo(function Gantt({
175
189
  sublabelStyle: sublabelStyle
176
190
  }, lane.id))
177
191
  }), /*#__PURE__*/_jsx(ScrollView, {
192
+ ref: scrollRef,
178
193
  horizontal: true,
179
194
  showsHorizontalScrollIndicator: true,
180
195
  style: styles.chart,
196
+ onLayout: handleChartLayout,
181
197
  children: /*#__PURE__*/_jsxs(View, {
182
198
  style: chartBodyStyle,
183
199
  children: [visible.lanes.map(lane => /*#__PURE__*/_jsx(GanttLaneBar, {
@@ -192,8 +208,9 @@ export const Gantt = /*#__PURE__*/memo(function Gantt({
192
208
  mode: theme.mode,
193
209
  onPress: onLanePress
194
210
  }, lane.id)), model.showToday ? /*#__PURE__*/_jsx(View, {
195
- pointerEvents: "none",
196
- style: [styles.todayLine, todayStyle]
211
+ style: [styles.todayLine, todayStyle, {
212
+ pointerEvents: 'none'
213
+ }]
197
214
  }) : null]
198
215
  })
199
216
  })]
@@ -4,6 +4,7 @@
4
4
  * Gantt layout math — ported from tickets/mobile EpicTimeline. Pure, testable.
5
5
  */
6
6
 
7
+ import { MIN_TOUCH_TARGET, slopFor } from "../../core/a11y/touchTarget.js";
7
8
  export const MS_PER_DAY = 86_400_000;
8
9
  export const GANTT_LABEL_W = 108;
9
10
  export const GANTT_ROW_H = 46;
@@ -14,9 +15,6 @@ export const GANTT_BASE_PX_PER_DAY = 4;
14
15
  export const GANTT_MIN_SPAN_MS = 14 * MS_PER_DAY;
15
16
  export const GANTT_PAD_MS = 2 * MS_PER_DAY;
16
17
 
17
- /** WCAG 2.5.5 target size, the library-wide floor (`Tabs`/`Pagination`/`Reorder` all pin the same 44). */
18
- export const MIN_TOUCH_TARGET = 44;
19
-
20
18
  /**
21
19
  * Lanes rendered before the "show all" affordance takes over — the same worst-case safety valve as
22
20
  * `MAX_RENDERED_POINTS` in `Charts.variants.ts`, tier-scaled because a lane count this large comes
@@ -28,7 +26,6 @@ export const MAX_RENDERED_LANES = {
28
26
  mid: 80,
29
27
  high: 150
30
28
  };
31
- const slopFor = dimension => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - dimension) / 2));
32
29
 
33
30
  /**
34
31
  * A bar is a *data mark* — its 18dp height encodes nothing but the chart's row rhythm, and its width
@@ -56,6 +53,7 @@ export const GANTT_BAR_HIT_SLOP = {
56
53
  * `fg.subtle` (a flat `gray[500]`) falls to 3.19:1 on emerald light. Same defect as `Text`'s
57
54
  * `overline` and `Timeline`'s timestamp.
58
55
  */
56
+ export { MIN_TOUCH_TARGET };
59
57
  export function resolveGanttColors(colors) {
60
58
  return {
61
59
  bar: colors.accent.solid,
@@ -156,6 +154,16 @@ export function computeGanttModel(lanes, windowWidth, nowMs) {
156
154
  * from its position in the array, so dropping trailing lanes never shifts the ones kept. `bodyHeight`
157
155
  * is recomputed for the slice so the chart body and the "today" line never overshoot the rendered rows.
158
156
  */
157
+ /**
158
+ * Horizontal scroll offset so the earliest lane (or today, when shown) is inside the viewport.
159
+ * `viewportWidth` is the chart `ScrollView` width, not the full window.
160
+ */
161
+ export function resolveGanttInitialScrollX(model, viewportWidth, paddingPx = 8) {
162
+ if (model.empty || model.chartWidth <= viewportWidth) return 0;
163
+ const minLeft = model.lanes.reduce((m, lane) => Math.min(m, lane.leftPx), Number.POSITIVE_INFINITY);
164
+ const maxScroll = model.chartWidth - viewportWidth;
165
+ return Math.max(0, Math.min(minLeft - paddingPx, maxScroll));
166
+ }
159
167
  export function resolveVisibleGanttLanes(model, maxLanes, expanded) {
160
168
  const total = model.lanes.length;
161
169
  if (expanded || total <= maxLanes) {
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=GanttProps.js.map
@@ -1,4 +1,4 @@
1
- # gantt/
1
+ # gantt/ — a horizontal Gantt chart of time-ranged lanes
2
2
 
3
3
  Horizontal Gantt chart — ported from tickets/mobile `EpicTimeline`. Pure layout in `Gantt.variants.ts`.
4
4
 
@@ -11,7 +11,7 @@ Horizontal Gantt chart — ported from tickets/mobile `EpicTimeline`. Pure layou
11
11
 
12
12
  ## Props
13
13
 
14
- `lanes` (`GanttLaneInput[]`: id, label, sublabel, startMs, endMs, progress) · `onLanePress(id)` ·
14
+ `lanes` (`GanttLaneInput[]`: id, label, sublabel, startMs, endMs, `progress` 0–100 like `ProgressBar`) · `onLanePress(id)` ·
15
15
  `style` (layout-only, outermost, once, last) · `testID`. A lane shorter than a day renders as a marker.
16
16
 
17
17
  ## Colour & accessibility
@@ -41,7 +41,7 @@ observed ratio is in brackets.
41
41
  **Touch targets.** A bar is a data mark: its 18dp height is the row rhythm and its width is the lane's
42
42
  duration, so growing it to 44dp would lie about the data. `GANTT_BAR_HIT_SLOP` widens the press target
43
43
  instead — sized off the narrowest bar the layout can produce (`GANTT_MARKER_W`, 12dp), so every bar
44
- clears `MIN_TOUCH_TARGET`. Vertical slop is capped so `GANTT_BAR_H + 2×top ≤ GANTT_ROW_H` and adjacent
44
+ clears `MIN_TOUCH_TARGET` (`core/a11y/touchTarget`, re-exported from `Gantt.variants.ts`). Vertical slop is capped so `GANTT_BAR_H + 2×top ≤ GANTT_ROW_H` and adjacent
45
45
  rows' targets never overlap. On Android the bar's `Pressable` also carries `android_ripple`
46
46
  (`rippleColor(theme.mode)`, `borderless: false`) — `GanttLaneBar` takes a `mode: ColorScheme` prop
47
47
  from `Gantt` to resolve it. This is unrelated to the bar's decorative hairline (see above), which is
@@ -6,7 +6,8 @@
6
6
  */
7
7
 
8
8
  import { memo, useCallback, useMemo, useRef, useState } from "react";
9
- import { Animated, FlatList, Platform, Pressable, Share, StyleSheet, useWindowDimensions, View } from "react-native";
9
+ import { FlatList, Platform, Pressable, Share, StyleSheet, useWindowDimensions, View } from "react-native";
10
+ import Reanimated from "react-native-reanimated";
10
11
  import { MediaImage } from "../../core/media/index.js";
11
12
  import { useEnterExit, useMotion } from "../../core/motion/index.js";
12
13
  import { useTheme } from "../../theme/hooks.js";
@@ -132,7 +133,7 @@ export const ImageViewer = /*#__PURE__*/memo(function ImageViewer({
132
133
  title: current.label ?? "Image",
133
134
  size: "lg",
134
135
  testID: testID,
135
- children: /*#__PURE__*/_jsxs(Animated.View, {
136
+ children: /*#__PURE__*/_jsxs(Reanimated.View, {
136
137
  testID: testID ? `${testID}-body` : undefined,
137
138
  style: [bodyStyle, enterExit.style, style],
138
139
  children: [/*#__PURE__*/_jsx(FlatList, {
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=ImageViewerProps.js.map
@@ -1,4 +1,4 @@
1
- # image-viewer/
1
+ # image-viewer/ — a modal image gallery with paging and thumbnails
2
2
 
3
3
  Modal image gallery with paging and thumbnails. Heavy module — subpath only.
4
4
 
@@ -11,16 +11,16 @@
11
11
  */
12
12
 
13
13
  import { memo, useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
14
- import { Animated, Platform, StyleSheet, Text, TextInput, View } from "react-native";
14
+ import { Platform, Pressable, StyleSheet, Text, TextInput, View } from "react-native";
15
+ import Reanimated, { useAnimatedStyle } from "react-native-reanimated";
15
16
  import { useAnnounce } from "../../core/a11y/index.js";
16
17
  import { withAlpha } from "../../core/gradient/index.js";
17
18
  import { Icon } from "../../core/icon/index.js";
18
- import { useAnimatedValue, useEnterExit, useMotion } from "../../core/motion/index.js";
19
+ import { AnimatedText, useAnimatedValue, useEnterExit, useMotion } from "../../core/motion/index.js";
20
+ import { FOCUS_RING_GAP, FOCUS_RING_WIDTH } from "../../core/style/focusRing.js";
19
21
  import { useTheme } from "../../theme/hooks.js";
20
22
  import { INPUT_SIZES, inputStructure, resolveInputAccessibility, resolveInputStatus } from "./Input.variants.js";
21
23
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
22
- const FOCUS_RING_WIDTH = 2;
23
- const FOCUS_RING_GAP = 2;
24
24
  export const Input = /*#__PURE__*/memo(function Input(props) {
25
25
  const {
26
26
  value,
@@ -34,12 +34,19 @@ export const Input = /*#__PURE__*/memo(function Input(props) {
34
34
  errorText,
35
35
  leadingIcon,
36
36
  trailingIcon,
37
- secureTextEntry,
37
+ onLeadingIconPress,
38
+ onTrailingIconPress,
39
+ isClearable = false,
40
+ showCharacterCount = false,
41
+ maxLength,
42
+ secureTextEntry: secureTextEntryProp,
38
43
  accessibilityLabel,
39
44
  containerStyle,
40
45
  testID,
41
46
  autoComplete
42
47
  } = props;
48
+ const [passwordVisible, setPasswordVisible] = useState(false);
49
+ const secureTextEntry = secureTextEntryProp === true && !passwordVisible;
43
50
  const theme = useTheme();
44
51
  const motion = useMotion();
45
52
  const [focused, setFocused] = useState(false);
@@ -66,11 +73,14 @@ export const Input = /*#__PURE__*/memo(function Input(props) {
66
73
  if (message !== undefined) lastMessage.current = message;
67
74
  const ringOpacity = useAnimatedValue(0);
68
75
  const ringAnimation = useRef(null);
76
+ const ringAnimatedStyle = useAnimatedStyle(() => ({
77
+ opacity: ringOpacity.value
78
+ }));
69
79
  const setRingVisible = useCallback(visible => {
70
80
  ringAnimation.current?.stop();
71
81
  const to = visible ? 1 : 0;
72
82
  if (!motion.enabled) {
73
- ringOpacity.setValue(to);
83
+ ringOpacity.value = to;
74
84
  return;
75
85
  }
76
86
  ringAnimation.current = motion.timing(ringOpacity, to, {
@@ -126,12 +136,31 @@ export const Input = /*#__PURE__*/memo(function Input(props) {
126
136
  color: statusColors.message,
127
137
  marginTop: theme.space[1]
128
138
  }], [theme, statusColors.message]);
129
- const glyph = name => /*#__PURE__*/_jsx(Icon, {
130
- name: name,
131
- size: spec.iconSize,
132
- color: theme.colors.fg.muted,
133
- strokeWidth: 2
134
- });
139
+ const handleClear = useCallback(() => {
140
+ if (!disabled && value.length > 0) onChangeText("");
141
+ }, [disabled, onChangeText, value.length]);
142
+ const togglePassword = useCallback(() => {
143
+ setPasswordVisible(v => !v);
144
+ }, []);
145
+ const showClear = isClearable && value.length > 0 && !disabled;
146
+ const resolvedTrailing = secureTextEntryProp === true ? "eye" : trailingIcon;
147
+ const trailingPress = secureTextEntryProp === true ? togglePassword : onTrailingIconPress;
148
+ const glyph = (name, onPress) => {
149
+ const icon = /*#__PURE__*/_jsx(Icon, {
150
+ name: name,
151
+ size: spec.iconSize,
152
+ color: theme.colors.fg.muted,
153
+ strokeWidth: 2
154
+ });
155
+ if (onPress === undefined) return icon;
156
+ return /*#__PURE__*/_jsx(Pressable, {
157
+ accessibilityRole: "button",
158
+ onPress: onPress,
159
+ hitSlop: spec.hitSlop,
160
+ testID: testID ? `${testID}-icon-${name}` : undefined,
161
+ children: icon
162
+ });
163
+ };
135
164
  return /*#__PURE__*/_jsxs(View, {
136
165
  style: containerStyle,
137
166
  children: [label !== undefined &&
@@ -145,19 +174,19 @@ export const Input = /*#__PURE__*/memo(function Input(props) {
145
174
  children: label
146
175
  }), /*#__PURE__*/_jsxs(View, {
147
176
  style: fieldStyle,
148
- children: [/*#__PURE__*/_jsx(Animated.View, {
149
- pointerEvents: "none",
177
+ children: [/*#__PURE__*/_jsx(Reanimated.View, {
150
178
  testID: "input-focus-ring",
151
- style: [focusRingStyle, {
152
- opacity: ringOpacity
179
+ style: [focusRingStyle, ringAnimatedStyle, {
180
+ pointerEvents: 'none'
153
181
  }]
154
- }), leadingIcon && glyph(leadingIcon), /*#__PURE__*/_jsx(TextInput, {
182
+ }), leadingIcon ? glyph(leadingIcon, onLeadingIconPress) : null, /*#__PURE__*/_jsx(TextInput, {
155
183
  testID: testID,
156
184
  value: value,
157
185
  onChangeText: onChangeText,
158
186
  placeholder: placeholder,
159
187
  placeholderTextColor: theme.colors.fg.placeholder,
160
188
  secureTextEntry: secureTextEntry,
189
+ maxLength: maxLength,
161
190
  autoComplete: autoComplete,
162
191
  importantForAutofill: autoComplete === "off" ? "no" : undefined,
163
192
  editable: a11y.editable,
@@ -170,14 +199,20 @@ export const Input = /*#__PURE__*/memo(function Input(props) {
170
199
  onFocus: handleFocus,
171
200
  onBlur: handleBlur,
172
201
  style: inputTextStyle
173
- }), trailingIcon && glyph(trailingIcon)]
174
- }), messageMotion.mounted && lastMessage.current !== undefined &&
202
+ }), showClear ? glyph("x", handleClear) : null, resolvedTrailing ? glyph(resolvedTrailing, trailingPress) : null]
203
+ }), showCharacterCount && maxLength !== undefined ? /*#__PURE__*/_jsx(Text, {
204
+ style: [messageStyle, {
205
+ textAlign: "right",
206
+ marginTop: theme.space[1]
207
+ }],
208
+ children: `${value.length}/${maxLength}`
209
+ }) : null, messageMotion.mounted && lastMessage.current !== undefined &&
175
210
  /*#__PURE__*/
176
211
  // No `accessibilityLiveRegion` (deliberate): it's Android-only, and `useAnnounce` above
177
212
  // already announces on both platforms — keeping both would double-announce on Android.
178
213
  // Hidden only once the message is gone: `lastMessage` outlives it for the exit tween, and a
179
214
  // stale error must not sit in the a11y tree while it fades.
180
- _jsx(Animated.Text, {
215
+ _jsx(AnimatedText, {
181
216
  nativeID: hintId,
182
217
  accessibilityElementsHidden: message === undefined,
183
218
  importantForAccessibility: message === undefined ? "no-hide-descendants" : undefined,
@@ -14,13 +14,12 @@
14
14
  * (mocking only `react-native`'s `StyleSheet`, as `core/style` does).
15
15
  */
16
16
 
17
+ import { MIN_TOUCH_TARGET, slopFor } from "../../core/a11y/touchTarget.js";
17
18
  import { createThemedVariants } from "../../core/style/index.js";
19
+ export { MIN_TOUCH_TARGET };
18
20
 
19
21
  /** A state, not a brand tone — an input's colour reports validity, so it is never called `tone`. */
20
22
 
21
- /** Same floor as Button — 44dp (WCAG 2.5.5 / HIG). Duplicated, not imported: modules stay isolated. */
22
- export const MIN_TOUCH_TARGET = 44;
23
- const slopFor = height => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - height) / 2));
24
23
  /**
25
24
  * Input-specific dimensions. Height/iconSize/slop are the component's own design constants;
26
25
  * `fontSize` sits on the theme's `fontSizes` scale (14/16/18) — same numbers as Button's sizes, so
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=InputProps.js.map
@@ -27,8 +27,12 @@ pure/testable resolvers, closed unions, no `{...rest}`.
27
27
  | `label` | `string` | — | Rendered above the field; falls back into `accessibilityLabel`. |
28
28
  | `helperText` | `string` | — | Shown below the field when `status` is `default`. |
29
29
  | `errorText` | `string` | — | Shown below the field (replacing `helperText`) and announced, when `status` is `error`. Joins the field's accessible NAME and sets `aria-invalid` — **not** `accessibilityHint` (see below; this used to contradict `FormField`'s own stated rule, fixed to match it). |
30
- | `leadingIcon` / `trailingIcon` | `IconName` | — | A NAME, never a `ReactNode`. Decorative (no built-in clear/press behaviour in v1). |
31
- | `secureTextEntry` | `boolean` | `false` | No visibility-toggle button in v1 needs an icon outside the current catalogue. |
30
+ | `leadingIcon` / `trailingIcon` | `IconName` | — | A NAME, never a `ReactNode`. Decorative unless the matching press handler is given. |
31
+ | `onLeadingIconPress` / `onTrailingIconPress` | `() => void` | | Makes that glyph a press target. A `secureTextEntry` field overrides the trailing pair with its own toggle. |
32
+ | `isClearable` | `boolean` | `false` | Renders a clear affordance while `value` is non-empty and the field is enabled. |
33
+ | `showCharacterCount` | `boolean` | `false` | Renders `"<length>/<maxLength>"` below the field — needs `maxLength` to show anything. |
34
+ | `maxLength` | `number` | — | Forwarded to the `TextInput`; also the denominator of the character count. |
35
+ | `secureTextEntry` | `boolean` | `false` | Masks the value and replaces `trailingIcon` with an `"eye"` toggle that reveals it. |
32
36
  | `accessibilityLabel` | `string` | `label` | Overrides the label fallback. |
33
37
  | `containerStyle` | `LayoutStyle` | — | The documented exception for a native-primitive wrapper. Outermost, last, once. Never `inputStyle`. |
34
38
  | `testID` | `string` | — | Forwarded to the underlying `TextInput`. |
@@ -43,7 +47,7 @@ pure/testable resolvers, closed unions, no `{...rest}`.
43
47
  `Pressable` that receives its `hitSlop`. `Input.render.test.tsx` asserts the rendered node, not
44
48
  just the `height + 2·hitSlop` arithmetic.
45
49
  - **1.4.3** — label/value text (`fg.default`), placeholder/helper text (`fg.muted`), and the error
46
- message (`status.danger.text`) are all measured ≥ 4.5:1 against the canvas, for all 8 brands ×
50
+ message (`status.danger.text`) are all measured ≥ 4.5:1 against the canvas, for all 9 brands ×
47
51
  both modes (`Input.test.ts`). The field renders no explicit background (transparent, like Button's
48
52
  outline/ghost/link variants), so the canvas is what every colour is actually read against.
49
53
  - **1.4.11** — the resting/focus border (`border.interactive` / `border.focus`) and the error border
@@ -110,20 +114,9 @@ identity — so it is never called `tone`.
110
114
 
111
115
  ## Known gaps
112
116
 
113
- - No visibility-toggle button for `secureTextEntry` would need an "eye" icon outside the current
114
- 22-name catalogue (`core/icon`); flagged rather than adding one from this module.
115
- - `leadingIcon`/`trailingIcon` are decorative-only in v1 (no `onClear` callback was in scope) — a
116
- trailing `"x"` renders but doesn't clear the field; a future version could add an explicit
117
- `onClear` prop if a consuming app needs it.
117
+ - A `secureTextEntry` field owns its trailing slot outright: `trailingIcon`/`onTrailingIconPress`
118
+ are both replaced by the reveal toggle, so the two cannot be combined.
118
119
 
119
120
  ## Performance
120
121
 
121
122
  Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). Its one library child, `Icon`, only ever receives primitives — nothing to memoize; `TextInput`/`View` are host elements, outside this pass's scope.
122
-
123
- ## Modernization (v1.0.7)
124
-
125
- - Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
126
- - List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
127
- - `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
128
-
129
- - **Round 2 visual** — radii retarget (`radii.md`/`lg`/`xl`/`full`), `borderCurve: continuous` on md+ corners; floating surfaces wire platform elevation/highlight where applicable.
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ import { memo, useMemo } from "react";
4
+ import { View } from "react-native";
5
+ import { useTheme } from "../../theme/hooks.js";
6
+ import { Text } from "../text/index.js";
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ export const KeyValue = /*#__PURE__*/memo(function KeyValue({
9
+ label,
10
+ value,
11
+ stacked = true,
12
+ style,
13
+ testID
14
+ }) {
15
+ const theme = useTheme();
16
+ const rowStyle = useMemo(() => ({
17
+ flexDirection: stacked ? "column" : "row",
18
+ justifyContent: stacked ? "flex-start" : "space-between",
19
+ alignItems: stacked ? "flex-start" : "center",
20
+ gap: theme.space[1],
21
+ paddingVertical: theme.space[2]
22
+ }), [stacked, theme]);
23
+ return /*#__PURE__*/_jsxs(View, {
24
+ testID: testID,
25
+ style: [rowStyle, style],
26
+ children: [/*#__PURE__*/_jsx(Text, {
27
+ variant: "label-sm",
28
+ color: "muted",
29
+ children: label
30
+ }), /*#__PURE__*/_jsx(Text, {
31
+ variant: "body-sm",
32
+ children: value
33
+ })]
34
+ });
35
+ });
36
+ //# sourceMappingURL=KeyValue.js.map
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=KeyValueProps.js.map
@@ -0,0 +1,16 @@
1
+ # key-value/ — a single read-only label/value row
2
+
3
+ Single read-only label/value row. Use `description-list` for grids.
4
+
5
+ ## Props
6
+
7
+ | Prop | Type | Default |
8
+ |------|------|---------|
9
+ | `label` | `string` | — |
10
+ | `value` | `string` | — |
11
+ | `stacked` | `boolean` | `true` |
12
+ | `style` | `LayoutStyle` | — |
13
+ | `testID` | `string` | — |
14
+
15
+ `stacked` (the default) puts the value under the label; `false` lays them out as a
16
+ space-between row.
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { KeyValue } from "./KeyValue.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=LimitReachedModalProps.js.map
@@ -16,6 +16,7 @@ optional usage line, and which action(s) appear.
16
16
  | `LimitReachedModal.variants.ts` | Pure resolvers: the `LimitKind` copy table (`resolveLimitReachedCopy`, ported verbatim from web), `formatLimitUsage`, and the themed icon-badge/action-row layout + colour (`resolveLimitReachedModalColors`). No React, no lucide. |
17
17
  | `index.ts` | Public surface: `LimitReachedModal`, `LimitReachedModalProps`, `LimitKind`. |
18
18
  | `__tests__/LimitReachedModal.test.ts` | Pure: the copy resolver for all six kinds × both admin/member paths, the usage formatter, and WCAG contrast for this module's own colour choices (icon badge, message, usage) — measured for all 9 brands × both modes. |
19
+ | `__tests__/LimitReachedModal.keyboard.web.test.tsx` | Web keyboard: the Escape/Tab-trap/focus-restore contract inherited from `Modal`. |
19
20
  | `__tests__/LimitReachedModal.render.test.tsx` | Render: hidden when `visible=false`, the upgrade CTA absent when `canManageBilling=false`, `onUpgrade`/`onRequestClose` wiring, and the usage line appearing only when both `limit` and `used` are given. |
20
21
 
21
22
  ## Props
@@ -86,9 +87,3 @@ full-screen dialog within.
86
87
  Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). The inline
87
88
  `() => onUpgrade?.()` is a fresh closure per render, same as `EmptyState`'s action Button — cheap
88
89
  because it forwards straight to a leaf `Pressable`, never a memoized child list item.
89
-
90
- ## Modernization (v1.0.7)
91
-
92
- - Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
93
- - List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
94
- - `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
@@ -6,8 +6,9 @@
6
6
 
7
7
  import { memo, useMemo } from "react";
8
8
  import { Platform, Pressable, StyleSheet, View } from "react-native";
9
- import Animated, { FadeInDown, ReduceMotion } from "react-native-reanimated";
9
+ import Animated, { FadeInDown, FadeOut, LinearTransition, ReduceMotion } from "react-native-reanimated";
10
10
  import { usePressState } from "../../core/motion/usePressState.js";
11
+ import { renderNodeSlot } from "../../core/slot/index.js";
11
12
  import { concentric } from "../../core/style/index.js";
12
13
  import { rippleColor as androidRippleColor, stateLayerScrim } from "../../theme/platform/stateLayer.native.js";
13
14
  import { useTheme } from "../../theme/hooks.js";
@@ -22,6 +23,8 @@ export const ListItem = /*#__PURE__*/memo(function ListItem({
22
23
  trailing,
23
24
  unread = false,
24
25
  onPress,
26
+ accessibilityLabel,
27
+ accessibilityState,
25
28
  style,
26
29
  testID
27
30
  }) {
@@ -58,6 +61,10 @@ export const ListItem = /*#__PURE__*/memo(function ListItem({
58
61
  backgroundColor: colors.dot
59
62
  }], [theme, colors]);
60
63
  const bodyStyle = useMemo(() => listItemBodyStructure(theme), [theme]);
64
+ const slotTextStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
65
+ fontSize: theme.fontSizes.sm,
66
+ color: theme.colors.fg.muted
67
+ }], [theme]);
61
68
  const body = /*#__PURE__*/_jsxs(_Fragment, {
62
69
  children: [unread && /*#__PURE__*/_jsx(View, {
63
70
  testID: testID === undefined ? undefined : `${testID}-dot`,
@@ -70,7 +77,7 @@ export const ListItem = /*#__PURE__*/memo(function ListItem({
70
77
  borderCurve: "continuous",
71
78
  overflow: "hidden"
72
79
  },
73
- children: leading
80
+ children: renderNodeSlot(leading, slotTextStyle)
74
81
  }), /*#__PURE__*/_jsxs(View, {
75
82
  style: bodyStyle,
76
83
  children: [/*#__PURE__*/_jsx(Text, {
@@ -84,11 +91,13 @@ export const ListItem = /*#__PURE__*/memo(function ListItem({
84
91
  numberOfLines: 2,
85
92
  children: subtitle
86
93
  })]
87
- }), trailing]
94
+ }), renderNodeSlot(trailing, slotTextStyle)]
88
95
  });
89
96
  if (!pressable) {
90
97
  return /*#__PURE__*/_jsx(Animated.View, {
91
98
  entering: FadeInDown.springify().reduceMotion(ReduceMotion.System),
99
+ exiting: FadeOut.reduceMotion(ReduceMotion.System),
100
+ layout: LinearTransition.reduceMotion(ReduceMotion.System),
92
101
  testID: testID,
93
102
  style: baseStyle,
94
103
  children: body
@@ -97,7 +106,8 @@ export const ListItem = /*#__PURE__*/memo(function ListItem({
97
106
  return /*#__PURE__*/_jsxs(AnimatedPressable, {
98
107
  testID: testID,
99
108
  accessibilityRole: "button",
100
- accessibilityLabel: a11y.accessibilityLabel,
109
+ accessibilityLabel: accessibilityLabel ?? a11y.accessibilityLabel,
110
+ accessibilityState: accessibilityState,
101
111
  onPress: onPress,
102
112
  onPressIn: press.handlers.onPressIn,
103
113
  onPressOut: press.handlers.onPressOut,
@@ -105,9 +115,10 @@ export const ListItem = /*#__PURE__*/memo(function ListItem({
105
115
  android_ripple: androidRipple,
106
116
  style: pressableStyle,
107
117
  children: [/*#__PURE__*/_jsx(Animated.View, {
108
- pointerEvents: "none",
109
118
  testID: testID === undefined ? undefined : `${testID}-press-overlay`,
110
- style: [StyleSheet.absoluteFill, overlayStaticStyle, press.overlayStyle]
119
+ style: [StyleSheet.absoluteFill, overlayStaticStyle, press.overlayStyle, {
120
+ pointerEvents: 'none'
121
+ }]
111
122
  }), body]
112
123
  });
113
124
  });
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=ListItemProps.js.map
@@ -3,8 +3,8 @@
3
3
  `ListItem` renders one row for notification lists, inboxes, and settings screens: optional
4
4
  `leading`/`trailing` nodes around a title + subtitle column. `unread` adds an `accent.solid` dot
5
5
  and a `bg.surface` row emphasis (plus a semibold title) — `bg.surface`, not `bg.selected`, because
6
- `fg.muted` is only measured AA against surface/hover. A `Pressable` when `onPress` is set uses
7
- `usePressState` (scale + state-layer overlay on the native driver); a plain `View` otherwise.
6
+ `fg.muted` is only measured AA against surface/hover. With `onPress` the root is a
7
+ `Pressable`; without it, an `Animated.View` (see Motion).
8
8
 
9
9
  ## Files
10
10
 
@@ -15,6 +15,7 @@ and a `bg.surface` row emphasis (plus a semibold title) — `bg.surface`, not `b
15
15
  | `index.ts` | Public surface: `ListItem`, `ListItemProps`. |
16
16
  | `__tests__/ListItem.test.ts` | Pure: WCAG contrast (all brands × modes) + a11y label contract. |
17
17
  | `__tests__/ListItem.render.test.tsx` | Render: unread dot/bg, press, leading/trailing slots. |
18
+ | `__tests__/ListItem.dom.test.tsx` | Real DOM (`jest.web.config.js`). |
18
19
 
19
20
  ## Props
20
21
 
@@ -26,6 +27,8 @@ and a `bg.surface` row emphasis (plus a semibold title) — `bg.surface`, not `b
26
27
  | `trailing` | `ReactNode` | — | E.g. a timestamp `Text` or `Badge`. |
27
28
  | `unread` | `boolean` | `false` | Accent dot (decorative, hidden from AT — "unread" is announced in the label instead) + `bg.surface` fill. |
28
29
  | `onPress` | `() => void` | — | Row becomes a `button`-role Pressable, min 44dp tall. |
30
+ | `accessibilityLabel` | `string` | — | Overrides the default `"title, subtitle, unread?"` label on pressable rows. |
31
+ | `accessibilityState` | `{ disabled?, selected? }` | — | Merged into the pressable row (e.g. `selected` for inbox selection). |
29
32
  | `style` | `LayoutStyle` | — | Layout-only, outermost, applied exactly once, last. |
30
33
  | `testID` | `string` | — | Also derives the `-dot` sub-id. |
31
34
 
@@ -34,19 +37,21 @@ and a `bg.surface` row emphasis (plus a semibold title) — `bg.surface`, not `b
34
37
  - Pressable rows carry `accessibilityLabel = "title, subtitle, unread?"` so the dot never has to
35
38
  speak for itself; non-pressable rows leave the text nodes in the normal tree.
36
39
  - Title/subtitle are measured ≥ 4.5:1 against the canvas, the `bg.surface` unread fill, and the
37
- `bg.sunken` pressed fill for all 8 brands × both modes (`ListItem.test.ts`).
40
+ `bg.sunken` pressed fill for all 9 brands × both modes (`ListItem.test.ts`).
38
41
 
39
42
  ## Known gaps
40
43
 
41
44
  - `leading`/`trailing` are `ReactNode` slots (per the generic-row spec) — the nodes' own contrast
42
45
  and touch-target concerns belong to the consumer.
43
46
 
44
- ## Performance
47
+ ## Motion
45
48
 
46
- Wrapped in `React.memo`; the Pressable style function is `useCallback`'d.
49
+ The non-pressable branch is an `Animated.View` with `FadeInDown.springify()` / `FadeOut` and a
50
+ `LinearTransition` layout preset, all `reduceMotion(ReduceMotion.System)`. The pressable branch
51
+ mounts with no entrance — it is the one a `FlatList` recycles mid-scroll — and animates only its
52
+ press feedback (`usePressState`: scale + a `stateLayerScrim` overlay on the native driver).
47
53
 
48
- ## Modernization (v1.0.7)
54
+ ## Performance
49
55
 
50
- - Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
51
- - List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
52
- - `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
56
+ Wrapped in `React.memo`; the colours, accessibility name and both root style arrays are `useMemo`'d,
57
+ so nothing is reallocated per render.