@astryxdesign/core 0.7.5 → 0.7.6-canary.00146a7

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 (1898) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +5 -5
  4. package/dist/AppShell/AppShell.d.ts.map +1 -1
  5. package/dist/AppShell/AppShell.js +177 -5
  6. package/dist/AppShell/observeMainOverflow.d.ts +9 -0
  7. package/dist/AppShell/observeMainOverflow.d.ts.map +1 -0
  8. package/dist/AppShell/observeMainOverflow.js +125 -0
  9. package/dist/Avatar/Avatar.d.ts.map +1 -1
  10. package/dist/Avatar/Avatar.js +12 -3
  11. package/dist/Badge/Badge.d.ts.map +1 -1
  12. package/dist/Badge/Badge.js +8 -1
  13. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  14. package/dist/BottomSheet/BottomSheet.js +7 -3
  15. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  16. package/dist/BottomSheet/BottomSheetPanel.js +38 -10
  17. package/dist/BottomSheet/BottomSheetSwitcher.d.ts +1 -1
  18. package/dist/BottomSheet/BottomSheetSwitcher.js +1 -1
  19. package/dist/BottomSheet/useMobileKeyboard.d.ts.map +1 -1
  20. package/dist/BottomSheet/useMobileKeyboard.js +44 -8
  21. package/dist/BottomSheet/useSheetGestures.d.ts +48 -6
  22. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  23. package/dist/BottomSheet/useSheetGestures.js +97 -13
  24. package/dist/Breadcrumbs/BreadcrumbItem.js +4 -2
  25. package/dist/Button/Button.js +4 -4
  26. package/dist/Carousel/Carousel.d.ts +3 -1
  27. package/dist/Carousel/Carousel.d.ts.map +1 -1
  28. package/dist/Carousel/Carousel.js +12 -3
  29. package/dist/Center/Center.d.ts +1 -1
  30. package/dist/Center/Center.js +1 -1
  31. package/dist/Chat/ChatComposer.d.ts.map +1 -1
  32. package/dist/Chat/ChatComposer.js +10 -5
  33. package/dist/Chat/ChatComposerDrawer.d.ts +1 -1
  34. package/dist/Chat/ChatComposerDrawer.js +1 -1
  35. package/dist/Chat/ChatComposerInput.d.ts +1 -1
  36. package/dist/Chat/ChatComposerInput.js +1 -1
  37. package/dist/Chat/ChatLayout.d.ts.map +1 -1
  38. package/dist/Chat/ChatLayout.js +1 -1
  39. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  40. package/dist/Chat/ChatMessageList.js +3 -1
  41. package/dist/Chat/ChatPastedTextToken.d.ts.map +1 -1
  42. package/dist/Chat/ChatPastedTextToken.js +15 -4
  43. package/dist/Chat/ChatSystemMessage.d.ts.map +1 -1
  44. package/dist/Chat/ChatSystemMessage.js +2 -1
  45. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  46. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  47. package/dist/CheckboxInput/CheckboxInput.js +6 -5
  48. package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
  49. package/dist/CheckboxList/CheckboxList.js +5 -2
  50. package/dist/CheckboxList/CheckboxListContext.d.ts +8 -0
  51. package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
  52. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  53. package/dist/CheckboxList/CheckboxListItem.js +5 -2
  54. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  55. package/dist/ClickableCard/ClickableCard.js +37 -4
  56. package/dist/Code/Code.d.ts +1 -1
  57. package/dist/Code/Code.js +1 -1
  58. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  59. package/dist/CommandPalette/CommandPaletteInput.js +8 -5
  60. package/dist/ComplexSelector/ComplexSelector.d.ts +2 -2
  61. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  62. package/dist/ComplexSelector/ComplexSelector.js +48 -6
  63. package/dist/ContextMenu/ContextMenu.d.ts +6 -0
  64. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  65. package/dist/ContextMenu/ContextMenu.js +31 -7
  66. package/dist/DateInput/DateInput.d.ts +3 -2
  67. package/dist/DateInput/DateInput.d.ts.map +1 -1
  68. package/dist/DateInput/DateInput.js +12 -4
  69. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  70. package/dist/DateInput/MonthScroller.js +108 -23
  71. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  72. package/dist/DateInput/TouchDateField.js +8 -3
  73. package/dist/DateInput/Wheel.d.ts.map +1 -1
  74. package/dist/DateInput/Wheel.js +11 -7
  75. package/dist/DateInput/usePointerDragScroll.d.ts +10 -1
  76. package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
  77. package/dist/DateInput/usePointerDragScroll.js +25 -9
  78. package/dist/DateInput/useScrollSettle.d.ts +3 -1
  79. package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
  80. package/dist/DateInput/useScrollSettle.js +37 -8
  81. package/dist/DateRangeInput/DateRangeInput.d.ts +3 -2
  82. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  83. package/dist/DateRangeInput/DateRangeInput.js +9 -5
  84. package/dist/DateTimeInput/DateTimeInput.d.ts +5 -2
  85. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  86. package/dist/DateTimeInput/DateTimeInput.js +23 -12
  87. package/dist/DateTimeInput/NativeTimeSegment.d.ts.map +1 -1
  88. package/dist/DateTimeInput/NativeTimeSegment.js +5 -4
  89. package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
  90. package/dist/DateTimeInput/TouchDateTimeField.js +4 -3
  91. package/dist/Dialog/Dialog.d.ts.map +1 -1
  92. package/dist/Dialog/Dialog.js +30 -10
  93. package/dist/Dialog/DialogHeader.d.ts.map +1 -1
  94. package/dist/Dialog/DialogHeader.js +5 -4
  95. package/dist/Divider/Divider.d.ts.map +1 -1
  96. package/dist/Divider/Divider.js +2 -1
  97. package/dist/Drawer/Drawer.d.ts +2 -1
  98. package/dist/Drawer/Drawer.d.ts.map +1 -1
  99. package/dist/Drawer/Drawer.js +8 -3
  100. package/dist/DropdownMenu/DropdownMenu.d.ts +1 -1
  101. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  102. package/dist/DropdownMenu/DropdownMenu.js +56 -30
  103. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +3 -2
  104. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  105. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +4 -3
  106. package/dist/DropdownMenu/DropdownMenuGroup.d.ts.map +1 -1
  107. package/dist/DropdownMenu/DropdownMenuGroup.js +2 -1
  108. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  109. package/dist/DropdownMenu/DropdownMenuItem.js +4 -3
  110. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +4 -3
  111. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  112. package/dist/DropdownMenu/DropdownMenuRadioItem.js +4 -3
  113. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  114. package/dist/DropdownMenu/DropdownMenuSubMenu.js +10 -6
  115. package/dist/DropdownMenu/MenuBottomSheetActionList.d.ts.map +1 -1
  116. package/dist/DropdownMenu/MenuBottomSheetActionList.js +15 -8
  117. package/dist/DropdownMenu/lazyMenuBottomSheet.d.ts +20 -2
  118. package/dist/DropdownMenu/lazyMenuBottomSheet.d.ts.map +1 -1
  119. package/dist/DropdownMenu/lazyMenuBottomSheet.js +31 -3
  120. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  121. package/dist/DropdownMenu/renderDropdownItems.js +21 -16
  122. package/dist/EmptyState/EmptyState.d.ts.map +1 -1
  123. package/dist/EmptyState/EmptyState.js +2 -1
  124. package/dist/Field/Field.d.ts +2 -2
  125. package/dist/Field/Field.d.ts.map +1 -1
  126. package/dist/Field/FieldLabel.d.ts +1 -1
  127. package/dist/Field/FieldLabel.d.ts.map +1 -1
  128. package/dist/Field/FieldLabel.js +23 -6
  129. package/dist/Field/InputClearButton.js +3 -3
  130. package/dist/Field/PanelSearchInput.d.ts.map +1 -1
  131. package/dist/Field/PanelSearchInput.js +12 -7
  132. package/dist/Field/fieldStatusPlacement.d.ts +15 -0
  133. package/dist/Field/fieldStatusPlacement.d.ts.map +1 -0
  134. package/dist/Field/fieldStatusPlacement.js +1 -0
  135. package/dist/FieldStatus/FieldStatus.d.ts +16 -28
  136. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  137. package/dist/FieldStatus/FieldStatus.js +27 -5
  138. package/dist/FieldStatus/index.d.ts +7 -0
  139. package/dist/FieldStatus/index.d.ts.map +1 -1
  140. package/dist/FileInput/FileInput.d.ts +10 -2
  141. package/dist/FileInput/FileInput.d.ts.map +1 -1
  142. package/dist/FileInput/FileInput.js +93 -36
  143. package/dist/Heading/Heading.js +1 -1
  144. package/dist/Icon/Icon.js +1 -1
  145. package/dist/Indicator/CheckIndicator.d.ts.map +1 -1
  146. package/dist/Indicator/CheckIndicator.js +2 -1
  147. package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -1
  148. package/dist/Indicator/CheckboxIndicator.js +3 -1
  149. package/dist/Indicator/RadioIndicator.d.ts.map +1 -1
  150. package/dist/Indicator/RadioIndicator.js +3 -1
  151. package/dist/Item/Item.d.ts.map +1 -1
  152. package/dist/Item/Item.js +26 -12
  153. package/dist/Item/ItemSwipeLayer.d.ts.map +1 -1
  154. package/dist/Item/ItemSwipeLayer.js +9 -3
  155. package/dist/Layer/popoverOperations.d.ts +27 -0
  156. package/dist/Layer/popoverOperations.d.ts.map +1 -0
  157. package/dist/Layer/popoverOperations.js +159 -0
  158. package/dist/Layer/useLayer.d.ts +9 -1
  159. package/dist/Layer/useLayer.d.ts.map +1 -1
  160. package/dist/Layer/useLayer.js +126 -69
  161. package/dist/Layer/useTouchTrigger.d.ts +35 -3
  162. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  163. package/dist/Layer/useTouchTrigger.js +80 -11
  164. package/dist/Layout/Layout.js +1 -1
  165. package/dist/Layout/LayoutContent.js +1 -1
  166. package/dist/Layout/LayoutFooter.js +1 -1
  167. package/dist/Layout/LayoutHeader.js +1 -1
  168. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  169. package/dist/Lightbox/Lightbox.js +5 -0
  170. package/dist/Link/Link.d.ts.map +1 -1
  171. package/dist/Link/Link.js +18 -4
  172. package/dist/List/List.js +1 -1
  173. package/dist/List/ListItem.js +3 -3
  174. package/dist/Markdown/Markdown.d.ts.map +1 -1
  175. package/dist/Markdown/Markdown.js +1 -0
  176. package/dist/MetadataList/MetadataList.d.ts.map +1 -1
  177. package/dist/MetadataList/MetadataList.js +2 -1
  178. package/dist/MetadataList/MetadataListItem.d.ts.map +1 -1
  179. package/dist/MetadataList/MetadataListItem.js +2 -1
  180. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  181. package/dist/MobileNav/MobileNav.js +7 -2
  182. package/dist/MultiSelector/MultiSelector.d.ts +3 -3
  183. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  184. package/dist/MultiSelector/MultiSelector.js +61 -35
  185. package/dist/MultiSelector/hooks.d.ts.map +1 -1
  186. package/dist/MultiSelector/hooks.js +4 -2
  187. package/dist/NavMenu/NavHeadingMenuItem.d.ts.map +1 -1
  188. package/dist/NavMenu/NavHeadingMenuItem.js +5 -29
  189. package/dist/NumberInput/NumberInput.d.ts +6 -3
  190. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  191. package/dist/NumberInput/NumberInput.js +21 -4
  192. package/dist/NumberInput/numberParser.d.ts +3 -0
  193. package/dist/NumberInput/numberParser.d.ts.map +1 -1
  194. package/dist/NumberInput/numberParser.js +7 -44
  195. package/dist/Outline/Outline.d.ts.map +1 -1
  196. package/dist/Outline/Outline.js +27 -0
  197. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  198. package/dist/OverflowList/OverflowList.js +2 -1
  199. package/dist/Pagination/Pagination.d.ts.map +1 -1
  200. package/dist/Popover/Popover.d.ts.map +1 -1
  201. package/dist/Popover/Popover.js +34 -14
  202. package/dist/Popover/usePopover.d.ts +7 -1
  203. package/dist/Popover/usePopover.d.ts.map +1 -1
  204. package/dist/Popover/usePopover.js +18 -5
  205. package/dist/PowerSearch/PowerSearch.d.ts +3 -2
  206. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  207. package/dist/PowerSearch/PowerSearch.js +41 -32
  208. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  209. package/dist/ProgressBar/ProgressBar.js +16 -12
  210. package/dist/RadioList/RadioList.d.ts.map +1 -1
  211. package/dist/RadioList/RadioList.js +7 -2
  212. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  213. package/dist/RadioList/RadioListItem.js +19 -5
  214. package/dist/RadioList/RadioListReasonContext.d.ts +2 -0
  215. package/dist/RadioList/RadioListReasonContext.d.ts.map +1 -0
  216. package/dist/RadioList/RadioListReasonContext.js +22 -0
  217. package/dist/Resizable/resizableModel.d.ts +64 -0
  218. package/dist/Resizable/resizableModel.d.ts.map +1 -0
  219. package/dist/Resizable/resizableModel.js +287 -0
  220. package/dist/Resizable/useResizable.d.ts +2 -2
  221. package/dist/Resizable/useResizable.d.ts.map +1 -1
  222. package/dist/Resizable/useResizable.js +74 -288
  223. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  224. package/dist/SegmentedControl/SegmentedControl.js +22 -5
  225. package/dist/SegmentedControl/SegmentedControlContext.d.ts +6 -0
  226. package/dist/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
  227. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  228. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  229. package/dist/SegmentedControl/SegmentedControlItem.js +20 -4
  230. package/dist/Selector/Selector.d.ts +3 -3
  231. package/dist/Selector/Selector.d.ts.map +1 -1
  232. package/dist/Selector/Selector.js +14 -8
  233. package/dist/Selector/hooks.js +2 -2
  234. package/dist/Selector/useSelectorPresentation.d.ts +14 -1
  235. package/dist/Selector/useSelectorPresentation.d.ts.map +1 -1
  236. package/dist/Selector/useSelectorPresentation.js +22 -5
  237. package/dist/SideNav/SideNavItem.d.ts +2 -2
  238. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  239. package/dist/SideNav/SideNavItem.js +18 -7
  240. package/dist/SideNav/railMotion.d.ts +5 -5
  241. package/dist/SideNav/railMotion.d.ts.map +1 -1
  242. package/dist/SideNav/railMotion.js +69 -177
  243. package/dist/Skeleton/Skeleton.d.ts.map +1 -1
  244. package/dist/Skeleton/Skeleton.js +1 -1
  245. package/dist/Slider/Slider.d.ts.map +1 -1
  246. package/dist/Slider/Slider.js +110 -19
  247. package/dist/Spinner/Spinner.d.ts.map +1 -1
  248. package/dist/Spinner/Spinner.js +3 -3
  249. package/dist/Stack/Stack.js +1 -1
  250. package/dist/Stack/StackItem.js +1 -1
  251. package/dist/Stepper/Step.d.ts.map +1 -1
  252. package/dist/Stepper/Step.js +26 -6
  253. package/dist/Switch/Switch.d.ts.map +1 -1
  254. package/dist/Switch/Switch.js +10 -3
  255. package/dist/TabList/TabList.d.ts.map +1 -1
  256. package/dist/TabList/TabList.js +16 -1
  257. package/dist/Table/BaseTable.d.ts.map +1 -1
  258. package/dist/Table/BaseTable.js +7 -6
  259. package/dist/Table/Table.d.ts.map +1 -1
  260. package/dist/Table/Table.js +36 -10
  261. package/dist/Table/glidingDivider.d.ts +8 -1
  262. package/dist/Table/glidingDivider.d.ts.map +1 -1
  263. package/dist/Table/glidingDivider.js +8 -3
  264. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  265. package/dist/Table/plugins/columnResize/useTableColumnResize.js +9 -1
  266. package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
  267. package/dist/Table/plugins/sortable/useTableSortable.js +46 -58
  268. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
  269. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +1 -2
  270. package/dist/Text/Text.js +1 -1
  271. package/dist/Text/useTruncation.d.ts.map +1 -1
  272. package/dist/Text/useTruncation.js +23 -5
  273. package/dist/TextArea/TextArea.d.ts +3 -3
  274. package/dist/TextArea/TextArea.d.ts.map +1 -1
  275. package/dist/TextArea/TextArea.js +13 -2
  276. package/dist/TextInput/TextInput.d.ts +3 -2
  277. package/dist/TextInput/TextInput.d.ts.map +1 -1
  278. package/dist/TextInput/TextInput.js +3 -3
  279. package/dist/TimeInput/TimeInput.d.ts +9 -4
  280. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  281. package/dist/TimeInput/TimeInput.js +21 -14
  282. package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
  283. package/dist/TimeInput/TouchTimeField.js +5 -4
  284. package/dist/Timer/Timer.js +1 -1
  285. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  286. package/dist/Timestamp/Timestamp.js +2 -2
  287. package/dist/Timestamp/TimestampHoverCard.js +4 -4
  288. package/dist/Toast/Toast.d.ts.map +1 -1
  289. package/dist/Toast/Toast.js +60 -20
  290. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  291. package/dist/Toast/ToastViewport.js +101 -54
  292. package/dist/Toast/useToast.d.ts.map +1 -1
  293. package/dist/Toast/useToast.js +8 -2
  294. package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
  295. package/dist/ToggleButton/ToggleButton.js +11 -3
  296. package/dist/ToggleButton/ToggleButtonGroup.d.ts +7 -1
  297. package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  298. package/dist/ToggleButton/ToggleButtonGroup.js +16 -2
  299. package/dist/Token/Token.d.ts +1 -1
  300. package/dist/Token/Token.d.ts.map +1 -1
  301. package/dist/Token/Token.js +52 -5
  302. package/dist/Token/TokenLink.d.ts.map +1 -1
  303. package/dist/Token/TokenLink.js +14 -2
  304. package/dist/Tokenizer/Tokenizer.d.ts +3 -2
  305. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  306. package/dist/Tokenizer/Tokenizer.js +101 -56
  307. package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
  308. package/dist/Tokenizer/TokenizerBottomSheet.d.ts.map +1 -1
  309. package/dist/Tokenizer/TokenizerBottomSheet.js +12 -18
  310. package/dist/Tokenizer/TokenizerClearAllMessageContext.d.ts +2 -0
  311. package/dist/Tokenizer/TokenizerClearAllMessageContext.d.ts.map +1 -0
  312. package/dist/Tokenizer/TokenizerClearAllMessageContext.js +17 -0
  313. package/dist/Toolbar/Toolbar.d.ts.map +1 -1
  314. package/dist/Toolbar/Toolbar.js +2 -1
  315. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  316. package/dist/TopNav/TopNavMegaMenu.js +7 -3
  317. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  318. package/dist/TopNav/TopNavMenu.js +1 -0
  319. package/dist/TreeList/TreeList.d.ts.map +1 -1
  320. package/dist/TreeList/TreeList.js +6 -3
  321. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  322. package/dist/TreeList/TreeListItem.js +31 -7
  323. package/dist/Typeahead/BaseTypeahead.d.ts +8 -5
  324. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  325. package/dist/Typeahead/BaseTypeahead.js +303 -48
  326. package/dist/Typeahead/Typeahead.d.ts +4 -3
  327. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  328. package/dist/Typeahead/Typeahead.js +43 -9
  329. package/dist/Typeahead/index.d.ts +1 -1
  330. package/dist/Typeahead/index.d.ts.map +1 -1
  331. package/dist/Typeahead/types.d.ts +26 -3
  332. package/dist/Typeahead/types.d.ts.map +1 -1
  333. package/dist/astryx.css +27 -6
  334. package/dist/gestures/GestureArena.d.ts +32 -1
  335. package/dist/gestures/GestureArena.d.ts.map +1 -1
  336. package/dist/gestures/GestureArena.js +110 -9
  337. package/dist/gestures/GestureHost.d.ts +351 -0
  338. package/dist/gestures/GestureHost.d.ts.map +1 -0
  339. package/dist/gestures/GestureHost.js +1773 -0
  340. package/dist/gestures/GestureRecognizer.d.ts +13 -1
  341. package/dist/gestures/GestureRecognizer.d.ts.map +1 -1
  342. package/dist/gestures/GestureRecognizer.js +19 -1
  343. package/dist/gestures/LongPressGestureRecognizer.d.ts +1 -0
  344. package/dist/gestures/LongPressGestureRecognizer.d.ts.map +1 -1
  345. package/dist/gestures/LongPressGestureRecognizer.js +3 -0
  346. package/dist/gestures/PanGestureRecognizer.d.ts +1 -0
  347. package/dist/gestures/PanGestureRecognizer.d.ts.map +1 -1
  348. package/dist/gestures/PanGestureRecognizer.js +3 -0
  349. package/dist/gestures/PinchGestureRecognizer.d.ts +31 -0
  350. package/dist/gestures/PinchGestureRecognizer.d.ts.map +1 -0
  351. package/dist/gestures/PinchGestureRecognizer.js +128 -0
  352. package/dist/gestures/PressTracker.d.ts +112 -0
  353. package/dist/gestures/PressTracker.d.ts.map +1 -0
  354. package/dist/gestures/PressTracker.js +267 -0
  355. package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts +71 -0
  356. package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts.map +1 -0
  357. package/dist/gestures/ScreenEdgePanGestureRecognizer.js +223 -0
  358. package/dist/gestures/SwipeGestureRecognizer.d.ts +37 -0
  359. package/dist/gestures/SwipeGestureRecognizer.d.ts.map +1 -0
  360. package/dist/gestures/SwipeGestureRecognizer.js +148 -0
  361. package/dist/gestures/TapGestureRecognizer.d.ts +1 -0
  362. package/dist/gestures/TapGestureRecognizer.d.ts.map +1 -1
  363. package/dist/gestures/TapGestureRecognizer.js +3 -0
  364. package/dist/gestures/VelocityTracker.d.ts +6 -2
  365. package/dist/gestures/VelocityTracker.d.ts.map +1 -1
  366. package/dist/gestures/VelocityTracker.js +7 -3
  367. package/dist/gestures/haptics.d.ts +65 -0
  368. package/dist/gestures/haptics.d.ts.map +1 -0
  369. package/dist/gestures/haptics.js +178 -0
  370. package/dist/gestures/index.d.ts +37 -0
  371. package/dist/gestures/index.d.ts.map +1 -0
  372. package/dist/gestures/index.js +25 -0
  373. package/dist/gestures/nativeScroll.d.ts +42 -0
  374. package/dist/gestures/nativeScroll.d.ts.map +1 -0
  375. package/dist/gestures/nativeScroll.js +228 -0
  376. package/dist/gestures/touchAction.d.ts +60 -0
  377. package/dist/gestures/touchAction.d.ts.map +1 -0
  378. package/dist/gestures/touchAction.js +157 -0
  379. package/dist/gestures/touchActionRule.d.ts +34 -0
  380. package/dist/gestures/touchActionRule.d.ts.map +1 -0
  381. package/dist/gestures/touchActionRule.js +140 -0
  382. package/dist/gestures/types.d.ts +18 -7
  383. package/dist/gestures/types.d.ts.map +1 -1
  384. package/dist/gestures/types.js +22 -2
  385. package/dist/gestures/useGestureRecognizer.d.ts +56 -0
  386. package/dist/gestures/useGestureRecognizer.d.ts.map +1 -0
  387. package/dist/gestures/useGestureRecognizer.js +226 -0
  388. package/dist/hooks/index.d.ts +1 -1
  389. package/dist/hooks/index.d.ts.map +1 -1
  390. package/dist/hooks/menuPressMarker.d.ts +13 -0
  391. package/dist/hooks/menuPressMarker.d.ts.map +1 -0
  392. package/dist/hooks/menuPressMarker.js +15 -0
  393. package/dist/hooks/modalAnnounce.d.ts.map +1 -1
  394. package/dist/hooks/modalAnnounce.js +107 -61
  395. package/dist/hooks/scrollKeyboardDelegation.d.ts.map +1 -1
  396. package/dist/hooks/scrollKeyboardDelegation.js +7 -3
  397. package/dist/hooks/useAdaptivePresentation.d.ts.map +1 -1
  398. package/dist/hooks/useAdaptivePresentation.js +4 -1
  399. package/dist/hooks/useAnnounce.d.ts +101 -42
  400. package/dist/hooks/useAnnounce.d.ts.map +1 -1
  401. package/dist/hooks/useAnnounce.js +161 -75
  402. package/dist/hooks/useAnnounceRenderedText.d.ts +11 -3
  403. package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
  404. package/dist/hooks/useAnnounceRenderedText.js +5 -3
  405. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  406. package/dist/hooks/useBusyAnnouncement.js +6 -12
  407. package/dist/hooks/useClickableContainer.d.ts +24 -4
  408. package/dist/hooks/useClickableContainer.d.ts.map +1 -1
  409. package/dist/hooks/useClickableContainer.js +41 -14
  410. package/dist/hooks/useFocusReturnVisibility.d.ts +8 -1
  411. package/dist/hooks/useFocusReturnVisibility.d.ts.map +1 -1
  412. package/dist/hooks/useFocusReturnVisibility.js +14 -8
  413. package/dist/hooks/useInputStatusIcon.d.ts +2 -2
  414. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  415. package/dist/hooks/useInputStatusIcon.js +1 -2
  416. package/dist/hooks/useListFocus.d.ts +27 -0
  417. package/dist/hooks/useListFocus.d.ts.map +1 -1
  418. package/dist/hooks/useListFocus.js +35 -4
  419. package/dist/hooks/useMenuHover.d.ts.map +1 -1
  420. package/dist/hooks/useMenuHover.js +12 -1
  421. package/dist/hooks/useMenuPress.d.ts +2 -2
  422. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  423. package/dist/hooks/useMenuPress.js +5 -6
  424. package/dist/hooks/useScrollOverflow.d.ts +2 -1
  425. package/dist/hooks/useScrollOverflow.d.ts.map +1 -1
  426. package/dist/hooks/useScrollOverflow.js +56 -10
  427. package/dist/hooks/useTreeFocus.d.ts.map +1 -1
  428. package/dist/hooks/useTreeFocus.js +13 -5
  429. package/dist/hooks/useTypeahead.d.ts +3 -1
  430. package/dist/hooks/useTypeahead.d.ts.map +1 -1
  431. package/dist/hooks/useTypeahead.js +21 -15
  432. package/dist/i18n/generated-locales/af-ZA.generated.d.ts.map +1 -1
  433. package/dist/i18n/generated-locales/af-ZA.generated.js +0 -5
  434. package/dist/i18n/generated-locales/ar-SA.generated.d.ts.map +1 -1
  435. package/dist/i18n/generated-locales/ar-SA.generated.js +0 -5
  436. package/dist/i18n/generated-locales/ca-ES.generated.d.ts.map +1 -1
  437. package/dist/i18n/generated-locales/ca-ES.generated.js +0 -5
  438. package/dist/i18n/generated-locales/cs-CZ.generated.d.ts.map +1 -1
  439. package/dist/i18n/generated-locales/cs-CZ.generated.js +0 -5
  440. package/dist/i18n/generated-locales/da-DK.generated.d.ts.map +1 -1
  441. package/dist/i18n/generated-locales/da-DK.generated.js +0 -5
  442. package/dist/i18n/generated-locales/de-DE.generated.d.ts.map +1 -1
  443. package/dist/i18n/generated-locales/de-DE.generated.js +0 -5
  444. package/dist/i18n/generated-locales/el-GR.generated.d.ts.map +1 -1
  445. package/dist/i18n/generated-locales/el-GR.generated.js +0 -5
  446. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  447. package/dist/i18n/generated-locales/en.generated.js +14 -5
  448. package/dist/i18n/generated-locales/es-ES.generated.d.ts.map +1 -1
  449. package/dist/i18n/generated-locales/es-ES.generated.js +0 -5
  450. package/dist/i18n/generated-locales/fi-FI.generated.d.ts.map +1 -1
  451. package/dist/i18n/generated-locales/fi-FI.generated.js +0 -5
  452. package/dist/i18n/generated-locales/fr-FR.generated.d.ts.map +1 -1
  453. package/dist/i18n/generated-locales/fr-FR.generated.js +0 -5
  454. package/dist/i18n/generated-locales/he-IL.generated.d.ts.map +1 -1
  455. package/dist/i18n/generated-locales/he-IL.generated.js +0 -5
  456. package/dist/i18n/generated-locales/hu-HU.generated.d.ts.map +1 -1
  457. package/dist/i18n/generated-locales/hu-HU.generated.js +0 -5
  458. package/dist/i18n/generated-locales/it-IT.generated.d.ts.map +1 -1
  459. package/dist/i18n/generated-locales/it-IT.generated.js +0 -5
  460. package/dist/i18n/generated-locales/ja-JP.generated.d.ts.map +1 -1
  461. package/dist/i18n/generated-locales/ja-JP.generated.js +0 -5
  462. package/dist/i18n/generated-locales/ko-KR.generated.d.ts.map +1 -1
  463. package/dist/i18n/generated-locales/ko-KR.generated.js +0 -5
  464. package/dist/i18n/generated-locales/nl-NL.generated.d.ts.map +1 -1
  465. package/dist/i18n/generated-locales/nl-NL.generated.js +0 -5
  466. package/dist/i18n/generated-locales/no-NO.generated.d.ts.map +1 -1
  467. package/dist/i18n/generated-locales/no-NO.generated.js +0 -5
  468. package/dist/i18n/generated-locales/pl-PL.generated.d.ts.map +1 -1
  469. package/dist/i18n/generated-locales/pl-PL.generated.js +0 -5
  470. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  471. package/dist/i18n/generated-locales/pseudo.generated.js +14 -5
  472. package/dist/i18n/generated-locales/pt-BR.generated.d.ts.map +1 -1
  473. package/dist/i18n/generated-locales/pt-BR.generated.js +0 -5
  474. package/dist/i18n/generated-locales/pt-PT.generated.d.ts.map +1 -1
  475. package/dist/i18n/generated-locales/pt-PT.generated.js +0 -5
  476. package/dist/i18n/generated-locales/ro-RO.generated.d.ts.map +1 -1
  477. package/dist/i18n/generated-locales/ro-RO.generated.js +0 -5
  478. package/dist/i18n/generated-locales/ru-RU.generated.d.ts.map +1 -1
  479. package/dist/i18n/generated-locales/ru-RU.generated.js +0 -5
  480. package/dist/i18n/generated-locales/sr-SP.generated.d.ts.map +1 -1
  481. package/dist/i18n/generated-locales/sr-SP.generated.js +0 -5
  482. package/dist/i18n/generated-locales/sv-SE.generated.d.ts.map +1 -1
  483. package/dist/i18n/generated-locales/sv-SE.generated.js +0 -5
  484. package/dist/i18n/generated-locales/tr-TR.generated.d.ts.map +1 -1
  485. package/dist/i18n/generated-locales/tr-TR.generated.js +0 -5
  486. package/dist/i18n/generated-locales/uk-UA.generated.d.ts.map +1 -1
  487. package/dist/i18n/generated-locales/uk-UA.generated.js +0 -5
  488. package/dist/i18n/generated-locales/vi-VN.generated.d.ts.map +1 -1
  489. package/dist/i18n/generated-locales/vi-VN.generated.js +0 -5
  490. package/dist/i18n/generated-locales/zh-CN.generated.d.ts.map +1 -1
  491. package/dist/i18n/generated-locales/zh-CN.generated.js +0 -5
  492. package/dist/i18n/generated-locales/zh-TW.generated.d.ts.map +1 -1
  493. package/dist/i18n/generated-locales/zh-TW.generated.js +0 -5
  494. package/dist/i18n/useListFormatter.d.ts +9 -0
  495. package/dist/i18n/useListFormatter.d.ts.map +1 -0
  496. package/dist/i18n/useListFormatter.js +41 -0
  497. package/dist/motion/animatedLayout.d.ts +130 -5
  498. package/dist/motion/animatedLayout.d.ts.map +1 -1
  499. package/dist/motion/animatedLayout.js +771 -44
  500. package/dist/motion/animator.d.ts +83 -8
  501. package/dist/motion/animator.d.ts.map +1 -1
  502. package/dist/motion/animator.js +739 -121
  503. package/dist/motion/coast.d.ts +4 -1
  504. package/dist/motion/coast.d.ts.map +1 -1
  505. package/dist/motion/coast.js +4 -2
  506. package/dist/motion/reducedMotion.d.ts.map +1 -1
  507. package/dist/motion/reducedMotion.js +6 -2
  508. package/dist/motion/reducedMotionPlan.d.ts +7 -0
  509. package/dist/motion/reducedMotionPlan.d.ts.map +1 -1
  510. package/dist/motion/reducedMotionPlan.js +14 -1
  511. package/dist/motion/resolveMotion.d.ts +42 -0
  512. package/dist/motion/resolveMotion.d.ts.map +1 -0
  513. package/dist/motion/resolveMotion.js +43 -0
  514. package/dist/motion/roleValue.d.ts +2 -1
  515. package/dist/motion/roleValue.d.ts.map +1 -1
  516. package/dist/motion/roleValue.js +2 -1
  517. package/dist/motion/uikit/timing.d.ts +7 -1
  518. package/dist/motion/uikit/timing.d.ts.map +1 -1
  519. package/dist/motion/uikit/timing.js +19 -1
  520. package/dist/privateAttributes/segmentDisabled.stylex.d.ts +5 -0
  521. package/dist/privateAttributes/segmentDisabled.stylex.d.ts.map +1 -0
  522. package/dist/privateAttributes/segmentDisabled.stylex.js +28 -0
  523. package/dist/theme/Theme.d.ts +10 -0
  524. package/dist/theme/Theme.d.ts.map +1 -1
  525. package/dist/theme/Theme.js +8 -4
  526. package/dist/theme/defineTheme.d.ts +19 -5
  527. package/dist/theme/defineTheme.d.ts.map +1 -1
  528. package/dist/theme/defineTheme.js +64 -4
  529. package/dist/theme/domainTokens/domainTokenDefaults.d.ts +3 -0
  530. package/dist/theme/domainTokens/domainTokenDefaults.d.ts.map +1 -0
  531. package/dist/theme/domainTokens/domainTokenDefaults.js +19 -0
  532. package/dist/theme/domainTokens/index.d.ts +5 -4
  533. package/dist/theme/domainTokens/index.d.ts.map +1 -1
  534. package/dist/theme/domainTokens/index.js +5 -9
  535. package/dist/theme/index.d.ts +1 -0
  536. package/dist/theme/index.d.ts.map +1 -1
  537. package/dist/theme/motionKnobs.d.ts +56 -0
  538. package/dist/theme/motionKnobs.d.ts.map +1 -0
  539. package/dist/theme/motionKnobs.js +48 -0
  540. package/dist/theme/resolveThemeValues.d.ts +11 -4
  541. package/dist/theme/resolveThemeValues.d.ts.map +1 -1
  542. package/dist/theme/resolveThemeValues.js +40 -4
  543. package/dist/theme/themeAdaptations.d.ts +7 -3
  544. package/dist/theme/themeAdaptations.d.ts.map +1 -1
  545. package/dist/theme/themeAdaptations.js +36 -7
  546. package/dist/theme/themeMotion.d.ts +96 -0
  547. package/dist/theme/themeMotion.d.ts.map +1 -0
  548. package/dist/theme/themeMotion.js +177 -0
  549. package/dist/theme/tokenReferences.d.ts +31 -0
  550. package/dist/theme/tokenReferences.d.ts.map +1 -0
  551. package/dist/theme/tokenReferences.js +132 -0
  552. package/dist/theme/tokens.d.ts +1 -0
  553. package/dist/theme/tokens.d.ts.map +1 -1
  554. package/dist/theme/tokens.js +9 -129
  555. package/dist/theme/tokens.stylex.d.ts +12 -0
  556. package/dist/theme/tokens.stylex.d.ts.map +1 -1
  557. package/dist/theme/tokens.stylex.js +12 -0
  558. package/dist/theme/useTheme.d.ts.map +1 -1
  559. package/dist/theme/useTheme.js +7 -1
  560. package/dist/utils/focusOutline.stylex.d.ts +6 -0
  561. package/dist/utils/focusOutline.stylex.d.ts.map +1 -1
  562. package/dist/utils/focusOutline.stylex.js +7 -0
  563. package/dist/utils/focusReturn.d.ts +19 -1
  564. package/dist/utils/focusReturn.d.ts.map +1 -1
  565. package/dist/utils/focusReturn.js +13 -4
  566. package/dist/utils/getNodeText.d.ts +8 -0
  567. package/dist/utils/getNodeText.d.ts.map +1 -0
  568. package/dist/utils/getNodeText.js +38 -0
  569. package/dist/utils/interactionModality.d.ts +84 -4
  570. package/dist/utils/interactionModality.d.ts.map +1 -1
  571. package/dist/utils/interactionModality.js +152 -16
  572. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  573. package/dist/utils/interactionOverlay.stylex.js +17 -8
  574. package/dist/utils/plainDate.d.ts +2 -0
  575. package/dist/utils/plainDate.d.ts.map +1 -1
  576. package/dist/utils/plainDate.js +46 -3
  577. package/dist/utils/presentation.d.ts +50 -0
  578. package/dist/utils/presentation.d.ts.map +1 -0
  579. package/dist/utils/presentation.js +125 -0
  580. package/dist/utils/pressDisabled.d.ts +21 -0
  581. package/dist/utils/pressDisabled.d.ts.map +1 -0
  582. package/dist/utils/pressDisabled.js +32 -0
  583. package/dist/utils/pressFeedback.d.ts.map +1 -1
  584. package/dist/utils/pressFeedback.js +25 -4
  585. package/dist/utils/primaryClick.d.ts +11 -0
  586. package/dist/utils/primaryClick.d.ts.map +1 -0
  587. package/dist/utils/primaryClick.js +25 -0
  588. package/dist/utils/sharedMutationObserver.d.ts +19 -11
  589. package/dist/utils/sharedMutationObserver.d.ts.map +1 -1
  590. package/dist/utils/sharedMutationObserver.js +66 -26
  591. package/dist/utils/timeFormat.d.ts +47 -0
  592. package/dist/utils/timeFormat.d.ts.map +1 -0
  593. package/dist/utils/timeFormat.js +240 -0
  594. package/dist/utils/touchPresentation.d.ts +2 -2
  595. package/dist/utils/touchPresentation.d.ts.map +1 -1
  596. package/dist/utils/touchPresentation.js +13 -8
  597. package/dist/utils/touchPresentation.stylex.d.ts +15 -0
  598. package/dist/utils/touchPresentation.stylex.d.ts.map +1 -0
  599. package/dist/utils/touchPresentation.stylex.js +33 -0
  600. package/dist/utils/touchQueries.d.ts +13 -0
  601. package/dist/utils/touchQueries.d.ts.map +1 -0
  602. package/dist/utils/touchQueries.js +15 -0
  603. package/dist/utils/typeaheadMatch.d.ts +24 -0
  604. package/dist/utils/typeaheadMatch.d.ts.map +1 -0
  605. package/dist/utils/typeaheadMatch.js +112 -0
  606. package/dist/utils/unicodeDigits.d.ts +20 -0
  607. package/dist/utils/unicodeDigits.d.ts.map +1 -0
  608. package/dist/utils/unicodeDigits.js +70 -0
  609. package/dist/utils/useFocusAcrossSwap.d.ts +19 -0
  610. package/dist/utils/useFocusAcrossSwap.d.ts.map +1 -0
  611. package/dist/utils/useFocusAcrossSwap.js +41 -0
  612. package/locales/af-ZA.json +0 -21
  613. package/locales/ar-SA.json +0 -21
  614. package/locales/ca-ES.json +0 -21
  615. package/locales/cs-CZ.json +0 -21
  616. package/locales/da-DK.json +0 -21
  617. package/locales/de-DE.json +0 -21
  618. package/locales/el-GR.json +0 -21
  619. package/locales/en.json +60 -24
  620. package/locales/es-ES.json +0 -21
  621. package/locales/fi-FI.json +0 -21
  622. package/locales/fr-FR.json +0 -21
  623. package/locales/he-IL.json +0 -21
  624. package/locales/hu-HU.json +0 -21
  625. package/locales/it-IT.json +0 -21
  626. package/locales/ja-JP.json +0 -21
  627. package/locales/ko-KR.json +0 -21
  628. package/locales/nl-NL.json +0 -21
  629. package/locales/no-NO.json +0 -21
  630. package/locales/pl-PL.json +0 -21
  631. package/locales/pseudo.json +41 -14
  632. package/locales/pt-BR.json +0 -21
  633. package/locales/pt-PT.json +0 -21
  634. package/locales/ro-RO.json +0 -21
  635. package/locales/ru-RU.json +0 -21
  636. package/locales/sr-SP.json +0 -21
  637. package/locales/sv-SE.json +0 -21
  638. package/locales/tr-TR.json +0 -21
  639. package/locales/uk-UA.json +0 -21
  640. package/locales/vi-VN.json +0 -21
  641. package/locales/zh-CN.json +0 -21
  642. package/locales/zh-TW.json +0 -21
  643. package/package.json +20 -5
  644. package/src/AlertDialog/AlertDialog.tsx +6 -5
  645. package/src/AppShell/AppShell.doc.mjs +1 -1
  646. package/src/AppShell/AppShell.tsx +216 -5
  647. package/src/AppShell/observeMainOverflow.ts +143 -0
  648. package/src/Avatar/Avatar.tsx +18 -1
  649. package/src/Badge/Badge.doc.mjs +1 -1
  650. package/src/Badge/Badge.tsx +20 -2
  651. package/src/BottomSheet/BottomSheet.tsx +5 -3
  652. package/src/BottomSheet/BottomSheetPanel.tsx +41 -9
  653. package/src/BottomSheet/BottomSheetSwitcher.tsx +1 -1
  654. package/src/BottomSheet/useMobileKeyboard.ts +51 -10
  655. package/src/BottomSheet/useSheetGestures.ts +129 -21
  656. package/src/Breadcrumbs/BreadcrumbItem.tsx +2 -1
  657. package/src/Button/Button.tsx +4 -4
  658. package/src/Carousel/Carousel.doc.mjs +1 -1
  659. package/src/Carousel/Carousel.tsx +10 -2
  660. package/src/Center/Center.tsx +1 -1
  661. package/src/Chat/ChatComposer.tsx +7 -10
  662. package/src/Chat/ChatComposerDrawer.tsx +1 -1
  663. package/src/Chat/ChatComposerInput.tsx +1 -1
  664. package/src/Chat/ChatLayout.tsx +1 -6
  665. package/src/Chat/ChatMessageList.tsx +1 -0
  666. package/src/Chat/ChatPastedTextToken.tsx +14 -4
  667. package/src/Chat/ChatSystemMessage.tsx +4 -1
  668. package/src/Chat/ChatToolCalls.tsx +5 -0
  669. package/src/CheckboxInput/CheckboxInput.tsx +6 -5
  670. package/src/CheckboxList/CheckboxList.tsx +7 -1
  671. package/src/CheckboxList/CheckboxListContext.tsx +8 -0
  672. package/src/CheckboxList/CheckboxListItem.tsx +8 -2
  673. package/src/ClickableCard/ClickableCard.tsx +48 -4
  674. package/src/Code/Code.tsx +1 -1
  675. package/src/CommandPalette/CommandPaletteInput.tsx +5 -8
  676. package/src/ComplexSelector/ComplexSelector.tsx +63 -8
  677. package/src/ContextMenu/ContextMenu.tsx +30 -6
  678. package/src/DateInput/DateInput.tsx +31 -16
  679. package/src/DateInput/MonthScroller.tsx +108 -24
  680. package/src/DateInput/TouchDateField.tsx +14 -3
  681. package/src/DateInput/Wheel.tsx +9 -6
  682. package/src/DateInput/usePointerDragScroll.ts +34 -10
  683. package/src/DateInput/useScrollSettle.ts +38 -7
  684. package/src/DateRangeInput/DateRangeInput.tsx +36 -17
  685. package/src/DateTimeInput/DateTimeInput.doc.mjs +10 -8
  686. package/src/DateTimeInput/DateTimeInput.tsx +46 -24
  687. package/src/DateTimeInput/NativeTimeSegment.tsx +4 -6
  688. package/src/DateTimeInput/TouchDateTimeField.tsx +3 -7
  689. package/src/Dialog/Dialog.tsx +28 -11
  690. package/src/Dialog/DialogHeader.tsx +5 -4
  691. package/src/Divider/Divider.tsx +2 -1
  692. package/src/Drawer/Drawer.tsx +14 -3
  693. package/src/DropdownMenu/DropdownMenu.doc.mjs +2 -2
  694. package/src/DropdownMenu/DropdownMenu.tsx +67 -30
  695. package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +2 -2
  696. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +15 -5
  697. package/src/DropdownMenu/DropdownMenuGroup.tsx +2 -1
  698. package/src/DropdownMenu/DropdownMenuItem.tsx +7 -1
  699. package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +2 -2
  700. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +16 -6
  701. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +11 -4
  702. package/src/DropdownMenu/MenuBottomSheetActionList.tsx +12 -8
  703. package/src/DropdownMenu/lazyMenuBottomSheet.ts +36 -7
  704. package/src/DropdownMenu/renderDropdownItems.tsx +24 -19
  705. package/src/EmptyState/EmptyState.tsx +2 -1
  706. package/src/Field/Field.doc.mjs +2 -1
  707. package/src/Field/Field.tsx +2 -2
  708. package/src/Field/FieldLabel.doc.mjs +4 -2
  709. package/src/Field/FieldLabel.tsx +23 -6
  710. package/src/Field/InputClearButton.tsx +3 -3
  711. package/src/Field/PanelSearchInput.tsx +9 -10
  712. package/src/Field/fieldStatusPlacement.ts +18 -0
  713. package/src/FieldStatus/FieldStatus.tsx +35 -5
  714. package/src/FieldStatus/index.ts +7 -0
  715. package/src/FileInput/FileInput.doc.mjs +3 -3
  716. package/src/FileInput/FileInput.tsx +107 -37
  717. package/src/Heading/Heading.tsx +1 -1
  718. package/src/HoverCard/HoverCard.doc.mjs +3 -3
  719. package/src/HoverCard/useHoverCard.doc.mjs +1 -1
  720. package/src/Icon/Icon.tsx +1 -1
  721. package/src/Indicator/CheckIndicator.tsx +2 -1
  722. package/src/Indicator/CheckboxIndicator.tsx +3 -1
  723. package/src/Indicator/RadioIndicator.tsx +3 -1
  724. package/src/Item/Item.tsx +21 -13
  725. package/src/Item/ItemSwipeLayer.tsx +9 -2
  726. package/src/Layer/popoverOperations.ts +172 -0
  727. package/src/Layer/useLayer.tsx +168 -81
  728. package/src/Layer/useTouchTrigger.ts +107 -18
  729. package/src/Layout/Layout.tsx +1 -1
  730. package/src/Layout/LayoutContent.tsx +1 -1
  731. package/src/Layout/LayoutFooter.tsx +1 -1
  732. package/src/Layout/LayoutHeader.tsx +1 -1
  733. package/src/Lightbox/Lightbox.tsx +5 -0
  734. package/src/Link/Link.tsx +20 -2
  735. package/src/List/List.tsx +1 -1
  736. package/src/List/ListItem.tsx +3 -3
  737. package/src/Markdown/Markdown.tsx +1 -0
  738. package/src/MetadataList/MetadataList.tsx +4 -2
  739. package/src/MetadataList/MetadataListItem.tsx +2 -1
  740. package/src/MobileNav/MobileNav.tsx +9 -1
  741. package/src/MultiSelector/MultiSelector.tsx +82 -46
  742. package/src/MultiSelector/hooks.ts +7 -5
  743. package/src/NavMenu/NavHeadingMenuItem.tsx +5 -39
  744. package/src/NumberInput/NumberInput.doc.mjs +13 -7
  745. package/src/NumberInput/NumberInput.tsx +39 -6
  746. package/src/NumberInput/numberParser.ts +7 -45
  747. package/src/Outline/Outline.tsx +23 -0
  748. package/src/OverflowList/OverflowList.tsx +2 -1
  749. package/src/Pagination/Pagination.tsx +1 -0
  750. package/src/Popover/Popover.tsx +36 -16
  751. package/src/Popover/usePopover.tsx +17 -5
  752. package/src/PowerSearch/PowerSearch.tsx +46 -33
  753. package/src/ProgressBar/ProgressBar.tsx +58 -10
  754. package/src/RadioList/RadioList.tsx +13 -2
  755. package/src/RadioList/RadioListItem.tsx +20 -3
  756. package/src/RadioList/RadioListReasonContext.ts +25 -0
  757. package/src/Resizable/resizableModel.ts +364 -0
  758. package/src/Resizable/useResizable.ts +88 -353
  759. package/src/SegmentedControl/SegmentedControl.tsx +43 -8
  760. package/src/SegmentedControl/SegmentedControlContext.ts +6 -0
  761. package/src/SegmentedControl/SegmentedControlItem.tsx +23 -6
  762. package/src/Selector/Selector.tsx +23 -9
  763. package/src/Selector/hooks.ts +2 -2
  764. package/src/Selector/useSelectorPresentation.ts +39 -4
  765. package/src/SideNav/SideNavItem.tsx +27 -10
  766. package/src/SideNav/railMotion.ts +73 -179
  767. package/src/Skeleton/Skeleton.tsx +3 -1
  768. package/src/Slider/Slider.tsx +124 -22
  769. package/src/Spinner/Spinner.tsx +5 -3
  770. package/src/Stack/Stack.tsx +1 -1
  771. package/src/Stack/StackItem.tsx +1 -1
  772. package/src/Stepper/Step.tsx +33 -6
  773. package/src/Stepper/Stepper.doc.mjs +1 -1
  774. package/src/Switch/Switch.tsx +11 -3
  775. package/src/TabList/TabList.tsx +16 -1
  776. package/src/Table/BaseTable.tsx +10 -6
  777. package/src/Table/Table.tsx +43 -11
  778. package/src/Table/glidingDivider.ts +8 -3
  779. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +8 -4
  780. package/src/Table/plugins/sortable/useTableSortable.tsx +46 -73
  781. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +1 -2
  782. package/src/Text/Text.tsx +1 -1
  783. package/src/Text/useTruncation.ts +23 -5
  784. package/src/TextArea/TextArea.tsx +18 -3
  785. package/src/TextInput/TextInput.tsx +5 -3
  786. package/src/TimeInput/TimeInput.doc.mjs +8 -8
  787. package/src/TimeInput/TimeInput.tsx +38 -20
  788. package/src/TimeInput/TouchTimeField.tsx +4 -6
  789. package/src/Timer/Timer.tsx +1 -1
  790. package/src/Timestamp/Timestamp.tsx +6 -2
  791. package/src/Timestamp/TimestampHoverCard.tsx +4 -4
  792. package/src/Toast/Toast.tsx +104 -36
  793. package/src/Toast/ToastViewport.tsx +121 -53
  794. package/src/Toast/useToast.tsx +8 -3
  795. package/src/ToggleButton/ToggleButton.tsx +10 -3
  796. package/src/ToggleButton/ToggleButtonGroup.tsx +20 -1
  797. package/src/Token/Token.doc.mjs +2 -2
  798. package/src/Token/Token.tsx +75 -5
  799. package/src/Token/TokenLink.tsx +21 -7
  800. package/src/Tokenizer/Tokenizer.doc.mjs +12 -8
  801. package/src/Tokenizer/Tokenizer.tsx +119 -65
  802. package/src/Tokenizer/TokenizerBottomSheet.tsx +12 -18
  803. package/src/Tokenizer/TokenizerClearAllMessageContext.ts +21 -0
  804. package/src/Toolbar/Toolbar.tsx +2 -1
  805. package/src/Tooltip/Tooltip.doc.mjs +3 -3
  806. package/src/Tooltip/useTooltip.doc.mjs +1 -1
  807. package/src/TopNav/TopNavMegaMenu.tsx +8 -4
  808. package/src/TopNav/TopNavMenu.tsx +1 -0
  809. package/src/TreeList/TreeList.tsx +6 -3
  810. package/src/TreeList/TreeListItem.tsx +31 -7
  811. package/src/Typeahead/BaseTypeahead.doc.mjs +10 -7
  812. package/src/Typeahead/BaseTypeahead.tsx +361 -48
  813. package/src/Typeahead/Typeahead.doc.mjs +21 -4
  814. package/src/Typeahead/Typeahead.tsx +53 -11
  815. package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
  816. package/src/Typeahead/index.ts +1 -1
  817. package/src/Typeahead/types.ts +27 -3
  818. package/src/gestures/GestureArena.ts +111 -11
  819. package/src/gestures/GestureHost.ts +2064 -0
  820. package/src/gestures/GestureRecognizer.ts +21 -1
  821. package/src/gestures/LongPressGestureRecognizer.ts +4 -0
  822. package/src/gestures/PanGestureRecognizer.ts +4 -0
  823. package/src/gestures/PinchGestureRecognizer.ts +148 -0
  824. package/src/gestures/PressTracker.ts +386 -0
  825. package/src/gestures/README.md +420 -0
  826. package/src/gestures/ScreenEdgePanGestureRecognizer.ts +256 -0
  827. package/src/gestures/SwipeGestureRecognizer.ts +197 -0
  828. package/src/gestures/TapGestureRecognizer.ts +4 -0
  829. package/src/gestures/VelocityTracker.ts +10 -3
  830. package/src/gestures/haptics.ts +196 -0
  831. package/src/gestures/index.ts +79 -0
  832. package/src/gestures/nativeScroll.ts +277 -0
  833. package/src/gestures/touchAction.ts +191 -0
  834. package/src/gestures/touchActionRule.ts +157 -0
  835. package/src/gestures/types.ts +30 -9
  836. package/src/gestures/useGestureRecognizer.ts +305 -0
  837. package/src/hooks/index.ts +5 -1
  838. package/src/hooks/menuPressMarker.ts +15 -0
  839. package/src/hooks/modalAnnounce.ts +129 -72
  840. package/src/hooks/scrollKeyboardDelegation.ts +9 -3
  841. package/src/hooks/useAdaptivePresentation.ts +4 -1
  842. package/src/hooks/useAnnounce.doc.mjs +35 -3
  843. package/src/hooks/useAnnounce.ts +209 -102
  844. package/src/hooks/useAnnounceRenderedText.ts +17 -3
  845. package/src/hooks/useBusyAnnouncement.ts +7 -10
  846. package/src/hooks/useClickableContainer.ts +48 -17
  847. package/src/hooks/useFocusReturnVisibility.ts +15 -12
  848. package/src/hooks/useInputStatusIcon.tsx +2 -2
  849. package/src/hooks/useListFocus.ts +54 -3
  850. package/src/hooks/useMenuHover.ts +15 -1
  851. package/src/hooks/useMenuPress.ts +5 -5
  852. package/src/hooks/useScrollOverflow.doc.mjs +1 -1
  853. package/src/hooks/useScrollOverflow.ts +59 -10
  854. package/src/hooks/useTreeFocus.doc.mjs +2 -2
  855. package/src/hooks/useTreeFocus.ts +16 -10
  856. package/src/hooks/useTypeahead.doc.mjs +2 -2
  857. package/src/hooks/useTypeahead.ts +21 -20
  858. package/src/i18n/generated-locales/af-ZA.generated.ts +0 -7
  859. package/src/i18n/generated-locales/ar-SA.generated.ts +0 -6
  860. package/src/i18n/generated-locales/ca-ES.generated.ts +0 -7
  861. package/src/i18n/generated-locales/cs-CZ.generated.ts +0 -6
  862. package/src/i18n/generated-locales/da-DK.generated.ts +0 -6
  863. package/src/i18n/generated-locales/de-DE.generated.ts +0 -6
  864. package/src/i18n/generated-locales/el-GR.generated.ts +0 -7
  865. package/src/i18n/generated-locales/en.generated.ts +17 -6
  866. package/src/i18n/generated-locales/es-ES.generated.ts +0 -7
  867. package/src/i18n/generated-locales/fi-FI.generated.ts +0 -6
  868. package/src/i18n/generated-locales/fr-FR.generated.ts +0 -7
  869. package/src/i18n/generated-locales/he-IL.generated.ts +0 -6
  870. package/src/i18n/generated-locales/hu-HU.generated.ts +0 -6
  871. package/src/i18n/generated-locales/it-IT.generated.ts +0 -7
  872. package/src/i18n/generated-locales/ja-JP.generated.ts +0 -6
  873. package/src/i18n/generated-locales/ko-KR.generated.ts +0 -6
  874. package/src/i18n/generated-locales/nl-NL.generated.ts +0 -6
  875. package/src/i18n/generated-locales/no-NO.generated.ts +0 -6
  876. package/src/i18n/generated-locales/pl-PL.generated.ts +0 -7
  877. package/src/i18n/generated-locales/pseudo.generated.ts +17 -6
  878. package/src/i18n/generated-locales/pt-BR.generated.ts +0 -7
  879. package/src/i18n/generated-locales/pt-PT.generated.ts +0 -7
  880. package/src/i18n/generated-locales/ro-RO.generated.ts +0 -6
  881. package/src/i18n/generated-locales/ru-RU.generated.ts +0 -7
  882. package/src/i18n/generated-locales/sr-SP.generated.ts +0 -6
  883. package/src/i18n/generated-locales/sv-SE.generated.ts +0 -6
  884. package/src/i18n/generated-locales/tr-TR.generated.ts +0 -7
  885. package/src/i18n/generated-locales/uk-UA.generated.ts +0 -7
  886. package/src/i18n/generated-locales/vi-VN.generated.ts +0 -6
  887. package/src/i18n/generated-locales/zh-CN.generated.ts +0 -6
  888. package/src/i18n/generated-locales/zh-TW.generated.ts +0 -6
  889. package/src/i18n/useListFormatter.ts +42 -0
  890. package/src/motion/MEASUREMENTS.md +2 -1
  891. package/src/motion/README.md +113 -33
  892. package/src/motion/animatedLayout.ts +977 -45
  893. package/src/motion/animator.ts +987 -132
  894. package/src/motion/coast.ts +10 -3
  895. package/src/motion/reducedMotion.ts +12 -2
  896. package/src/motion/reducedMotionPlan.ts +20 -1
  897. package/src/motion/resolveMotion.ts +68 -0
  898. package/src/motion/roleValue.ts +2 -1
  899. package/src/motion/uikit/timing.ts +15 -1
  900. package/src/privateAttributes/segmentDisabled.stylex.ts +28 -0
  901. package/src/theme/Theme.doc.mjs +1 -1
  902. package/src/theme/Theme.tsx +8 -4
  903. package/src/theme/defineTheme.ts +117 -8
  904. package/src/theme/domainTokens/domainTokenDefaults.ts +19 -0
  905. package/src/theme/domainTokens/index.ts +6 -10
  906. package/src/theme/index.ts +5 -0
  907. package/src/theme/motionKnobs.ts +82 -0
  908. package/src/theme/resolveThemeValues.ts +68 -6
  909. package/src/theme/themeAdaptations.ts +52 -12
  910. package/src/theme/themeMotion.ts +221 -0
  911. package/src/theme/tokenReferences.ts +149 -0
  912. package/src/theme/tokens.stylex.ts +10 -0
  913. package/src/theme/tokens.ts +15 -158
  914. package/src/theme/useTheme.ts +6 -1
  915. package/src/utils/focusOutline.stylex.ts +28 -0
  916. package/src/utils/focusReturn.ts +19 -6
  917. package/src/utils/getNodeText.ts +38 -0
  918. package/src/utils/interactionModality.ts +197 -17
  919. package/src/utils/interactionOverlay.stylex.ts +12 -3
  920. package/src/utils/plainDate.ts +58 -3
  921. package/src/utils/presentation.ts +180 -0
  922. package/src/utils/pressDisabled.ts +32 -0
  923. package/src/utils/pressFeedback.ts +39 -14
  924. package/src/utils/primaryClick.ts +28 -0
  925. package/src/utils/sharedMutationObserver.ts +87 -29
  926. package/src/utils/timeFormat.ts +314 -0
  927. package/src/utils/touchPresentation.stylex.ts +43 -0
  928. package/src/utils/touchPresentation.ts +13 -8
  929. package/src/utils/touchQueries.ts +15 -0
  930. package/src/utils/typeaheadMatch.ts +141 -0
  931. package/src/utils/unicodeDigits.ts +71 -0
  932. package/src/utils/useFocusAcrossSwap.ts +55 -0
  933. package/dist/Item/ItemMarkerColumns.a11y.chromium.spec.d.ts +0 -2
  934. package/dist/Item/ItemMarkerColumns.a11y.chromium.spec.js +0 -132
  935. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts +0 -2
  936. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.js +0 -78
  937. package/dist/Lightbox/LightboxViewport.a11y.browser.spec.d.ts +0 -2
  938. package/dist/Lightbox/LightboxViewport.a11y.browser.spec.js +0 -65
  939. package/dist/List/ListMarkers.a11y.chromium.spec.d.ts +0 -2
  940. package/dist/List/ListMarkers.a11y.chromium.spec.js +0 -677
  941. package/dist/Markdown/Markdown.fr23.bench.d.ts +0 -2
  942. package/dist/Markdown/Markdown.fr23.bench.d.ts.map +0 -1
  943. package/dist/Markdown/Markdown.fr23.bench.js +0 -152
  944. package/dist/Markdown/MarkdownTable.a11y.chromium.spec.d.ts +0 -2
  945. package/dist/Markdown/MarkdownTable.a11y.chromium.spec.js +0 -590
  946. package/dist/Markdown/plugins/headingLinks.a11y.chromium.spec.d.ts +0 -2
  947. package/dist/Markdown/plugins/headingLinks.a11y.chromium.spec.js +0 -657
  948. package/dist/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.d.ts +0 -2
  949. package/dist/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.js +0 -153
  950. package/dist/MultiSelector/CreateRow.a11y.chromium.spec.d.ts +0 -2
  951. package/dist/MultiSelector/CreateRow.a11y.chromium.spec.js +0 -116
  952. package/dist/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.d.ts +0 -2
  953. package/dist/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.js +0 -49
  954. package/dist/MultiSelector/OptionActions.a11y.chromium.spec.d.ts +0 -2
  955. package/dist/MultiSelector/OptionActions.a11y.chromium.spec.js +0 -273
  956. package/dist/Outline/OutlineFocus.a11y.chromium.spec.d.ts +0 -2
  957. package/dist/Outline/OutlineFocus.a11y.chromium.spec.js +0 -421
  958. package/dist/Typeahead/BaseTypeahead.emptyState.a11y.chromium.spec.d.ts +0 -2
  959. package/dist/Typeahead/BaseTypeahead.emptyState.a11y.chromium.spec.js +0 -118
  960. package/dist/reset.a11y.chromium.spec.d.ts +0 -2
  961. package/dist/reset.a11y.chromium.spec.js +0 -231
  962. package/dist/reset.until-found.a11y.browser.spec.d.ts +0 -2
  963. package/dist/reset.until-found.a11y.browser.spec.js +0 -72
  964. package/src/AlertDialog/AlertDialog.spec.md +0 -259
  965. package/src/AlertDialog/AlertDialog.test.tsx +0 -519
  966. package/src/AlertDialog/__tests__/AlertDialog.a11y.chromium.spec.ts +0 -116
  967. package/src/AlertDialog/__tests__/AlertDialog.a11y.renders.tsx +0 -52
  968. package/src/AlertDialog/__tests__/AlertDialog.a11y.states.ts +0 -68
  969. package/src/AlertDialog/__tests__/AlertDialog.a11y.test.tsx +0 -144
  970. package/src/AlertDialog/useImperativeAlertDialog.test.tsx +0 -163
  971. package/src/AppShell/AppShell.spec.md +0 -334
  972. package/src/AppShell/AppShell.test.tsx +0 -1148
  973. package/src/AspectRatio/AspectRatio.spec.md +0 -179
  974. package/src/AspectRatio/AspectRatio.test.tsx +0 -398
  975. package/src/AspectRatio/__tests__/AspectRatioFitLayers.a11y.browser.spec.ts +0 -158
  976. package/src/Avatar/Avatar.spec.md +0 -253
  977. package/src/Avatar/Avatar.test.tsx +0 -867
  978. package/src/Avatar/AvatarStatusDot.spec.md +0 -208
  979. package/src/Avatar/AvatarStatusDot.test.tsx +0 -306
  980. package/src/AvatarGroup/AvatarGroup.spec.md +0 -205
  981. package/src/AvatarGroup/AvatarGroup.test.tsx +0 -313
  982. package/src/AvatarGroup/AvatarGroupOverflow.spec.md +0 -210
  983. package/src/AvatarGroup/AvatarGroupOverflow.test.tsx +0 -263
  984. package/src/Badge/Badge.spec.md +0 -207
  985. package/src/Badge/Badge.test.tsx +0 -125
  986. package/src/Banner/Banner.spec.md +0 -282
  987. package/src/Banner/Banner.test.tsx +0 -879
  988. package/src/Blockquote/Blockquote.spec.md +0 -171
  989. package/src/Blockquote/Blockquote.test.tsx +0 -121
  990. package/src/BottomSheet/BottomSheet.spec.md +0 -457
  991. package/src/BottomSheet/BottomSheet.test.tsx +0 -3108
  992. package/src/BottomSheet/BottomSheetEdgeTint.test.tsx +0 -248
  993. package/src/BottomSheet/BottomSheetKeyboard.test.tsx +0 -195
  994. package/src/BottomSheet/BottomSheetPanel.test.tsx +0 -549
  995. package/src/BottomSheet/BottomSheetReplace.test.tsx +0 -1638
  996. package/src/BottomSheet/BottomSheetStacking.announce.test.tsx +0 -246
  997. package/src/BottomSheet/BottomSheetStacking.test.tsx +0 -3184
  998. package/src/BottomSheet/BottomSheetSwitcher.spec.md +0 -367
  999. package/src/BottomSheet/BottomSheetSwitcher.test.tsx +0 -2010
  1000. package/src/BottomSheet/__tests__/BottomSheetDrag.a11y.chromium.spec.ts +0 -129
  1001. package/src/BottomSheet/__tests__/BottomSheetFocusReturn.a11y.browser.spec.ts +0 -97
  1002. package/src/BottomSheet/__tests__/BottomSheetKeyboard.a11y.browser.spec.ts +0 -415
  1003. package/src/BottomSheet/__tests__/BottomSheetNativeModal.a11y.browser.spec.ts +0 -462
  1004. package/src/BottomSheet/__tests__/BottomSheetPinchZoom.a11y.chromium.spec.ts +0 -247
  1005. package/src/BottomSheet/__tests__/BottomSheetToastOutlet.a11y.chromium.spec.ts +0 -83
  1006. package/src/BottomSheet/snapOffsets.test.ts +0 -254
  1007. package/src/BottomSheet/useSheetGestures.test.ts +0 -1638
  1008. package/src/Breadcrumbs/BreadcrumbItem.spec.md +0 -269
  1009. package/src/Breadcrumbs/Breadcrumbs.spec.md +0 -165
  1010. package/src/Breadcrumbs/Breadcrumbs.test.tsx +0 -921
  1011. package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.chromium.spec.ts +0 -120
  1012. package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.renders.tsx +0 -45
  1013. package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.states.ts +0 -81
  1014. package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.test.tsx +0 -125
  1015. package/src/Button/Button.spec.md +0 -322
  1016. package/src/Button/Button.test.tsx +0 -864
  1017. package/src/Button/__tests__/Button.a11y.chromium.spec.ts +0 -355
  1018. package/src/Button/__tests__/Button.a11y.harnesses.tsx +0 -47
  1019. package/src/Button/__tests__/Button.a11y.known-failures.ts +0 -25
  1020. package/src/Button/__tests__/Button.a11y.renders.tsx +0 -139
  1021. package/src/Button/__tests__/Button.a11y.states.ts +0 -317
  1022. package/src/Button/__tests__/Button.a11y.test.tsx +0 -187
  1023. package/src/ButtonGroup/ButtonGroup.spec.md +0 -220
  1024. package/src/ButtonGroup/ButtonGroup.test.tsx +0 -1025
  1025. package/src/Calendar/Calendar.spec.md +0 -209
  1026. package/src/Calendar/Calendar.test.tsx +0 -2186
  1027. package/src/Calendar/__tests__/Calendar.a11y.chromium.spec.ts +0 -127
  1028. package/src/Calendar/__tests__/Calendar.a11y.known-failures.ts +0 -12
  1029. package/src/Calendar/__tests__/Calendar.a11y.renders.tsx +0 -57
  1030. package/src/Calendar/__tests__/Calendar.a11y.states.ts +0 -139
  1031. package/src/Calendar/__tests__/Calendar.a11y.test.tsx +0 -137
  1032. package/src/Calendar/dayCellUtils.test.ts +0 -520
  1033. package/src/Calendar/getInitialFocusDate.test.ts +0 -94
  1034. package/src/Calendar/getStandaloneShortWeekdayNames.test.ts +0 -54
  1035. package/src/Calendar/hooks/useCalendarConstraints.test.ts +0 -153
  1036. package/src/Calendar/hooks/useCalendarDays.test.ts +0 -265
  1037. package/src/Calendar/hooks/useCalendarNavigation.test.ts +0 -252
  1038. package/src/Card/Card.spec.md +0 -205
  1039. package/src/Card/Card.test.tsx +0 -202
  1040. package/src/Carousel/Carousel.spec.md +0 -146
  1041. package/src/Carousel/Carousel.test.tsx +0 -915
  1042. package/src/Carousel/__tests__/Carousel.a11y.chromium.spec.ts +0 -193
  1043. package/src/Carousel/__tests__/Carousel.a11y.known-failures.ts +0 -27
  1044. package/src/Carousel/__tests__/Carousel.a11y.renders.tsx +0 -39
  1045. package/src/Carousel/__tests__/Carousel.a11y.states.ts +0 -139
  1046. package/src/Carousel/__tests__/Carousel.a11y.test.tsx +0 -127
  1047. package/src/Center/Center.spec.md +0 -205
  1048. package/src/Center/Center.test.tsx +0 -406
  1049. package/src/Chat/ChatComposer.spec.md +0 -230
  1050. package/src/Chat/ChatComposer.test.tsx +0 -364
  1051. package/src/Chat/ChatComposerDrawer.spec.md +0 -267
  1052. package/src/Chat/ChatComposerDrawer.test.tsx +0 -130
  1053. package/src/Chat/ChatComposerInput.spec.md +0 -224
  1054. package/src/Chat/ChatComposerInput.test.tsx +0 -2136
  1055. package/src/Chat/ChatComposerTokenElement.spec.md +0 -152
  1056. package/src/Chat/ChatComposerTokenElement.test.tsx +0 -85
  1057. package/src/Chat/ChatDictationButton.spec.md +0 -160
  1058. package/src/Chat/ChatDictationButton.test.tsx +0 -108
  1059. package/src/Chat/ChatLayout.spec.md +0 -271
  1060. package/src/Chat/ChatLayout.test.tsx +0 -311
  1061. package/src/Chat/ChatLayoutScrollButton.spec.md +0 -338
  1062. package/src/Chat/ChatLayoutScrollButton.test.tsx +0 -99
  1063. package/src/Chat/ChatMessage.spec.md +0 -265
  1064. package/src/Chat/ChatMessage.test.tsx +0 -344
  1065. package/src/Chat/ChatMessageBubble.spec.md +0 -263
  1066. package/src/Chat/ChatMessageBubble.test.tsx +0 -294
  1067. package/src/Chat/ChatMessageList.spec.md +0 -222
  1068. package/src/Chat/ChatMessageList.test.tsx +0 -198
  1069. package/src/Chat/ChatMessageMetadata.spec.md +0 -220
  1070. package/src/Chat/ChatMessageMetadata.test.tsx +0 -66
  1071. package/src/Chat/ChatPastedTextToken.test.tsx +0 -71
  1072. package/src/Chat/ChatSendButton.spec.md +0 -227
  1073. package/src/Chat/ChatSendButton.test.tsx +0 -309
  1074. package/src/Chat/ChatSystemMessage.spec.md +0 -224
  1075. package/src/Chat/ChatSystemMessage.test.tsx +0 -189
  1076. package/src/Chat/ChatTokenizedText.spec.md +0 -190
  1077. package/src/Chat/ChatTokenizedText.test.tsx +0 -163
  1078. package/src/Chat/ChatToolCalls.spec.md +0 -194
  1079. package/src/Chat/ChatToolCalls.test.tsx +0 -413
  1080. package/src/Chat/__tests__/ChatLayoutScrollButton.a11y.chromium.spec.ts +0 -577
  1081. package/src/Chat/__tests__/ChatLayoutScrollButtonSurface.a11y.chromium.spec.ts +0 -740
  1082. package/src/Chat/__tests__/ChatMessageBubble.a11y.chromium.spec.ts +0 -457
  1083. package/src/Chat/__tests__/ChatMessageBubble.auditProvenance.test.ts +0 -91
  1084. package/src/Chat/__tests__/ChatMessageBubble.auditProvenance.ts +0 -91
  1085. package/src/Chat/__tests__/ChatMessageList.a11y.chromium.spec.ts +0 -465
  1086. package/src/Chat/__tests__/ChatMessageMetadata.a11y.chromium.spec.ts +0 -416
  1087. package/src/Chat/__tests__/ChatSendButton.a11y.chromium.spec.ts +0 -1523
  1088. package/src/Chat/__tests__/ChatSystemMessage.a11y.chromium.spec.ts +0 -1004
  1089. package/src/Chat/__tests__/ChatTokenizedText.a11y.chromium.spec.ts +0 -574
  1090. package/src/Chat/__tests__/useChatStreamScroll.a11y.chromium.spec.ts +0 -263
  1091. package/src/Chat/__tests__/useChatStreamScroll.fixture.tsx +0 -61
  1092. package/src/Chat/useChatDictation.test.tsx +0 -369
  1093. package/src/Chat/useChatNewMessages.test.tsx +0 -209
  1094. package/src/Chat/useChatPasteAsToken.test.ts +0 -191
  1095. package/src/Chat/useChatStreamScroll.test.tsx +0 -381
  1096. package/src/Chat/useTriggerMenu.test.tsx +0 -994
  1097. package/src/CheckboxInput/CheckboxInput.spec.md +0 -218
  1098. package/src/CheckboxInput/CheckboxInput.test.tsx +0 -926
  1099. package/src/CheckboxInput/__tests__/Checkbox.a11y.chromium.spec.ts +0 -354
  1100. package/src/CheckboxInput/__tests__/Checkbox.a11y.known-failures.ts +0 -54
  1101. package/src/CheckboxInput/__tests__/Checkbox.a11y.renders.tsx +0 -310
  1102. package/src/CheckboxInput/__tests__/Checkbox.a11y.states.ts +0 -404
  1103. package/src/CheckboxInput/__tests__/Checkbox.a11y.test.tsx +0 -128
  1104. package/src/CheckboxList/CheckboxList.fr10.test.tsx +0 -51
  1105. package/src/CheckboxList/CheckboxList.spec.md +0 -332
  1106. package/src/CheckboxList/CheckboxList.test.tsx +0 -1159
  1107. package/src/CheckboxList/CheckboxListItem.spec.md +0 -302
  1108. package/src/CheckboxList/__tests__/CheckboxList.a11y.chromium.spec.ts +0 -1998
  1109. package/src/Citation/Citation.spec.md +0 -179
  1110. package/src/Citation/Citation.test.tsx +0 -361
  1111. package/src/ClickableCard/ClickableCard.spec.md +0 -241
  1112. package/src/ClickableCard/ClickableCard.test.tsx +0 -286
  1113. package/src/Code/Code.spec.md +0 -170
  1114. package/src/Code/Code.test.tsx +0 -75
  1115. package/src/CodeBlock/CodeBlock.highlightStyles.test.tsx +0 -87
  1116. package/src/CodeBlock/CodeBlock.spec.md +0 -243
  1117. package/src/CodeBlock/CodeBlock.test.tsx +0 -752
  1118. package/src/CodeBlock/CodeLanguage.test.tsx +0 -173
  1119. package/src/CodeBlock/__tests__/CodeBlockCopyClearance.a11y.chromium.spec.ts +0 -290
  1120. package/src/CodeBlock/__tests__/CodeBlockLanguages.a11y.chromium.spec.ts +0 -64
  1121. package/src/CodeBlock/__tests__/CodeBlockOverflowStop.a11y.chromium.spec.ts +0 -126
  1122. package/src/CodeBlock/__tests__/DiffRowPaint.a11y.chromium.spec.ts +0 -94
  1123. package/src/CodeBlock/highlightRanges.test.ts +0 -253
  1124. package/src/CodeBlock/languages.test.ts +0 -402
  1125. package/src/CodeBlock/tokenizer.test.ts +0 -280
  1126. package/src/CodeBlock/tokenizerBudget.test.ts +0 -112
  1127. package/src/Collapsible/Collapsible.spec.md +0 -245
  1128. package/src/Collapsible/Collapsible.test.tsx +0 -620
  1129. package/src/Collapsible/CollapsibleGroup.spec.md +0 -201
  1130. package/src/Collapsible/CollapsibleGroup.test.tsx +0 -656
  1131. package/src/Collapsible/__tests__/Collapsible.a11y.chromium.spec.ts +0 -183
  1132. package/src/Collapsible/__tests__/Collapsible.a11y.states.ts +0 -117
  1133. package/src/Collapsible/__tests__/Collapsible.a11y.test.tsx +0 -140
  1134. package/src/Collapsible/__tests__/CollapsibleGroup.a11y.chromium.spec.ts +0 -559
  1135. package/src/Collapsible/__tests__/CollapsibleGroup.a11y.renders.tsx +0 -45
  1136. package/src/Collapsible/__tests__/CollapsibleGroup.a11y.states.ts +0 -139
  1137. package/src/Collapsible/__tests__/CollapsibleGroup.a11y.test.tsx +0 -135
  1138. package/src/Collapsible/__tests__/CollapsibleGroupAccordion.a11y.chromium.spec.ts +0 -129
  1139. package/src/Collapsible/useCollapsible.test.tsx +0 -236
  1140. package/src/CommandPalette/CommandPalette.perf.test.ts +0 -100
  1141. package/src/CommandPalette/CommandPalette.spec.md +0 -278
  1142. package/src/CommandPalette/CommandPalette.test.tsx +0 -750
  1143. package/src/CommandPalette/CommandPaletteEmpty.spec.md +0 -190
  1144. package/src/CommandPalette/CommandPaletteEmpty.test.tsx +0 -101
  1145. package/src/CommandPalette/CommandPaletteFooter.test.tsx +0 -122
  1146. package/src/CommandPalette/CommandPaletteGroup.test.tsx +0 -129
  1147. package/src/CommandPalette/CommandPaletteInput.spec.md +0 -215
  1148. package/src/CommandPalette/CommandPaletteInput.test.tsx +0 -539
  1149. package/src/CommandPalette/CommandPaletteItem.spec.md +0 -223
  1150. package/src/CommandPalette/CommandPaletteItem.test.tsx +0 -417
  1151. package/src/CommandPalette/CommandPaletteList.spec.md +0 -194
  1152. package/src/CommandPalette/CommandPaletteList.test.tsx +0 -184
  1153. package/src/CommandPalette/__tests__/CommandPalette.a11y.chromium.spec.ts +0 -600
  1154. package/src/CommandPalette/__tests__/CommandPaletteEmptyAudit.a11y.chromium.spec.ts +0 -715
  1155. package/src/CommandPalette/__tests__/CommandPaletteFooter.a11y.chromium.spec.ts +0 -582
  1156. package/src/CommandPalette/__tests__/CommandPaletteInputAudit.a11y.chromium.spec.ts +0 -336
  1157. package/src/CommandPalette/__tests__/CommandPaletteItemAudit.a11y.chromium.spec.ts +0 -523
  1158. package/src/ComplexSelector/ComplexSelector.focusableDisabled.test.tsx +0 -76
  1159. package/src/ComplexSelector/ComplexSelector.fr10.test.tsx +0 -262
  1160. package/src/ComplexSelector/ComplexSelector.spec.md +0 -266
  1161. package/src/ComplexSelector/ComplexSelector.test.tsx +0 -1023
  1162. package/src/ComplexSelector/__tests__/ComplexSelector.a11y.chromium.spec.ts +0 -965
  1163. package/src/ContextMenu/ContextMenu.spec.md +0 -251
  1164. package/src/ContextMenu/ContextMenu.test.tsx +0 -1582
  1165. package/src/ContextMenu/ContextMenu.triggerProps.test.tsx +0 -54
  1166. package/src/ContextMenu/__tests__/ContextMenuAudit.a11y.chromium.spec.ts +0 -439
  1167. package/src/ContextMenu/__tests__/ContextMenuCursorAnchor.a11y.browser.spec.ts +0 -154
  1168. package/src/ContextMenu/__tests__/ContextMenuLongPress.a11y.chromium.spec.ts +0 -117
  1169. package/src/DateInput/DateInput.fr10.test.tsx +0 -283
  1170. package/src/DateInput/DateInput.spec.md +0 -319
  1171. package/src/DateInput/DateInput.test.tsx +0 -1459
  1172. package/src/DateInput/DateInputTouch.test.tsx +0 -2828
  1173. package/src/DateInput/NativeDateField.test.tsx +0 -741
  1174. package/src/DateInput/Presentation.test.tsx +0 -121
  1175. package/src/DateInput/__tests__/DateInputAudit.a11y.chromium.spec.ts +0 -577
  1176. package/src/DateInput/__tests__/WheelPinchZoom.a11y.chromium.spec.ts +0 -171
  1177. package/src/DateRangeInput/DateRangeInput.fr10.test.tsx +0 -165
  1178. package/src/DateRangeInput/DateRangeInput.spec.md +0 -203
  1179. package/src/DateRangeInput/DateRangeInput.test.tsx +0 -1108
  1180. package/src/DateTimeInput/DateTimeInput.fr10.test.tsx +0 -319
  1181. package/src/DateTimeInput/DateTimeInput.spec.md +0 -246
  1182. package/src/DateTimeInput/DateTimeInput.test.tsx +0 -2575
  1183. package/src/DateTimeInput/DateTimeInputTouch.test.tsx +0 -1071
  1184. package/src/DateTimeInput/NativePickerSegments.test.tsx +0 -657
  1185. package/src/DateTimeInput/Presentation.test.tsx +0 -89
  1186. package/src/Dialog/Dialog.source-build.test.mjs +0 -43
  1187. package/src/Dialog/Dialog.spec.md +0 -189
  1188. package/src/Dialog/Dialog.test.tsx +0 -1385
  1189. package/src/Dialog/DialogHeader.test.tsx +0 -477
  1190. package/src/Dialog/__tests__/Dialog.a11y.browser.spec.ts +0 -111
  1191. package/src/Dialog/__tests__/Dialog.a11y.chromium.spec.ts +0 -218
  1192. package/src/Dialog/__tests__/Dialog.a11y.known-failures.ts +0 -28
  1193. package/src/Dialog/__tests__/Dialog.a11y.renders.tsx +0 -107
  1194. package/src/Dialog/__tests__/Dialog.a11y.states.ts +0 -104
  1195. package/src/Dialog/__tests__/Dialog.a11y.test.tsx +0 -102
  1196. package/src/Dialog/__tests__/Dialog.reduced-motion.a11y.browser.spec.ts +0 -252
  1197. package/src/Dialog/modules/DialogHeader.spec.md +0 -211
  1198. package/src/Dialog/useImperativeDialog.test.tsx +0 -78
  1199. package/src/Divider/Divider.spec.md +0 -252
  1200. package/src/Divider/Divider.test.tsx +0 -155
  1201. package/src/Drawer/Drawer.spec.md +0 -357
  1202. package/src/Drawer/Drawer.test.tsx +0 -1300
  1203. package/src/Drawer/DrawerDirection.test.tsx +0 -127
  1204. package/src/Drawer/DrawerHeader.test.tsx +0 -102
  1205. package/src/Drawer/__tests__/DrawerAudit.a11y.chromium.spec.ts +0 -402
  1206. package/src/Drawer/__tests__/DrawerHeaderAudit.a11y.chromium.spec.ts +0 -298
  1207. package/src/DropdownMenu/DropdownMenu.spec.md +0 -582
  1208. package/src/DropdownMenu/DropdownMenu.ssr.test.tsx +0 -93
  1209. package/src/DropdownMenu/DropdownMenu.test.tsx +0 -4340
  1210. package/src/DropdownMenu/DropdownMenuContext.public.test.ts +0 -22
  1211. package/src/DropdownMenu/DropdownMenuDivider.spec.md +0 -192
  1212. package/src/DropdownMenu/DropdownMenuItem.spec.md +0 -209
  1213. package/src/DropdownMenu/DropdownMenuLazySheet.test.tsx +0 -126
  1214. package/src/DropdownMenu/DropdownMenuRadioGroup.spec.md +0 -190
  1215. package/src/DropdownMenu/DropdownMenuRadioItem.spec.md +0 -226
  1216. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +0 -635
  1217. package/src/DropdownMenu/DropdownMenuSheetFirstOpen.test.tsx +0 -72
  1218. package/src/DropdownMenu/DropdownMenuSubMenu.spec.md +0 -225
  1219. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +0 -2408
  1220. package/src/DropdownMenu/__tests__/DropdownMenuDividerAudit.a11y.chromium.spec.ts +0 -281
  1221. package/src/DropdownMenu/__tests__/DropdownMenuDrillIn.a11y.chromium.spec.ts +0 -175
  1222. package/src/DropdownMenu/__tests__/DropdownMenuFocusReturn.a11y.browser.spec.ts +0 -74
  1223. package/src/DropdownMenu/__tests__/DropdownMenuGroupAudit.a11y.chromium.spec.ts +0 -335
  1224. package/src/DropdownMenu/__tests__/DropdownMenuItemAudit.a11y.chromium.spec.ts +0 -367
  1225. package/src/DropdownMenu/__tests__/DropdownMenuRadioGroupAudit.a11y.chromium.spec.ts +0 -328
  1226. package/src/DropdownMenu/__tests__/DropdownMenuRadioItemAudit.a11y.chromium.spec.ts +0 -540
  1227. package/src/DropdownMenu/__tests__/DropdownMenuSubMenuAudit.a11y.chromium.spec.ts +0 -671
  1228. package/src/DropdownMenu/__tests__/Menu.a11y.chromium.spec.ts +0 -146
  1229. package/src/DropdownMenu/__tests__/Menu.a11y.known-failures.ts +0 -26
  1230. package/src/DropdownMenu/__tests__/Menu.a11y.renders.tsx +0 -65
  1231. package/src/DropdownMenu/__tests__/Menu.a11y.states.ts +0 -138
  1232. package/src/DropdownMenu/__tests__/Menu.a11y.test.tsx +0 -136
  1233. package/src/DropdownMenu/__tests__/MenuButton.a11y.chromium.spec.ts +0 -137
  1234. package/src/DropdownMenu/__tests__/MenuButton.a11y.known-failures.ts +0 -12
  1235. package/src/DropdownMenu/__tests__/MenuButton.a11y.renders.tsx +0 -67
  1236. package/src/DropdownMenu/__tests__/MenuButton.a11y.states.ts +0 -141
  1237. package/src/DropdownMenu/__tests__/MenuButton.a11y.test.tsx +0 -138
  1238. package/src/DropdownMenu/__tests__/MenuHeaderFooter.a11y.chromium.spec.ts +0 -231
  1239. package/src/DropdownMenu/__tests__/MenuHoverFocus.a11y.chromium.spec.ts +0 -238
  1240. package/src/DropdownMenu/__tests__/MenuPinchZoom.a11y.chromium.spec.ts +0 -173
  1241. package/src/DropdownMenu/__tests__/MenuPress.a11y.chromium.spec.ts +0 -503
  1242. package/src/DropdownMenu/__tests__/SubMenuHeaderFooter.a11y.chromium.spec.ts +0 -268
  1243. package/src/DropdownMenu/__tests__/warmMenuBottomSheet.tsx +0 -43
  1244. package/src/DropdownMenu/modules/useMenuHover.spec.md +0 -283
  1245. package/src/DropdownMenu/modules/useMenuPress.spec.md +0 -348
  1246. package/src/EmptyState/EmptyState.announce.test.tsx +0 -227
  1247. package/src/EmptyState/EmptyState.spec.md +0 -197
  1248. package/src/EmptyState/EmptyState.test.tsx +0 -284
  1249. package/src/Field/Field.spec.md +0 -226
  1250. package/src/Field/Field.test.tsx +0 -800
  1251. package/src/Field/FieldLabel.spec.md +0 -183
  1252. package/src/Field/FieldLabel.test.tsx +0 -244
  1253. package/src/Field/InputClearButton.test.tsx +0 -395
  1254. package/src/Field/__tests__/FieldLabelAudit.a11y.chromium.spec.ts +0 -297
  1255. package/src/Field/fieldInputFamily.test.tsx +0 -160
  1256. package/src/FieldStatus/FieldStatus.spec.md +0 -224
  1257. package/src/FieldStatus/FieldStatus.test.tsx +0 -482
  1258. package/src/FieldStatus/__tests__/StatusMessage.a11y.chromium.spec.ts +0 -206
  1259. package/src/FieldStatus/__tests__/StatusMessage.a11y.known-failures.ts +0 -13
  1260. package/src/FieldStatus/__tests__/StatusMessage.a11y.renders.tsx +0 -287
  1261. package/src/FieldStatus/__tests__/StatusMessage.a11y.states.ts +0 -302
  1262. package/src/FieldStatus/__tests__/StatusMessage.a11y.test.tsx +0 -154
  1263. package/src/FileInput/FileInput.fr10.test.tsx +0 -21
  1264. package/src/FileInput/FileInput.spec.md +0 -199
  1265. package/src/FileInput/FileInput.test.tsx +0 -1270
  1266. package/src/FormLayout/FormLayout.spec.md +0 -210
  1267. package/src/FormLayout/FormLayout.test.tsx +0 -444
  1268. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +0 -46
  1269. package/src/Grid/Grid.spec.md +0 -193
  1270. package/src/Grid/Grid.test.tsx +0 -509
  1271. package/src/Grid/GridSpan.spec.md +0 -158
  1272. package/src/HStack/HStack.test.tsx +0 -129
  1273. package/src/Heading/Heading.spec.md +0 -198
  1274. package/src/Heading/Heading.test.tsx +0 -328
  1275. package/src/HoverCard/HoverCard.spec.md +0 -244
  1276. package/src/HoverCard/HoverCard.test.tsx +0 -1339
  1277. package/src/Icon/Icon.spec.md +0 -244
  1278. package/src/Icon/Icon.test.tsx +0 -990
  1279. package/src/Icon/globalIconRegistry.test.tsx +0 -613
  1280. package/src/IconButton/IconButton.spec.md +0 -197
  1281. package/src/IconButton/IconButton.test.tsx +0 -156
  1282. package/src/Indicator/CheckIndicator.spec.md +0 -159
  1283. package/src/Indicator/CheckboxIndicator.spec.md +0 -161
  1284. package/src/Indicator/Indicator.test.tsx +0 -389
  1285. package/src/Indicator/indicatorRegistry.test.tsx +0 -106
  1286. package/src/InputGroup/InputGroup.spec.md +0 -199
  1287. package/src/InputGroup/InputGroup.test.tsx +0 -502
  1288. package/src/InputGroup/InputGroupText.spec.md +0 -139
  1289. package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +0 -185
  1290. package/src/Item/Item.source-build.test.mjs +0 -88
  1291. package/src/Item/Item.spec.md +0 -226
  1292. package/src/Item/Item.swipeLayer.test.tsx +0 -74
  1293. package/src/Item/Item.test.tsx +0 -1455
  1294. package/src/Item/ItemMarkerColumns.a11y.chromium.spec.ts +0 -211
  1295. package/src/Item/__tests__/ItemSwipeActions.a11y.chromium.spec.ts +0 -337
  1296. package/src/Item/__tests__/ItemSwipePinchZoom.a11y.chromium.spec.ts +0 -186
  1297. package/src/Kbd/Kbd.spec.md +0 -142
  1298. package/src/Kbd/Kbd.test.tsx +0 -299
  1299. package/src/Layer/LayerProvider.spec.md +0 -149
  1300. package/src/Layer/LayerProvider.test.tsx +0 -143
  1301. package/src/Layer/__tests__/LayerReducedMotion.a11y.chromium.spec.ts +0 -176
  1302. package/src/Layer/__tests__/TouchTrigger.a11y.chromium.spec.ts +0 -200
  1303. package/src/Layer/anchorName.test.ts +0 -146
  1304. package/src/Layer/layerDismissalFamilies.test.tsx +0 -487
  1305. package/src/Layer/layerDismissalInvariants.test.tsx +0 -501
  1306. package/src/Layer/layerHost.test.ts +0 -117
  1307. package/src/Layer/layerScopedContext.test.tsx +0 -499
  1308. package/src/Layer/layerViewportInset.source-build.test.mjs +0 -90
  1309. package/src/Layer/layerViewportInset.test.ts +0 -120
  1310. package/src/Layer/useLayer.test.tsx +0 -2423
  1311. package/src/Layer/useLayerDismissal.test.tsx +0 -580
  1312. package/src/Layer/useTouchTrigger.test.ts +0 -70
  1313. package/src/Layout/Layout.spec.md +0 -247
  1314. package/src/Layout/Layout.test.tsx +0 -375
  1315. package/src/Layout/LayoutSlots.test.tsx +0 -376
  1316. package/src/Layout/__tests__/Layout.a11y.chromium.spec.ts +0 -122
  1317. package/src/Layout/__tests__/Layout.a11y.renders.tsx +0 -110
  1318. package/src/Layout/__tests__/Layout.a11y.states.ts +0 -93
  1319. package/src/Layout/__tests__/Layout.a11y.test.tsx +0 -142
  1320. package/src/Layout/__tests__/childrenAsContent.test.tsx +0 -59
  1321. package/src/Layout/__tests__/contentWidth.test.tsx +0 -303
  1322. package/src/Layout/__tests__/edgeCompensation.test.tsx +0 -191
  1323. package/src/Layout/__tests__/nestedPadding.test.tsx +0 -264
  1324. package/src/Layout/overlayPaddingReset.test.tsx +0 -224
  1325. package/src/Lightbox/Lightbox.spec.md +0 -199
  1326. package/src/Lightbox/Lightbox.test.tsx +0 -819
  1327. package/src/Lightbox/LightboxKeyboard.a11y.browser.spec.ts +0 -78
  1328. package/src/Lightbox/LightboxViewport.a11y.browser.spec.ts +0 -70
  1329. package/src/Lightbox/useLightbox.test.tsx +0 -263
  1330. package/src/Link/Link.spec.md +0 -229
  1331. package/src/Link/Link.test.tsx +0 -457
  1332. package/src/Link/LinkProvider.spec.md +0 -167
  1333. package/src/Link/__tests__/Link.a11y.chromium.spec.ts +0 -143
  1334. package/src/Link/__tests__/Link.a11y.renders.tsx +0 -97
  1335. package/src/Link/__tests__/Link.a11y.states.ts +0 -104
  1336. package/src/Link/__tests__/Link.a11y.test.tsx +0 -127
  1337. package/src/Link/__tests__/Link.navigation.a11y.chromium.spec.ts +0 -262
  1338. package/src/Link/useLinkComponent.test.tsx +0 -572
  1339. package/src/Link/useLinkify.test.tsx +0 -146
  1340. package/src/List/List.spec.md +0 -336
  1341. package/src/List/List.test.tsx +0 -1052
  1342. package/src/List/ListItem.source-build.test.mjs +0 -41
  1343. package/src/List/ListMarkers.a11y.chromium.spec.ts +0 -904
  1344. package/src/Markdown/Markdown.codeLanguages.test.tsx +0 -137
  1345. package/src/Markdown/Markdown.fr23.bench.ts +0 -176
  1346. package/src/Markdown/Markdown.fr23.perf.test.ts +0 -484
  1347. package/src/Markdown/Markdown.helpers.perf.test.ts +0 -495
  1348. package/src/Markdown/Markdown.public.test.ts +0 -309
  1349. package/src/Markdown/Markdown.renderBoundary.test.tsx +0 -72
  1350. package/src/Markdown/Markdown.rerender.test.tsx +0 -143
  1351. package/src/Markdown/Markdown.spec.md +0 -595
  1352. package/src/Markdown/Markdown.test.tsx +0 -1383
  1353. package/src/Markdown/MarkdownTable.a11y.chromium.spec.ts +0 -727
  1354. package/src/Markdown/__tests__/MarkdownNesting.a11y.chromium.spec.ts +0 -102
  1355. package/src/Markdown/angleDestinations.test.tsx +0 -104
  1356. package/src/Markdown/ast.test.ts +0 -374
  1357. package/src/Markdown/atxHeadingIndentation.test.tsx +0 -53
  1358. package/src/Markdown/blockNesting.test.tsx +0 -124
  1359. package/src/Markdown/blockquoteMarkers.test.tsx +0 -69
  1360. package/src/Markdown/characterReferences.test.ts +0 -47
  1361. package/src/Markdown/codeSpans.test.tsx +0 -65
  1362. package/src/Markdown/emphasis.test.tsx +0 -214
  1363. package/src/Markdown/fenceInfo.test.tsx +0 -47
  1364. package/src/Markdown/imageAlt.test.tsx +0 -84
  1365. package/src/Markdown/incremental.test.ts +0 -1198
  1366. package/src/Markdown/incrementalIndentation.test.tsx +0 -36
  1367. package/src/Markdown/indentedFences.test.tsx +0 -374
  1368. package/src/Markdown/indentedTables.test.tsx +0 -53
  1369. package/src/Markdown/linkBrackets.test.tsx +0 -116
  1370. package/src/Markdown/linkDestinationLinear.test.tsx +0 -54
  1371. package/src/Markdown/linkDestinations.test.tsx +0 -127
  1372. package/src/Markdown/linkTextCode.test.tsx +0 -65
  1373. package/src/Markdown/listBullets.test.tsx +0 -55
  1374. package/src/Markdown/listContinuation.test.tsx +0 -94
  1375. package/src/Markdown/listThematicBreak.test.tsx +0 -49
  1376. package/src/Markdown/longLinkLabels.test.tsx +0 -49
  1377. package/src/Markdown/modules/headingLinks.spec.md +0 -262
  1378. package/src/Markdown/modules/remark.spec.md +0 -269
  1379. package/src/Markdown/modules/softBreaks.spec.md +0 -137
  1380. package/src/Markdown/modules/sourceLines.spec.md +0 -162
  1381. package/src/Markdown/openFenceFinalNewline.test.tsx +0 -85
  1382. package/src/Markdown/parser.perf.test.ts +0 -398
  1383. package/src/Markdown/parser.public.test.ts +0 -144
  1384. package/src/Markdown/parser.test.ts +0 -1925
  1385. package/src/Markdown/plugin-renderer/MarkdownPluginNodeRenderer.test.tsx +0 -300
  1386. package/src/Markdown/plugins/frontmatter.test.tsx +0 -150
  1387. package/src/Markdown/plugins/headingLinks.a11y.chromium.spec.ts +0 -856
  1388. package/src/Markdown/plugins/headingLinks.ssr.test.tsx +0 -143
  1389. package/src/Markdown/plugins/headingLinks.test.tsx +0 -637
  1390. package/src/Markdown/plugins/protocol.test.tsx +0 -1083
  1391. package/src/Markdown/plugins/semanticFence.test.tsx +0 -655
  1392. package/src/Markdown/plugins/softBreaks.test.tsx +0 -172
  1393. package/src/Markdown/plugins/sourceDecoration.test.tsx +0 -799
  1394. package/src/Markdown/plugins/sourceLines.test.tsx +0 -715
  1395. package/src/Markdown/plugins/textTransform.test.ts +0 -467
  1396. package/src/Markdown/remark.test.tsx +0 -1877
  1397. package/src/Markdown/streaming.test.ts +0 -148
  1398. package/src/Markdown/streamingListShapes.test.tsx +0 -93
  1399. package/src/Markdown/trailingSpaces.test.tsx +0 -45
  1400. package/src/MetadataList/MetadataList.test.tsx +0 -383
  1401. package/src/MobileNav/MobileNav.spec.md +0 -306
  1402. package/src/MobileNav/MobileNav.test.tsx +0 -281
  1403. package/src/MobileNav/MobileNavCloseEdgeCases.test.tsx +0 -584
  1404. package/src/MobileNav/MobileNavCloseTiming.test.ts +0 -58
  1405. package/src/MobileNav/MobileNavCloseVisibility.test.tsx +0 -172
  1406. package/src/MobileNav/MobileNavEntryAnimation.test.tsx +0 -212
  1407. package/src/MobileNav/MobileNavFocus.test.tsx +0 -553
  1408. package/src/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.ts +0 -147
  1409. package/src/MobileNav/MobileNavReopen.test.tsx +0 -118
  1410. package/src/MobileNav/MobileNavScrollbarGutter.test.tsx +0 -109
  1411. package/src/MobileNav/MobileNavToggle.test.tsx +0 -179
  1412. package/src/MobileNav/__tests__/MobileNavWidth.a11y.chromium.spec.ts +0 -103
  1413. package/src/MoreMenu/MoreMenu.spec.md +0 -268
  1414. package/src/MoreMenu/MoreMenu.test.tsx +0 -356
  1415. package/src/MultiSelector/CreateRow.a11y.chromium.spec.ts +0 -149
  1416. package/src/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.ts +0 -72
  1417. package/src/MultiSelector/MultiSelector.focusableDisabled.test.tsx +0 -121
  1418. package/src/MultiSelector/MultiSelector.fr10.test.tsx +0 -221
  1419. package/src/MultiSelector/MultiSelector.spec.md +0 -354
  1420. package/src/MultiSelector/MultiSelector.test.tsx +0 -4702
  1421. package/src/MultiSelector/OptionActions.a11y.chromium.spec.ts +0 -310
  1422. package/src/MultiSelector/__tests__/MultiSelector.a11y.chromium.spec.ts +0 -46
  1423. package/src/MultiSelector/__tests__/MultiSelector.listbox.a11y.test.tsx +0 -128
  1424. package/src/NavIcon/NavIcon.spec.md +0 -158
  1425. package/src/NavIcon/NavIcon.test.tsx +0 -41
  1426. package/src/NavMenu/NavHeadingMenu.spec.md +0 -268
  1427. package/src/NavMenu/NavHeadingMenu.test.tsx +0 -714
  1428. package/src/NavMenu/__tests__/NavMenusSlideSelection.a11y.chromium.spec.ts +0 -137
  1429. package/src/NumberInput/NumberInput.fr10.test.tsx +0 -21
  1430. package/src/NumberInput/NumberInput.spec.md +0 -248
  1431. package/src/NumberInput/NumberInput.test.tsx +0 -2636
  1432. package/src/NumberInput/__tests__/NumberInput.a11y.chromium.spec.ts +0 -124
  1433. package/src/NumberInput/__tests__/NumberInput.a11y.known-failures.ts +0 -26
  1434. package/src/NumberInput/__tests__/NumberInput.a11y.renders.tsx +0 -77
  1435. package/src/NumberInput/__tests__/NumberInput.a11y.states.ts +0 -116
  1436. package/src/NumberInput/__tests__/NumberInput.a11y.test.tsx +0 -154
  1437. package/src/NumberInput/numberInputCommit.test.ts +0 -72
  1438. package/src/NumberInput/numberParser.docblock.test.ts +0 -234
  1439. package/src/NumberInput/numberParser.test.ts +0 -222
  1440. package/src/Outline/Outline.spec.md +0 -162
  1441. package/src/Outline/Outline.test.tsx +0 -1069
  1442. package/src/Outline/OutlineFocus.a11y.chromium.spec.ts +0 -551
  1443. package/src/Outline/modules/parseOutlineFromMarkdown.spec.md +0 -151
  1444. package/src/Outline/parseOutlineFromMarkdown.test.ts +0 -104
  1445. package/src/OverflowList/OverflowList.spec.md +0 -157
  1446. package/src/OverflowList/OverflowList.test.tsx +0 -1073
  1447. package/src/Overlay/Overlay.spec.md +0 -304
  1448. package/src/Overlay/Overlay.test.tsx +0 -424
  1449. package/src/Pagination/Pagination.spec.md +0 -226
  1450. package/src/Pagination/Pagination.test.tsx +0 -1754
  1451. package/src/Popover/Popover.spec.md +0 -525
  1452. package/src/Popover/Popover.test.tsx +0 -1424
  1453. package/src/Popover/PopoverPresentation.test.tsx +0 -952
  1454. package/src/Popover/__tests__/PopoverSecondDocument.a11y.chromium.spec.ts +0 -205
  1455. package/src/PowerSearch/PowerSearch.spec.md +0 -661
  1456. package/src/PowerSearch/PowerSearch.test.tsx +0 -1003
  1457. package/src/PowerSearch/PowerSearchEditPopover.test.tsx +0 -1190
  1458. package/src/PowerSearch/PowerSearchFilterEditor.test.tsx +0 -377
  1459. package/src/PowerSearch/PowerSearchToken.test.tsx +0 -230
  1460. package/src/PowerSearch/PowerSearchValueEditor.test.tsx +0 -754
  1461. package/src/PowerSearch/formatFilterValue.test.ts +0 -339
  1462. package/src/PowerSearch/resolveDateTimeRangePart.test.ts +0 -40
  1463. package/src/PowerSearch/usePowerSearchConfig.test.ts +0 -832
  1464. package/src/PowerSearch/usePowerSearchSource.test.ts +0 -621
  1465. package/src/ProgressBar/ProgressBar.spec.md +0 -261
  1466. package/src/ProgressBar/ProgressBar.test.tsx +0 -852
  1467. package/src/ProgressBar/__tests__/ProgressBar.a11y.chromium.spec.ts +0 -115
  1468. package/src/ProgressBar/__tests__/ProgressBar.a11y.known-failures.ts +0 -12
  1469. package/src/ProgressBar/__tests__/ProgressBar.a11y.renders.tsx +0 -38
  1470. package/src/ProgressBar/__tests__/ProgressBar.a11y.states.ts +0 -123
  1471. package/src/ProgressBar/__tests__/ProgressBar.a11y.test.tsx +0 -107
  1472. package/src/RadioList/RadioList.fr10.test.tsx +0 -67
  1473. package/src/RadioList/RadioList.spec.md +0 -227
  1474. package/src/RadioList/RadioList.test.tsx +0 -967
  1475. package/src/RadioList/RadioListItem.press.source-build.test.mjs +0 -80
  1476. package/src/RadioList/RadioListItem.spec.md +0 -223
  1477. package/src/RadioList/__tests__/RadioGroup.a11y.chromium.spec.ts +0 -274
  1478. package/src/RadioList/__tests__/RadioGroup.a11y.known-failures.ts +0 -12
  1479. package/src/RadioList/__tests__/RadioGroup.a11y.renders.tsx +0 -232
  1480. package/src/RadioList/__tests__/RadioGroup.a11y.states.ts +0 -503
  1481. package/src/RadioList/__tests__/RadioGroup.a11y.test.tsx +0 -217
  1482. package/src/Resizable/Resizable.spec.md +0 -278
  1483. package/src/Resizable/ResizeHandle.test.tsx +0 -1067
  1484. package/src/Resizable/__tests__/ResizeHandle.a11y.chromium.spec.ts +0 -120
  1485. package/src/Resizable/__tests__/ResizeHandle.a11y.known-failures.ts +0 -39
  1486. package/src/Resizable/__tests__/ResizeHandle.a11y.renders.tsx +0 -80
  1487. package/src/Resizable/__tests__/ResizeHandle.a11y.states.ts +0 -197
  1488. package/src/Resizable/__tests__/ResizeHandle.a11y.test.tsx +0 -123
  1489. package/src/Resizable/shippedDirections.test.ts +0 -462
  1490. package/src/Resizable/useResizable.test.ts +0 -1682
  1491. package/src/Resizable/utils.test.ts +0 -74
  1492. package/src/ScrollableArea/ScrollableArea.spec.md +0 -190
  1493. package/src/ScrollableArea/ScrollableArea.test.tsx +0 -304
  1494. package/src/ScrollableArea/modules/useScrollableArea.spec.md +0 -149
  1495. package/src/Section/Section.spec.md +0 -197
  1496. package/src/Section/Section.test.tsx +0 -376
  1497. package/src/SegmentedControl/SegmentedControl.spec.md +0 -261
  1498. package/src/SegmentedControl/SegmentedControl.test.tsx +0 -897
  1499. package/src/SegmentedControl/SegmentedControlItem.spec.md +0 -206
  1500. package/src/SelectableCard/SelectableCard.spec.md +0 -230
  1501. package/src/SelectableCard/SelectableCard.test.tsx +0 -216
  1502. package/src/Selector/Selector.focusableDisabled.test.tsx +0 -127
  1503. package/src/Selector/Selector.fr10.test.tsx +0 -149
  1504. package/src/Selector/Selector.sheetActiveDescendant.test.tsx +0 -95
  1505. package/src/Selector/Selector.source-build.test.mjs +0 -79
  1506. package/src/Selector/Selector.spec.md +0 -379
  1507. package/src/Selector/Selector.test.tsx +0 -5028
  1508. package/src/Selector/__tests__/Combobox.a11y.known-failures.ts +0 -27
  1509. package/src/Selector/__tests__/Combobox.a11y.states.ts +0 -145
  1510. package/src/Selector/__tests__/ComboboxField.a11y.chromium.spec.ts +0 -458
  1511. package/src/Selector/__tests__/EmptyStateAnnouncement.a11y.chromium.spec.ts +0 -91
  1512. package/src/Selector/__tests__/Listbox.a11y.chromium.spec.ts +0 -131
  1513. package/src/Selector/__tests__/Listbox.a11y.dom.ts +0 -38
  1514. package/src/Selector/__tests__/Listbox.a11y.inventory.test.ts +0 -63
  1515. package/src/Selector/__tests__/Listbox.a11y.known-failures.ts +0 -12
  1516. package/src/Selector/__tests__/Listbox.a11y.states.ts +0 -232
  1517. package/src/Selector/__tests__/Selector.a11y.chromium.spec.ts +0 -46
  1518. package/src/Selector/__tests__/Selector.combobox.a11y.chromium.spec.ts +0 -109
  1519. package/src/Selector/__tests__/Selector.combobox.a11y.test.tsx +0 -126
  1520. package/src/Selector/__tests__/Selector.listbox.a11y.test.tsx +0 -121
  1521. package/src/Selector/useCombobox.public.test.tsx +0 -89
  1522. package/src/Selector/useCombobox.test.tsx +0 -444
  1523. package/src/SideNav/SideNav.spec.md +0 -247
  1524. package/src/SideNav/SideNav.test.tsx +0 -4128
  1525. package/src/SideNav/SideNavCollapseButton.spec.md +0 -161
  1526. package/src/SideNav/SideNavHeading.spec.md +0 -226
  1527. package/src/SideNav/SideNavItem.spec.md +0 -246
  1528. package/src/SideNav/SideNavRailMotion.test.tsx +0 -620
  1529. package/src/SideNav/SideNavSection.spec.md +0 -153
  1530. package/src/SideNav/__tests__/SideNavRailMotion.interaction.browser.spec.ts +0 -417
  1531. package/src/SizeContext/SizeContext.test.tsx +0 -226
  1532. package/src/Skeleton/Skeleton.spec.md +0 -184
  1533. package/src/Skeleton/Skeleton.test.tsx +0 -148
  1534. package/src/Slider/Slider.fr10.test.tsx +0 -93
  1535. package/src/Slider/Slider.spec.md +0 -285
  1536. package/src/Slider/Slider.test.tsx +0 -1630
  1537. package/src/Slider/__tests__/Slider.a11y.chromium.spec.ts +0 -113
  1538. package/src/Slider/__tests__/Slider.a11y.known-failures.ts +0 -12
  1539. package/src/Slider/__tests__/Slider.a11y.renders.tsx +0 -42
  1540. package/src/Slider/__tests__/Slider.a11y.states.ts +0 -106
  1541. package/src/Slider/__tests__/Slider.a11y.test.tsx +0 -105
  1542. package/src/Spinner/Spinner.spec.md +0 -231
  1543. package/src/Spinner/Spinner.test.tsx +0 -484
  1544. package/src/Stack/Stack.spec.md +0 -203
  1545. package/src/Stack/Stack.test.tsx +0 -473
  1546. package/src/Stack/StackItem.test.tsx +0 -105
  1547. package/src/StatusDot/StatusDot.spec.md +0 -224
  1548. package/src/StatusDot/StatusDot.test.tsx +0 -213
  1549. package/src/Stepper/Step.spec.md +0 -206
  1550. package/src/Stepper/Stepper.public.test.ts +0 -91
  1551. package/src/Stepper/Stepper.spec.md +0 -327
  1552. package/src/Stepper/Stepper.test.tsx +0 -2068
  1553. package/src/Switch/Switch.focusRing.source-build.test.mjs +0 -81
  1554. package/src/Switch/Switch.spec.md +0 -277
  1555. package/src/Switch/Switch.test.tsx +0 -1071
  1556. package/src/Switch/__tests__/Switch.a11y.chromium.spec.ts +0 -211
  1557. package/src/Switch/__tests__/Switch.a11y.known-failures.ts +0 -28
  1558. package/src/Switch/__tests__/Switch.a11y.states.ts +0 -275
  1559. package/src/Switch/__tests__/Switch.a11y.test.tsx +0 -144
  1560. package/src/TabList/Tab.spec.md +0 -201
  1561. package/src/TabList/TabList.spec.md +0 -217
  1562. package/src/TabList/TabList.test.tsx +0 -1701
  1563. package/src/TabList/TabMenu.spec.md +0 -198
  1564. package/src/TabList/__tests__/TabListOverflow.interaction.browser.spec.ts +0 -99
  1565. package/src/TabList/__tests__/Tabs.a11y.chromium.spec.ts +0 -199
  1566. package/src/TabList/__tests__/Tabs.a11y.known-failures.ts +0 -12
  1567. package/src/TabList/__tests__/Tabs.a11y.renders.tsx +0 -92
  1568. package/src/TabList/__tests__/Tabs.a11y.states.ts +0 -247
  1569. package/src/TabList/__tests__/Tabs.a11y.test.tsx +0 -153
  1570. package/src/Table/Table.perf.test.tsx +0 -569
  1571. package/src/Table/Table.spec.md +0 -395
  1572. package/src/Table/Table.test.tsx +0 -1851
  1573. package/src/Table/TableHeaderCell.test.tsx +0 -291
  1574. package/src/Table/TableSelectionToolbar.test.tsx +0 -109
  1575. package/src/Table/__tests__/Table.a11y.chromium.spec.ts +0 -129
  1576. package/src/Table/__tests__/Table.a11y.contracts.ts +0 -35
  1577. package/src/Table/__tests__/Table.a11y.renders.tsx +0 -112
  1578. package/src/Table/__tests__/Table.a11y.states.ts +0 -140
  1579. package/src/Table/__tests__/Table.a11y.test.tsx +0 -198
  1580. package/src/Table/__tests__/TableMinWidth.a11y.chromium.spec.ts +0 -75
  1581. package/src/Table/__tests__/TableRowGlide.a11y.browser.spec.ts +0 -382
  1582. package/src/Table/__tests__/TableScroll.a11y.chromium.spec.ts +0 -138
  1583. package/src/Table/__tests__/TableStickyDividers.a11y.browser.spec.ts +0 -560
  1584. package/src/Table/plugins/activation/useTableActivation.spec.md +0 -254
  1585. package/src/Table/plugins/columnResize/useTableColumnResize.spec.md +0 -373
  1586. package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +0 -919
  1587. package/src/Table/plugins/columnSettings/useTableColumnSettings.test.tsx +0 -175
  1588. package/src/Table/plugins/columnSettings/useTableColumnSettingsState.test.tsx +0 -296
  1589. package/src/Table/plugins/filtering/useTableFilterState.test.tsx +0 -143
  1590. package/src/Table/plugins/filtering/useTableFiltering.test.tsx +0 -357
  1591. package/src/Table/plugins/groupedRows/useTableGroupedRows-perf.test.tsx +0 -112
  1592. package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +0 -409
  1593. package/src/Table/plugins/infiniteScroll/useTableInfiniteScroll.spec.md +0 -244
  1594. package/src/Table/plugins/pagination/useTablePagination-perf.test.tsx +0 -232
  1595. package/src/Table/plugins/pagination/useTablePagination.test.tsx +0 -666
  1596. package/src/Table/plugins/rowExpansion/useTableRowExpansion.glide.test.tsx +0 -280
  1597. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +0 -681
  1598. package/src/Table/plugins/rowIndex/useTableRowIndex.test.tsx +0 -132
  1599. package/src/Table/plugins/rowStatus/useTableRowStatus.public.test.ts +0 -92
  1600. package/src/Table/plugins/rowStatus/useTableRowStatus.spec.md +0 -355
  1601. package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +0 -519
  1602. package/src/Table/plugins/selection/useTableSelection-perf.test.tsx +0 -258
  1603. package/src/Table/plugins/selection/useTableSelection.test.tsx +0 -424
  1604. package/src/Table/plugins/selection/useTableSelectionState.test.tsx +0 -451
  1605. package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.test.tsx +0 -174
  1606. package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.ts +0 -86
  1607. package/src/Table/plugins/sortable/useTableSortable.test.tsx +0 -857
  1608. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +0 -592
  1609. package/src/Table/plugins/stickyColumns/useTableStickyColumns.test.tsx +0 -334
  1610. package/src/Table/plugins/tree/useTableTreeData-perf.test.tsx +0 -163
  1611. package/src/Table/plugins/tree/useTableTreeData.test.tsx +0 -992
  1612. package/src/Table/plugins/tree/useTableTreeState.test.tsx +0 -740
  1613. package/src/Table/plugins/virtualization/useTableVirtualization.spec.md +0 -266
  1614. package/src/Table/tableContextMenu.test.tsx +0 -208
  1615. package/src/Text/Text.spec.md +0 -193
  1616. package/src/Text/Text.test.tsx +0 -405
  1617. package/src/Text/useTruncation.test.tsx +0 -69
  1618. package/src/TextArea/TextArea.fr10.test.tsx +0 -21
  1619. package/src/TextArea/TextArea.spec.md +0 -303
  1620. package/src/TextArea/TextArea.test.tsx +0 -1257
  1621. package/src/TextInput/TextInput.fr10.test.tsx +0 -21
  1622. package/src/TextInput/TextInput.spec.md +0 -260
  1623. package/src/TextInput/TextInput.test.tsx +0 -1259
  1624. package/src/TextInput/__tests__/TextInput.a11y.chromium.spec.ts +0 -214
  1625. package/src/TextInput/__tests__/TextInput.a11y.known-failures.ts +0 -40
  1626. package/src/TextInput/__tests__/TextInput.a11y.renders.tsx +0 -202
  1627. package/src/TextInput/__tests__/TextInput.a11y.states.ts +0 -384
  1628. package/src/TextInput/__tests__/TextInput.a11y.test.tsx +0 -130
  1629. package/src/Thumbnail/Thumbnail.spec.md +0 -244
  1630. package/src/Thumbnail/Thumbnail.test.tsx +0 -384
  1631. package/src/TimeInput/NativeTimeInput.test.tsx +0 -326
  1632. package/src/TimeInput/Presentation.test.tsx +0 -171
  1633. package/src/TimeInput/TimeInput.fr10.test.tsx +0 -312
  1634. package/src/TimeInput/TimeInput.spec.md +0 -273
  1635. package/src/TimeInput/TimeInput.test.tsx +0 -831
  1636. package/src/Timer/Timer.spec.md +0 -215
  1637. package/src/Timer/Timer.test.tsx +0 -302
  1638. package/src/Timestamp/Timestamp.spec.md +0 -252
  1639. package/src/Timestamp/Timestamp.test.tsx +0 -1636
  1640. package/src/Timestamp/tooltipEntries.test.ts +0 -566
  1641. package/src/Toast/Toast.spec.md +0 -300
  1642. package/src/Toast/ToastViewport.modalHost.test.tsx +0 -891
  1643. package/src/Toast/ToastViewport.test.tsx +0 -2333
  1644. package/src/Toast/useToast.test.tsx +0 -258
  1645. package/src/ToggleButton/ToggleButton.spec.md +0 -256
  1646. package/src/ToggleButton/ToggleButton.test.tsx +0 -973
  1647. package/src/ToggleButton/ToggleButtonGroup.spec.md +0 -195
  1648. package/src/ToggleButton/__tests__/ToggleButton.a11y.chromium.spec.ts +0 -177
  1649. package/src/ToggleButton/__tests__/ToggleButton.a11y.renders.tsx +0 -133
  1650. package/src/ToggleButton/__tests__/ToggleButton.a11y.states.ts +0 -167
  1651. package/src/ToggleButton/__tests__/ToggleButton.a11y.test.tsx +0 -103
  1652. package/src/Token/Token.spec.md +0 -271
  1653. package/src/Token/Token.test.tsx +0 -640
  1654. package/src/Token/__tests__/TokenRemoveTarget.a11y.chromium.spec.ts +0 -87
  1655. package/src/Tokenizer/Tokenizer.fr10.test.tsx +0 -28
  1656. package/src/Tokenizer/Tokenizer.props-type.test.tsx +0 -126
  1657. package/src/Tokenizer/Tokenizer.spec.md +0 -601
  1658. package/src/Tokenizer/Tokenizer.ssr.test.tsx +0 -196
  1659. package/src/Tokenizer/Tokenizer.test.tsx +0 -2121
  1660. package/src/Tokenizer/TokenizerBottomSheet.test.tsx +0 -2719
  1661. package/src/Tokenizer/__tests__/TokenizerEndLane.a11y.chromium.spec.ts +0 -505
  1662. package/src/Toolbar/Toolbar.spec.md +0 -228
  1663. package/src/Toolbar/Toolbar.test.tsx +0 -570
  1664. package/src/Toolbar/__tests__/Toolbar.a11y.chromium.spec.ts +0 -164
  1665. package/src/Toolbar/__tests__/Toolbar.a11y.renders.tsx +0 -63
  1666. package/src/Toolbar/__tests__/Toolbar.a11y.states.ts +0 -142
  1667. package/src/Toolbar/__tests__/Toolbar.a11y.test.tsx +0 -126
  1668. package/src/Tooltip/Tooltip.spec.md +0 -267
  1669. package/src/Tooltip/Tooltip.test.tsx +0 -819
  1670. package/src/Tooltip/__tests__/Tooltip.a11y.chromium.spec.ts +0 -130
  1671. package/src/Tooltip/__tests__/Tooltip.a11y.renders.tsx +0 -86
  1672. package/src/Tooltip/__tests__/Tooltip.a11y.states.ts +0 -132
  1673. package/src/Tooltip/__tests__/Tooltip.a11y.test.tsx +0 -126
  1674. package/src/Tooltip/__tests__/TooltipFocusReturn.a11y.chromium.spec.ts +0 -130
  1675. package/src/Tooltip/__tests__/TooltipHoverBridge.a11y.chromium.spec.ts +0 -75
  1676. package/src/Tooltip/__tests__/TooltipTallContent.a11y.browser.spec.ts +0 -673
  1677. package/src/Tooltip/__tests__/TooltipTallContentTracking.a11y.browser.spec.ts +0 -1162
  1678. package/src/Tooltip/useTooltip.test.tsx +0 -483
  1679. package/src/TopNav/TopNav.spec.md +0 -190
  1680. package/src/TopNav/TopNav.test.tsx +0 -836
  1681. package/src/TopNav/TopNavHeading.spec.md +0 -211
  1682. package/src/TopNav/TopNavItem.spec.md +0 -189
  1683. package/src/TopNav/TopNavMegaMenu.reduced-motion.source-build.test.mjs +0 -83
  1684. package/src/TopNav/TopNavMegaMenu.spec.md +0 -190
  1685. package/src/TopNav/TopNavMegaMenu.test.tsx +0 -1132
  1686. package/src/TopNav/TopNavMegaMenuFeaturedCard.spec.md +0 -150
  1687. package/src/TopNav/TopNavMegaMenuItem.spec.md +0 -155
  1688. package/src/TopNav/TopNavMenu.spec.md +0 -202
  1689. package/src/TopNav/TopNavMenu.test.tsx +0 -485
  1690. package/src/TopNav/__tests__/TopNavMobileLongHeading.a11y.chromium.spec.ts +0 -75
  1691. package/src/TreeList/TreeList.spec.md +0 -328
  1692. package/src/TreeList/TreeList.test.tsx +0 -1711
  1693. package/src/TreeList/__tests__/TreeList.a11y.chromium.spec.ts +0 -138
  1694. package/src/TreeList/__tests__/TreeList.a11y.renders.tsx +0 -44
  1695. package/src/TreeList/__tests__/TreeList.a11y.states.ts +0 -164
  1696. package/src/TreeList/__tests__/TreeList.a11y.test.tsx +0 -138
  1697. package/src/TreeList/__tests__/TreeListGuideAlignment.interaction.browser.spec.ts +0 -127
  1698. package/src/TreeList/__tests__/TreeListRowNames.a11y.chromium.spec.ts +0 -83
  1699. package/src/Typeahead/BaseTypeahead.emptyState.a11y.chromium.spec.ts +0 -138
  1700. package/src/Typeahead/BaseTypeahead.spec.md +0 -270
  1701. package/src/Typeahead/BaseTypeahead.test.tsx +0 -553
  1702. package/src/Typeahead/Typeahead.fr10.test.tsx +0 -28
  1703. package/src/Typeahead/Typeahead.spec.md +0 -257
  1704. package/src/Typeahead/Typeahead.test.tsx +0 -2824
  1705. package/src/Typeahead/TypeaheadItem.test.tsx +0 -134
  1706. package/src/VStack/VStack.test.tsx +0 -128
  1707. package/src/VisuallyHidden/VisuallyHidden.spec.md +0 -170
  1708. package/src/VisuallyHidden/VisuallyHidden.test.tsx +0 -115
  1709. package/src/__tests__/BusyOwnerAnnouncement.test.tsx +0 -853
  1710. package/src/__tests__/CardPress.a11y.chromium.spec.ts +0 -353
  1711. package/src/__tests__/DisabledTriggerFocus.a11y.chromium.spec.ts +0 -87
  1712. package/src/__tests__/PressModality.a11y.chromium.spec.ts +0 -392
  1713. package/src/__tests__/PressedState.a11y.chromium.spec.ts +0 -814
  1714. package/src/__tests__/TestIcon.tsx +0 -26
  1715. package/src/__tests__/babelPluginAddExtensions.test.ts +0 -190
  1716. package/src/__tests__/fastRoleQueries.ts +0 -66
  1717. package/src/__tests__/forcedColors.ts +0 -60
  1718. package/src/__tests__/pressState.ts +0 -212
  1719. package/src/__tests__/stubMatchMedia.test.ts +0 -79
  1720. package/src/__tests__/stubMatchMedia.ts +0 -95
  1721. package/src/__tests__/stylexDeclarations.ts +0 -51
  1722. package/src/__tests__/unthemedLength.ts +0 -34
  1723. package/src/docPropLiterals.test.ts +0 -964
  1724. package/src/docPropReferences.test.ts +0 -178
  1725. package/src/docs-script.test.mjs +0 -55
  1726. package/src/gestures/__tests__/LongPressGestureRecognizer.test.ts +0 -141
  1727. package/src/gestures/__tests__/PanGestureRecognizer.test.ts +0 -327
  1728. package/src/gestures/__tests__/TapGestureRecognizer.test.ts +0 -154
  1729. package/src/gestures/__tests__/VelocityTracker.streams.test.ts +0 -243
  1730. package/src/gestures/__tests__/VelocityTracker.test.ts +0 -261
  1731. package/src/gestures/__tests__/arena.test.ts +0 -824
  1732. package/src/gestures/__tests__/arenaContinuous.test.ts +0 -207
  1733. package/src/gestures/__tests__/arenaTapLongPress.test.ts +0 -211
  1734. package/src/gestures/__tests__/fixtures/pointer-streams/README.md +0 -82
  1735. package/src/gestures/__tests__/fixtures/pointer-streams/android-chromium-fling.json +0 -130
  1736. package/src/gestures/__tests__/fixtures/pointer-streams/android-chromium-slow.json +0 -860
  1737. package/src/gestures/__tests__/fixtures/pointer-streams/android-chromium-stop-release.json +0 -357
  1738. package/src/gestures/__tests__/fixtures/pointer-streams/android-firefox-fling.json +0 -66
  1739. package/src/gestures/__tests__/fixtures/pointer-streams/android-firefox-slow.json +0 -268
  1740. package/src/gestures/__tests__/fixtures/pointer-streams/android-firefox-stop-release.json +0 -128
  1741. package/src/gestures/__tests__/fixtures/pointer-streams/capture.html +0 -123
  1742. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-mouse-fling.json +0 -64
  1743. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-mouse-slow.json +0 -268
  1744. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-mouse-stop-release.json +0 -124
  1745. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-pen-fling.json +0 -64
  1746. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-pen-slow.json +0 -268
  1747. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-pen-stop-release.json +0 -124
  1748. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-touch-fling.json +0 -84
  1749. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-touch-slow.json +0 -381
  1750. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-touch-stop-release.json +0 -171
  1751. package/src/gestures/__tests__/fixtures/pointer-streams/ios-safari-fling.json +0 -45
  1752. package/src/gestures/__tests__/fixtures/pointer-streams/ios-safari-slow.json +0 -101
  1753. package/src/gestures/__tests__/fixtures/pointer-streams/ios-safari-stop-release.json +0 -130
  1754. package/src/gestures/__tests__/harness.ts +0 -204
  1755. package/src/hooks/__tests__/MenuPressShadowRoot.a11y.chromium.spec.ts +0 -144
  1756. package/src/hooks/__tests__/menuLinkClicks.ts +0 -71
  1757. package/src/hooks/actionGroupTracker.exports.test.ts +0 -28
  1758. package/src/hooks/actionGroupTracker.test.ts +0 -510
  1759. package/src/hooks/computeOverflow.test.ts +0 -422
  1760. package/src/hooks/deprecatedApis.public.test.ts +0 -33
  1761. package/src/hooks/menuPressGesture.test.ts +0 -253
  1762. package/src/hooks/scrollKeyboardDelegation.test.ts +0 -155
  1763. package/src/hooks/scrollbarGutter.test.ts +0 -167
  1764. package/src/hooks/useAnnounce.modal.test.tsx +0 -1291
  1765. package/src/hooks/useAnnounce.test.tsx +0 -293
  1766. package/src/hooks/useAnnounceRenderedText.adopters.test.tsx +0 -226
  1767. package/src/hooks/useAutoMediaMode.test.ts +0 -109
  1768. package/src/hooks/useBusyAnnouncement.adopters.test.tsx +0 -69
  1769. package/src/hooks/useBusyAnnouncement.test.tsx +0 -112
  1770. package/src/hooks/useClickableContainer.test.tsx +0 -236
  1771. package/src/hooks/useClipboard.test.tsx +0 -151
  1772. package/src/hooks/useContainerReveal.test.tsx +0 -163
  1773. package/src/hooks/useDevWarning.test.tsx +0 -45
  1774. package/src/hooks/useEntryAnimation.ssr.test.tsx +0 -143
  1775. package/src/hooks/useFocusTrap.test.tsx +0 -635
  1776. package/src/hooks/useFocusTrapEscapeShim.test.tsx +0 -166
  1777. package/src/hooks/useGridFocus.test.tsx +0 -165
  1778. package/src/hooks/useHotkeys.test.ts +0 -265
  1779. package/src/hooks/useImageMode.test.ts +0 -133
  1780. package/src/hooks/useInputContainer.test.tsx +0 -180
  1781. package/src/hooks/useInputStatusIcon.test.tsx +0 -240
  1782. package/src/hooks/useIsHydrating.test.tsx +0 -70
  1783. package/src/hooks/useKeyboardHint.test.tsx +0 -92
  1784. package/src/hooks/useListFocus.test.tsx +0 -664
  1785. package/src/hooks/useLongPress.test.tsx +0 -152
  1786. package/src/hooks/useMediaQuery.test.ts +0 -165
  1787. package/src/hooks/useMenuHover.test.tsx +0 -536
  1788. package/src/hooks/useMenuPress.test.tsx +0 -565
  1789. package/src/hooks/useMergedRefs.test.tsx +0 -62
  1790. package/src/hooks/useOverflow.test.ts +0 -504
  1791. package/src/hooks/useRenamedProp.test.tsx +0 -95
  1792. package/src/hooks/useScrollLock.test.ts +0 -248
  1793. package/src/hooks/useScrollOverflow.test.tsx +0 -222
  1794. package/src/hooks/useScrollableArea.test.tsx +0 -836
  1795. package/src/hooks/useStreamingText.test.ts +0 -237
  1796. package/src/hooks/useTreeFocus.test.tsx +0 -351
  1797. package/src/hooks/useTypeahead.test.tsx +0 -351
  1798. package/src/i18n/InternationalizationProvider.spec.md +0 -252
  1799. package/src/i18n/__tests__/InternationalizationProvider.test.tsx +0 -128
  1800. package/src/i18n/__tests__/e2e-pagination.test.tsx +0 -172
  1801. package/src/i18n/__tests__/e2e-powersearch.test.tsx +0 -166
  1802. package/src/i18n/__tests__/getLocaleDirection.test.ts +0 -40
  1803. package/src/i18n/__tests__/resolve.test.ts +0 -325
  1804. package/src/i18n/__tests__/useCollator.test.tsx +0 -115
  1805. package/src/i18n/__tests__/useDirection.test.tsx +0 -66
  1806. package/src/i18n/__tests__/useLocale.test.tsx +0 -52
  1807. package/src/i18n/useTranslator.test.tsx +0 -267
  1808. package/src/inputFontFloor.test.ts +0 -106
  1809. package/src/internal/tokenizer-presentation.test.ts +0 -29
  1810. package/src/internal/touch.test.ts +0 -44
  1811. package/src/motion/__tests__/animatedLayout.interaction.browser.spec.ts +0 -1613
  1812. package/src/motion/__tests__/animatedLayoutAdopters.interaction.browser.spec.ts +0 -217
  1813. package/src/motion/__tests__/animatedLayoutBundle.ts +0 -17
  1814. package/src/motion/animatedLayout.boundary.test.ts +0 -155
  1815. package/src/motion/animatedLayout.swap.test.ts +0 -827
  1816. package/src/motion/animatedLayout.test.ts +0 -1154
  1817. package/src/motion/animatedLayoutAdopters.test.tsx +0 -500
  1818. package/src/motion/animator.test.ts +0 -2653
  1819. package/src/motion/bezier.test.ts +0 -52
  1820. package/src/motion/coast.test.ts +0 -99
  1821. package/src/motion/decay.test.ts +0 -120
  1822. package/src/motion/projection.test.ts +0 -107
  1823. package/src/motion/reducedMotion.test.ts +0 -129
  1824. package/src/motion/reducedMotionPlan.test.ts +0 -182
  1825. package/src/motion/resolveSnapPoint.test.ts +0 -189
  1826. package/src/motion/roles.test.ts +0 -256
  1827. package/src/motion/rubberBand.test.ts +0 -88
  1828. package/src/motion/selectPage.test.ts +0 -31
  1829. package/src/motion/spring.test.ts +0 -650
  1830. package/src/motion/uikit/gestures.test.ts +0 -89
  1831. package/src/motion/uikit/springRows.test.ts +0 -71
  1832. package/src/motion/uikit/uikit.test.ts +0 -364
  1833. package/src/motion/uikit/values.test.ts +0 -110
  1834. package/src/naming.test.ts +0 -44
  1835. package/src/postinstall.test.mjs +0 -216
  1836. package/src/reset.a11y.chromium.spec.ts +0 -238
  1837. package/src/reset.test.ts +0 -205
  1838. package/src/reset.until-found.a11y.browser.spec.ts +0 -76
  1839. package/src/reset.until-found.test.ts +0 -32
  1840. package/src/serverSafeComponents.test.ts +0 -675
  1841. package/src/stylexValidation.source-build.test.mjs +0 -42
  1842. package/src/tailwind-theme.test.ts +0 -153
  1843. package/src/theme/MediaTheme.dom.test.tsx +0 -97
  1844. package/src/theme/Theme.test.tsx +0 -337
  1845. package/src/theme/__tests__/SpacingRootFontSize.a11y.chromium.spec.ts +0 -199
  1846. package/src/theme/contrast.test.ts +0 -94
  1847. package/src/theme/declarationBoundary.test.ts +0 -126
  1848. package/src/theme/defineTheme.test.ts +0 -2028
  1849. package/src/theme/derivedVarRegistry.test.ts +0 -588
  1850. package/src/theme/expandColorScale.test.ts +0 -651
  1851. package/src/theme/expandMotionScale.test.ts +0 -145
  1852. package/src/theme/expandRadiusScale.test.ts +0 -59
  1853. package/src/theme/expandTypeScale.test.ts +0 -351
  1854. package/src/theme/extensibleAxes.test.ts +0 -432
  1855. package/src/theme/generateThemeRules.test.ts +0 -1870
  1856. package/src/theme/hct.test.ts +0 -93
  1857. package/src/theme/onMediaTokens.test.ts +0 -431
  1858. package/src/theme/publicThemeHelperContract.test.ts +0 -67
  1859. package/src/theme/syntax/defineSyntaxTheme.diff.test.ts +0 -91
  1860. package/src/theme/syntax/serverSafeSyntax.test.ts +0 -68
  1861. package/src/theme/syntax/useSyntaxTheme.diff.test.tsx +0 -40
  1862. package/src/theme/themeAdaptations.test.ts +0 -1795
  1863. package/src/theme/themeRegistry.test.ts +0 -59
  1864. package/src/theme/themingTargets.test.ts +0 -589
  1865. package/src/theme/tokenValueCompat.test.ts +0 -204
  1866. package/src/theme/tokens.test.ts +0 -441
  1867. package/src/theme/useTheme.test.tsx +0 -322
  1868. package/src/unicodePropertyEscapes.source-build.test.mjs +0 -69
  1869. package/src/utils/chainEventHandlers.test.ts +0 -39
  1870. package/src/utils/characters.test.ts +0 -141
  1871. package/src/utils/color.test.ts +0 -233
  1872. package/src/utils/composeEventHandlers.test.ts +0 -71
  1873. package/src/utils/customPropertyArmLayering.test.ts +0 -131
  1874. package/src/utils/dateParser.test.ts +0 -402
  1875. package/src/utils/dateTypes.test.ts +0 -40
  1876. package/src/utils/devWarning.test.ts +0 -56
  1877. package/src/utils/edgeAutoscroll.test.ts +0 -192
  1878. package/src/utils/focusReturn.test.ts +0 -119
  1879. package/src/utils/getKey.test.ts +0 -25
  1880. package/src/utils/hitArea.test.ts +0 -628
  1881. package/src/utils/ime.test.ts +0 -32
  1882. package/src/utils/inputAria.test.ts +0 -39
  1883. package/src/utils/interactionModality.test.ts +0 -100
  1884. package/src/utils/isApplePlatform.test.ts +0 -61
  1885. package/src/utils/mergeProps.test.ts +0 -166
  1886. package/src/utils/mergeRefs.test.ts +0 -48
  1887. package/src/utils/parseStyleKey.test.ts +0 -56
  1888. package/src/utils/plainDate.test.ts +0 -848
  1889. package/src/utils/pressFeedback.test.ts +0 -874
  1890. package/src/utils/pressGesture.test.ts +0 -323
  1891. package/src/utils/pressPaintSource.test.ts +0 -65
  1892. package/src/utils/pressableCoverage.test.ts +0 -192
  1893. package/src/utils/safeUrl.test.ts +0 -101
  1894. package/src/utils/sharedMutationObserver.test.ts +0 -53
  1895. package/src/utils/sharedResizeObserver.test.ts +0 -283
  1896. package/src/utils/themeProps.test.ts +0 -62
  1897. package/src/utils/timeParser.test.ts +0 -295
  1898. package/src/utils/touchPresentation.test.ts +0 -323
