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
@@ -12,10 +12,13 @@
12
12
  */
13
13
 
14
14
  import { memo, useCallback, useEffect, useMemo, useRef } from "react";
15
- import { Animated, Text, View } from "react-native";
15
+ import { Text, View } from "react-native";
16
+ import Reanimated, { interpolate, useAnimatedStyle } from "react-native-reanimated";
16
17
  import { Icon } from "../../core/icon/index.js";
17
18
  import { VirtualList } from "../../core/list/index.js";
18
- import { useAnimatedValue, useMotion } from "../../core/motion/index.js";
19
+ import { Button } from "../button/index.js";
20
+ import { useMotion, useAnimatedValue } from "../../core/motion/index.js";
21
+ import { renderNodeSlot } from "../../core/slot/index.js";
19
22
  import { useTheme } from "../../theme/hooks.js";
20
23
  import { resolveTimelineColors, resolveTimelineItemAccessibility, timelineConnectorLineStructure, timelineConnectorStructure, timelineContentStructure, timelineMarkerStructure, timelineRowStructure, TIMELINE_MARKER } from "./Timeline.variants.js";
21
24
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -25,7 +28,9 @@ const TimelineRow = /*#__PURE__*/memo(function TimelineRow({
25
28
  model,
26
29
  theme,
27
30
  colors,
28
- testID
31
+ testID,
32
+ onEditNote,
33
+ onDeleteNote
29
34
  }) {
30
35
  const {
31
36
  item,
@@ -35,6 +40,10 @@ const TimelineRow = /*#__PURE__*/memo(function TimelineRow({
35
40
  const position = isLast ? "last" : "middle";
36
41
  const rowTestID = testID === undefined ? undefined : `${testID}-item-${index}`;
37
42
  const a11y = resolveTimelineItemAccessibility(item);
43
+ const leadingSlotStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
44
+ fontSize: theme.fontSizes.sm,
45
+ color: colors.title
46
+ }], [theme, colors.title]);
38
47
  return /*#__PURE__*/_jsxs(View, {
39
48
  testID: rowTestID,
40
49
  style: timelineRowStructure(),
@@ -45,7 +54,7 @@ const TimelineRow = /*#__PURE__*/memo(function TimelineRow({
45
54
  importantForAccessibility: "no-hide-descendants",
46
55
  children: [item.leading !== undefined ? /*#__PURE__*/_jsx(View, {
47
56
  testID: rowTestID === undefined ? undefined : `${rowTestID}-marker`,
48
- children: item.leading
57
+ children: renderNodeSlot(item.leading, leadingSlotStyle)
49
58
  }) : /*#__PURE__*/_jsx(View, {
50
59
  testID: rowTestID === undefined ? undefined : `${rowTestID}-marker`,
51
60
  style: [timelineMarkerStructure(theme, {
@@ -93,12 +102,51 @@ const TimelineRow = /*#__PURE__*/memo(function TimelineRow({
93
102
  marginTop: theme.space[1]
94
103
  }],
95
104
  children: item.timestamp
96
- })]
105
+ }), item.notes !== undefined && item.notes.length > 0 ? /*#__PURE__*/_jsx(View, {
106
+ style: {
107
+ marginTop: theme.space[2],
108
+ gap: theme.space[1]
109
+ },
110
+ children: item.notes.map(note => /*#__PURE__*/_jsxs(View, {
111
+ testID: rowTestID === undefined ? undefined : `${rowTestID}-note-${note.id}`,
112
+ style: {
113
+ flexDirection: "row",
114
+ alignItems: "flex-start",
115
+ gap: theme.space[2]
116
+ },
117
+ children: [/*#__PURE__*/_jsx(Text, {
118
+ style: [theme.fontStyleForWeight(theme.fontWeights.regular), {
119
+ flex: 1,
120
+ fontSize: theme.fontSizes.sm,
121
+ color: colors.description
122
+ }],
123
+ children: note.body
124
+ }), onEditNote !== undefined ? /*#__PURE__*/_jsx(Button, {
125
+ variant: "ghost",
126
+ size: "sm",
127
+ icon: "pencil",
128
+ accessibilityLabel: "Edit note",
129
+ onPress: () => onEditNote(note.id),
130
+ testID: rowTestID === undefined ? undefined : `${rowTestID}-edit-${note.id}`
131
+ }) : null, onDeleteNote !== undefined ? /*#__PURE__*/_jsx(Button, {
132
+ variant: "ghost",
133
+ size: "sm",
134
+ icon: "trash",
135
+ accessibilityLabel: "Delete note",
136
+ onPress: () => onDeleteNote(note.id),
137
+ testID: rowTestID === undefined ? undefined : `${rowTestID}-delete-${note.id}`
138
+ }) : null]
139
+ }, note.id))
140
+ }) : null]
97
141
  })]
98
142
  });
99
143
  });
100
144
  export const Timeline = /*#__PURE__*/memo(function Timeline({
101
145
  items,
146
+ onAddNote,
147
+ onEditNote,
148
+ onDeleteNote,
149
+ notesLoading = false,
102
150
  style,
103
151
  testID
104
152
  }) {
@@ -107,10 +155,11 @@ export const Timeline = /*#__PURE__*/memo(function Timeline({
107
155
  const colors = useMemo(() => resolveTimelineColors(theme.colors), [theme.colors]);
108
156
  const reveal = useAnimatedValue(motion.decorative ? 0 : 1);
109
157
  const running = useRef(null);
158
+ const offsetY = motion.transform.offsetY;
110
159
  useEffect(() => {
111
160
  running.current?.stop();
112
161
  if (!motion.decorative) {
113
- reveal.setValue(1);
162
+ reveal.value = 1;
114
163
  return;
115
164
  }
116
165
  running.current = motion.timing(reveal, 1, {
@@ -120,15 +169,12 @@ export const Timeline = /*#__PURE__*/memo(function Timeline({
120
169
  return () => running.current?.stop();
121
170
  }, [motion, reveal]);
122
171
  useEffect(() => () => running.current?.stop(), []);
123
- const revealStyle = useMemo(() => ({
124
- opacity: reveal,
172
+ const revealStyle = useAnimatedStyle(() => ({
173
+ opacity: reveal.value,
125
174
  transform: [{
126
- translateY: reveal.interpolate({
127
- inputRange: [0, 1],
128
- outputRange: [motion.transform.offsetY, 0]
129
- })
175
+ translateY: interpolate(reveal.value, [0, 1], [offsetY, 0])
130
176
  }]
131
- }), [reveal, motion.transform.offsetY]);
177
+ }));
132
178
  const rootStyle = useMemo(() => [revealStyle, style], [revealStyle, style]);
133
179
  const rows = useMemo(() => items.map((item, index) => ({
134
180
  item,
@@ -142,28 +188,39 @@ export const Timeline = /*#__PURE__*/memo(function Timeline({
142
188
  model: row,
143
189
  theme: theme,
144
190
  colors: colors,
145
- testID: testID
146
- }), [theme, colors, testID]);
191
+ testID: testID,
192
+ onEditNote: onEditNote,
193
+ onDeleteNote: onDeleteNote
194
+ }), [theme, colors, testID, onEditNote, onDeleteNote]);
195
+ const addNoteControl = onAddNote !== undefined ? /*#__PURE__*/_jsx(Button, {
196
+ variant: "outline",
197
+ label: "Add note",
198
+ onPress: onAddNote,
199
+ loading: notesLoading,
200
+ testID: testID ? `${testID}-add-note` : undefined
201
+ }) : null;
147
202
  if (items.length >= VIRTUALIZE_THRESHOLD) {
148
- return /*#__PURE__*/_jsx(Animated.View, {
203
+ return /*#__PURE__*/_jsxs(Reanimated.View, {
149
204
  testID: testID,
150
205
  style: rootStyle,
151
- children: /*#__PURE__*/_jsx(VirtualList, {
206
+ children: [/*#__PURE__*/_jsx(VirtualList, {
152
207
  data: rows,
153
208
  keyExtractor: keyExtractor,
154
209
  renderItem: renderItem
155
- })
210
+ }), addNoteControl]
156
211
  });
157
212
  }
158
- return /*#__PURE__*/_jsx(Animated.View, {
213
+ return /*#__PURE__*/_jsxs(Reanimated.View, {
159
214
  testID: testID,
160
215
  style: rootStyle,
161
- children: rows.map(row => /*#__PURE__*/_jsx(TimelineRow, {
216
+ children: [rows.map(row => /*#__PURE__*/_jsx(TimelineRow, {
162
217
  model: row,
163
218
  theme: theme,
164
219
  colors: colors,
165
- testID: testID
166
- }, keyExtractor(row)))
220
+ testID: testID,
221
+ onEditNote: onEditNote,
222
+ onDeleteNote: onDeleteNote
223
+ }, keyExtractor(row))), addNoteControl]
167
224
  });
168
225
  });
169
226
  //# sourceMappingURL=Timeline.js.map
@@ -14,6 +14,7 @@
14
14
  * (mocking only `react-native`'s `StyleSheet`, as `core/style` and every sibling module's tests do).
15
15
  */
16
16
 
17
+ import { MIN_TOUCH_TARGET } from "../../core/a11y/touchTarget.js";
17
18
  import { createThemedVariants, createVariants } from "../../core/style/index.js";
18
19
  /**
19
20
  * Timeline-specific dimensions. Kept a plain constant — no theme dependency — same as
@@ -33,6 +34,7 @@ export const TIMELINE_MARKER = {
33
34
  * `tone`/`color` prop to widen: every event reads identically, so every colour Timeline can show is
34
35
  * one of these role lookups, guaranteed legible in both modes.
35
36
  */
37
+ export { MIN_TOUCH_TARGET };
36
38
  export function resolveTimelineColors(colors) {
37
39
  return {
38
40
  markerFill: colors.accent.solid,
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=TimelineProps.js.map
@@ -43,11 +43,14 @@ safe no-op when nothing is showing.
43
43
  ## Motion
44
44
 
45
45
  Entrance and exit go through **`useMotion()`** at the shared `fast` duration; the card's travel is
46
- `MOTION_TRANSFORM.surfaceOffsetY`. The old module-local `ANIMATION_MS = 200` / `TRANSLATE_DISTANCE =
47
- 24` are gone this module was skipped by the earlier motion refactor, so until now neither the
48
- device tier's `durationScale` nor `MOTION_SCALE`/`MOTION_ENABLED` reached it. The unmount timer reads
49
- the SAME resolved `motion.duration("fast")` as the tween, keeping the removal deterministic (see
50
- `Toast.tsx`'s note on why the timer, not the animation callback, drives it).
46
+ `MOTION_TRANSFORM.surfaceOffsetY`, so the device tier's `durationScale` and `MOTION_SCALE`/
47
+ `MOTION_ENABLED` all reach it. The unmount timer reads the SAME resolved `motion.duration("fast")`
48
+ as the tween, keeping the removal deterministic (see `Toast.tsx`'s note on why the timer, not the
49
+ animation callback, drives it). The card also carries `LinearTransition` (with
50
+ `ReduceMotion.System`) so a replacing toast reflows without a second fade/slide.
51
+
52
+ `show()` fires `useHaptics().notification("success")` for a `success` toast and
53
+ `notification("error")` for a `danger` one; other tones are silent.
51
54
 
52
55
  ## Auto-dismiss timing (WCAG 2.2.1 — Timing Adjustable)
53
56
 
@@ -74,10 +77,9 @@ place that decides whether a toast's timer gets armed. `Toast.tsx` branches on i
74
77
  TalkBack to finish speaking a message, and there is no way to replay a toast that's gone — this is
75
78
  the DEFAULT behaviour, not an opt-in prop, because a consumer has no way to know per-toast whether
76
79
  a reader is running.
77
- - **`tone: "danger"` with no explicit `duration` defaults to persistent**, unlike every other tone.
78
- **Consumer-visible behaviour change:** an existing `show({ message, tone: "danger" })` call that
79
- relied on the ~3000ms default now stays up until dismissed. An explicit `duration` on a `danger`
80
- toast is still honoured — only the *default* changed. Judgement call: a 3-second error message is
80
+ - **`tone: "danger"` with no explicit `duration` defaults to persistent**, unlike every other tone,
81
+ so `show({ message, tone: "danger" })` stays up until dismissed. An explicit `duration` on a
82
+ `danger` toast is still honoured. Judgement call: a 3-second error message is
81
83
  the exact failure WCAG 2.2.1 exists to prevent, and this catalogue has no toast history a user
82
84
  could scroll back to recover a missed one from. Every other tone keeps the ~3000ms default
83
85
  unchanged — success/info/neutral/warning messages are lower-stakes and the existing default reads
@@ -145,8 +147,8 @@ change can't silently reintroduce the gap.
145
147
  `core/a11y` and re-export, once that edit lands, rather than leaving two near-identical stores.
146
148
  - **No stacking queue.** `show()` while visible replaces the current toast; there is no multi-toast
147
149
  queue in v1. Flagging for a future version if a consumer needs concurrent toasts.
148
- - **Top position has no safe-area inset awareness.** `position: "bottom"` now adds the same static
149
- iOS home-indicator approximation Drawer/BottomSheet use (`resolveToastBottomInset`); `top` still
150
+ - **Top position has no safe-area inset awareness.** `position: "bottom"` adds the same static
151
+ iOS home-indicator approximation Drawer/BottomSheet use (`resolveToastBottomInset`); `top`
150
152
  reads a fixed `theme.space[4]` with no notch awareness — a consumer on a notched device may want
151
153
  its own top padding via screen-level layout until `react-native-safe-area-context` is a real peer.
152
154
  - Render tests need `@testing-library/react-native` + a react-native jest preset (same
@@ -156,12 +158,3 @@ change can't silently reintroduce the gap.
156
158
 
157
159
  `ToastProvider` (exported) and `ToastCard` (internal, non-exported) are both wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`) — mirrors the repo convention (e.g. `AccordionRow`) of memoizing library-internal child components too. No new `useCallback`/`useMemo` needed: the props handed to `ToastCard` (`toast`, `theme`, `position`, `progress`, `onDismiss={hide}`) were already stable — the file already used `useCallback`/`useMemo` throughout.
158
160
 
159
- ## Modernization (v1.0.7)
160
-
161
- - Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
162
- - List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
163
- - `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
164
-
165
- Success/danger toasts fire `useHaptics().notification()` when a haptics module is registered.
166
-
167
- - **Round 5 motion** — dropped the ad hoc reanimated `FadeInDown`/`FadeOut`/`LinearTransition` wrapper; `progress` already drove the card's own entrance+exit fade/slide, so the wrapper was pure duplication.
@@ -23,12 +23,13 @@
23
23
  */
24
24
 
25
25
  import { createContext, memo, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
26
- import { AccessibilityInfo, Animated, Platform, Pressable, StyleSheet, Text, View } from "react-native";
27
- import { useAnimatedValue, useMotion } from "../../core/motion/index.js";
26
+ import { AccessibilityInfo, Platform, Pressable, StyleSheet, Text, View } from "react-native";
27
+ import Reanimated, { interpolate, LinearTransition, ReduceMotion, useAnimatedStyle } from "react-native-reanimated";
28
+ import { useMotion, useAnimatedValue } from "../../core/motion/index.js";
28
29
  import { useHaptics } from "../../core/haptics/index.js";
29
30
  import { Icon } from "../../core/icon/index.js";
30
31
  import { useTheme } from "../../theme/hooks.js";
31
- import { elevation, floatingBackground, floatingSurfaceStyle, highlight } from "../../theme/platform/index.js";
32
+ import { elevation, floatingSurfaceStyle, highlight } from "../../theme/platform/index.js";
32
33
  import { elevation as elevationTokens } from "../../theme/tokens/primitives/index.js";
33
34
  import { CLOSE_BUTTON_SIZE, CLOSE_HIT_SLOP, CLOSE_ICON_SIZE, resolveAutoDismissDelay, resolveToastBottomInset, resolveToastTone, toastAccentBarStructure, toastCardStructure, toastOverlayStructure } from "./Toast.variants.js";
34
35
  import { useScreenReaderEnabled } from "./toastScreenReader.js";
@@ -89,7 +90,7 @@ export const ToastProvider = /*#__PURE__*/memo(function ToastProvider({
89
90
  // A replacement toast is a new event: whatever the pointer/focus did to the last one is spent.
90
91
  hovered.current = false;
91
92
  focused.current = false;
92
- progress.setValue(0);
93
+ progress.value = 0;
93
94
  const tone = options.tone ?? "neutral";
94
95
  setToast({
95
96
  message: options.message,
@@ -147,8 +148,9 @@ export const ToastProvider = /*#__PURE__*/memo(function ToastProvider({
147
148
  return /*#__PURE__*/_jsxs(ToastContext.Provider, {
148
149
  value: contextValue,
149
150
  children: [children, /*#__PURE__*/_jsx(View, {
150
- pointerEvents: "box-none",
151
- style: overlayStyle,
151
+ style: [overlayStyle, {
152
+ pointerEvents: 'box-none'
153
+ }],
152
154
  children: toast !== null && /*#__PURE__*/_jsx(ToastCard, {
153
155
  toast: toast,
154
156
  theme: theme,
@@ -180,63 +182,63 @@ const ToastCard = /*#__PURE__*/memo(function ToastCard({
180
182
  onFocusOut
181
183
  }) {
182
184
  const toneColors = resolveToastTone(theme.colors, toast.tone);
185
+
186
+ // Shadow/elevation only — `toneColors.background` is the one painted background.
183
187
  const floatingStyle = useMemo(() => {
184
188
  highlight("subtle", theme.mode);
185
189
  elevation(elevationTokens.sm);
186
190
  void theme.elevatedSurfaces;
187
- return {
188
- backgroundColor: floatingBackground(theme, "sm"),
189
- ...floatingSurfaceStyle(theme, "sm")
190
- };
191
+ return floatingSurfaceStyle(theme, "sm");
191
192
  }, [theme]);
192
- const translateY = progress.interpolate({
193
- inputRange: [0, 1],
194
- outputRange: position === "top" ? [-offsetY, 0] : [offsetY, 0]
195
- });
196
- return /*#__PURE__*/_jsxs(Animated.View, {
193
+ const cardMotion = useAnimatedStyle(() => ({
194
+ opacity: progress.value,
195
+ transform: [{
196
+ translateY: interpolate(progress.value, [0, 1], position === "top" ? [-offsetY, 0] : [offsetY, 0])
197
+ }]
198
+ }));
199
+ return /*#__PURE__*/_jsx(Reanimated.View, {
197
200
  testID: "pixelize-toast",
198
- accessibilityRole: "alert"
199
- // Pointer events, not Pressable: hovering to read must not compete with the close button's tap.
200
- ,
201
+ accessibilityRole: "alert",
201
202
  onPointerEnter: onHoverIn,
202
203
  onPointerLeave: onHoverOut,
203
204
  onFocus: onFocusIn,
204
205
  onBlur: onFocusOut,
206
+ layout: LinearTransition.reduceMotion(ReduceMotion.System),
205
207
  style: [toastCardStructure(theme), floatingStyle, {
206
- opacity: progress,
207
- transform: [{
208
- translateY
209
- }]
208
+ backgroundColor: toneColors.background
210
209
  }],
211
- children: [/*#__PURE__*/_jsx(View, {
212
- style: [toastAccentBarStructure(theme), {
213
- backgroundColor: toneColors.accent
214
- }]
215
- }), /*#__PURE__*/_jsx(Text, {
216
- numberOfLines: 3,
217
- style: [theme.fontStyleForWeight(theme.fontWeights.medium), styles.message, {
218
- fontSize: theme.fontSizes.sm,
219
- color: toneColors.text
220
- }],
221
- children: toast.message
222
- }), /*#__PURE__*/_jsx(Pressable, {
223
- testID: "pixelize-toast-close",
224
- accessibilityRole: "button",
225
- accessibilityLabel: "Dismiss notification",
226
- hitSlop: CLOSE_HIT_SLOP,
227
- onPress: onDismiss,
228
- onHoverIn: onHoverIn,
229
- onHoverOut: onHoverOut,
230
- onFocus: onFocusIn,
231
- onBlur: onFocusOut,
232
- style: styles.closeButton,
233
- children: /*#__PURE__*/_jsx(Icon, {
234
- name: "x",
235
- size: CLOSE_ICON_SIZE,
236
- color: theme.colors.fg.muted,
237
- strokeWidth: 2
238
- })
239
- })]
210
+ children: /*#__PURE__*/_jsxs(Reanimated.View, {
211
+ style: cardMotion,
212
+ children: [/*#__PURE__*/_jsx(View, {
213
+ style: [toastAccentBarStructure(theme), {
214
+ backgroundColor: toneColors.accent
215
+ }]
216
+ }), /*#__PURE__*/_jsx(Text, {
217
+ numberOfLines: 3,
218
+ style: [theme.fontStyleForWeight(theme.fontWeights.medium), styles.message, {
219
+ fontSize: theme.fontSizes.sm,
220
+ color: toneColors.text
221
+ }],
222
+ children: toast.message
223
+ }), /*#__PURE__*/_jsx(Pressable, {
224
+ testID: "pixelize-toast-close",
225
+ accessibilityRole: "button",
226
+ accessibilityLabel: "Dismiss notification",
227
+ hitSlop: CLOSE_HIT_SLOP,
228
+ onPress: onDismiss,
229
+ onHoverIn: onHoverIn,
230
+ onHoverOut: onHoverOut,
231
+ onFocus: onFocusIn,
232
+ onBlur: onFocusOut,
233
+ style: styles.closeButton,
234
+ children: /*#__PURE__*/_jsx(Icon, {
235
+ name: "x",
236
+ size: CLOSE_ICON_SIZE,
237
+ color: theme.colors.fg.muted,
238
+ strokeWidth: 2
239
+ })
240
+ })]
241
+ })
240
242
  });
241
243
  });
242
244
 
@@ -15,12 +15,9 @@
15
15
  * `react-native`'s `StyleSheet`, as `core/style` does).
16
16
  */
17
17
 
18
+ import { MIN_TOUCH_TARGET, slopFor } from "../../core/a11y/touchTarget.js";
18
19
  import { createThemedVariants } from "../../core/style/index.js";
19
- /** Same floor as Button/Input/Checkbox — 44dp (WCAG 2.5.5 / HIG). Duplicated, not imported: modules
20
- * stay isolated. */
21
- export const MIN_TOUCH_TARGET = 44;
22
- const slopFor = size => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - size) / 2));
23
-
20
+ export { MIN_TOUCH_TARGET };
24
21
  /** The close button's own visual box + glyph. Toast takes no `size` prop, so this is a fixed pair,
25
22
  * not a scale — mirrors `BUTTON_SIZES`' shape for exactly one size. */
26
23
  export const CLOSE_BUTTON_SIZE = 24;
@@ -24,6 +24,7 @@ modules, it exposes no `style` prop.
24
24
  | `label` | `string` | — | The tip's text. Also what gets merged into the trigger's `accessibilityHint`. |
25
25
  | `children` | `ReactElement<TooltipTriggerProps>` | — | A single element accepting `onLongPress`/`onPressOut`/`onHoverIn`/`onHoverOut`/`onFocus`/`onBlur`/`accessibilityHint`/`aria-describedby` — `Button`, `Fab`, or a raw `Pressable`. A `Text` is **not** enough: react-native-web's `Text` handles only `onPress`, so every injected handler is dropped and the tip never opens on web. |
26
26
  | `placement` | `top \| bottom` | `bottom` | Which side of the trigger the bubble opens toward. |
27
+ | `onlyShowWhenTruncated` | `boolean` | `false` | When true, the tip opens only if the trigger's text is ellipsized (web: `scrollWidth > clientWidth`; native: `numberOfLines` truncation probe). |
27
28
  | `testID` | `string` | — | On the host `View`; also seeds `${testID}-bubble` on the visible bubble. |
28
29
 
29
30
  No `style` prop (see the file-header note) and no `tone`/`variant`/`size` — the bubble always
@@ -57,8 +58,9 @@ reads `bg.raised` / `fg.default`, so there is nothing appearance-wise for a call
57
58
  - **2.2.1 Timing Adjustable — not engaged on the hover/focus path.** `show(false)` never arms a
58
59
  timer, so a pointer/keyboard tip has no time limit at all. The 2.5s `autoHideMs` is armed only by
59
60
  `onLongPress` — see "Known gaps".
60
- - **2.3.3** — the fade-in is skipped (`duration: 0`) when `useReducedMotion()` is true; the bubble
61
- still appears immediately, so reduced motion never means "no tip."
61
+ - **2.3.3** — show/hide runs through `useEnterExit` + `useMotion()`; the tween collapses to
62
+ `duration: 0` when motion is off, so the bubble still appears immediately reduced motion never
63
+ means "no tip."
62
64
  - **Touch target** — Tooltip renders no interactive control of its own; the trigger child owns its
63
65
  own touch target (e.g. an icon `Button` already enforces ≥ 44dp via `hitSlop`).
64
66
 
@@ -69,8 +71,8 @@ reads `bg.raised` / `fg.default`, so there is nothing appearance-wise for a call
69
71
  2. **Pure, testable resolvers** in `Tooltip.variants.ts` — no React/lucide, so the WCAG measurement
70
72
  and the hint-merge contract are unit-tested against real palettes, never eyeballed.
71
73
  3. **No `{...rest}`** — composition is `React.cloneElement` on the single child (explicitly
72
- sanctioned as composition, not a rest spread), injecting three named props only.
73
- 4. **Reduced motion respected**, same `useReducedMotion()` seam as Button's press fade.
74
+ sanctioned as composition, not a rest spread), injecting the eight named `TooltipTriggerProps`.
75
+ 4. **Reduced motion respected**, same `useMotion()` seam as Button's press fade.
74
76
 
75
77
  ## Design decisions specific to this module
76
78
 
@@ -107,8 +109,9 @@ reads `bg.raised` / `fg.default`, so there is nothing appearance-wise for a call
107
109
  - **Requires a trigger that declares the injected props.** `cloneElement` sets them on the element,
108
110
  but the repo's `{...rest}` ban means a component only receives what its own prop list names — so
109
111
  a trigger that doesn't declare them drops the gesture, the hover/focus reveal and the hint merge
110
- with no error. `Button` and `Fab` declare all seven (each chaining Tooltip's handler after its own
111
- press/focus ring); a raw RN `Pressable`/`TouchableOpacity` accepts them by construction. **Every
112
+ with no error. `Fab` declares all eight; `Button` declares seven it has no `aria-describedby`,
113
+ so the web description link never reaches it. A raw RN `Pressable`/`TouchableOpacity` accepts
114
+ them by construction. **Every
112
115
  other module still drops them** — `Chip`, `CopyButton`, `ListItem`, `Switch`, `Checkbox`, `Select`
113
116
  and the rest are not usable as triggers yet. **A plain `Text` is a trap on web** (react-native-web's
114
117
  `Text` handles only `onPress`) — this is the bug the example app hit.
@@ -131,10 +134,3 @@ reads `bg.raised` / `fg.default`, so there is nothing appearance-wise for a call
131
134
 
132
135
  Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). `clearHideTimer`/`hide`/`show`/`scheduleHide` and the bubble's own `handleBubbleHoverIn`/`handleBubbleHoverOut` are all `useCallback`'d, and all six handlers `cloneElement` injects into the consumer-supplied `children` trigger are extracted to `handleLongPress`/`handlePressOut`/`handleHoverIn`/`handleHoverOut`/`handleFocus`/`handleBlur` (`useCallback`) instead of inline lambdas — same idiom `Menu.tsx` uses for its own trigger, since a fresh closure there would defeat a memoized trigger (e.g. this library's own `Button`).
133
136
 
134
- ## Modernization (v1.0.7)
135
-
136
- - Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
137
- - List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
138
- - `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
139
-
140
- Button trigger focus ring is native `outline*` on the pressable (no sibling focus view).
@@ -28,29 +28,57 @@
28
28
  * strand the bubble in the tree.
29
29
  */
30
30
 
31
- import { cloneElement, memo, useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
32
- import { Animated, StyleSheet, Text, View } from "react-native";
31
+ import { cloneElement, isValidElement, memo, useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
32
+ import { StyleSheet, Text, View } from "react-native";
33
+ import Reanimated from "react-native-reanimated";
33
34
  import { useDismissOnEscape } from "../../core/a11y/keyboard";
34
35
  import { useEnterExit, useMotion } from "../../core/motion/index.js";
35
36
  import { elevation, floatingBackground, floatingSurfaceStyle, highlight } from "../../theme/platform/index.js";
36
37
  import { elevation as elevationTokens } from "../../theme/tokens/primitives/index.js";
37
38
  import { useTheme } from "../../theme/hooks.js";
38
39
  import { mergeAccessibilityHint, TOOLTIP_TIMING, tooltipBubbleStructure } from "./Tooltip.variants.js";
39
-
40
- /** The subset of props Tooltip reads from / injects into its trigger child. */
41
40
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
42
41
  export const Tooltip = /*#__PURE__*/memo(function Tooltip({
43
42
  label,
44
43
  children,
45
44
  placement = "bottom",
45
+ onlyShowWhenTruncated = false,
46
46
  testID
47
47
  }) {
48
48
  const theme = useTheme();
49
49
  const motion = useMotion();
50
50
  const [visible, setVisible] = useState(false);
51
+ const [contentTruncated, setContentTruncated] = useState(!onlyShowWhenTruncated);
51
52
  const hideTimer = useRef(null);
52
53
  const hovered = useRef(false);
53
54
  const bubbleId = useId();
55
+ const attachTruncationProbe = useCallback(element => {
56
+ if (!onlyShowWhenTruncated) return element;
57
+ if (element.type === Text) {
58
+ const text = element;
59
+ return /*#__PURE__*/cloneElement(text, {
60
+ onTextLayout: event => {
61
+ text.props.onTextLayout?.(event);
62
+ const maxLines = text.props.numberOfLines;
63
+ const lines = event.nativeEvent.lines;
64
+ if (maxLines === undefined) {
65
+ setContentTruncated(true);
66
+ return;
67
+ }
68
+ const last = lines[lines.length - 1];
69
+ const labelText = text.props.children;
70
+ const truncatedByLineCount = lines.length > maxLines;
71
+ const truncatedByEllipsis = lines.length === maxLines && typeof labelText === "string" && last !== undefined && last.text !== labelText;
72
+ setContentTruncated(truncatedByLineCount || truncatedByEllipsis);
73
+ }
74
+ });
75
+ }
76
+ const inner = element.props.children;
77
+ if (/*#__PURE__*/isValidElement(inner)) {
78
+ return /*#__PURE__*/cloneElement(element, {}, attachTruncationProbe(inner));
79
+ }
80
+ return element;
81
+ }, [onlyShowWhenTruncated]);
54
82
 
55
83
  // A bubble above the trigger should settle upward, one below it downward — `useEnterExit` enters
56
84
  // from `-offset`, so the sign flips with placement.
@@ -80,12 +108,13 @@ export const Tooltip = /*#__PURE__*/memo(function Tooltip({
80
108
  // trigger is hovered/focused (WCAG 1.4.13), and hover-out/blur are reliable enough not to need
81
109
  // the fallback.
82
110
  const show = useCallback(autoHide => {
111
+ if (onlyShowWhenTruncated && !contentTruncated) return;
83
112
  clearHideTimer();
84
113
  setVisible(true);
85
114
  // Fallback dismiss: guarantees the tip can't get stuck open if `onPressOut` never fires (e.g.
86
115
  // the gesture is cancelled by a scroll, or assistive tech triggers `onLongPress` directly).
87
116
  if (autoHide) hideTimer.current = setTimeout(hide, TOOLTIP_TIMING.autoHideMs);
88
- }, [clearHideTimer, hide]);
117
+ }, [clearHideTimer, hide, onlyShowWhenTruncated, contentTruncated]);
89
118
  useEffect(() => clearHideTimer, [clearHideTimer]);
90
119
 
91
120
  // WCAG 1.4.13 dismissible: Escape hides the tip without moving focus, so a keyboard user can
@@ -137,7 +166,7 @@ export const Tooltip = /*#__PURE__*/memo(function Tooltip({
137
166
  children.props.onBlur?.(event);
138
167
  hide();
139
168
  }, [children, hide]);
140
- const trigger = /*#__PURE__*/cloneElement(children, {
169
+ const trigger = /*#__PURE__*/cloneElement(attachTruncationProbe(children), {
141
170
  onLongPress: handleLongPress,
142
171
  onPressOut: handlePressOut,
143
172
  onHoverIn: handleHoverIn,
@@ -172,7 +201,7 @@ export const Tooltip = /*#__PURE__*/memo(function Tooltip({
172
201
  // screen-reader users through the trigger — the merged `accessibilityHint` on native, the
173
202
  // `aria-describedby` reference to this `id` on web — so exposing the bubble in reading
174
203
  // order too would announce the same text twice.
175
- _jsx(Animated.View, {
204
+ _jsx(Reanimated.View, {
176
205
  testID: testID ? `${testID}-bubble` : undefined,
177
206
  id: bubbleId,
178
207
  onPointerEnter: handleBubbleHoverIn,
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=TooltipProps.js.map
@@ -1,4 +1,4 @@
1
- # typing-indicator/
1
+ # typing-indicator/ — a three-dot typing animation for chat threads
2
2
 
3
3
  Three-dot typing animation for chat threads. Static dots under reduced motion.
4
4