@@ -42,14 +42,16 @@
42
42
  * current value with the current velocity (`spec:AST-094` FR6). A gesture's release velocity
43
43
  * can be handed in explicitly instead.
44
44
  *
45
- * End state without a flicker frame: the element's inline style always holds
46
- * the values the animations END on, and the keyframes hold that end state for
47
- * a while after the curve ends (END_HOLD_MS). The main thread drops a finished
48
- * animation as soon as it runs after the curve's end; the inline style already
49
- * shows the same values, so nothing moves. The hold matters when the curve
50
- * ends during a main-thread block: WebKit's compositor ends an animation by
51
- * falling back to the value its main thread last committed, which is
52
- * mid-flight.
45
+ * No frame shows a value the element is not at. While a curve runs, the
46
+ * element's inline style holds the value the curve starts from (the value on
47
+ * screen when it was built), so a frame painted before the compositor has the
48
+ * curve (WebKit can receive a new curve a few updates late) shows the element
49
+ * where it is, never where it is going. The keyframes hold the end state for a
50
+ * while after the curve ends (END_HOLD_MS); the main thread retires a finished
51
+ * animation as soon as it runs after the curve's end, writing the end values
52
+ * inline in the same task that cancels it, so nothing moves. The hold matters
53
+ * when the curve ends during a main-thread block: WebKit's compositor ends an
54
+ * animation by falling back to the value its main thread last committed.
53
55
  *
54
56
  * Start time: a call that starts from rest (nothing on its channels moving,
55
57
  * no `options.at`) gets no start time, so the browser starts it when it
@@ -57,25 +59,49 @@
57
59
  * commit: a main-thread block before that frame delays the motion instead of
58
60
  * skipping into it. Everything the call starts, and every
59
61
  * call from rest in the same task, starts at that one time, which
60
- * `handle.started` reports. A call that continues motion on
62
+ * `handle.started` reports. Where the compositor starts it and the page
63
+ * learns that start only a frame or more later (Chromium), the call starts
64
+ * at the frame that commits it, the start the compositor takes, so a
65
+ * retarget or a rebase before then continues from the frame on screen. A
66
+ * call that continues motion on
61
67
  * screen (a retarget, a catch) keeps an explicit start at the call time, or
62
68
  * `options.at` to line several animators up, so the new curve continues
63
69
  * from the frame on screen. Keyframes are sampled from the call's start, so
64
70
  * a value that keeps moving through a rebuild stays on its curve to the
65
- * frame.
71
+ * frame. `options.start` changes that per call: `'commit'` dates a retarget
72
+ * by the browser's commit as well, and `'presented'` creates the animations
73
+ * of a call from rest two frames later, once its element at rest has been
74
+ * presented (a UI process that applies commits late); a retarget still starts
75
+ * now, from the value and velocity on screen.
76
+ * `handle.curve(property)` hands out the curve a call plays, so a
77
+ * companion can follow it on the same clock.
78
+ * `options.additive` retargets as UIKit does: the old curve keeps going and a
79
+ * curve of the change between the targets is added on top, baked into one
80
+ * animation (two animations on one property leave the compositor in both
81
+ * engines), so the retarget keeps the velocity on screen.
66
82
  *
67
- * WebKit starts an animation created just before a block at its last frame
68
- * time before the block, so there the motion still skips into its curve;
69
- * Chromium starts it after the block.
83
+ * WebKit dates an animation created just before a block at its last frame
84
+ * time before the block, where the first frame after it would show the
85
+ * motion skipped into its curve; when the call's own task ran on more than
86
+ * two frames, the call's first read of that start moves it to that read, so
87
+ * WebKit delays the motion as Chromium's commit does (startAfterBlock). Every
88
+ * call of that task moves together, and a shorter task or a read that other
89
+ * tasks delay keeps the browser's start, so a sequence chained on a call's
90
+ * end (a Reduce Motion cross-fade's second half) keeps its clock.
70
91
  *
71
92
  * Promotion: Mobile Safari runs an animation whose start time is set from
72
- * script on its compositor at its first commit only if the element already
73
- * has a compositing layer; without one, a block right after that commit
74
- * freezes it (iOS 26.2 simulator: 2 of 7 runs kept moving). Every animation
75
- * the animator creates, and every `set`, therefore promotes its channels in
76
- * the same task: inline `will-change` on the element, merged with the
77
- * element's own. That is enough (5 of 5, and 4 of 4 through the animator);
78
- * promotion ends PROMOTION_LINGER_MS after the last motion.
93
+ * script on its compositor at its first commit only if the element (or the
94
+ * pseudo-element) already has a compositing layer; without one, a block
95
+ * right after that commit freezes it (iOS 26.2 simulator: 2 of 7 runs kept
96
+ * moving, 0 of 5 on a ::before). Every animation the animator creates, and
97
+ * every `set` (unless it passes `{promote: false}`), therefore promotes its
98
+ * channels in the same task: inline
99
+ * `will-change` on the element, merged with the element's own, or the custom
100
+ * property `--astryx-motion-will-change-<pseudo>` on the host for a
101
+ * pseudo-element, whose style opts in with
102
+ * `will-change: var(--astryx-motion-will-change-before, auto)`. That is
103
+ * enough (5 of 5, and 4 of 4 through the animator); promotion ends
104
+ * PROMOTION_LINGER_MS after the last motion.
79
105
  *
80
106
  * Known limits, iOS Safari (measured on the iOS 26.2 simulator):
81
107
  * - a block in the task that starts a motion delays it: it starts when the
@@ -112,8 +138,8 @@
112
138
  * call that lands too carries a landing still waiting (two calls in one
113
139
  * frame land together), and a later opacity change lands it at once;
114
140
  * - on any other primary pointer (DR3) it completes at once.
115
- * No call option and no theme value lengthens the fade or keeps travel (DR4):
116
- * the fade's length is not a theme role.
141
+ * No call option and no role value lengthens the fade or keeps travel (DR4):
142
+ * the fade's length is not a role.
117
143
  *
118
144
  * Momentum under Reduce Motion (`design:reduced-motion` DR2, DEC-2): a
119
145
  * decay's momentum continues the velocity a finger handed it on release
@@ -125,18 +151,41 @@
125
151
  * Motion policy above, a cross-fade on a coarse pointer or after a touch
126
152
  * release (`touchRelease`) and at once elsewhere (DR2, DR3).
127
153
  *
154
+ * Roles: every spring and curve the animator plays passes through
155
+ * resolveMotion.ts, which names the motion role it plays (`springs.settle`
156
+ * once `registerSpringsTable()` has run, the Reduce Motion fade's curve,
157
+ * which the animator registers alone). The per-role tables stay internal
158
+ * (`spec:AST-094` DEC-15), so a role plays its table value: nothing reads a
159
+ * CSS variable or the element's style for it. A spring written inline at the call
160
+ * site, and a table never registered, play as given; the fade's length is not
161
+ * a role.
162
+ *
163
+ * A pseudo-element (`options.pseudoElement`, a dialog's `::backdrop`) has no
164
+ * inline style: its end value is held by a static filling animation (after a
165
+ * curve ends, and after `set`) until the next animation replaces it, and for
166
+ * as long as the pseudo-element exists. The browser makes a `::backdrop`
167
+ * again each time its dialog opens, without the hold, so a presentation
168
+ * calls `set` with its starting value right after `showModal()`, in the same
169
+ * task: a `set` before it lands on the backdrop the open replaces.
170
+ *
128
171
  * SSR-safe: nothing touches `window` or `document` at module scope, and an
129
172
  * animator created without an element only keeps state until one is attached.
130
173
  *
131
174
  * SYNC: When modified, update:
132
175
  * - /packages/core/src/motion/animator.test.ts
133
176
  * - /packages/core/src/motion/reducedMotionPlan.ts (the Reduce Motion plan)
177
+ * - /packages/core/src/motion/__tests__/animator.interaction.browser.spec.ts
178
+ * - /packages/core/src/motion/resolveMotion.ts (the roles it resolves)
134
179
  * - /packages/core/src/motion/README.md
135
180
  */
136
181
 
137
182
  import {cubicBezier} from './bezier';
138
183
  import {solveSpring, toSpring, type SpringDescription} from './spring';
139
- import {reducedMotionCrossFade} from './uikit/timing';
184
+ import {resolveMotion} from './resolveMotion';
185
+ import {
186
+ reducedMotionCrossFade,
187
+ registerReducedMotionCrossFade,
188
+ } from './uikit/timing';
140
189
  import {planReducedMotion, type ReducedMotionView} from './reducedMotionPlan';
141
190
 
142
191
  /**
@@ -192,6 +241,36 @@ export interface AnimateOptions {
192
241
  * changes nothing.
193
242
  */
194
243
  crossfadeAs?: 'entrance' | 'exit';
244
+ /**
245
+ * When the call's animations start. By default a call from rest starts
246
+ * when the browser commits it, and a call that continues motion on screen
247
+ * (a retarget) starts now, from the value on screen. Ignored with `at`.
248
+ * - `'commit'`: a call that continues motion also starts when the browser
249
+ * commits it, dated by the browser rather than by the main thread, as a
250
+ * call from rest is.
251
+ * - `'presented'`: a call from rest leaves its element at rest and creates
252
+ * its animations two frames later, once the frame that carries the
253
+ * element at rest has been presented; they then start at their commit. A
254
+ * busy UI process delays the motion instead of skipping into it, for two
255
+ * frames more before an idle start. Any other change to the animator
256
+ * before then creates the animations first, in call order. A call that
257
+ * continues motion on screen (a retarget) starts now, as by default.
258
+ */
259
+ start?: 'commit' | 'presented';
260
+ /**
261
+ * A call that retargets a curve on screen adds to it instead of replacing
262
+ * it, as UIKit's animations do: the old curve keeps going (past its end, at
263
+ * its target) and a spring of the difference between the two targets runs
264
+ * from 0 on top, in the same animation. Its value and velocity at the call
265
+ * are the old curve's, so whichever frame first shows it (WebKit can apply
266
+ * a new curve tens of ms late), nothing steps back. Ignored for a property
267
+ * at rest or still waiting for the browser's start, for a property given a
268
+ * velocity, and under Reduced Motion. Use it for a played curve that starts
269
+ * at rest (an eased reversal) while the property moves; a spring retarget
270
+ * on the same spring moves the same either way, and a curve that already
271
+ * continues the velocity on screen must not add to it.
272
+ */
273
+ additive?: boolean;
195
274
  }
196
275
 
197
276
  /**
@@ -219,7 +298,28 @@ export interface MotionCurve {
219
298
  /**
220
299
  * Options of `createAnimator`.
221
300
  */
301
+ /** How `set` puts values in place. */
302
+ export interface SetOptions {
303
+ /**
304
+ * Whether the write promotes its channels to a compositing layer, as a
305
+ * drag's per-frame writes need so each is a composite only (default
306
+ * true). `false` writes the values and nothing else: a one-off switch that
307
+ * must not give its element a layer, such as a veil under a sticky header
308
+ * switched during a programmatic scroll (on iOS 26.2, a layer there blanks
309
+ * the header's painted items for about two frames). A channel another
310
+ * motion keeps promoted stays promoted, and a channel with other motion
311
+ * still running gets its animation's layer as usual.
312
+ */
313
+ promote?: boolean;
314
+ }
315
+
222
316
  export interface AnimatorOptions {
317
+ /**
318
+ * Animates a pseudo-element of the element instead (`'::backdrop'` of a
319
+ * native dialog). A pseudo-element has no inline style, so a static filling
320
+ * animation holds its value after a curve ends and after `set`.
321
+ */
322
+ pseudoElement?: string;
223
323
  /** Starting values; identity by default. Never read from the DOM. */
224
324
  initial?: MotionValues;
225
325
  /** Clock in ms on the document timeline's time base. */
@@ -252,6 +352,14 @@ export interface MotionHandle {
252
352
  value(property: MotionProperty, time?: number): number;
253
353
  /** Presentation velocity of a property at `time`, units/s. */
254
354
  velocity(property: MotionProperty, time?: number): number;
355
+ /**
356
+ * The curve this call started on `property` (`scale` reads `scaleX`),
357
+ * in seconds from the call's start: what the keyframes play. Null for a
358
+ * property the call does not move, or moves without travel (Reduced
359
+ * Motion). Map it onto a companion property with `mapProgress`, and play
360
+ * that on the same clock.
361
+ */
362
+ curve(property: MotionProperty | 'scale'): MotionCurve | null;
255
363
  /** New targets for this call's properties, keeping their velocity. */
256
364
  retarget(
257
365
  to: MotionValues,
@@ -292,7 +400,7 @@ export interface Animator {
292
400
  * of a drag (one style write per channel, no animation when nothing else
293
401
  * on the channel is moving).
294
402
  */
295
- set(values: MotionValues): void;
403
+ set(values: MotionValues, options?: SetOptions): void;
296
404
  /** Springs to `to` from the presentation values. */
297
405
  animate(
298
406
  to: MotionValues,
@@ -386,10 +494,28 @@ interface Segment {
386
494
  */
387
495
  interface StartGroup {
388
496
  readonly provisional: number;
497
+ /**
498
+ * Its animations were created in the running task: the browser cannot have
499
+ * started them yet, so nothing reads their start time until it ends.
500
+ */
501
+ fresh: boolean;
389
502
  readonly segments: Segment[];
390
503
  readonly animations: Animation[];
391
504
  readonly channels: Set<Channel>;
392
505
  resolved: boolean;
506
+ /**
507
+ * The first frame after the call has run: a start read later is the
508
+ * browser's, whatever it says (startAfterBlock).
509
+ */
510
+ framed?: boolean;
511
+ /**
512
+ * Made in an animation-frame callback of an animator's own (a presented
513
+ * call's second frame): the browser commits its animations in that frame,
514
+ * so the frame after it is not the one that starts them.
515
+ */
516
+ madeInFrame?: boolean;
517
+ /** The task it was made in, with every call made in that task. */
518
+ task?: TaskMark;
393
519
  /** A later call in the same task that took over its curves. */
394
520
  adoptedBy?: StartGroup;
395
521
  readonly resolve: (start: number) => void;
@@ -414,7 +540,12 @@ interface HandleState {
414
540
  * dip, the fade back in.
415
541
  */
416
542
  interface Landing {
417
- readonly owner: HandleState;
543
+ /**
544
+ * The call that settles when the landing (and its fade back in) ends; a
545
+ * call that joins the dip takes it over, and the call it replaces is
546
+ * carried.
547
+ */
548
+ owner: HandleState;
418
549
  /** ms after the call's start. */
419
550
  readonly at: number;
420
551
  readonly values: Map<MotionProperty, number>;
@@ -454,6 +585,8 @@ interface ReducedPlan {
454
585
  > | null;
455
586
  /** The stylesheet opacity a dip borrowed (no call owns opacity). */
456
587
  readonly borrowed?: number | null;
588
+ /** The call joins the waiting dip (see the planner's `joins`). */
589
+ readonly joins?: boolean;
457
590
  }
458
591
 
459
592
  const PROPERTIES: ReadonlyArray<MotionProperty> = [
@@ -491,32 +624,109 @@ export const SETTLE_THRESHOLD: Record<MotionProperty, number> = {
491
624
  opacity: 0.001,
492
625
  };
493
626
 
494
- /** Keyframes are added until linear interpolation is within this. */
627
+ /**
628
+ * Keyframes are added until linear interpolation is within this: a quarter of
629
+ * a device pixel (this quarter of a CSS pixel, divided by the device pixel
630
+ * ratio where it is above 1), a twentieth of a degree, a 2000th of the size,
631
+ * about one step of an 8-bit alpha. Every one is below what a moving element
632
+ * can show.
633
+ */
495
634
  const SAMPLE_TOLERANCE: Record<MotionProperty, number> = {
496
- x: 0.05,
497
- y: 0.05,
498
- rotate: 0.02,
499
- scaleX: 0.0002,
500
- scaleY: 0.0002,
501
- opacity: 0.002,
635
+ x: 0.25,
636
+ y: 0.25,
637
+ rotate: 0.05,
638
+ scaleX: 0.0005,
639
+ scaleY: 0.0005,
640
+ opacity: 0.004,
502
641
  };
503
642
 
643
+ /** Keyframes start on this grid (ms) and are split where the curve needs it. */
644
+ const SAMPLE_GRID_MS = 1000 / 30;
645
+
504
646
  /** A curve that has not settled by then (an undamped spring) snaps. */
505
647
  const MAX_DURATION_MS = 30_000;
648
+
649
+ /**
650
+ * How long a task must run on past its first call from rest before that
651
+ * counts as a block (WebKit; startAfterBlock): two frames at 60 Hz.
652
+ */
653
+ // Browser start times are frame times and a task's end a live clock, so only a block longer than a frame plus the task's own length can be told apart from that quantization.
654
+ const LATE_START_MS = 34;
655
+
656
+ /**
657
+ * The task calls from rest are made in, shared by every call made in it
658
+ * (every animator's), so one motion's parts that are separate calls start
659
+ * together (startAfterBlock).
660
+ */
661
+ interface TaskMark {
662
+ /**
663
+ * When its first call from rest created animations: the call itself, or a
664
+ * presented call's second frame.
665
+ */
666
+ readonly first: number;
667
+ /** When the task ended, at its first microtask. */
668
+ ended?: number;
669
+ /** The start every call of a blocked task moves to, set by its first read. */
670
+ at?: number;
671
+ }
672
+
673
+ /** The task the current calls from rest are made in, until it ends. */
674
+ let openTask: TaskMark | null = null;
675
+
676
+ /** How many of the animators' animation-frame callbacks are running now. */
677
+ let frameDepth = 0;
678
+
679
+ /** The mark of the running task, opened by its first call from rest. */
680
+ function markTask(time: number, clock: () => number): TaskMark {
681
+ if (openTask == null) {
682
+ const task: TaskMark = {first: time};
683
+ openTask = task;
684
+ queueMicrotask(() => {
685
+ task.ended = clock();
686
+ openTask = null;
687
+ });
688
+ }
689
+ return openTask;
690
+ }
691
+
506
692
  /** Above this many keyframes the tolerance is relaxed. */
507
693
  const MAX_KEYFRAMES = 1200;
508
694
  /**
509
695
  * The keyframes hold the end state this long after a curve ends. An engine
510
696
  * whose compositor ends an animation while the main thread is blocked falls
511
- * back to the value its main thread last committed, mid-flight (WebKit); the
512
- * hold keeps the end state on screen through such a block. The main thread
513
- * drops the animation as soon as it runs after the curve's end.
697
+ * back to the value its main thread last committed, the curve's start
698
+ * (WebKit on Linux); the hold keeps the end state on screen through any such
699
+ * block. It only stretches the last keyframe. The main thread retires the
700
+ * animation as soon as it runs after the curve's end.
701
+ *
702
+ * Why a tail inside the curve's own animation, with a bound (measured Oct 24
703
+ * 2026; do not replace it without these proofs):
704
+ * - WebKit on Linux (WebKitGTK and WPE) ignores `fill` on its compositor:
705
+ * a 400 ms move that ends during a 1 s main-thread block snaps back to the
706
+ * block-start position 13 ms after its end, with `fill: forwards` or with
707
+ * no fill, and holds with this tail. iOS 26.2 Mobile Safari holds the end
708
+ * in all three forms, so there the tail is unneeded but harmless (measured
709
+ * Oct 25 2026). The browser proof "a spring that ends inside the block
710
+ * keeps showing its end state" catches it.
711
+ * - A separate static animation of the end state under the curve would hold
712
+ * it without a bound, but two animations on one property push Chromium to
713
+ * run the curve on the main thread: the 1 s block proof moved in 0 of 57
714
+ * frames, the start-before-a-block proof failed, and seeking the curve
715
+ * broke.
514
716
  */
515
- export const END_HOLD_MS = 5000;
717
+ export const END_HOLD_MS = 60_000;
516
718
 
517
719
  /** How often a paused animation is looked at again for retiring, ms. */
518
720
  const RETIRE_RECHECK_MS = 100;
519
721
 
722
+ /**
723
+ * The soonest a running animation's end is looked for again, ms: a frame at
724
+ * 60 Hz. WebKit moves an animation's currentTime once per frame, so a look
725
+ * within a frame reads the frame's time, a fraction of a ms short of the end,
726
+ * and a timer for that fraction would fire again before anything moved.
727
+ */
728
+ const END_RECHECK_MS = 1000 / 60;
729
+
520
730
  /** How long an element stays promoted after its last motion, ms. */
521
731
  export const PROMOTION_LINGER_MS = 500;
522
732
 
@@ -558,10 +768,10 @@ function format(
558
768
  }
559
769
  }
560
770
 
561
- const shared = new WeakMap<HTMLElement, Animator>();
771
+ const shared = new WeakMap<HTMLElement, Map<string, Animator>>();
562
772
 
563
773
  /**
564
- * The one animator for `element`, created on
774
+ * The one animator for `element` (and `options.pseudoElement`), created on
565
775
  * first use. Code that animates one element from several places (a swipe on
566
776
  * x, a removal on y) shares it, so their curves compose in one `translate`
567
777
  * track and retargeting one axis leaves the other on its curve; two
@@ -573,10 +783,16 @@ export function animatorFor(
573
783
  element: HTMLElement,
574
784
  options: AnimatorOptions = {},
575
785
  ): Animator {
576
- let animator = shared.get(element);
786
+ let byPseudo = shared.get(element);
787
+ if (byPseudo == null) {
788
+ byPseudo = new Map();
789
+ shared.set(element, byPseudo);
790
+ }
791
+ const key = options.pseudoElement ?? '';
792
+ let animator = byPseudo.get(key);
577
793
  if (animator == null) {
578
794
  animator = createAnimator(element, options);
579
- shared.set(element, animator);
795
+ byPseudo.set(key, animator);
580
796
  }
581
797
  return animator;
582
798
  }
@@ -693,8 +909,9 @@ const REDUCED_TRANSITION: SpringTransition = {
693
909
  * @example
694
910
  * ```
695
911
  * const animator = createAnimator(sheet);
696
- * // finger lifts at 1200 px/s heading for the detent at 0:
697
- * animator.animate({y: 0}, {spring: springs.sheetDetent, velocity: {y: 1200}});
912
+ * // finger lifts at 1200 px/s heading for the detent at 0 (a component
913
+ * // passes the spring of its motion role):
914
+ * animator.animate({y: 0}, {spring: {response: 0.45, dampingRatio: 0.9}, velocity: {y: 1200}});
698
915
  * // the finger lands again: where is it right now?
699
916
  * const y = animator.get('y', event.timeStamp);
700
917
  * animator.stop(['y']);
@@ -705,13 +922,29 @@ export function createAnimator(
705
922
  options: AnimatorOptions = {},
706
923
  ): Animator {
707
924
  const now = options.now ?? defaultNow;
708
- const requestFrame =
925
+ const frameSource =
709
926
  options.requestFrame ??
710
927
  (typeof requestAnimationFrame === 'function'
711
928
  ? (callback: () => void) => {
712
929
  requestAnimationFrame(() => callback());
713
930
  }
714
931
  : null);
932
+ // Every frame callback of an animator's counts itself, so a call made in
933
+ // one knows its animations commit in that frame.
934
+ const requestFrame =
935
+ frameSource == null
936
+ ? null
937
+ : (callback: () => void) => {
938
+ frameSource(() => {
939
+ frameDepth += 1;
940
+ try {
941
+ callback();
942
+ } finally {
943
+ frameDepth -= 1;
944
+ }
945
+ });
946
+ };
947
+ const pseudoElement = options.pseudoElement;
715
948
  // Reduced Motion reads the person's settings and nothing else: no option
716
949
  // overrides them (design:reduced-motion DR4).
717
950
  const prefersReducedMotion = defaultPrefersReducedMotion;
@@ -761,7 +994,21 @@ export function createAnimator(
761
994
  let ownWillChange: string | null = null;
762
995
  /** The stylesheet's will-change when there is no inline value. */
763
996
  let sheetWillChange = '';
997
+ /**
998
+ * Whether sheetWillChange holds a read of the element's current style: it
999
+ * is read in the task after the element is attached, and again after each
1000
+ * demotion, so a promotion (a drag's first move) reads no style in its
1001
+ * own task.
1002
+ */
1003
+ let sheetWillChangeRead = false;
1004
+ /** The pending read of sheetWillChange, cancelled with its element. */
1005
+ let sheetReadTimer: ReturnType<typeof setTimeout> | null = null;
764
1006
  let demoteTimer: ReturnType<typeof setTimeout> | null = null;
1007
+ /** A pseudo-element is promoted through a custom property on its host. */
1008
+ const promotionProperty =
1009
+ pseudoElement == null
1010
+ ? null
1011
+ : `--astryx-motion-will-change-${pseudoElement.replace(/^:+/, '')}`;
765
1012
  /** Channels whose identity the last node held inline (see `attach`). */
766
1013
  let heldIdentity = new Set<Channel>();
767
1014
 
@@ -842,18 +1089,22 @@ export function createAnimator(
842
1089
  const writeInline = (
843
1090
  channel: Channel,
844
1091
  value: (property: MotionProperty) => number,
1092
+ release = true,
845
1093
  ) => {
846
- if (target == null) {
1094
+ if (target == null || pseudoElement != null) {
847
1095
  return;
848
1096
  }
849
1097
  touched.add(channel);
850
1098
  const text = inlineText(channel, value);
851
- if (text === IDENTITY_TEXT[channel]) {
852
- // Identity leaves the element when nothing else would move it.
1099
+ // An unchanged value is not written: a style write invalidates the
1100
+ // element, and WebKit can repaint sticky content stale when that lands in
1101
+ // the frame a scroll commits.
1102
+ if (target.style.getPropertyValue(channel) !== text) {
853
1103
  target.style.setProperty(channel, text);
1104
+ }
1105
+ if (release && text === IDENTITY_TEXT[channel]) {
1106
+ // Identity leaves the element when nothing else would move it.
854
1107
  releaseIdentity(channel);
855
- } else {
856
- target.style.setProperty(channel, text);
857
1108
  }
858
1109
  };
859
1110
 
@@ -881,9 +1132,9 @@ export function createAnimator(
881
1132
  for (let e = 0; e + 1 < edges.length; e++) {
882
1133
  const a = edges[e];
883
1134
  const b = edges[e + 1];
884
- // A 120 Hz grid, each interval split until the chord is within the
1135
+ // A 30 Hz grid, each interval split until the chord is within the
885
1136
  // tolerance at its quarter points.
886
- const steps = Math.max(1, Math.ceil((b - a) / (1000 / 120)));
1137
+ const steps = Math.max(1, Math.ceil((b - a) / SAMPLE_GRID_MS));
887
1138
  const split = (t0: number, t1: number, depth: number) => {
888
1139
  const v0 = value(t0);
889
1140
  const v1 =
@@ -908,14 +1159,33 @@ export function createAnimator(
908
1159
  return times;
909
1160
  };
910
1161
 
1162
+ /** A pseudo-element's resting value, held by a static filling animation. */
1163
+ const hold = (channel: Channel, time: number) => {
1164
+ if (target == null) {
1165
+ return;
1166
+ }
1167
+ const value = format(channel, finalValue);
1168
+ const animation = target.animate([{[channel]: value}, {[channel]: value}], {
1169
+ duration: 1,
1170
+ fill: 'both',
1171
+ pseudoElement,
1172
+ });
1173
+ animation.startTime = time;
1174
+ running.set(channel, animation);
1175
+ };
1176
+
911
1177
  const rebuild = (channel: Channel, time: number) => {
912
1178
  const previous = running.get(channel);
913
1179
  running.delete(channel);
914
1180
  clearTimeout(retireTimers.get(channel));
915
1181
  retireTimers.delete(channel);
916
- // The element's inline style holds the end state, so its old animation
917
- // can go first.
918
- previous?.cancel();
1182
+ // An element's inline style takes the value on screen below, so its old
1183
+ // animation can go first. A pseudo-element has none: its old animation
1184
+ // keeps holding the value until the new one exists (same task, no frame in
1185
+ // between).
1186
+ if (pseudoElement == null) {
1187
+ previous?.cancel();
1188
+ }
919
1189
  const properties = CHANNELS[channel];
920
1190
  // Settled curves become resting values.
921
1191
  for (const property of properties) {
@@ -925,13 +1195,27 @@ export function createAnimator(
925
1195
  segments.delete(property);
926
1196
  }
927
1197
  }
928
- writeInline(channel, finalValue);
929
1198
  const moving = properties.filter(p => segments.has(p));
1199
+ if (
1200
+ moving.length === 0 ||
1201
+ target == null ||
1202
+ typeof target.animate !== 'function'
1203
+ ) {
1204
+ writeInline(channel, finalValue);
1205
+ } else {
1206
+ // The value on screen as the curve starts: what a frame painted before
1207
+ // the compositor has the curve shows. The end is written at retire.
1208
+ writeInline(channel, p => valueAt(p, time));
1209
+ }
930
1210
  if (target == null || typeof target.animate !== 'function') {
931
1211
  previous?.cancel();
932
1212
  return;
933
1213
  }
934
1214
  if (moving.length === 0) {
1215
+ if (pseudoElement != null) {
1216
+ hold(channel, time);
1217
+ }
1218
+ previous?.cancel();
935
1219
  return;
936
1220
  }
937
1221
  // A channel rebuilt by an explicit call (set, rebase, a retarget of
@@ -958,6 +1242,10 @@ export function createAnimator(
958
1242
  ),
959
1243
  );
960
1244
  if (end <= from) {
1245
+ if (pseudoElement != null) {
1246
+ hold(channel, time);
1247
+ }
1248
+ previous?.cancel();
961
1249
  return;
962
1250
  }
963
1251
  if (callGroup != null) {
@@ -980,15 +1268,17 @@ export function createAnimator(
980
1268
  }
981
1269
  }
982
1270
  }
1271
+ // Read where the keyframes are baked: a page moved to another screen
1272
+ // bakes its next motion for that screen.
1273
+ const devicePixel = 1 / Math.max(1, globalThis.devicePixelRatio || 1);
983
1274
  const collect = (scale: number) => {
984
1275
  const times = new Set<number>([from, end]);
985
1276
  for (const property of moving) {
986
- for (const t of sampleTimes(
987
- property,
988
- from,
989
- end,
990
- SAMPLE_TOLERANCE[property] * scale,
991
- )) {
1277
+ const tolerance =
1278
+ SAMPLE_TOLERANCE[property] *
1279
+ scale *
1280
+ (property === 'x' || property === 'y' ? devicePixel : 1);
1281
+ for (const t of sampleTimes(property, from, end, tolerance)) {
992
1282
  times.add(t);
993
1283
  }
994
1284
  }
@@ -1037,10 +1327,11 @@ export function createAnimator(
1037
1327
  duration: span,
1038
1328
  // The last keyframes hold the end state (END_HOLD_MS); filling both
1039
1329
  // ways also keeps it where an engine honors the fill on its compositor.
1040
- // The main thread drops the animation once it runs after the end; the
1041
- // inline style already holds the same values, so that changes no pixel.
1330
+ // The main thread retires the animation once it runs after the end,
1331
+ // writing the end inline in that task, so that changes no pixel.
1042
1332
  fill: 'both',
1043
1333
  easing: 'linear',
1334
+ ...(pseudoElement != null ? {pseudoElement} : {}),
1044
1335
  });
1045
1336
  if (waiting != null) {
1046
1337
  // From rest: no start time, so the browser starts the animation when
@@ -1061,7 +1352,16 @@ export function createAnimator(
1061
1352
 
1062
1353
  /**
1063
1354
  * Once the main thread runs after the curve's end, the animation leaves the
1064
- * running state: the element's inline style already shows the end values.
1355
+ * running state: an element's end values are written inline in the task
1356
+ * that cancels it; a pseudo-element's end value moves to a static holding
1357
+ * animation, created before the long one goes.
1358
+ *
1359
+ * Why a timer at the curve's end: no browser event reports that an
1360
+ * animation's time has reached a point inside its effect, and its
1361
+ * `finished` comes only after the END_HOLD_MS tail, which would keep the
1362
+ * element promoted and the animation alive for a minute. The timer is set
1363
+ * on the curve's own clock and re-armed while a sampler pauses or seeks the
1364
+ * animation, so it never retires a held one.
1065
1365
  */
1066
1366
  const scheduleRetire = (
1067
1367
  channel: Channel,
@@ -1082,13 +1382,43 @@ export function createAnimator(
1082
1382
  channel,
1083
1383
  setTimeout(
1084
1384
  retire,
1085
- animation.playState === 'paused' ? RETIRE_RECHECK_MS : remaining,
1385
+ animation.playState === 'paused'
1386
+ ? RETIRE_RECHECK_MS
1387
+ : Math.max(remaining, END_RECHECK_MS),
1086
1388
  ),
1087
1389
  );
1088
1390
  return;
1089
1391
  }
1090
1392
  running.delete(channel);
1393
+ // A pseudo-element holds its resting value, unless the stylesheet
1394
+ // takes it back now (a borrowed dip that has ended).
1395
+ const handsBack =
1396
+ channel === 'opacity' &&
1397
+ borrowedOpacity != null &&
1398
+ ![...landings].some(landing => landing.fadeIn?.isBorrowed === true);
1399
+ if (pseudoElement != null && !handsBack) {
1400
+ hold(channel, now());
1401
+ } else {
1402
+ // The end goes inline in the task that cancels the animation. Whether
1403
+ // an identity end may leave the element is judged after the cancel:
1404
+ // until then the end-state tail still holds the end, so the computed
1405
+ // style would hide a stylesheet value (an opacity 0) under it.
1406
+ writeInline(channel, finalValue, false);
1407
+ }
1408
+ // A call from rest the browser never started (finished from outside
1409
+ // before its first frame, a sampler's finish()): read its start from the
1410
+ // animation before the cancel takes it, and with nothing left to wait
1411
+ // on the call keeps its own clock, so its landing is still armed.
1412
+ const waiting = [...pendingGroups].filter(group =>
1413
+ group.animations.includes(animation),
1414
+ );
1415
+ for (const group of waiting) {
1416
+ syncGroup(group);
1417
+ }
1091
1418
  animation.cancel();
1419
+ for (const group of waiting) {
1420
+ resolveGroup(group, group.provisional);
1421
+ }
1092
1422
  releaseIdentity(channel);
1093
1423
  flushReleases();
1094
1424
  };
@@ -1102,22 +1432,36 @@ export function createAnimator(
1102
1432
  target == null
1103
1433
  ? NaN
1104
1434
  : Number.parseFloat(
1105
- view?.getComputedStyle(target).getPropertyValue('opacity') ?? '',
1435
+ view
1436
+ ?.getComputedStyle(target, pseudoElement ?? null)
1437
+ .getPropertyValue('opacity') ?? '',
1106
1438
  );
1107
1439
  return Number.isFinite(value) ? Math.min(1, Math.max(0, value)) : 1;
1108
1440
  };
1109
1441
 
1110
1442
  /**
1111
1443
  * Whether the animator holds an opacity of its own on the element: an inline
1112
- * value it wrote (a `set` over a stylesheet that hides or dims it). A dip
1113
- * returns to that value.
1444
+ * value it wrote, or a pseudo-element's holding animation (a `set` over a
1445
+ * stylesheet that hides or dims it). A dip returns to that value.
1114
1446
  */
1115
1447
  const writesOwnOpacity = (): boolean =>
1116
- (target?.style.getPropertyValue('opacity') ?? '') !== '';
1448
+ pseudoElement == null
1449
+ ? (target?.style.getPropertyValue('opacity') ?? '') !== ''
1450
+ : running.has('opacity');
1117
1451
 
1118
- /** Gives the element's opacity back to its stylesheet: its inline value goes. */
1452
+ /**
1453
+ * Gives the element's opacity back to its stylesheet: an element's inline
1454
+ * value goes; a pseudo-element, which has no inline style, loses the
1455
+ * animation holding its value.
1456
+ */
1119
1457
  const releaseOwnOpacity = () => {
1120
- target?.style.removeProperty('opacity');
1458
+ if (pseudoElement == null) {
1459
+ target?.style.removeProperty('opacity');
1460
+ return;
1461
+ }
1462
+ const held = running.get('opacity');
1463
+ running.delete('opacity');
1464
+ held?.cancel();
1121
1465
  };
1122
1466
 
1123
1467
  /**
@@ -1202,6 +1546,9 @@ export function createAnimator(
1202
1546
  releaseOwnOpacity();
1203
1547
  return;
1204
1548
  }
1549
+ if (pseudoElement != null) {
1550
+ return;
1551
+ }
1205
1552
  if (target.style.getPropertyValue(channel) !== IDENTITY_TEXT[channel]) {
1206
1553
  return;
1207
1554
  }
@@ -1265,9 +1612,17 @@ export function createAnimator(
1265
1612
 
1266
1613
  // -- promotion -------------------------------------------------------------
1267
1614
 
1268
- /** Writes the promoted channels as will-change. */
1615
+ /** Writes the promoted channels as will-change (or the pseudo's property). */
1269
1616
  const writePromotion = (element: HTMLElement) => {
1270
1617
  const list = [...promoted].join(', ');
1618
+ if (promotionProperty != null) {
1619
+ if (list === '') {
1620
+ element.style.removeProperty(promotionProperty);
1621
+ } else {
1622
+ element.style.setProperty(promotionProperty, list);
1623
+ }
1624
+ return;
1625
+ }
1271
1626
  if (list === '') {
1272
1627
  element.style.willChange = ownWillChange ?? '';
1273
1628
  ownWillChange = null;
@@ -1276,13 +1631,12 @@ export function createAnimator(
1276
1631
  if (ownWillChange == null) {
1277
1632
  ownWillChange = element.style.willChange;
1278
1633
  // Without an inline value, the stylesheet's reasons stay alongside the
1279
- // promotion's (read once, as the promotion starts).
1280
- sheetWillChange =
1281
- ownWillChange === ''
1282
- ? (element.ownerDocument.defaultView
1283
- ?.getComputedStyle(element)
1284
- .getPropertyValue('will-change') ?? '')
1285
- : '';
1634
+ // promotion's. They were read in the task after the element was
1635
+ // attached; a promotion that comes first (an element attached in this
1636
+ // task that moves at once) reads them now.
1637
+ if (ownWillChange === '' && !sheetWillChangeRead) {
1638
+ readSheetWillChange(element);
1639
+ }
1286
1640
  }
1287
1641
  const base = ownWillChange !== '' ? ownWillChange : sheetWillChange;
1288
1642
  const own = base === 'auto' ? '' : base;
@@ -1293,8 +1647,50 @@ export function createAnimator(
1293
1647
  element.style.willChange = [...reasons, ...promoted].join(', ');
1294
1648
  };
1295
1649
 
1650
+ /** Reads the element's own will-change while no promotion of ours is written. */
1651
+ const readSheetWillChange = (element: HTMLElement) => {
1652
+ sheetWillChange =
1653
+ element.ownerDocument.defaultView
1654
+ ?.getComputedStyle(element)
1655
+ .getPropertyValue('will-change') ?? '';
1656
+ sheetWillChangeRead = true;
1657
+ };
1658
+
1659
+ /**
1660
+ * Reads sheetWillChange in a task of its own, so a later promotion reads no
1661
+ * style in its own task. Skipped while a promotion of ours is written,
1662
+ * which the read would see (demote asks again), and for a node out of the
1663
+ * document. A pseudo-element's promotion is its own property, with
1664
+ * nothing to read.
1665
+ */
1666
+ const readSheetWillChangeLater = () => {
1667
+ cancelSheetWillChangeRead();
1668
+ sheetWillChangeRead = false;
1669
+ if (target == null || promotionProperty != null) {
1670
+ return;
1671
+ }
1672
+ const element = target;
1673
+ sheetReadTimer = setTimeout(() => {
1674
+ sheetReadTimer = null;
1675
+ // A node out of the document has no style to read, and reading one
1676
+ // still costs a style pass: a shared animator (animatorFor) is never
1677
+ // detached, so its node can leave with this read waiting. Skipped, the
1678
+ // read waits for a promotion that needs it.
1679
+ if (target === element && promoted.size === 0 && element.isConnected) {
1680
+ readSheetWillChange(element);
1681
+ }
1682
+ }, 0);
1683
+ };
1684
+
1685
+ const cancelSheetWillChangeRead = () => {
1686
+ if (sheetReadTimer != null) {
1687
+ clearTimeout(sheetReadTimer);
1688
+ sheetReadTimer = null;
1689
+ }
1690
+ };
1691
+
1296
1692
  /**
1297
- * Gives the element a compositing layer for
1693
+ * Gives the element (or its pseudo-element) a compositing layer for
1298
1694
  * `channel` from the task that starts the motion: Mobile Safari runs an
1299
1695
  * animation whose start time is set from script on its compositor at its
1300
1696
  * first commit only if the element already has a layer.
@@ -1347,6 +1743,8 @@ export function createAnimator(
1347
1743
  promoted.clear();
1348
1744
  if (target != null) {
1349
1745
  writePromotion(target);
1746
+ // Its stylesheet may have changed its will-change since.
1747
+ readSheetWillChangeLater();
1350
1748
  }
1351
1749
  };
1352
1750
 
@@ -1362,6 +1760,7 @@ export function createAnimator(
1362
1760
  time: number,
1363
1761
  properties: Iterable<MotionProperty>,
1364
1762
  at: number | undefined,
1763
+ start?: AnimateOptions['start'],
1365
1764
  ): StartGroup | null => {
1366
1765
  if (target == null || typeof target.animate !== 'function') {
1367
1766
  return null;
@@ -1389,7 +1788,11 @@ export function createAnimator(
1389
1788
  }
1390
1789
  return null;
1391
1790
  }
1392
- for (const channel of channels) {
1791
+ // A call that continues motion starts now unless it asks for the
1792
+ // browser's start (`commit`). `presented` asks only for a call from rest:
1793
+ // an element still moving is not at rest, so a retarget starts now, from
1794
+ // the value and velocity on screen (spec:AST-094 FR6).
1795
+ for (const channel of start === 'commit' ? [] : channels) {
1393
1796
  for (const property of CHANNELS[channel]) {
1394
1797
  const segment = segments.get(property);
1395
1798
  if (
@@ -1407,6 +1810,7 @@ export function createAnimator(
1407
1810
  });
1408
1811
  return {
1409
1812
  provisional: time,
1813
+ fresh: false,
1410
1814
  segments: [],
1411
1815
  animations: [],
1412
1816
  channels: new Set(),
@@ -1422,6 +1826,7 @@ export function createAnimator(
1422
1826
  owner: HandleState,
1423
1827
  changed: MotionProperty[],
1424
1828
  time: number,
1829
+ presented = false,
1425
1830
  ) => {
1426
1831
  if (group != null) {
1427
1832
  for (const property of changed) {
@@ -1432,6 +1837,99 @@ export function createAnimator(
1432
1837
  }
1433
1838
  }
1434
1839
  }
1840
+ if (presented && group != null && requestFrame != null) {
1841
+ // At rest until then: the animations, and the layer they promote, come
1842
+ // two frames later. Promoting now, a layer at rest for two frames, left
1843
+ // a stale paint of the element's rest in WebKit on iOS 26.2 (a title in
1844
+ // a scroller inside a clipped card) after the motion ended.
1845
+ // Each call waits its own two frames: one queued after another change
1846
+ // flushed the queue, or after an earlier call's first frame, still
1847
+ // waits its two.
1848
+ const call = {group, changed};
1849
+ deferredCalls.push(call);
1850
+ requestFrame(() => requestFrame(() => flushDeferredThrough(call)));
1851
+ return;
1852
+ }
1853
+ startCall(group, changed, time);
1854
+ };
1855
+
1856
+ /** Calls with `start: 'presented'` waiting for their second frame. */
1857
+ const deferredCalls: {group: StartGroup; changed: MotionProperty[]}[] = [];
1858
+
1859
+ /** Creates the animations of the given waiting calls, in call order. */
1860
+ const startDeferred = (
1861
+ calls: {group: StartGroup; changed: MotionProperty[]}[],
1862
+ ) => {
1863
+ for (const {group, changed} of calls) {
1864
+ // Not a channel that holds the curve of a later call still waiting: a
1865
+ // later presented call that took a property over starts that channel
1866
+ // with its own two frames. Every other property starts here, whatever
1867
+ // its segment's group: a value Reduce Motion writes at once, or lands
1868
+ // under a dip, has no curve of this call's.
1869
+ const own: MotionProperty[] = [];
1870
+ let handedTo: StartGroup | null = null;
1871
+ for (const property of changed) {
1872
+ const holder = CHANNELS[CHANNEL_OF[property]]
1873
+ .map(other => segments.get(other)?.group)
1874
+ .find(
1875
+ waiting =>
1876
+ waiting != null &&
1877
+ waiting !== group &&
1878
+ deferredCalls.some(call => call.group === waiting),
1879
+ );
1880
+ if (holder == null) {
1881
+ own.push(property);
1882
+ continue;
1883
+ }
1884
+ // A curve of this call's in that channel never ran: the element held
1885
+ // it at its start. It starts with the later call, which creates the
1886
+ // channel, dated from that call's start, so the model reads what the
1887
+ // screen shows.
1888
+ const segment = segments.get(property);
1889
+ if (segment != null && segment.group === group) {
1890
+ segment.start += holder.provisional - group.provisional;
1891
+ segment.group = holder;
1892
+ holder.segments.push(segment);
1893
+ group.segments.splice(group.segments.indexOf(segment), 1);
1894
+ handedTo = holder;
1895
+ }
1896
+ }
1897
+ if (own.length === 0 && handedTo != null) {
1898
+ // Everything this call still plays starts with the later call.
1899
+ const adopter = handedTo;
1900
+ group.adoptedBy = adopter;
1901
+ void adopter.started.then(start => resolveGroup(group, start));
1902
+ continue;
1903
+ }
1904
+ // From the call's own time: the curve starts at the browser's commit.
1905
+ startCall(group, own, group.provisional);
1906
+ }
1907
+ };
1908
+
1909
+ /** Creates the animations of every waiting call, in call order. */
1910
+ const flushDeferred = () => {
1911
+ startDeferred(deferredCalls.splice(0));
1912
+ };
1913
+
1914
+ /**
1915
+ * A call's second frame: it starts, with every call queued before it (in
1916
+ * call order), unless another change created it already.
1917
+ */
1918
+ const flushDeferredThrough = (call: {
1919
+ group: StartGroup;
1920
+ changed: MotionProperty[];
1921
+ }) => {
1922
+ const index = deferredCalls.indexOf(call);
1923
+ if (index >= 0) {
1924
+ startDeferred(deferredCalls.splice(0, index + 1));
1925
+ }
1926
+ };
1927
+
1928
+ const startCall = (
1929
+ group: StartGroup | null,
1930
+ changed: MotionProperty[],
1931
+ time: number,
1932
+ ) => {
1435
1933
  callGroup = group;
1436
1934
  try {
1437
1935
  commit(changed, time);
@@ -1446,6 +1944,15 @@ export function createAnimator(
1446
1944
  return;
1447
1945
  }
1448
1946
  pendingGroups.add(group);
1947
+ group.fresh = true;
1948
+ // The task that creates the animations, not the call's: a presented
1949
+ // call's is its second frame's callback, wherever in its frame the call
1950
+ // was made.
1951
+ group.task = markTask(now(), now);
1952
+ group.madeInFrame = frameDepth > 0;
1953
+ queueMicrotask(() => {
1954
+ group.fresh = false;
1955
+ });
1449
1956
  for (const animation of group.animations) {
1450
1957
  // A cancel before the first frame rejects each one's ready promise.
1451
1958
  (animation as Partial<Animation>).ready?.catch(() => {});
@@ -1459,7 +1966,34 @@ export function createAnimator(
1459
1966
  // or when its compositor starts them (Chromium). Read it in that first
1460
1967
  // frame, ahead of anything that might pause or seek the animations, and
1461
1968
  // when `ready` settles.
1462
- requestFrame?.(() => syncGroup(group));
1969
+ requestFrame?.(() => {
1970
+ syncGroup(group);
1971
+ group.framed = true;
1972
+ // Chromium's compositor starts a composited animation when the frame
1973
+ // that commits it reaches it, and tells the page that start a frame or
1974
+ // more later (longer under load). Until then the call would read as
1975
+ // not started while the screen moves it, and a retarget or a rebase
1976
+ // would replay its curve from the start. A call made in a task, still
1977
+ // waiting in the first frame after it, starts now, which the compositor
1978
+ // then takes as its start: the time this frame runs, not its timestamp,
1979
+ // which after a block is the frame time from before the block. Only
1980
+ // when this frame is the one that commits it: not for a call made in a
1981
+ // frame callback, whose frame committed it already, nor when a block
1982
+ // ran between the call and this frame (more than LATE_START_MS), after
1983
+ // which this frame cannot tell a call made in a task from one a page's
1984
+ // own frame callback made; those keep the browser's start.
1985
+ if (
1986
+ !group.resolved &&
1987
+ group.madeInFrame !== true &&
1988
+ now() - (group.task?.first ?? group.provisional) <= LATE_START_MS &&
1989
+ group.animations.some(
1990
+ animation =>
1991
+ animation.startTime == null && animation.playState === 'running',
1992
+ )
1993
+ ) {
1994
+ resolveGroup(group, now());
1995
+ }
1996
+ });
1463
1997
  ready.then(
1464
1998
  () => syncGroup(group),
1465
1999
  () => settleCancelled(group),
@@ -1516,7 +2050,10 @@ export function createAnimator(
1516
2050
  }
1517
2051
  for (const animation of group.animations) {
1518
2052
  if (animation.startTime != null) {
1519
- resolveGroup(group, Number(animation.startTime));
2053
+ resolveGroup(
2054
+ group,
2055
+ startAfterBlock(group, Number(animation.startTime)),
2056
+ );
1520
2057
  return;
1521
2058
  }
1522
2059
  }
@@ -1549,10 +2086,16 @@ export function createAnimator(
1549
2086
  }
1550
2087
  };
1551
2088
 
1552
- /** Reads the start of every call whose first frame has been committed. */
2089
+ /**
2090
+ * Reads the start of every call whose first frame may have been committed:
2091
+ * not those created in the running task, whose start the browser cannot
2092
+ * have set (reading it there can cost a style update per call).
2093
+ */
1553
2094
  const syncPending = () => {
1554
2095
  for (const group of pendingGroups) {
1555
- syncGroup(group);
2096
+ if (!group.fresh) {
2097
+ syncGroup(group);
2098
+ }
1556
2099
  }
1557
2100
  syncFinished();
1558
2101
  };
@@ -1580,6 +2123,55 @@ export function createAnimator(
1580
2123
  }
1581
2124
  };
1582
2125
 
2126
+ /**
2127
+ * The start of a call from rest, on the frame that commits it. Chromium,
2128
+ * like Core Animation, starts a pending animation when it commits it, so a
2129
+ * main-thread block later in the call's task delays the motion; WebKit
2130
+ * dates it at its last frame time before that task, so the first frame
2131
+ * after the block would show it skipped into its curve. When the task ran
2132
+ * on more than LATE_START_MS past its first call, a start the browser put
2133
+ * by the task's first animations (a presented call's second frame, not the
2134
+ * call) and more than LATE_START_MS before the call's first read (its
2135
+ * `ready`, once the task has ended, or the first frame after it) moves to
2136
+ * that read, with every animation of the call, and every call of the task
2137
+ * moves to the same read. A shorter task, or a read other tasks delay,
2138
+ * keeps the browser's start.
2139
+ */
2140
+ const startAfterBlock = (group: StartGroup, start: number): number => {
2141
+ const timeline =
2142
+ typeof document === 'undefined'
2143
+ ? null
2144
+ : (document.timeline?.currentTime as number | null | undefined);
2145
+ // A start well after the animations were created is the browser's
2146
+ // commit of them.
2147
+ if (
2148
+ timeline == null ||
2149
+ group.framed === true ||
2150
+ start > (group.task?.first ?? group.provisional) + LATE_START_MS
2151
+ ) {
2152
+ return start;
2153
+ }
2154
+ const {task} = group;
2155
+ // A read in the task's first microtasks comes after its end too.
2156
+ const ended = task?.ended ?? now();
2157
+ if (task == null || ended - task.first <= LATE_START_MS) {
2158
+ return start;
2159
+ }
2160
+ // Read once the task has ended (its `ready`) or in the first frame after
2161
+ // it, both after the block; the task's other calls take the same read.
2162
+ const at = task.at ?? Math.max(now(), timeline);
2163
+ if (at - start <= LATE_START_MS) {
2164
+ return start;
2165
+ }
2166
+ task.at = at;
2167
+ for (const animation of group.animations) {
2168
+ if (animation.playState !== 'idle') {
2169
+ animation.startTime = at;
2170
+ }
2171
+ }
2172
+ return at;
2173
+ };
2174
+
1583
2175
  /** Moves a call from rest onto the time the browser started it. */
1584
2176
  const resolveGroup = (group: StartGroup, start: number) => {
1585
2177
  if (group.resolved) {
@@ -1621,10 +2213,7 @@ export function createAnimator(
1621
2213
  .filter(segment => segment.owner === owner)
1622
2214
  .map(segment => segment.start + segment.duration);
1623
2215
  owner.timer = setTimeout(
1624
- () => {
1625
- owner.timer = null;
1626
- settle(owner, true);
1627
- },
2216
+ () => settleAtEnd(owner),
1628
2217
  Math.max(0, Math.max(start, ...ends) - now()),
1629
2218
  );
1630
2219
  }
@@ -1662,12 +2251,48 @@ export function createAnimator(
1662
2251
  owner.resolve(finished);
1663
2252
  };
1664
2253
 
2254
+ /**
2255
+ * A handle whose curves have reached their end on the wall clock finishes,
2256
+ * unless a sampler holds one of its animations (paused, or sought back):
2257
+ * then it waits on that animation's own time, as retiring does
2258
+ * (scheduleRetire), so `finished` never resolves under motion still on
2259
+ * screen.
2260
+ */
2261
+ const settleAtEnd = (owner: HandleState) => {
2262
+ owner.timer = null;
2263
+ let wait = 0;
2264
+ for (const [channel, animation] of running) {
2265
+ if (
2266
+ !CHANNELS[channel].some(
2267
+ property => segments.get(property)?.owner === owner,
2268
+ )
2269
+ ) {
2270
+ continue;
2271
+ }
2272
+ const remaining = remainingCurve(animation);
2273
+ if (remaining != null && remaining > 0) {
2274
+ wait = Math.max(
2275
+ wait,
2276
+ animation.playState === 'paused'
2277
+ ? RETIRE_RECHECK_MS
2278
+ : Math.max(remaining, END_RECHECK_MS),
2279
+ );
2280
+ }
2281
+ }
2282
+ if (wait > 0) {
2283
+ owner.timer = setTimeout(() => settleAtEnd(owner), wait);
2284
+ return;
2285
+ }
2286
+ settle(owner, true);
2287
+ };
2288
+
1665
2289
  const makeHandle = (
1666
2290
  owner: HandleState,
1667
2291
  properties: MotionProperty[],
1668
2292
  finished: Promise<boolean>,
1669
2293
  time: number,
1670
2294
  group: StartGroup | null = null,
2295
+ settlesWithLanding = false,
1671
2296
  ): MotionHandle => {
1672
2297
  const ends = properties.map(p => {
1673
2298
  const segment = segments.get(p);
@@ -1676,23 +2301,45 @@ export function createAnimator(
1676
2301
  : time;
1677
2302
  });
1678
2303
  const end = Math.max(time, ...ends);
1679
- if (properties.length === 0 || end <= time) {
2304
+ if (settlesWithLanding) {
2305
+ // The landing it joined settles it.
2306
+ } else if (properties.length === 0 || end <= time) {
1680
2307
  settle(owner, true);
1681
2308
  } else {
1682
2309
  // Interruptions settle false as they happen (interrupt); reaching the
1683
2310
  // end untouched is completion.
1684
2311
  owner.timer = setTimeout(
1685
- () => {
1686
- owner.timer = null;
1687
- settle(owner, true);
1688
- },
2312
+ () => settleAtEnd(owner),
1689
2313
  Math.max(0, end - now()),
1690
2314
  );
1691
2315
  }
2316
+ // The call's own curves, as it started them.
2317
+ const curves = new Map<MotionProperty, Segment>();
2318
+ for (const property of properties) {
2319
+ const segment = segments.get(property);
2320
+ if (segment != null && segment.owner === owner) {
2321
+ curves.set(property, segment);
2322
+ }
2323
+ }
1692
2324
  const handle: MotionHandle = {
1693
2325
  properties,
1694
2326
  finished,
1695
2327
  started: group?.started ?? Promise.resolve(time),
2328
+ curve: property => {
2329
+ const segment = curves.get(property === 'scale' ? 'scaleX' : property);
2330
+ if (segment == null) {
2331
+ return null;
2332
+ }
2333
+ return {
2334
+ duration: segment.duration / 1000,
2335
+ at: t =>
2336
+ t * 1000 >= segment.duration
2337
+ ? segment.target
2338
+ : segment.at(Math.max(0, t * 1000)),
2339
+ velocity: t =>
2340
+ t * 1000 >= segment.duration ? 0 : segment.speed(t * 1000),
2341
+ };
2342
+ },
1696
2343
  value: (property, at = now()) => {
1697
2344
  syncPending();
1698
2345
  return valueAt(property, at);
@@ -1751,7 +2398,9 @@ export function createAnimator(
1751
2398
  if (from === to && velocity === 0) {
1752
2399
  return null;
1753
2400
  }
1754
- const curve = solveSpring(toSpring(spring), {from, to, velocity});
2401
+ // The motion role it plays: its table value (DEC-15).
2402
+ const resolved = resolveMotion(target, spring);
2403
+ const curve = solveSpring(toSpring(resolved), {from, to, velocity});
1755
2404
  const duration = Math.min(
1756
2405
  MAX_DURATION_MS,
1757
2406
  curve.settleTime(SETTLE_THRESHOLD[property]) * 1000,
@@ -1764,7 +2413,81 @@ export function createAnimator(
1764
2413
  speed: t => curve.velocity(t / 1000),
1765
2414
  jumps: [],
1766
2415
  owner,
1767
- spring,
2416
+ spring: resolved,
2417
+ };
2418
+ };
2419
+
2420
+ /** The retarget of `additive`: the old curve plus a spring of the difference. */
2421
+ const additiveSegment = (
2422
+ owner: HandleState,
2423
+ property: MotionProperty,
2424
+ start: number,
2425
+ to: number,
2426
+ spring: SpringDescription,
2427
+ old: Segment,
2428
+ ): Segment => {
2429
+ const oldEnd = old.start + old.duration;
2430
+ const resolved = resolveMotion(target, spring);
2431
+ const delta = solveSpring(toSpring(resolved), {
2432
+ from: 0,
2433
+ to: to - old.target,
2434
+ velocity: 0,
2435
+ });
2436
+ const deltaMs = Math.min(
2437
+ MAX_DURATION_MS,
2438
+ delta.settleTime(SETTLE_THRESHOLD[property]) * 1000,
2439
+ );
2440
+ const ownAt = (t: number) =>
2441
+ t >= deltaMs ? to - old.target : delta.value(t / 1000);
2442
+ const oldAt = (time: number) =>
2443
+ time >= oldEnd ? old.target : old.at(Math.max(0, time - old.start));
2444
+ return {
2445
+ start,
2446
+ duration: Math.min(MAX_DURATION_MS, Math.max(oldEnd - start, deltaMs)),
2447
+ target: to,
2448
+ at: t => oldAt(start + t) + ownAt(t),
2449
+ speed: t =>
2450
+ (start + t >= oldEnd ? 0 : old.speed(start + t - old.start)) +
2451
+ (t >= deltaMs ? 0 : delta.velocity(t / 1000)),
2452
+ jumps: old.jumps
2453
+ .map(jump => old.start + jump - start)
2454
+ .filter(jump => jump > 0),
2455
+ owner,
2456
+ spring: resolved,
2457
+ };
2458
+ };
2459
+
2460
+ /**
2461
+ * `additive` for a played curve: the old curve plus the new curve's shape,
2462
+ * scaled to the difference between the two targets.
2463
+ */
2464
+ const additiveCurveSegment = (
2465
+ owner: HandleState,
2466
+ start: number,
2467
+ curve: MotionCurve,
2468
+ old: Segment,
2469
+ ): Segment => {
2470
+ const from = curve.at(0);
2471
+ const to = curve.at(curve.duration);
2472
+ const scale = (to - old.target) / (to - from);
2473
+ const ms = Math.min(MAX_DURATION_MS, curve.duration * 1000);
2474
+ const oldEnd = old.start + old.duration;
2475
+ const oldAt = (time: number) =>
2476
+ time >= oldEnd ? old.target : old.at(Math.max(0, time - old.start));
2477
+ return {
2478
+ start,
2479
+ duration: Math.min(MAX_DURATION_MS, Math.max(oldEnd - start, ms)),
2480
+ target: to,
2481
+ at: t =>
2482
+ oldAt(start + t) +
2483
+ (t >= ms ? to - old.target : (curve.at(t / 1000) - from) * scale),
2484
+ speed: t =>
2485
+ (start + t >= oldEnd ? 0 : old.speed(start + t - old.start)) +
2486
+ (t >= ms ? 0 : curve.velocity(t / 1000) * scale),
2487
+ jumps: old.jumps
2488
+ .map(jump => old.start + jump - start)
2489
+ .filter(jump => jump > 0),
2490
+ owner,
1768
2491
  };
1769
2492
  };
1770
2493
 
@@ -1774,7 +2497,10 @@ export function createAnimator(
1774
2497
  stops: ReadonlyArray<{at: number; value: number}>,
1775
2498
  jumps: ReadonlyArray<number> = [],
1776
2499
  ): Segment => {
1777
- const ease = cubicBezier(reducedMotionCrossFade.curve);
2500
+ registerReducedMotionCrossFade();
2501
+ const ease = cubicBezier(
2502
+ resolveMotion(target, reducedMotionCrossFade.curve),
2503
+ );
1778
2504
  const duration = stops[stops.length - 1].at;
1779
2505
  const at = (t: number) => {
1780
2506
  for (let i = 0; i + 1 < stops.length; i++) {
@@ -1897,6 +2623,27 @@ export function createAnimator(
1897
2623
  return {carried, owners};
1898
2624
  };
1899
2625
 
2626
+ /**
2627
+ * A call joins the newest waiting dip: it takes the landing over and
2628
+ * settles when the dip ends, and the call it replaces lands with it. Each
2629
+ * value keeps the call whose move it is.
2630
+ */
2631
+ const joinWaitingDip = (owner: HandleState) => {
2632
+ const dip = [...landings].reverse().find(landing => landing.fadeIn != null);
2633
+ if (dip == null) {
2634
+ settle(owner, true);
2635
+ return;
2636
+ }
2637
+ for (const property of dip.values.keys()) {
2638
+ if (!dip.owners.has(property)) {
2639
+ dip.owners.set(property, dip.owner);
2640
+ }
2641
+ }
2642
+ dip.carried.push(dip.owner);
2643
+ carriedOwners.add(dip.owner);
2644
+ dip.owner = owner;
2645
+ };
2646
+
1900
2647
  /** Where opacity is heading: past a waiting landing's fade back in. */
1901
2648
  const opacityHeading = (): number => {
1902
2649
  let to = finalValue('opacity');
@@ -1959,8 +2706,9 @@ export function createAnimator(
1959
2706
  * never an animation (DR2: opacity only), so it is never shown in the wrong
1960
2707
  * place. In a dip the fade back in starts from here and takes what is left
1961
2708
  * of the cross-fade, so the dip ends when it was due even when a busy main
1962
- * thread runs this timer late; past the whole fade back in (over 100 ms
1963
- * late) the element appears at once where it landed.
2709
+ * thread runs this timer late; past the whole fade back in (100 ms late or
2710
+ * more) the element appears at once where it landed, with no animation,
2711
+ * and the call settles then.
1964
2712
  */
1965
2713
  const land = (landing: Landing) => {
1966
2714
  landings.delete(landing);
@@ -1973,13 +2721,16 @@ export function createAnimator(
1973
2721
  changed.push(property);
1974
2722
  }
1975
2723
  let end = time;
1976
- if (landing.fadeIn != null) {
1977
- // The fade back in takes what is left of the cross-fade: a timer that
1978
- // a busy main thread runs late shortens it, so the dip still ends
1979
- // when it was due (design:reduced-motion DR2, 200 ms or less), and the
1980
- // element is never shown before it lands.
1981
- const late = landing.due == null ? 0 : Math.max(0, time - landing.due);
1982
- const ms = Math.max(1, landing.fadeIn.ms - late);
2724
+ // The fade back in takes what is left of the cross-fade: a timer that a
2725
+ // busy main thread runs late shortens it, so the dip still ends when it
2726
+ // was due (design:reduced-motion DR2, 200 ms or less), and the element is
2727
+ // never shown before it lands. Past the whole fade back in nothing is
2728
+ // left: the element appears at once, a plain write with no fade for the
2729
+ // browser to start a frame later, so the call settles showing it.
2730
+ const late = landing.due == null ? 0 : Math.max(0, time - landing.due);
2731
+ const appears = landing.fadeIn != null && late >= landing.fadeIn.ms;
2732
+ if (landing.fadeIn != null && !appears) {
2733
+ const ms = landing.fadeIn.ms - late;
1983
2734
  segments.set(
1984
2735
  'opacity',
1985
2736
  fadeSegment(landing.owner, time, [
@@ -1989,6 +2740,13 @@ export function createAnimator(
1989
2740
  );
1990
2741
  changed.push('opacity');
1991
2742
  end = time + ms;
2743
+ } else if (landing.fadeIn != null) {
2744
+ segments.delete('opacity');
2745
+ resting.opacity =
2746
+ landing.fadeIn.isBorrowed === true
2747
+ ? IDENTITY.opacity
2748
+ : landing.fadeIn.to;
2749
+ changed.push('opacity');
1992
2750
  } else if (landing.restore != null) {
1993
2751
  segments.delete('opacity');
1994
2752
  resting.opacity =
@@ -1996,11 +2754,13 @@ export function createAnimator(
1996
2754
  changed.push('opacity');
1997
2755
  }
1998
2756
  commit(changed, time);
1999
- if (landing.restoreIsBorrowed === true) {
2757
+ if (
2758
+ landing.restoreIsBorrowed === true ||
2759
+ (appears && landing.fadeIn?.isBorrowed === true)
2760
+ ) {
2000
2761
  // The stylesheet owns its opacity again.
2001
2762
  releaseOwnOpacity();
2002
- }
2003
- if (landing.fadeIn?.isBorrowed === true) {
2763
+ } else if (landing.fadeIn?.isBorrowed === true) {
2004
2764
  // The fade back in returns to the stylesheet's opacity: it owns it
2005
2765
  // again once the fade ends (releaseIdentity).
2006
2766
  borrowedOpacity = landing.fadeIn.to;
@@ -2020,10 +2780,7 @@ export function createAnimator(
2020
2780
  settle(owner, true);
2021
2781
  } else {
2022
2782
  owner.timer = setTimeout(
2023
- () => {
2024
- owner.timer = null;
2025
- settle(owner, true);
2026
- },
2783
+ () => settleAtEnd(owner),
2027
2784
  Math.max(0, end - now()),
2028
2785
  );
2029
2786
  }
@@ -2113,6 +2870,9 @@ export function createAnimator(
2113
2870
  get hasPendingLanding() {
2114
2871
  return landings.size > 0;
2115
2872
  },
2873
+ get hasWaitingDip() {
2874
+ return [...landings].some(landing => landing.fadeIn != null);
2875
+ },
2116
2876
  };
2117
2877
 
2118
2878
  /**
@@ -2152,6 +2912,7 @@ export function createAnimator(
2152
2912
  holds: plan.holds,
2153
2913
  landing: plan.landing,
2154
2914
  borrowed: plan.borrowed,
2915
+ joins: plan.joins,
2155
2916
  };
2156
2917
  };
2157
2918
 
@@ -2173,6 +2934,7 @@ export function createAnimator(
2173
2934
  if (next === target) {
2174
2935
  return;
2175
2936
  }
2937
+ flushDeferred();
2176
2938
  if (next == null) {
2177
2939
  // Unmount, unless a node replaces this one in the same task (React's
2178
2940
  // replacement order: attach(null), then the new node): nothing is
@@ -2208,6 +2970,9 @@ export function createAnimator(
2208
2970
  }
2209
2971
  retireTimers.clear();
2210
2972
  demote();
2973
+ // demote() asks for a fresh will-change read of the node it
2974
+ // demotes; a detached node gets none.
2975
+ cancelSheetWillChangeRead();
2211
2976
  });
2212
2977
  lastDetached = null;
2213
2978
  const time = now();
@@ -2226,9 +2991,25 @@ export function createAnimator(
2226
2991
  }
2227
2992
  // After the landing's commit, which can promote the element again.
2228
2993
  demote();
2994
+ // A pseudo-element holds an identity with a static animation, which the
2995
+ // cancel below drops: note the channels to hold again on the next node
2996
+ // (never a borrowed opacity, which is the stylesheet's).
2229
2997
  const isOpacityBorrowed =
2230
2998
  borrowedOpacity != null ||
2231
2999
  [...landings].some(landing => landing.restoreIsBorrowed === true);
3000
+ const pseudoHeld =
3001
+ pseudoElement == null || target == null
3002
+ ? null
3003
+ : new Set(
3004
+ (Object.keys(CHANNELS) as Channel[]).filter(
3005
+ channel =>
3006
+ running.has(channel) &&
3007
+ !(channel === 'opacity' && isOpacityBorrowed) &&
3008
+ CHANNELS[channel].every(
3009
+ p => !segments.has(p) && resting[p] === IDENTITY[p],
3010
+ ),
3011
+ ),
3012
+ );
2232
3013
  for (const animation of running.values()) {
2233
3014
  animation.cancel();
2234
3015
  }
@@ -2248,16 +3029,21 @@ export function createAnimator(
2248
3029
  // differs, kept through a detach for the node that comes next.
2249
3030
  if (target != null) {
2250
3031
  const outgoing = target;
2251
- heldIdentity = new Set(
2252
- (Object.keys(CHANNELS) as Channel[]).filter(
2253
- channel =>
2254
- outgoing.style.getPropertyValue(channel) ===
2255
- IDENTITY_TEXT[channel],
2256
- ),
2257
- );
3032
+ heldIdentity =
3033
+ pseudoHeld ??
3034
+ new Set(
3035
+ (Object.keys(CHANNELS) as Channel[]).filter(
3036
+ channel =>
3037
+ outgoing.style.getPropertyValue(channel) ===
3038
+ IDENTITY_TEXT[channel],
3039
+ ),
3040
+ );
2258
3041
  }
2259
3042
  const held = heldIdentity;
2260
3043
  target = next;
3044
+ // A new node: its own will-change is read again.
3045
+ cancelSheetWillChangeRead();
3046
+ sheetWillChangeRead = false;
2261
3047
  if (target == null) {
2262
3048
  return;
2263
3049
  }
@@ -2284,11 +3070,17 @@ export function createAnimator(
2284
3070
  } else if (held.has(channel)) {
2285
3071
  // An identity the animator held inline over a stylesheet that
2286
3072
  // differs goes onto the new node too (writeInline keeps it only
2287
- // where the new node's stylesheet still differs).
2288
- writeInline(channel, property => resting[property]);
3073
+ // where the new node's stylesheet still differs); a pseudo-element's
3074
+ // is held again.
3075
+ if (pseudoElement != null) {
3076
+ hold(channel, time);
3077
+ } else {
3078
+ writeInline(channel, property => resting[property]);
3079
+ }
2289
3080
  }
2290
3081
  }
2291
3082
  flushReleases();
3083
+ readSheetWillChangeLater();
2292
3084
  },
2293
3085
 
2294
3086
  get(property, time = now()) {
@@ -2301,8 +3093,9 @@ export function createAnimator(
2301
3093
  return velocityAt(property === 'scale' ? 'scaleX' : property, time);
2302
3094
  },
2303
3095
 
2304
- set(values) {
3096
+ set(values, setOptions = {}) {
2305
3097
  syncPending();
3098
+ flushDeferred();
2306
3099
  const time = now();
2307
3100
  const next = expand(values);
2308
3101
  for (const [property, value] of Object.entries(next) as [
@@ -2314,14 +3107,19 @@ export function createAnimator(
2314
3107
  resting[property] = value;
2315
3108
  }
2316
3109
  // Direct manipulation: the layer makes each write a composite only.
2317
- for (const property of Object.keys(next) as MotionProperty[]) {
2318
- promote(CHANNEL_OF[property]);
3110
+ if (setOptions.promote !== false) {
3111
+ for (const property of Object.keys(next) as MotionProperty[]) {
3112
+ promote(CHANNEL_OF[property]);
3113
+ }
2319
3114
  }
2320
3115
  commit(Object.keys(next) as MotionProperty[], time);
2321
3116
  },
2322
3117
 
2323
3118
  animate(to, transition, animateOptions = {}) {
2324
3119
  syncPending();
3120
+ if (animateOptions.start !== 'presented') {
3121
+ flushDeferred();
3122
+ }
2325
3123
  const time = animateOptions.at ?? now();
2326
3124
  const targets = expand(to);
2327
3125
  const velocities = expand(transition.velocity ?? {});
@@ -2343,6 +3141,21 @@ export function createAnimator(
2343
3141
  Object.assign(next, plan.next);
2344
3142
  } else {
2345
3143
  for (const property of properties) {
3144
+ const running =
3145
+ animateOptions.additive === true && velocities[property] == null
3146
+ ? segmentAt(property, time)
3147
+ : null;
3148
+ if (running != null && !isHeld(running)) {
3149
+ next[property] = additiveSegment(
3150
+ owner,
3151
+ property,
3152
+ time,
3153
+ targets[property] as number,
3154
+ transition.spring,
3155
+ running,
3156
+ );
3157
+ continue;
3158
+ }
2346
3159
  const velocity = velocities[property] ?? velocityAt(property, time);
2347
3160
  next[property] = springSegment(
2348
3161
  owner,
@@ -2359,6 +3172,7 @@ export function createAnimator(
2359
3172
  time,
2360
3173
  Object.keys(next) as MotionProperty[],
2361
3174
  animateOptions.at,
3175
+ animateOptions.start,
2362
3176
  );
2363
3177
  const adopted =
2364
3178
  plan?.landing != null
@@ -2383,12 +3197,24 @@ export function createAnimator(
2383
3197
  segments.set(property, segment);
2384
3198
  }
2385
3199
  }
2386
- commitCall(group, owner, changed, time);
3200
+ commitCall(
3201
+ group,
3202
+ owner,
3203
+ changed,
3204
+ time,
3205
+ animateOptions.start === 'presented' && animateOptions.at == null,
3206
+ );
2387
3207
  if (plan?.borrowed != null) {
2388
3208
  // The dip's own commit cleared it; the borrow lasts the dip.
2389
3209
  borrowedOpacity = plan.borrowed;
2390
3210
  }
2391
- const handle = makeHandle(owner, changed, finished, time, group);
3211
+ if (plan?.joins === true) {
3212
+ joinWaitingDip(owner);
3213
+ }
3214
+ const handle =
3215
+ plan?.joins === true
3216
+ ? makeHandle(owner, ['opacity'], finished, time, group, true)
3217
+ : makeHandle(owner, changed, finished, time, group);
2392
3218
  if (plan?.landing != null) {
2393
3219
  scheduleLanding(owner, handle.started, plan.landing, adopted);
2394
3220
  }
@@ -2397,6 +3223,9 @@ export function createAnimator(
2397
3223
 
2398
3224
  play(curves, playOptions = {}) {
2399
3225
  syncPending();
3226
+ if (playOptions.start !== 'presented') {
3227
+ flushDeferred();
3228
+ }
2400
3229
  const time = playOptions.at ?? now();
2401
3230
  const {owner, finished} = newOwner();
2402
3231
  const byProperty: Partial<Record<MotionProperty, MotionCurve>> = {};
@@ -2444,6 +3273,17 @@ export function createAnimator(
2444
3273
  continue;
2445
3274
  }
2446
3275
  const curve = byProperty[property] as MotionCurve;
3276
+ const running =
3277
+ playOptions.additive === true ? segmentAt(property, time) : null;
3278
+ if (
3279
+ running != null &&
3280
+ !isHeld(running) &&
3281
+ curve.duration > 0 &&
3282
+ Math.abs(curve.at(curve.duration) - curve.at(0)) > 1e-9
3283
+ ) {
3284
+ next[property] = additiveCurveSegment(owner, time, curve, running);
3285
+ continue;
3286
+ }
2447
3287
  next[property] =
2448
3288
  curve.duration === 0
2449
3289
  ? null
@@ -2461,6 +3301,7 @@ export function createAnimator(
2461
3301
  time,
2462
3302
  Object.keys(next) as MotionProperty[],
2463
3303
  playOptions.at,
3304
+ playOptions.start,
2464
3305
  );
2465
3306
  const adopted =
2466
3307
  plan?.landing != null
@@ -2485,12 +3326,24 @@ export function createAnimator(
2485
3326
  segments.set(property, segment);
2486
3327
  }
2487
3328
  }
2488
- commitCall(group, owner, changed, time);
3329
+ commitCall(
3330
+ group,
3331
+ owner,
3332
+ changed,
3333
+ time,
3334
+ playOptions.start === 'presented' && playOptions.at == null,
3335
+ );
2489
3336
  if (plan?.borrowed != null) {
2490
3337
  // The dip's own commit cleared it; the borrow lasts the dip.
2491
3338
  borrowedOpacity = plan.borrowed;
2492
3339
  }
2493
- const handle = makeHandle(owner, changed, finished, time, group);
3340
+ if (plan?.joins === true) {
3341
+ joinWaitingDip(owner);
3342
+ }
3343
+ const handle =
3344
+ plan?.joins === true
3345
+ ? makeHandle(owner, ['opacity'], finished, time, group, true)
3346
+ : makeHandle(owner, changed, finished, time, group);
2494
3347
  if (plan?.landing != null) {
2495
3348
  scheduleLanding(owner, handle.started, plan.landing, adopted);
2496
3349
  }
@@ -2499,6 +3352,7 @@ export function createAnimator(
2499
3352
 
2500
3353
  decay(curves, decayOptions = {}) {
2501
3354
  syncPending();
3355
+ flushDeferred();
2502
3356
  const time = decayOptions.at ?? now();
2503
3357
  // Under Reduce Motion only momentum keeps moving (DR2, DEC-2): a curve
2504
3358
  // that is a transition plays as `animate` does, a cross-fade or at once.
@@ -2580,6 +3434,7 @@ export function createAnimator(
2580
3434
 
2581
3435
  stop(properties) {
2582
3436
  syncPending();
3437
+ flushDeferred();
2583
3438
  const time = now();
2584
3439
  const list = properties == null ? PROPERTIES : expandList(properties);
2585
3440
  const changed: MotionProperty[] = [];
@@ -2615,6 +3470,7 @@ export function createAnimator(
2615
3470
 
2616
3471
  rebase(deltas, rebaseOptions = {}) {
2617
3472
  syncPending();
3473
+ flushDeferred();
2618
3474
  const time = rebaseOptions.at ?? now();
2619
3475
  const changed: MotionProperty[] = [];
2620
3476
  const owners = new Set<HandleState>();
@@ -2694,10 +3550,7 @@ export function createAnimator(
2694
3550
  }
2695
3551
  }
2696
3552
  owner.timer = setTimeout(
2697
- () => {
2698
- owner.timer = null;
2699
- settle(owner, true);
2700
- },
3553
+ () => settleAtEnd(owner),
2701
3554
  Math.max(0, end - now()),
2702
3555
  );
2703
3556
  }
@@ -2742,6 +3595,7 @@ export function createAnimator(
2742
3595
  },
2743
3596
 
2744
3597
  dispose() {
3598
+ flushDeferred();
2745
3599
  // A Reduce Motion move still waiting to land is written at its end
2746
3600
  // state, so the element is left visible where it was going (the node
2747
3601
  // just detached, when an unmount is pending); its call and the calls
@@ -2770,6 +3624,7 @@ export function createAnimator(
2770
3624
  retireTimers.clear();
2771
3625
  handBackBorrow();
2772
3626
  demote();
3627
+ cancelSheetWillChangeRead();
2773
3628
  target = null;
2774
3629
  },
2775
3630
  };