@astryxdesign/core 0.7.4 → 0.7.5-canary.0418c47

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 (1568) hide show
  1. package/README.md +12 -9
  2. package/dist/AlertDialog/AlertDialog.d.ts +2 -2
  3. package/dist/AlertDialog/AlertDialog.js +1 -1
  4. package/dist/AlertDialog/index.d.ts +4 -4
  5. package/dist/AlertDialog/useImperativeAlertDialog.d.ts +1 -1
  6. package/dist/AppShell/AppShell.d.ts +4 -4
  7. package/dist/AppShell/index.d.ts +4 -4
  8. package/dist/AspectRatio/AspectRatio.d.ts +1 -1
  9. package/dist/AspectRatio/index.d.ts +2 -2
  10. package/dist/Avatar/Avatar.d.ts +2 -2
  11. package/dist/Avatar/AvatarStatusDot.d.ts +2 -2
  12. package/dist/Avatar/AvatarStatusDot.js +2 -2
  13. package/dist/Avatar/index.d.ts +4 -4
  14. package/dist/AvatarGroup/AvatarGroup.d.ts +2 -2
  15. package/dist/AvatarGroup/AvatarGroupContext.d.ts +1 -1
  16. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +1 -1
  17. package/dist/AvatarGroup/index.d.ts +6 -6
  18. package/dist/Badge/Badge.d.ts +2 -2
  19. package/dist/Badge/Badge.d.ts.map +1 -1
  20. package/dist/Badge/Badge.js +18 -2
  21. package/dist/Badge/index.d.ts +2 -2
  22. package/dist/Banner/Banner.d.ts +5 -4
  23. package/dist/Banner/Banner.d.ts.map +1 -1
  24. package/dist/Banner/Banner.js +64 -9
  25. package/dist/Banner/index.d.ts +2 -2
  26. package/dist/Blockquote/Blockquote.d.ts +1 -1
  27. package/dist/Blockquote/index.d.ts +2 -2
  28. package/dist/BottomSheet/BottomSheet.d.ts +58 -10
  29. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  30. package/dist/BottomSheet/BottomSheet.js +435 -198
  31. package/dist/BottomSheet/BottomSheetHostContext.d.ts +8 -0
  32. package/dist/BottomSheet/BottomSheetHostContext.d.ts.map +1 -0
  33. package/dist/BottomSheet/BottomSheetHostContext.js +35 -0
  34. package/dist/BottomSheet/BottomSheetPanel.d.ts +12 -4
  35. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  36. package/dist/BottomSheet/BottomSheetPanel.js +76 -22
  37. package/dist/BottomSheet/BottomSheetSwitcher.d.ts +54 -15
  38. package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
  39. package/dist/BottomSheet/BottomSheetSwitcher.js +229 -27
  40. package/dist/BottomSheet/BottomSheetSwitcherContext.d.ts +8 -2
  41. package/dist/BottomSheet/BottomSheetSwitcherContext.d.ts.map +1 -1
  42. package/dist/BottomSheet/bottomSheetEscape.d.ts +3 -0
  43. package/dist/BottomSheet/bottomSheetEscape.d.ts.map +1 -0
  44. package/dist/BottomSheet/bottomSheetEscape.js +20 -0
  45. package/dist/BottomSheet/bottomSheetStack.d.ts +262 -0
  46. package/dist/BottomSheet/bottomSheetStack.d.ts.map +1 -0
  47. package/dist/BottomSheet/bottomSheetStack.js +1652 -0
  48. package/dist/BottomSheet/index.d.ts +4 -4
  49. package/dist/BottomSheet/useSheetGestures.d.ts +19 -3
  50. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  51. package/dist/BottomSheet/useSheetGestures.js +43 -14
  52. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +4 -4
  53. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  54. package/dist/Breadcrumbs/BreadcrumbItem.js +5 -0
  55. package/dist/Breadcrumbs/Breadcrumbs.d.ts +2 -2
  56. package/dist/Breadcrumbs/index.d.ts +12 -12
  57. package/dist/Button/Button.d.ts +4 -4
  58. package/dist/Button/Button.d.ts.map +1 -1
  59. package/dist/Button/Button.js +18 -7
  60. package/dist/Button/index.d.ts +2 -2
  61. package/dist/ButtonGroup/ButtonGroup.d.ts +4 -4
  62. package/dist/ButtonGroup/index.d.ts +4 -4
  63. package/dist/Calendar/Calendar.d.ts +3 -3
  64. package/dist/Calendar/dayCellUtils.d.ts +1 -1
  65. package/dist/Calendar/getInitialFocusDate.d.ts +2 -2
  66. package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts +1 -1
  67. package/dist/Calendar/hooks/index.d.ts +6 -6
  68. package/dist/Calendar/hooks/useCalendarConstraints.d.ts +2 -2
  69. package/dist/Calendar/hooks/useCalendarDays.d.ts +2 -2
  70. package/dist/Calendar/hooks/useCalendarNavigation.d.ts +2 -2
  71. package/dist/Calendar/index.d.ts +5 -5
  72. package/dist/Calendar/utils.d.ts +1 -1
  73. package/dist/Card/Card.d.ts +4 -4
  74. package/dist/Card/index.d.ts +2 -2
  75. package/dist/Carousel/Carousel.d.ts +2 -2
  76. package/dist/Carousel/index.d.ts +2 -2
  77. package/dist/Center/Center.d.ts +2 -2
  78. package/dist/Center/index.d.ts +2 -2
  79. package/dist/Chat/ChatComposer.d.ts +1 -1
  80. package/dist/Chat/ChatComposer.d.ts.map +1 -1
  81. package/dist/Chat/ChatComposer.js +25 -32
  82. package/dist/Chat/ChatComposerDrawer.d.ts +1 -1
  83. package/dist/Chat/ChatComposerInput.d.ts +4 -4
  84. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  85. package/dist/Chat/ChatComposerInput.js +55 -16
  86. package/dist/Chat/ChatDictationButton.d.ts +2 -2
  87. package/dist/Chat/ChatLayout.d.ts +1 -1
  88. package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
  89. package/dist/Chat/ChatMessage.d.ts +2 -2
  90. package/dist/Chat/ChatMessageBubble.d.ts +2 -2
  91. package/dist/Chat/ChatMessageList.d.ts +3 -3
  92. package/dist/Chat/ChatMessageMetadata.d.ts +1 -1
  93. package/dist/Chat/ChatMessageMetadata.js +2 -2
  94. package/dist/Chat/ChatPastedTextToken.d.ts.map +1 -1
  95. package/dist/Chat/ChatPastedTextToken.js +7 -6
  96. package/dist/Chat/ChatSendButton.d.ts +1 -1
  97. package/dist/Chat/ChatSystemMessage.d.ts +1 -1
  98. package/dist/Chat/ChatTokenizedText.d.ts +2 -2
  99. package/dist/Chat/ChatToolCalls.d.ts +1 -1
  100. package/dist/Chat/ChatToolCalls.js +4 -4
  101. package/dist/Chat/index.d.ts +43 -43
  102. package/dist/Chat/useChatComposerTokens.d.ts +1 -1
  103. package/dist/Chat/useChatDictation.d.ts +1 -1
  104. package/dist/Chat/useChatPasteAsToken.d.ts +1 -1
  105. package/dist/Chat/useTriggerMenu.d.ts +2 -2
  106. package/dist/CheckboxInput/CheckboxInput.d.ts +4 -4
  107. package/dist/CheckboxInput/index.d.ts +2 -2
  108. package/dist/CheckboxList/CheckboxList.d.ts +4 -4
  109. package/dist/CheckboxList/CheckboxListItem.d.ts +2 -2
  110. package/dist/CheckboxList/index.d.ts +4 -4
  111. package/dist/Citation/Citation.d.ts +1 -1
  112. package/dist/Citation/index.d.ts +2 -2
  113. package/dist/ClickableCard/ClickableCard.d.ts +3 -3
  114. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  115. package/dist/ClickableCard/ClickableCard.js +10 -6
  116. package/dist/ClickableCard/index.d.ts +2 -2
  117. package/dist/Code/Code.d.ts +1 -1
  118. package/dist/Code/index.d.ts +1 -1
  119. package/dist/CodeBlock/CodeBlock.d.ts +27 -4
  120. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  121. package/dist/CodeBlock/CodeBlock.js +58 -19
  122. package/dist/CodeBlock/grammar.d.ts +134 -0
  123. package/dist/CodeBlock/grammar.d.ts.map +1 -0
  124. package/dist/CodeBlock/grammar.js +219 -0
  125. package/dist/CodeBlock/highlightRanges.d.ts +1 -1
  126. package/dist/CodeBlock/index.d.ts +10 -8
  127. package/dist/CodeBlock/index.d.ts.map +1 -1
  128. package/dist/CodeBlock/index.js +1 -0
  129. package/dist/CodeBlock/languages/dockerfile.d.ts +3 -0
  130. package/dist/CodeBlock/languages/dockerfile.d.ts.map +1 -0
  131. package/dist/CodeBlock/languages/dockerfile.js +45 -0
  132. package/dist/CodeBlock/languages/graphql.d.ts +3 -0
  133. package/dist/CodeBlock/languages/graphql.d.ts.map +1 -0
  134. package/dist/CodeBlock/languages/graphql.js +27 -0
  135. package/dist/CodeBlock/languages/java.d.ts +3 -0
  136. package/dist/CodeBlock/languages/java.d.ts.map +1 -0
  137. package/dist/CodeBlock/languages/java.js +24 -0
  138. package/dist/CodeBlock/languages/lua.d.ts +3 -0
  139. package/dist/CodeBlock/languages/lua.d.ts.map +1 -0
  140. package/dist/CodeBlock/languages/lua.js +21 -0
  141. package/dist/CodeBlock/languages/objective-c.d.ts +3 -0
  142. package/dist/CodeBlock/languages/objective-c.d.ts.map +1 -0
  143. package/dist/CodeBlock/languages/objective-c.js +27 -0
  144. package/dist/CodeBlock/languages/powershell.d.ts +3 -0
  145. package/dist/CodeBlock/languages/powershell.d.ts.map +1 -0
  146. package/dist/CodeBlock/languages/powershell.js +30 -0
  147. package/dist/CodeBlock/languages/ruby.d.ts +3 -0
  148. package/dist/CodeBlock/languages/ruby.d.ts.map +1 -0
  149. package/dist/CodeBlock/languages/ruby.js +24 -0
  150. package/dist/CodeBlock/languages/thrift.d.ts +3 -0
  151. package/dist/CodeBlock/languages/thrift.d.ts.map +1 -0
  152. package/dist/CodeBlock/languages/thrift.js +18 -0
  153. package/dist/CodeBlock/languages/toml.d.ts +3 -0
  154. package/dist/CodeBlock/languages/toml.d.ts.map +1 -0
  155. package/dist/CodeBlock/languages/toml.js +53 -0
  156. package/dist/CodeBlock/tokenizer.d.ts +8 -4
  157. package/dist/CodeBlock/tokenizer.d.ts.map +1 -1
  158. package/dist/CodeBlock/tokenizer.js +158 -8
  159. package/dist/Collapsible/Collapsible.d.ts +10 -3
  160. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  161. package/dist/Collapsible/Collapsible.js +84 -2
  162. package/dist/Collapsible/CollapsibleGroup.d.ts +2 -2
  163. package/dist/Collapsible/index.d.ts +7 -7
  164. package/dist/CommandPalette/CommandPalette.d.ts +2 -2
  165. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  166. package/dist/CommandPalette/CommandPalette.js +15 -1
  167. package/dist/CommandPalette/CommandPaletteContext.d.ts +1 -1
  168. package/dist/CommandPalette/CommandPaletteEmpty.d.ts +1 -1
  169. package/dist/CommandPalette/CommandPaletteEmpty.d.ts.map +1 -1
  170. package/dist/CommandPalette/CommandPaletteEmpty.js +1 -0
  171. package/dist/CommandPalette/CommandPaletteFooter.d.ts +1 -1
  172. package/dist/CommandPalette/CommandPaletteGroup.d.ts +1 -1
  173. package/dist/CommandPalette/CommandPaletteInput.d.ts +1 -1
  174. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  175. package/dist/CommandPalette/CommandPaletteInput.js +14 -2
  176. package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
  177. package/dist/CommandPalette/CommandPaletteList.d.ts +1 -1
  178. package/dist/CommandPalette/busyStartSettle.d.ts +4 -0
  179. package/dist/CommandPalette/busyStartSettle.d.ts.map +1 -0
  180. package/dist/CommandPalette/busyStartSettle.js +23 -0
  181. package/dist/CommandPalette/index.d.ts +16 -16
  182. package/dist/ComplexSelector/ComplexSelector.d.ts +25 -7
  183. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  184. package/dist/ComplexSelector/ComplexSelector.js +42 -7
  185. package/dist/ComplexSelector/index.d.ts +1 -1
  186. package/dist/ContextMenu/ContextMenu.d.ts +4 -4
  187. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  188. package/dist/ContextMenu/ContextMenu.js +48 -13
  189. package/dist/ContextMenu/index.d.ts +9 -9
  190. package/dist/DateInput/DateInput.d.ts +7 -7
  191. package/dist/DateInput/DateInput.d.ts.map +1 -1
  192. package/dist/DateInput/DateInput.js +12 -5
  193. package/dist/DateInput/MonthScroller.d.ts +1 -1
  194. package/dist/DateInput/NativeDateField.d.ts +1 -1
  195. package/dist/DateInput/NativeDateField.d.ts.map +1 -1
  196. package/dist/DateInput/NativeDateField.js +2 -1
  197. package/dist/DateInput/TouchDateField.d.ts +1 -1
  198. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  199. package/dist/DateInput/TouchDateField.js +2 -1
  200. package/dist/DateInput/Wheel.d.ts.map +1 -1
  201. package/dist/DateInput/Wheel.js +1 -1
  202. package/dist/DateInput/index.d.ts +2 -2
  203. package/dist/DateInput/monthGeometry.d.ts +1 -1
  204. package/dist/DateRangeInput/DateRangeInput.d.ts +6 -6
  205. package/dist/DateRangeInput/index.d.ts +2 -2
  206. package/dist/DateTimeInput/DateTimeInput.d.ts +6 -6
  207. package/dist/DateTimeInput/NativeDateSegment.d.ts +3 -3
  208. package/dist/DateTimeInput/NativeTimeSegment.d.ts +4 -4
  209. package/dist/DateTimeInput/TouchDateTimeField.d.ts +1 -1
  210. package/dist/DateTimeInput/index.d.ts +2 -2
  211. package/dist/Dialog/Dialog.d.ts +7 -3
  212. package/dist/Dialog/Dialog.d.ts.map +1 -1
  213. package/dist/Dialog/Dialog.js +20 -8
  214. package/dist/Dialog/DialogHeader.d.ts +1 -1
  215. package/dist/Dialog/index.d.ts +6 -6
  216. package/dist/Dialog/useImperativeDialog.d.ts +1 -1
  217. package/dist/Divider/Divider.d.ts +2 -2
  218. package/dist/Divider/index.d.ts +2 -2
  219. package/dist/Drawer/Drawer.d.ts +3 -3
  220. package/dist/Drawer/Drawer.d.ts.map +1 -1
  221. package/dist/Drawer/Drawer.js +18 -13
  222. package/dist/Drawer/DrawerHeader.d.ts +1 -1
  223. package/dist/Drawer/index.d.ts +4 -4
  224. package/dist/DropdownMenu/DropdownMenu.d.ts +5 -5
  225. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  226. package/dist/DropdownMenu/DropdownMenu.js +32 -20
  227. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +2 -2
  228. package/dist/DropdownMenu/DropdownMenuDivider.d.ts +1 -1
  229. package/dist/DropdownMenu/DropdownMenuGroup.d.ts +1 -1
  230. package/dist/DropdownMenu/DropdownMenuItem.d.ts +2 -2
  231. package/dist/DropdownMenu/DropdownMenuItem.js +3 -3
  232. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +1 -1
  233. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +12 -7
  234. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  235. package/dist/DropdownMenu/DropdownMenuRadioItem.js +13 -5
  236. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +8 -8
  237. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  238. package/dist/DropdownMenu/DropdownMenuSubMenu.js +0 -3
  239. package/dist/DropdownMenu/MenuBottomSheet.d.ts +11 -4
  240. package/dist/DropdownMenu/MenuBottomSheet.d.ts.map +1 -1
  241. package/dist/DropdownMenu/MenuBottomSheet.js +35 -9
  242. package/dist/DropdownMenu/MenuBottomSheetActionList.d.ts +1 -1
  243. package/dist/DropdownMenu/MenuBottomSheetActionList.js +3 -3
  244. package/dist/DropdownMenu/index.d.ts +10 -10
  245. package/dist/DropdownMenu/lazyMenuBottomSheet.d.ts +4 -2
  246. package/dist/DropdownMenu/lazyMenuBottomSheet.d.ts.map +1 -1
  247. package/dist/DropdownMenu/lazyMenuBottomSheet.js +25 -3
  248. package/dist/DropdownMenu/menuBottomSheet.stylex.d.ts +23 -0
  249. package/dist/DropdownMenu/menuBottomSheet.stylex.d.ts.map +1 -0
  250. package/dist/DropdownMenu/menuBottomSheet.stylex.js +29 -0
  251. package/dist/DropdownMenu/menuItemHover.d.ts +3 -0
  252. package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
  253. package/dist/DropdownMenu/menuItemHover.js +14 -1
  254. package/dist/DropdownMenu/renderDropdownItems.d.ts +1 -1
  255. package/dist/DropdownMenu/useMenuDrillIn.d.ts +1 -1
  256. package/dist/DropdownMenu/useMenuDrillIn.d.ts.map +1 -1
  257. package/dist/DropdownMenu/useMenuDrillIn.js +7 -5
  258. package/dist/EmptyState/EmptyState.d.ts +5 -3
  259. package/dist/EmptyState/EmptyState.d.ts.map +1 -1
  260. package/dist/EmptyState/EmptyState.js +6 -4
  261. package/dist/EmptyState/index.d.ts +2 -2
  262. package/dist/Field/Field.d.ts +5 -5
  263. package/dist/Field/Field.js +1 -1
  264. package/dist/Field/FieldLabel.d.ts +2 -2
  265. package/dist/Field/FieldLabel.js +1 -1
  266. package/dist/Field/PanelSearchInput.d.ts +10 -2
  267. package/dist/Field/PanelSearchInput.d.ts.map +1 -1
  268. package/dist/Field/PanelSearchInput.js +31 -22
  269. package/dist/Field/fieldInputFamily.testing.d.ts +1 -1
  270. package/dist/Field/fieldParts.d.ts +1 -1
  271. package/dist/Field/index.d.ts +10 -10
  272. package/dist/Field/inputDisabledFocus.d.ts +14 -0
  273. package/dist/Field/inputDisabledFocus.d.ts.map +1 -0
  274. package/dist/Field/inputDisabledFocus.js +19 -0
  275. package/dist/Field/inputStyles.stylex.d.ts +9 -9
  276. package/dist/Field/inputStyles.stylex.js +9 -9
  277. package/dist/FieldStatus/FieldStatus.d.ts +3 -3
  278. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  279. package/dist/FieldStatus/FieldStatus.js +7 -3
  280. package/dist/FieldStatus/index.d.ts +2 -2
  281. package/dist/FieldStatus/useFieldStatusAnnouncement.d.ts +1 -1
  282. package/dist/FileInput/FileInput.d.ts +4 -4
  283. package/dist/FileInput/FileInput.d.ts.map +1 -1
  284. package/dist/FileInput/FileInput.js +15 -9
  285. package/dist/FileInput/index.d.ts +2 -2
  286. package/dist/FormLayout/FormLayout.d.ts +2 -2
  287. package/dist/FormLayout/index.d.ts +4 -4
  288. package/dist/Grid/Grid.d.ts +3 -3
  289. package/dist/Grid/GridSpan.d.ts +1 -1
  290. package/dist/Grid/index.d.ts +4 -4
  291. package/dist/HStack/HStack.d.ts +2 -2
  292. package/dist/HStack/index.d.ts +1 -1
  293. package/dist/Heading/Heading.d.ts +4 -4
  294. package/dist/Heading/index.d.ts +1 -1
  295. package/dist/HoverCard/HoverCard.d.ts +4 -4
  296. package/dist/HoverCard/index.d.ts +4 -4
  297. package/dist/HoverCard/useHoverCard.d.ts +2 -2
  298. package/dist/Icon/Icon.d.ts +18 -6
  299. package/dist/Icon/Icon.d.ts.map +1 -1
  300. package/dist/Icon/Icon.js +55 -9
  301. package/dist/Icon/IconDefaultSizeContext.d.ts +1 -1
  302. package/dist/Icon/IconSize.stylex.d.ts +16 -11
  303. package/dist/Icon/IconSize.stylex.d.ts.map +1 -1
  304. package/dist/Icon/IconSize.stylex.js +27 -11
  305. package/dist/Icon/defaultIcons.d.ts +1 -1
  306. package/dist/Icon/globalIconRegistry.d.ts +69 -5
  307. package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
  308. package/dist/Icon/globalIconRegistry.js +108 -24
  309. package/dist/Icon/index.d.ts +30 -6
  310. package/dist/Icon/index.d.ts.map +1 -1
  311. package/dist/Icon/index.js +24 -1
  312. package/dist/Icon/useIcon.d.ts +6 -2
  313. package/dist/Icon/useIcon.d.ts.map +1 -1
  314. package/dist/Icon/useIcon.js +5 -1
  315. package/dist/IconButton/IconButton.d.ts +1 -1
  316. package/dist/IconButton/index.d.ts +2 -2
  317. package/dist/Indicator/CheckIndicator.d.ts +1 -1
  318. package/dist/Indicator/CheckboxIndicator.d.ts +1 -1
  319. package/dist/Indicator/RadioIndicator.d.ts +1 -1
  320. package/dist/Indicator/index.d.ts +8 -8
  321. package/dist/Indicator/indicatorRegistry.d.ts +2 -2
  322. package/dist/Indicator/types.d.ts +1 -1
  323. package/dist/Indicator/useIndicator.d.ts +2 -2
  324. package/dist/InputGroup/InputGroup.d.ts +3 -3
  325. package/dist/InputGroup/InputGroup.d.ts.map +1 -1
  326. package/dist/InputGroup/InputGroup.js +46 -36
  327. package/dist/InputGroup/InputGroupInternalContext.d.ts +4 -0
  328. package/dist/InputGroup/InputGroupInternalContext.d.ts.map +1 -0
  329. package/dist/InputGroup/InputGroupInternalContext.js +15 -0
  330. package/dist/InputGroup/InputGroupText.d.ts +1 -1
  331. package/dist/InputGroup/InputGroupText.d.ts.map +1 -1
  332. package/dist/InputGroup/InputGroupText.js +2 -0
  333. package/dist/InputGroup/groupStyles.d.ts +9 -0
  334. package/dist/InputGroup/groupStyles.d.ts.map +1 -1
  335. package/dist/InputGroup/groupStyles.js +28 -14
  336. package/dist/InputGroup/index.d.ts +6 -6
  337. package/dist/InteractiveRoleContext/InteractiveRoleContext.d.ts +1 -1
  338. package/dist/InteractiveRoleContext/index.d.ts +1 -1
  339. package/dist/Item/Item.d.ts +1 -1
  340. package/dist/Item/Item.d.ts.map +1 -1
  341. package/dist/Item/Item.js +1 -1
  342. package/dist/Item/ItemSwipeLayer.d.ts +2 -2
  343. package/dist/Item/ItemSwipeLayer.d.ts.map +1 -1
  344. package/dist/Item/ItemSwipeLayer.js +3 -0
  345. package/dist/Item/index.d.ts +2 -2
  346. package/dist/Item/useSwipeAction.d.ts.map +1 -1
  347. package/dist/Item/useSwipeAction.js +60 -5
  348. package/dist/Kbd/Kbd.d.ts +3 -3
  349. package/dist/Kbd/Kbd.d.ts.map +1 -1
  350. package/dist/Kbd/Kbd.js +18 -11
  351. package/dist/Kbd/index.d.ts +2 -2
  352. package/dist/Layer/LayerProvider.d.ts +1 -1
  353. package/dist/Layer/index.d.ts +18 -18
  354. package/dist/Layer/layerAnimations.stylex.d.ts +9 -5
  355. package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
  356. package/dist/Layer/layerAnimations.stylex.js +23 -10
  357. package/dist/Layer/layerInset.d.ts +1 -1
  358. package/dist/Layer/layerSlideRules.d.ts +63 -3
  359. package/dist/Layer/layerSlideRules.d.ts.map +1 -1
  360. package/dist/Layer/layerSlideRules.js +124 -3
  361. package/dist/Layer/layerStack.d.ts +12 -9
  362. package/dist/Layer/layerStack.d.ts.map +1 -1
  363. package/dist/Layer/layerStack.js +116 -53
  364. package/dist/Layer/modalOutlet.d.ts +44 -6
  365. package/dist/Layer/modalOutlet.d.ts.map +1 -1
  366. package/dist/Layer/modalOutlet.js +150 -14
  367. package/dist/Layer/preserveAnimations.d.ts +11 -0
  368. package/dist/Layer/preserveAnimations.d.ts.map +1 -0
  369. package/dist/Layer/preserveAnimations.js +245 -0
  370. package/dist/Layer/useLayer.d.ts +19 -2
  371. package/dist/Layer/useLayer.d.ts.map +1 -1
  372. package/dist/Layer/useLayer.js +500 -43
  373. package/dist/Layer/useLayerDismissal.d.ts +11 -8
  374. package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
  375. package/dist/Layer/useLayerDismissal.js +8 -8
  376. package/dist/Layer/useTouchTrigger.d.ts +14 -1
  377. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  378. package/dist/Layer/useTouchTrigger.js +72 -17
  379. package/dist/Layout/Layout.d.ts +2 -2
  380. package/dist/Layout/Layout.d.ts.map +1 -1
  381. package/dist/Layout/Layout.js +4 -0
  382. package/dist/Layout/LayoutContent.d.ts +2 -2
  383. package/dist/Layout/LayoutContent.d.ts.map +1 -1
  384. package/dist/Layout/LayoutContent.js +2 -2
  385. package/dist/Layout/LayoutFooter.d.ts +2 -2
  386. package/dist/Layout/LayoutFooter.d.ts.map +1 -1
  387. package/dist/Layout/LayoutFooter.js +2 -1
  388. package/dist/Layout/LayoutHeader.d.ts +2 -2
  389. package/dist/Layout/LayoutHeader.d.ts.map +1 -1
  390. package/dist/Layout/LayoutHeader.js +2 -1
  391. package/dist/Layout/LayoutPanel.d.ts +3 -3
  392. package/dist/Layout/index.d.ts +29 -29
  393. package/dist/Layout/layoutEdges.stylex.d.ts +20 -0
  394. package/dist/Layout/layoutEdges.stylex.d.ts.map +1 -0
  395. package/dist/Layout/layoutEdges.stylex.js +28 -0
  396. package/dist/Layout/padding.stylex.d.ts +1 -1
  397. package/dist/Lightbox/Lightbox.d.ts +6 -3
  398. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  399. package/dist/Lightbox/Lightbox.js +111 -89
  400. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts +2 -0
  401. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts.map +1 -0
  402. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.js +78 -0
  403. package/dist/Lightbox/LightboxViewport.a11y.browser.spec.d.ts +2 -0
  404. package/dist/Lightbox/LightboxViewport.a11y.browser.spec.d.ts.map +1 -0
  405. package/dist/Lightbox/LightboxViewport.a11y.browser.spec.js +65 -0
  406. package/dist/Lightbox/index.d.ts +4 -4
  407. package/dist/Lightbox/useLightbox.d.ts +1 -1
  408. package/dist/Link/Link.d.ts +3 -3
  409. package/dist/Link/LinkContext.d.ts +1 -1
  410. package/dist/Link/LinkProvider.d.ts +1 -1
  411. package/dist/Link/index.d.ts +8 -8
  412. package/dist/Link/useLinkComponent.d.ts +1 -1
  413. package/dist/List/List.d.ts +3 -3
  414. package/dist/List/ListItem.d.ts +2 -2
  415. package/dist/List/index.d.ts +4 -4
  416. package/dist/Markdown/Markdown.d.ts +15 -5
  417. package/dist/Markdown/Markdown.d.ts.map +1 -1
  418. package/dist/Markdown/Markdown.fr23.bench.js +3 -1
  419. package/dist/Markdown/Markdown.fr23.sampling.d.ts +16 -0
  420. package/dist/Markdown/Markdown.fr23.sampling.d.ts.map +1 -1
  421. package/dist/Markdown/Markdown.fr23.sampling.js +13 -4
  422. package/dist/Markdown/Markdown.js +23 -9
  423. package/dist/Markdown/MarkdownTable.a11y.chromium.spec.js +1 -0
  424. package/dist/Markdown/headingProjection.d.ts +3 -3
  425. package/dist/Markdown/index.d.ts +7 -7
  426. package/dist/Markdown/parser/index.d.ts +3 -3
  427. package/dist/Markdown/parser.d.ts +3 -3
  428. package/dist/Markdown/plugin-renderer/MarkdownPluginNodeRenderer.d.ts +1 -1
  429. package/dist/Markdown/plugin-renderer/index.d.ts +2 -2
  430. package/dist/Markdown/plugins/frontmatter.d.ts +2 -2
  431. package/dist/Markdown/plugins/headingLinks.d.ts +2 -2
  432. package/dist/Markdown/plugins/index.d.ts +14 -14
  433. package/dist/Markdown/plugins/protocol.d.ts +1 -1
  434. package/dist/Markdown/plugins/semanticFence.d.ts +2 -2
  435. package/dist/Markdown/plugins/softBreaks.d.ts +1 -1
  436. package/dist/Markdown/plugins/sourceDecoration.d.ts +2 -2
  437. package/dist/Markdown/plugins/sourceLines.d.ts +1 -1
  438. package/dist/Markdown/plugins/textTransform.d.ts +2 -2
  439. package/dist/Markdown/remark.d.ts +1 -1
  440. package/dist/Markdown/utils.d.ts +4 -4
  441. package/dist/MetadataList/MetadataList.d.ts +2 -2
  442. package/dist/MetadataList/MetadataListItem.d.ts +1 -1
  443. package/dist/MetadataList/index.d.ts +5 -5
  444. package/dist/MobileNav/MobileNav.d.ts +3 -2
  445. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  446. package/dist/MobileNav/MobileNav.js +46 -37
  447. package/dist/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.js +1 -0
  448. package/dist/MobileNav/MobileNavToggle.d.ts +1 -1
  449. package/dist/MobileNav/index.d.ts +4 -4
  450. package/dist/MoreMenu/MoreMenu.d.ts +4 -4
  451. package/dist/MoreMenu/index.d.ts +1 -1
  452. package/dist/MultiSelector/CreateRow.a11y.chromium.spec.js +1 -0
  453. package/dist/MultiSelector/MultiSelector.d.ts +8 -8
  454. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  455. package/dist/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.js +1 -0
  456. package/dist/MultiSelector/MultiSelector.js +21 -5
  457. package/dist/MultiSelector/OptionActions.a11y.chromium.spec.js +1 -0
  458. package/dist/MultiSelector/hooks.d.ts +1 -1
  459. package/dist/MultiSelector/index.d.ts +3 -3
  460. package/dist/MultiSelector/types.d.ts +1 -1
  461. package/dist/NavIcon/NavIcon.d.ts +1 -1
  462. package/dist/NavIcon/index.d.ts +2 -2
  463. package/dist/NavMenu/NavHeadingMenu.d.ts +2 -2
  464. package/dist/NavMenu/NavHeadingMenuItem.d.ts +2 -2
  465. package/dist/NavMenu/NavHeadingMenuItem.d.ts.map +1 -1
  466. package/dist/NavMenu/NavHeadingMenuItem.js +46 -7
  467. package/dist/NavMenu/index.d.ts +6 -6
  468. package/dist/NumberInput/NumberInput.d.ts +9 -9
  469. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  470. package/dist/NumberInput/NumberInput.js +61 -24
  471. package/dist/NumberInput/index.d.ts +2 -2
  472. package/dist/NumberInput/numberInputCommit.d.ts +1 -1
  473. package/dist/NumberInput/numberParser.d.ts +1 -1
  474. package/dist/Outline/Outline.d.ts +3 -3
  475. package/dist/Outline/index.d.ts +7 -7
  476. package/dist/Outline/parseOutlineFromMarkdown.d.ts +2 -2
  477. package/dist/Outline/useOutlineFromDOM.d.ts +1 -1
  478. package/dist/Outline/useOutlineFromMarkdown.d.ts +3 -3
  479. package/dist/Outline/useScrollSpy.d.ts +1 -1
  480. package/dist/OverflowList/OverflowList.d.ts +2 -2
  481. package/dist/OverflowList/index.d.ts +2 -2
  482. package/dist/Overlay/Overlay.d.ts +2 -2
  483. package/dist/Overlay/index.d.ts +5 -5
  484. package/dist/Overlay/useOverlay.d.ts +1 -1
  485. package/dist/Pagination/Pagination.d.ts +2 -2
  486. package/dist/Pagination/index.d.ts +2 -2
  487. package/dist/Popover/Popover.d.ts +44 -5
  488. package/dist/Popover/Popover.d.ts.map +1 -1
  489. package/dist/Popover/Popover.js +276 -44
  490. package/dist/Popover/index.d.ts +4 -4
  491. package/dist/Popover/index.d.ts.map +1 -1
  492. package/dist/Popover/lazyPopoverBottomSheet.d.ts +23 -0
  493. package/dist/Popover/lazyPopoverBottomSheet.d.ts.map +1 -0
  494. package/dist/Popover/lazyPopoverBottomSheet.js +40 -0
  495. package/dist/Popover/usePopover.d.ts +2 -2
  496. package/dist/Popover/usePopover.d.ts.map +1 -1
  497. package/dist/Popover/usePopover.js +11 -5
  498. package/dist/PowerSearch/PowerSearch.d.ts +5 -5
  499. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  500. package/dist/PowerSearch/PowerSearch.js +7 -5
  501. package/dist/PowerSearch/PowerSearchEditPopover.d.ts +2 -2
  502. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts +1 -1
  503. package/dist/PowerSearch/PowerSearchToken.d.ts +1 -1
  504. package/dist/PowerSearch/PowerSearchValueEditor.d.ts +2 -2
  505. package/dist/PowerSearch/formatFilterValue.d.ts +3 -3
  506. package/dist/PowerSearch/index.d.ts +8 -8
  507. package/dist/PowerSearch/resolveDateTimeRangePart.d.ts +1 -1
  508. package/dist/PowerSearch/resolveOperatorLabel.d.ts +2 -2
  509. package/dist/PowerSearch/types.d.ts +1 -1
  510. package/dist/PowerSearch/useInternalConfig.d.ts +1 -1
  511. package/dist/PowerSearch/usePowerSearchConfig.d.ts +1 -1
  512. package/dist/PowerSearch/usePowerSearchSource.d.ts +3 -3
  513. package/dist/PowerSearch/utils.d.ts +3 -3
  514. package/dist/ProgressBar/ProgressBar.d.ts +2 -2
  515. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  516. package/dist/ProgressBar/ProgressBar.js +8 -0
  517. package/dist/ProgressBar/index.d.ts +2 -2
  518. package/dist/RadioList/RadioList.d.ts +3 -3
  519. package/dist/RadioList/RadioListItem.d.ts +2 -2
  520. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  521. package/dist/RadioList/RadioListItem.js +10 -2
  522. package/dist/RadioList/index.d.ts +4 -4
  523. package/dist/Resizable/ResizeHandle.d.ts +2 -2
  524. package/dist/Resizable/index.d.ts +6 -6
  525. package/dist/Resizable/useResizable.d.ts +2 -2
  526. package/dist/Resizable/utils.d.ts +3 -3
  527. package/dist/ScrollableArea/ScrollableArea.d.ts +3 -3
  528. package/dist/ScrollableArea/ScrollableArea.d.ts.map +1 -1
  529. package/dist/ScrollableArea/ScrollableArea.js +1 -1
  530. package/dist/ScrollableArea/index.d.ts +4 -4
  531. package/dist/Section/Section.d.ts +3 -3
  532. package/dist/Section/index.d.ts +2 -2
  533. package/dist/SegmentedControl/SegmentedControl.d.ts +2 -2
  534. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  535. package/dist/SegmentedControl/index.d.ts +5 -5
  536. package/dist/SelectableCard/SelectableCard.d.ts +8 -8
  537. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  538. package/dist/SelectableCard/SelectableCard.js +15 -11
  539. package/dist/SelectableCard/index.d.ts +2 -2
  540. package/dist/Selector/Selector.d.ts +8 -8
  541. package/dist/Selector/Selector.d.ts.map +1 -1
  542. package/dist/Selector/Selector.js +16 -5
  543. package/dist/Selector/SelectorOption.d.ts +1 -1
  544. package/dist/Selector/hooks.d.ts +1 -1
  545. package/dist/Selector/index.d.ts +4 -4
  546. package/dist/Selector/types.d.ts +1 -1
  547. package/dist/Selector/useSelectorPresentation.d.ts +2 -2
  548. package/dist/Selector/utils.d.ts +1 -1
  549. package/dist/SideNav/SideNav.d.ts +3 -3
  550. package/dist/SideNav/SideNavCollapseButton.d.ts +3 -3
  551. package/dist/SideNav/SideNavHeading.d.ts +2 -2
  552. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  553. package/dist/SideNav/SideNavHeading.js +34 -0
  554. package/dist/SideNav/SideNavItem.d.ts +9 -5
  555. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  556. package/dist/SideNav/SideNavItem.js +36 -13
  557. package/dist/SideNav/SideNavSection.d.ts +1 -1
  558. package/dist/SideNav/index.d.ts +14 -14
  559. package/dist/SizeContext/index.d.ts +1 -1
  560. package/dist/Skeleton/Skeleton.d.ts +1 -1
  561. package/dist/Skeleton/Skeleton.d.ts.map +1 -1
  562. package/dist/Skeleton/Skeleton.js +12 -3
  563. package/dist/Skeleton/index.d.ts +2 -2
  564. package/dist/Slider/Slider.d.ts +3 -3
  565. package/dist/Slider/Slider.d.ts.map +1 -1
  566. package/dist/Slider/Slider.js +45 -12
  567. package/dist/Slider/index.d.ts +2 -2
  568. package/dist/Spinner/Spinner.d.ts +1 -1
  569. package/dist/Spinner/index.d.ts +2 -2
  570. package/dist/Stack/Stack.d.ts +3 -3
  571. package/dist/Stack/StackItem.d.ts +2 -2
  572. package/dist/Stack/index.d.ts +6 -6
  573. package/dist/Stack/stack.stylex.d.ts +1 -1
  574. package/dist/StatusDot/StatusDot.d.ts +2 -2
  575. package/dist/StatusDot/StatusDot.d.ts.map +1 -1
  576. package/dist/StatusDot/StatusDot.js +12 -0
  577. package/dist/StatusDot/index.d.ts +2 -2
  578. package/dist/Stepper/Step.d.ts +2 -2
  579. package/dist/Stepper/Step.d.ts.map +1 -1
  580. package/dist/Stepper/Step.js +10 -6
  581. package/dist/Stepper/Stepper.d.ts +2 -2
  582. package/dist/Stepper/index.d.ts +7 -7
  583. package/dist/Switch/Switch.d.ts +4 -4
  584. package/dist/Switch/Switch.d.ts.map +1 -1
  585. package/dist/Switch/Switch.js +5 -5
  586. package/dist/Switch/index.d.ts +2 -2
  587. package/dist/Switch/switch.markers.stylex.d.ts +7 -2
  588. package/dist/Switch/switch.markers.stylex.d.ts.map +1 -1
  589. package/dist/Switch/switch.markers.stylex.js +8 -3
  590. package/dist/TabList/Tab.d.ts +2 -2
  591. package/dist/TabList/Tab.d.ts.map +1 -1
  592. package/dist/TabList/Tab.js +5 -1
  593. package/dist/TabList/TabList.d.ts +3 -3
  594. package/dist/TabList/TabMenu.d.ts +2 -2
  595. package/dist/TabList/TabMenu.d.ts.map +1 -1
  596. package/dist/TabList/TabMenu.js +1 -0
  597. package/dist/TabList/index.d.ts +8 -8
  598. package/dist/Table/BaseTable.d.ts +1 -1
  599. package/dist/Table/Table.d.ts +1 -1
  600. package/dist/Table/TableBody.d.ts +1 -1
  601. package/dist/Table/TableCell.d.ts +3 -3
  602. package/dist/Table/TableCell.d.ts.map +1 -1
  603. package/dist/Table/TableCell.js +1 -0
  604. package/dist/Table/TableContext.d.ts +1 -1
  605. package/dist/Table/TableFooter.d.ts +1 -1
  606. package/dist/Table/TableHeader.d.ts +1 -1
  607. package/dist/Table/TableHeaderCell.d.ts +3 -3
  608. package/dist/Table/TableHeaderCell.d.ts.map +1 -1
  609. package/dist/Table/TableHeaderCell.js +1 -0
  610. package/dist/Table/TableRow.d.ts +2 -2
  611. package/dist/Table/TableSelectionToolbar.d.ts +2 -2
  612. package/dist/Table/columnUtils.d.ts +1 -1
  613. package/dist/Table/index.d.ts +54 -54
  614. package/dist/Table/plugins/columnResize/index.d.ts +2 -2
  615. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts +1 -1
  616. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  617. package/dist/Table/plugins/columnResize/useTableColumnResize.js +11 -2
  618. package/dist/Table/plugins/columnSettings/index.d.ts +4 -4
  619. package/dist/Table/plugins/columnSettings/useTableColumnSettings.d.ts +2 -2
  620. package/dist/Table/plugins/columnSettings/useTableColumnSettingsState.d.ts +1 -1
  621. package/dist/Table/plugins/filtering/index.d.ts +4 -4
  622. package/dist/Table/plugins/filtering/useTableFilterState.d.ts +1 -1
  623. package/dist/Table/plugins/filtering/useTableFiltering.d.ts +2 -2
  624. package/dist/Table/plugins/groupedRows/index.d.ts +2 -2
  625. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +1 -1
  626. package/dist/Table/plugins/pagination/index.d.ts +3 -3
  627. package/dist/Table/plugins/pagination/useTablePagination.d.ts +1 -1
  628. package/dist/Table/plugins/rowExpansion/index.d.ts +2 -2
  629. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +1 -1
  630. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  631. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +103 -4
  632. package/dist/Table/plugins/rowIndex/index.d.ts +2 -2
  633. package/dist/Table/plugins/rowIndex/useTableRowIndex.d.ts +1 -1
  634. package/dist/Table/plugins/rowStatus/index.d.ts +2 -2
  635. package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts +2 -2
  636. package/dist/Table/plugins/selection/index.d.ts +4 -4
  637. package/dist/Table/plugins/selection/useTableSelection.d.ts +1 -1
  638. package/dist/Table/plugins/selection/useTableSelectionState.d.ts +1 -1
  639. package/dist/Table/plugins/sortable/index.d.ts +4 -4
  640. package/dist/Table/plugins/sortable/useTableSortable.d.ts +1 -1
  641. package/dist/Table/plugins/sortable/useTableSortableState.d.ts +1 -1
  642. package/dist/Table/plugins/stickyColumns/index.d.ts +2 -2
  643. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts +1 -1
  644. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
  645. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +233 -6
  646. package/dist/Table/plugins/tree/index.d.ts +4 -4
  647. package/dist/Table/plugins/tree/useTableTreeData.d.ts +1 -1
  648. package/dist/Table/plugins/tree/useTableTreeState.d.ts +1 -1
  649. package/dist/Table/rowDivider.d.ts +34 -0
  650. package/dist/Table/rowDivider.d.ts.map +1 -0
  651. package/dist/Table/rowDivider.js +118 -0
  652. package/dist/Table/tableContextMenu.d.ts +2 -2
  653. package/dist/Table/types.d.ts +3 -3
  654. package/dist/Table/useBaseTablePlugins.d.ts +1 -1
  655. package/dist/Table/useTableCellStyles.d.ts +2 -2
  656. package/dist/Table/utils.d.ts +2 -2
  657. package/dist/Text/Text.d.ts +3 -3
  658. package/dist/Text/index.d.ts +4 -4
  659. package/dist/TextArea/TextArea.d.ts +10 -8
  660. package/dist/TextArea/TextArea.d.ts.map +1 -1
  661. package/dist/TextArea/TextArea.js +15 -12
  662. package/dist/TextArea/index.d.ts +2 -2
  663. package/dist/TextInput/TextInput.d.ts +12 -10
  664. package/dist/TextInput/TextInput.d.ts.map +1 -1
  665. package/dist/TextInput/TextInput.js +35 -21
  666. package/dist/TextInput/index.d.ts +2 -2
  667. package/dist/Thumbnail/Thumbnail.d.ts +1 -1
  668. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  669. package/dist/Thumbnail/Thumbnail.js +45 -11
  670. package/dist/Thumbnail/index.d.ts +2 -2
  671. package/dist/TimeInput/TimeInput.d.ts +6 -6
  672. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  673. package/dist/TimeInput/TimeInput.js +12 -4
  674. package/dist/TimeInput/TouchTimeField.d.ts +1 -1
  675. package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
  676. package/dist/TimeInput/TouchTimeField.js +2 -1
  677. package/dist/TimeInput/index.d.ts +3 -3
  678. package/dist/Timer/Timer.d.ts +2 -2
  679. package/dist/Timer/index.d.ts +2 -2
  680. package/dist/Timestamp/Timestamp.d.ts +3 -3
  681. package/dist/Timestamp/TimestampHoverCard.d.ts +1 -1
  682. package/dist/Timestamp/formatInstant.d.ts +2 -2
  683. package/dist/Timestamp/formatRelativeTime.d.ts +1 -1
  684. package/dist/Timestamp/index.d.ts +3 -3
  685. package/dist/Timestamp/tooltipEntries.d.ts +2 -2
  686. package/dist/Toast/Toast.d.ts +2 -2
  687. package/dist/Toast/ToastContext.d.ts +1 -1
  688. package/dist/Toast/ToastViewport.d.ts +2 -2
  689. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  690. package/dist/Toast/ToastViewport.js +28 -2
  691. package/dist/Toast/index.d.ts +6 -6
  692. package/dist/Toast/useToast.d.ts +1 -1
  693. package/dist/ToggleButton/ToggleButton.d.ts +3 -3
  694. package/dist/ToggleButton/ToggleButtonGroup.d.ts +1 -1
  695. package/dist/ToggleButton/index.d.ts +4 -4
  696. package/dist/Token/Token.d.ts +2 -2
  697. package/dist/Token/TokenLink.d.ts +1 -1
  698. package/dist/Token/index.d.ts +2 -2
  699. package/dist/Tokenizer/Tokenizer.d.ts +77 -10
  700. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  701. package/dist/Tokenizer/Tokenizer.js +474 -85
  702. package/dist/Tokenizer/TokenizerBottomSheet.d.ts +98 -0
  703. package/dist/Tokenizer/TokenizerBottomSheet.d.ts.map +1 -0
  704. package/dist/Tokenizer/TokenizerBottomSheet.js +721 -0
  705. package/dist/Tokenizer/index.d.ts +2 -2
  706. package/dist/Tokenizer/useEndLaneReserve.d.ts +3 -2
  707. package/dist/Tokenizer/useEndLaneReserve.d.ts.map +1 -1
  708. package/dist/Tokenizer/useEndLaneReserve.js +3 -2
  709. package/dist/Toolbar/Toolbar.d.ts +4 -4
  710. package/dist/Toolbar/index.d.ts +2 -2
  711. package/dist/Tooltip/Tooltip.d.ts +3 -3
  712. package/dist/Tooltip/index.d.ts +4 -4
  713. package/dist/Tooltip/useTooltip.d.ts +2 -2
  714. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  715. package/dist/Tooltip/useTooltip.js +9 -3
  716. package/dist/TopNav/TopNav.d.ts +1 -1
  717. package/dist/TopNav/TopNavHeading.d.ts +2 -2
  718. package/dist/TopNav/TopNavItem.d.ts +3 -3
  719. package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
  720. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  721. package/dist/TopNav/TopNavMegaMenu.js +4 -4
  722. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  723. package/dist/TopNav/TopNavMegaMenuItem.d.ts +2 -2
  724. package/dist/TopNav/TopNavMenu.d.ts +1 -1
  725. package/dist/TopNav/index.d.ts +16 -16
  726. package/dist/TreeList/TreeList.d.ts +11 -26
  727. package/dist/TreeList/TreeList.d.ts.map +1 -1
  728. package/dist/TreeList/TreeList.js +175 -3
  729. package/dist/TreeList/TreeListItem.d.ts +8 -2
  730. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  731. package/dist/TreeList/TreeListItem.js +3 -1
  732. package/dist/TreeList/TreeListTypes.d.ts +1 -1
  733. package/dist/TreeList/index.d.ts +3 -3
  734. package/dist/Typeahead/BaseTypeahead.d.ts +2 -2
  735. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  736. package/dist/Typeahead/BaseTypeahead.js +16 -4
  737. package/dist/Typeahead/Typeahead.d.ts +7 -7
  738. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  739. package/dist/Typeahead/Typeahead.js +31 -14
  740. package/dist/Typeahead/TypeaheadItem.d.ts +2 -2
  741. package/dist/Typeahead/createStaticSource.d.ts +1 -1
  742. package/dist/Typeahead/index.d.ts +9 -9
  743. package/dist/Typeahead/utils.d.ts +3 -3
  744. package/dist/VStack/VStack.d.ts +2 -2
  745. package/dist/VStack/index.d.ts +1 -1
  746. package/dist/VisuallyHidden/VisuallyHidden.d.ts +24 -6
  747. package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
  748. package/dist/VisuallyHidden/VisuallyHidden.js +24 -5
  749. package/dist/VisuallyHidden/index.d.ts +2 -2
  750. package/dist/astryx.css +138 -51
  751. package/dist/gestures/GestureArena.d.ts +175 -0
  752. package/dist/gestures/GestureArena.d.ts.map +1 -0
  753. package/dist/gestures/GestureArena.js +816 -0
  754. package/dist/gestures/GestureRecognizer.d.ts +239 -0
  755. package/dist/gestures/GestureRecognizer.d.ts.map +1 -0
  756. package/dist/gestures/GestureRecognizer.js +487 -0
  757. package/dist/gestures/LongPressGestureRecognizer.d.ts +32 -0
  758. package/dist/gestures/LongPressGestureRecognizer.d.ts.map +1 -0
  759. package/dist/gestures/LongPressGestureRecognizer.js +135 -0
  760. package/dist/gestures/PanGestureRecognizer.d.ts +117 -0
  761. package/dist/gestures/PanGestureRecognizer.d.ts.map +1 -0
  762. package/dist/gestures/PanGestureRecognizer.js +349 -0
  763. package/dist/gestures/TapGestureRecognizer.d.ts +39 -0
  764. package/dist/gestures/TapGestureRecognizer.d.ts.map +1 -0
  765. package/dist/gestures/TapGestureRecognizer.js +151 -0
  766. package/dist/gestures/VelocityTracker.d.ts +51 -0
  767. package/dist/gestures/VelocityTracker.d.ts.map +1 -0
  768. package/dist/gestures/VelocityTracker.js +186 -0
  769. package/dist/gestures/geometry.d.ts +17 -0
  770. package/dist/gestures/geometry.d.ts.map +1 -0
  771. package/dist/gestures/geometry.js +55 -0
  772. package/dist/gestures/types.d.ts +139 -0
  773. package/dist/gestures/types.d.ts.map +1 -0
  774. package/dist/gestures/types.js +67 -0
  775. package/dist/hooks/AnnounceRenderedText.d.ts +17 -0
  776. package/dist/hooks/AnnounceRenderedText.d.ts.map +1 -0
  777. package/dist/hooks/AnnounceRenderedText.js +32 -0
  778. package/dist/hooks/ModalAnnounceProvider.d.ts +41 -0
  779. package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -0
  780. package/dist/hooks/ModalAnnounceProvider.js +133 -0
  781. package/dist/hooks/actionGroupTracker.d.ts +98 -0
  782. package/dist/hooks/actionGroupTracker.d.ts.map +1 -0
  783. package/dist/hooks/actionGroupTracker.js +338 -0
  784. package/dist/hooks/index.d.ts +54 -52
  785. package/dist/hooks/index.d.ts.map +1 -1
  786. package/dist/hooks/index.js +1 -0
  787. package/dist/hooks/modalAnnounce.d.ts +18 -0
  788. package/dist/hooks/modalAnnounce.d.ts.map +1 -0
  789. package/dist/hooks/modalAnnounce.js +382 -0
  790. package/dist/hooks/useAdaptivePresentation.d.ts +9 -1
  791. package/dist/hooks/useAdaptivePresentation.d.ts.map +1 -1
  792. package/dist/hooks/useAdaptivePresentation.js +33 -8
  793. package/dist/hooks/useAnimatedLayout.d.ts +42 -0
  794. package/dist/hooks/useAnimatedLayout.d.ts.map +1 -0
  795. package/dist/hooks/useAnimatedLayout.js +46 -0
  796. package/dist/hooks/useAnnounce.d.ts +132 -1
  797. package/dist/hooks/useAnnounce.d.ts.map +1 -1
  798. package/dist/hooks/useAnnounce.js +356 -27
  799. package/dist/hooks/useAnnounceRenderedText.d.ts +19 -2
  800. package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
  801. package/dist/hooks/useAnnounceRenderedText.js +52 -11
  802. package/dist/hooks/useAutoMediaMode.d.ts +1 -1
  803. package/dist/hooks/useBusyAnnouncement.d.ts +9 -5
  804. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  805. package/dist/hooks/useBusyAnnouncement.js +58 -46
  806. package/dist/hooks/useFocusTrap.d.ts +1 -1
  807. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  808. package/dist/hooks/useFocusTrap.js +57 -26
  809. package/dist/hooks/useInputContainer.d.ts +1 -1
  810. package/dist/hooks/useInputStatusIcon.d.ts +3 -3
  811. package/dist/hooks/useMenuPress.d.ts +5 -3
  812. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  813. package/dist/hooks/useMenuPress.js +58 -33
  814. package/dist/hooks/usePressFeedback.d.ts +1 -1
  815. package/dist/hooks/useScrollableArea.d.ts +1 -1
  816. package/dist/hooks/useScrollableArea.d.ts.map +1 -1
  817. package/dist/hooks/useScrollableArea.js +37 -5
  818. package/dist/i18n/InternationalizationContext.d.ts +2 -2
  819. package/dist/i18n/InternationalizationProvider.d.ts +1 -1
  820. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  821. package/dist/i18n/generated-locales/en.generated.js +33 -0
  822. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  823. package/dist/i18n/generated-locales/pseudo.generated.js +33 -0
  824. package/dist/i18n/index.d.ts +12 -12
  825. package/dist/i18n/resolve.d.ts +1 -1
  826. package/dist/i18n/useLocale.d.ts +1 -1
  827. package/dist/index.d.ts +111 -111
  828. package/dist/internal/tokenizer-presentation.d.ts +21 -0
  829. package/dist/internal/tokenizer-presentation.d.ts.map +1 -0
  830. package/dist/internal/tokenizer-presentation.js +21 -0
  831. package/dist/internal/touch.d.ts +26 -0
  832. package/dist/internal/touch.d.ts.map +1 -0
  833. package/dist/internal/touch.js +28 -0
  834. package/dist/motion/LayoutChangeSnapshot.d.ts +33 -0
  835. package/dist/motion/LayoutChangeSnapshot.d.ts.map +1 -0
  836. package/dist/motion/LayoutChangeSnapshot.js +37 -0
  837. package/dist/motion/animatedLayout.d.ts +94 -0
  838. package/dist/motion/animatedLayout.d.ts.map +1 -0
  839. package/dist/motion/animatedLayout.js +1096 -0
  840. package/dist/motion/animator.d.ts +240 -0
  841. package/dist/motion/animator.d.ts.map +1 -0
  842. package/dist/motion/animator.js +2203 -0
  843. package/dist/motion/bezier.d.ts +18 -0
  844. package/dist/motion/bezier.d.ts.map +1 -0
  845. package/dist/motion/bezier.js +60 -0
  846. package/dist/motion/coast.d.ts +61 -0
  847. package/dist/motion/coast.d.ts.map +1 -0
  848. package/dist/motion/coast.js +107 -0
  849. package/dist/motion/decay.d.ts +41 -0
  850. package/dist/motion/decay.d.ts.map +1 -0
  851. package/dist/motion/decay.js +90 -0
  852. package/dist/motion/projection.d.ts +36 -0
  853. package/dist/motion/projection.d.ts.map +1 -0
  854. package/dist/motion/projection.js +92 -0
  855. package/dist/motion/reducedMotion.d.ts +25 -0
  856. package/dist/motion/reducedMotion.d.ts.map +1 -0
  857. package/dist/motion/reducedMotion.js +85 -0
  858. package/dist/motion/reducedMotion.stylex.d.ts +19 -0
  859. package/dist/motion/reducedMotion.stylex.d.ts.map +1 -0
  860. package/dist/motion/reducedMotion.stylex.js +37 -0
  861. package/dist/motion/reducedMotionPlan.d.ts +89 -0
  862. package/dist/motion/reducedMotionPlan.d.ts.map +1 -0
  863. package/dist/motion/reducedMotionPlan.js +194 -0
  864. package/dist/motion/resolveSnapPoint.d.ts +52 -0
  865. package/dist/motion/resolveSnapPoint.d.ts.map +1 -0
  866. package/dist/motion/resolveSnapPoint.js +135 -0
  867. package/dist/motion/roleValue.d.ts +33 -0
  868. package/dist/motion/roleValue.d.ts.map +1 -0
  869. package/dist/motion/roleValue.js +84 -0
  870. package/dist/motion/roles.d.ts +79 -0
  871. package/dist/motion/roles.d.ts.map +1 -0
  872. package/dist/motion/roles.js +199 -0
  873. package/dist/motion/rubberBand.d.ts +20 -0
  874. package/dist/motion/rubberBand.d.ts.map +1 -0
  875. package/dist/motion/rubberBand.js +91 -0
  876. package/dist/motion/selectPage.d.ts +26 -0
  877. package/dist/motion/selectPage.d.ts.map +1 -0
  878. package/dist/motion/selectPage.js +55 -0
  879. package/dist/motion/spring.d.ts +193 -0
  880. package/dist/motion/spring.d.ts.map +1 -0
  881. package/dist/motion/spring.js +442 -0
  882. package/dist/motion/uikit/gestures.d.ts +642 -0
  883. package/dist/motion/uikit/gestures.d.ts.map +1 -0
  884. package/dist/motion/uikit/gestures.js +428 -0
  885. package/dist/motion/uikit/index.d.ts +24 -0
  886. package/dist/motion/uikit/index.d.ts.map +1 -0
  887. package/dist/motion/uikit/index.js +26 -0
  888. package/dist/motion/uikit/navigation.d.ts +54 -0
  889. package/dist/motion/uikit/navigation.d.ts.map +1 -0
  890. package/dist/motion/uikit/navigation.js +83 -0
  891. package/dist/motion/uikit/scroll.d.ts +116 -0
  892. package/dist/motion/uikit/scroll.d.ts.map +1 -0
  893. package/dist/motion/uikit/scroll.js +146 -0
  894. package/dist/motion/uikit/springs.d.ts +545 -0
  895. package/dist/motion/uikit/springs.d.ts.map +1 -0
  896. package/dist/motion/uikit/springs.js +548 -0
  897. package/dist/motion/uikit/timing.d.ts +202 -0
  898. package/dist/motion/uikit/timing.d.ts.map +1 -0
  899. package/dist/motion/uikit/timing.js +201 -0
  900. package/dist/reset.a11y.chromium.spec.js +1 -0
  901. package/dist/reset.until-found.a11y.browser.spec.js +1 -0
  902. package/dist/theme/Theme.d.ts +2 -2
  903. package/dist/theme/contrast.d.ts +1 -1
  904. package/dist/theme/declarationBoundary.d.ts +13 -0
  905. package/dist/theme/declarationBoundary.d.ts.map +1 -1
  906. package/dist/theme/declarationBoundary.js +264 -1
  907. package/dist/theme/defineTheme.d.ts +113 -22
  908. package/dist/theme/defineTheme.d.ts.map +1 -1
  909. package/dist/theme/defineTheme.js +66 -7
  910. package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
  911. package/dist/theme/derivedVarRegistry.js +9 -0
  912. package/dist/theme/domainTokens/index.d.ts +6 -6
  913. package/dist/theme/generateThemeRules.d.ts +7 -3
  914. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  915. package/dist/theme/generateThemeRules.js +468 -24
  916. package/dist/theme/index.d.ts +31 -31
  917. package/dist/theme/index.d.ts.map +1 -1
  918. package/dist/theme/index.js +1 -1
  919. package/dist/theme/localTokens.d.ts +1 -1
  920. package/dist/theme/mergeComponents.d.ts +1 -1
  921. package/dist/theme/onMediaTokens.d.ts +1 -1
  922. package/dist/theme/resolveThemeValues.d.ts +7 -7
  923. package/dist/theme/statusColor.d.ts +48 -0
  924. package/dist/theme/statusColor.d.ts.map +1 -0
  925. package/dist/theme/statusColor.js +203 -0
  926. package/dist/theme/statusRoleDerivation.d.ts +11 -0
  927. package/dist/theme/statusRoleDerivation.d.ts.map +1 -0
  928. package/dist/theme/statusRoleDerivation.js +236 -0
  929. package/dist/theme/syntax/SyntaxTheme.d.ts +1 -1
  930. package/dist/theme/syntax/index.d.ts +7 -7
  931. package/dist/theme/syntax/presets.d.ts +1 -1
  932. package/dist/theme/themeAdaptations.d.ts +30 -6
  933. package/dist/theme/themeAdaptations.d.ts.map +1 -1
  934. package/dist/theme/themeAdaptations.js +30 -1
  935. package/dist/theme/themeRegistry.d.ts +1 -1
  936. package/dist/theme/tokens.d.ts +1 -1
  937. package/dist/theme/tokens.d.ts.map +1 -1
  938. package/dist/theme/tokens.js +16 -1
  939. package/dist/theme/tokens.stylex.d.ts +40 -2
  940. package/dist/theme/tokens.stylex.d.ts.map +1 -1
  941. package/dist/theme/tokens.stylex.js +47 -2
  942. package/dist/theme/types.d.ts +1 -1
  943. package/dist/theme/useTheme.d.ts +6 -4
  944. package/dist/theme/useTheme.d.ts.map +1 -1
  945. package/dist/theme/useTheme.js +10 -4
  946. package/dist/utils/dateParser.d.ts +3 -3
  947. package/dist/utils/edgeAutoscroll.d.ts +53 -0
  948. package/dist/utils/edgeAutoscroll.d.ts.map +1 -0
  949. package/dist/utils/edgeAutoscroll.js +81 -0
  950. package/dist/utils/groupItems.d.ts +1 -1
  951. package/dist/utils/hitArea.d.ts +72 -0
  952. package/dist/utils/hitArea.d.ts.map +1 -0
  953. package/dist/utils/hitArea.js +681 -0
  954. package/dist/utils/index.d.ts +29 -29
  955. package/dist/utils/plainDate.d.ts +3 -3
  956. package/dist/utils/touchPresentation.d.ts +48 -0
  957. package/dist/utils/touchPresentation.d.ts.map +1 -0
  958. package/dist/utils/touchPresentation.js +133 -0
  959. package/locales/af-ZA.json +1 -1
  960. package/locales/ar-SA.json +1 -1
  961. package/locales/ca-ES.json +1 -1
  962. package/locales/cs-CZ.json +1 -1
  963. package/locales/da-DK.json +1 -1
  964. package/locales/de-DE.json +1 -1
  965. package/locales/el-GR.json +1 -1
  966. package/locales/en.json +132 -0
  967. package/locales/es-ES.json +1 -1
  968. package/locales/fi-FI.json +1 -1
  969. package/locales/fr-FR.json +1 -1
  970. package/locales/he-IL.json +1 -1
  971. package/locales/hu-HU.json +1 -1
  972. package/locales/it-IT.json +1 -1
  973. package/locales/ja-JP.json +1 -1
  974. package/locales/ko-KR.json +1 -1
  975. package/locales/nl-NL.json +1 -1
  976. package/locales/no-NO.json +1 -1
  977. package/locales/pl-PL.json +1 -1
  978. package/locales/pseudo.json +99 -0
  979. package/locales/pt-BR.json +1 -1
  980. package/locales/pt-PT.json +1 -1
  981. package/locales/ro-RO.json +1 -1
  982. package/locales/ru-RU.json +1 -1
  983. package/locales/sr-SP.json +1 -1
  984. package/locales/sv-SE.json +1 -1
  985. package/locales/tr-TR.json +1 -1
  986. package/locales/uk-UA.json +1 -1
  987. package/locales/vi-VN.json +1 -1
  988. package/locales/zh-CN.json +1 -1
  989. package/locales/zh-TW.json +1 -1
  990. package/package.json +61 -6
  991. package/src/AlertDialog/AlertDialog.tsx +1 -1
  992. package/src/AlertDialog/__tests__/AlertDialog.a11y.chromium.spec.ts +1 -0
  993. package/src/AppShell/AppShell.spec.md +337 -0
  994. package/src/AspectRatio/AspectRatio.spec.md +179 -0
  995. package/src/AspectRatio/__tests__/AspectRatioFitLayers.a11y.browser.spec.ts +1 -0
  996. package/src/Avatar/Avatar.spec.md +253 -0
  997. package/src/Avatar/AvatarStatusDot.spec.md +93 -79
  998. package/src/Avatar/AvatarStatusDot.test.tsx +22 -0
  999. package/src/Avatar/AvatarStatusDot.tsx +2 -2
  1000. package/src/AvatarGroup/AvatarGroup.spec.md +205 -0
  1001. package/src/AvatarGroup/AvatarGroupOverflow.spec.md +123 -120
  1002. package/src/Badge/Badge.doc.mjs +2 -1
  1003. package/src/Badge/Badge.spec.md +207 -0
  1004. package/src/Badge/Badge.test.tsx +13 -0
  1005. package/src/Badge/Badge.tsx +38 -2
  1006. package/src/Banner/Banner.spec.md +38 -27
  1007. package/src/Banner/Banner.test.tsx +118 -16
  1008. package/src/Banner/Banner.tsx +94 -7
  1009. package/src/Blockquote/Blockquote.spec.md +171 -0
  1010. package/src/BottomSheet/BottomSheet.doc.mjs +106 -24
  1011. package/src/BottomSheet/BottomSheet.spec.md +269 -40
  1012. package/src/BottomSheet/BottomSheet.test.tsx +491 -5
  1013. package/src/BottomSheet/BottomSheet.tsx +544 -145
  1014. package/src/BottomSheet/BottomSheetHostContext.ts +44 -0
  1015. package/src/BottomSheet/BottomSheetPanel.test.tsx +21 -10
  1016. package/src/BottomSheet/BottomSheetPanel.tsx +166 -57
  1017. package/src/BottomSheet/BottomSheetReplace.test.tsx +1526 -0
  1018. package/src/BottomSheet/BottomSheetStacking.announce.test.tsx +246 -0
  1019. package/src/BottomSheet/BottomSheetStacking.test.tsx +3184 -0
  1020. package/src/BottomSheet/BottomSheetSwitcher.doc.mjs +27 -31
  1021. package/src/BottomSheet/BottomSheetSwitcher.spec.md +138 -43
  1022. package/src/BottomSheet/BottomSheetSwitcher.tsx +275 -26
  1023. package/src/BottomSheet/BottomSheetSwitcherContext.ts +6 -0
  1024. package/src/BottomSheet/__tests__/BottomSheetDrag.a11y.chromium.spec.ts +1 -0
  1025. package/src/BottomSheet/__tests__/BottomSheetFocusReturn.a11y.browser.spec.ts +1 -0
  1026. package/src/BottomSheet/__tests__/BottomSheetKeyboard.a11y.browser.spec.ts +1 -0
  1027. package/src/BottomSheet/__tests__/BottomSheetNativeModal.a11y.browser.spec.ts +1 -0
  1028. package/src/BottomSheet/__tests__/BottomSheetPinchZoom.a11y.chromium.spec.ts +1 -0
  1029. package/src/BottomSheet/__tests__/BottomSheetToastOutlet.a11y.chromium.spec.ts +83 -0
  1030. package/src/BottomSheet/bottomSheetEscape.ts +21 -0
  1031. package/src/BottomSheet/bottomSheetStack.ts +2031 -0
  1032. package/src/BottomSheet/useSheetGestures.ts +68 -12
  1033. package/src/Breadcrumbs/BreadcrumbItem.spec.md +96 -59
  1034. package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -0
  1035. package/src/Breadcrumbs/Breadcrumbs.spec.md +165 -0
  1036. package/src/Breadcrumbs/Breadcrumbs.test.tsx +22 -0
  1037. package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.chromium.spec.ts +1 -0
  1038. package/src/Button/Button.spec.md +322 -0
  1039. package/src/Button/Button.test.tsx +8 -1
  1040. package/src/Button/Button.tsx +36 -7
  1041. package/src/Button/__tests__/Button.a11y.chromium.spec.ts +1 -0
  1042. package/src/ButtonGroup/ButtonGroup.spec.md +218 -0
  1043. package/src/Calendar/__tests__/Calendar.a11y.chromium.spec.ts +1 -0
  1044. package/src/Card/Card.spec.md +205 -0
  1045. package/src/Carousel/__tests__/Carousel.a11y.chromium.spec.ts +1 -0
  1046. package/src/Chat/ChatComposer.test.tsx +54 -0
  1047. package/src/Chat/ChatComposer.tsx +41 -27
  1048. package/src/Chat/ChatComposerInput.test.tsx +165 -21
  1049. package/src/Chat/ChatComposerInput.tsx +73 -16
  1050. package/src/Chat/ChatMessageMetadata.tsx +1 -1
  1051. package/src/Chat/ChatPastedTextToken.test.tsx +71 -0
  1052. package/src/Chat/ChatPastedTextToken.tsx +8 -7
  1053. package/src/Chat/ChatToolCalls.tsx +5 -5
  1054. package/src/Chat/__tests__/ChatLayoutScrollButton.a11y.chromium.spec.ts +1 -0
  1055. package/src/Chat/__tests__/ChatLayoutScrollButtonSurface.a11y.chromium.spec.ts +1 -0
  1056. package/src/Chat/__tests__/ChatMessageList.a11y.chromium.spec.ts +1 -0
  1057. package/src/Chat/__tests__/ChatMessageMetadata.a11y.chromium.spec.ts +1 -0
  1058. package/src/Chat/__tests__/ChatSendButton.a11y.chromium.spec.ts +1 -0
  1059. package/src/Chat/__tests__/ChatSystemMessage.a11y.chromium.spec.ts +1 -0
  1060. package/src/Chat/__tests__/ChatTokenizedText.a11y.chromium.spec.ts +1 -0
  1061. package/src/Chat/__tests__/useChatStreamScroll.a11y.chromium.spec.ts +1 -0
  1062. package/src/CheckboxInput/CheckboxInput.spec.md +97 -66
  1063. package/src/CheckboxInput/__tests__/Checkbox.a11y.chromium.spec.ts +1 -0
  1064. package/src/CheckboxList/CheckboxList.spec.md +92 -78
  1065. package/src/CheckboxList/CheckboxListItem.spec.md +86 -60
  1066. package/src/CheckboxList/__tests__/CheckboxList.a11y.chromium.spec.ts +1 -0
  1067. package/src/ClickableCard/ClickableCard.doc.mjs +1 -2
  1068. package/src/ClickableCard/ClickableCard.test.tsx +14 -3
  1069. package/src/ClickableCard/ClickableCard.tsx +44 -28
  1070. package/src/Code/Code.spec.md +30 -32
  1071. package/src/CodeBlock/CodeBlock.doc.mjs +21 -4
  1072. package/src/CodeBlock/CodeBlock.spec.md +96 -61
  1073. package/src/CodeBlock/CodeBlock.test.tsx +97 -1
  1074. package/src/CodeBlock/CodeBlock.tsx +132 -22
  1075. package/src/CodeBlock/CodeLanguage.test.tsx +173 -0
  1076. package/src/CodeBlock/__tests__/CodeBlockCopyClearance.a11y.chromium.spec.ts +290 -0
  1077. package/src/CodeBlock/__tests__/CodeBlockLanguages.a11y.chromium.spec.ts +64 -0
  1078. package/src/CodeBlock/__tests__/CodeBlockOverflowStop.a11y.chromium.spec.ts +1 -0
  1079. package/src/CodeBlock/__tests__/DiffRowPaint.a11y.chromium.spec.ts +1 -0
  1080. package/src/CodeBlock/grammar.ts +291 -0
  1081. package/src/CodeBlock/index.ts +7 -0
  1082. package/src/CodeBlock/languages/dockerfile.ts +43 -0
  1083. package/src/CodeBlock/languages/graphql.ts +30 -0
  1084. package/src/CodeBlock/languages/java.ts +28 -0
  1085. package/src/CodeBlock/languages/lua.ts +21 -0
  1086. package/src/CodeBlock/languages/objective-c.ts +26 -0
  1087. package/src/CodeBlock/languages/powershell.ts +31 -0
  1088. package/src/CodeBlock/languages/ruby.ts +29 -0
  1089. package/src/CodeBlock/languages/thrift.ts +32 -0
  1090. package/src/CodeBlock/languages/toml.ts +36 -0
  1091. package/src/CodeBlock/languages.test.ts +402 -0
  1092. package/src/CodeBlock/tokenizer.ts +176 -16
  1093. package/src/CodeBlock/tokenizerBudget.test.ts +112 -0
  1094. package/src/Collapsible/Collapsible.doc.mjs +6 -0
  1095. package/src/Collapsible/Collapsible.spec.md +26 -23
  1096. package/src/Collapsible/Collapsible.tsx +121 -2
  1097. package/src/Collapsible/__tests__/Collapsible.a11y.chromium.spec.ts +1 -0
  1098. package/src/Collapsible/__tests__/CollapsibleGroup.a11y.chromium.spec.ts +1 -0
  1099. package/src/Collapsible/__tests__/CollapsibleGroupAccordion.a11y.chromium.spec.ts +1 -0
  1100. package/src/CommandPalette/CommandPalette.perf.test.ts +8 -4
  1101. package/src/CommandPalette/CommandPalette.tsx +17 -1
  1102. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +6 -3
  1103. package/src/CommandPalette/CommandPaletteEmpty.spec.md +190 -0
  1104. package/src/CommandPalette/CommandPaletteEmpty.tsx +4 -0
  1105. package/src/CommandPalette/CommandPaletteInput.tsx +21 -2
  1106. package/src/CommandPalette/__tests__/CommandPalette.a11y.chromium.spec.ts +1 -0
  1107. package/src/CommandPalette/__tests__/CommandPaletteEmptyAudit.a11y.chromium.spec.ts +715 -0
  1108. package/src/CommandPalette/__tests__/CommandPaletteFooter.a11y.chromium.spec.ts +1 -0
  1109. package/src/CommandPalette/__tests__/CommandPaletteInputAudit.a11y.chromium.spec.ts +1 -0
  1110. package/src/CommandPalette/__tests__/CommandPaletteItemAudit.a11y.chromium.spec.ts +1 -0
  1111. package/src/CommandPalette/busyStartSettle.ts +26 -0
  1112. package/src/ComplexSelector/ComplexSelector.doc.mjs +1 -1
  1113. package/src/ComplexSelector/ComplexSelector.focusableDisabled.test.tsx +1 -1
  1114. package/src/ComplexSelector/ComplexSelector.fr10.test.tsx +9 -9
  1115. package/src/ComplexSelector/ComplexSelector.spec.md +161 -107
  1116. package/src/ComplexSelector/ComplexSelector.test.tsx +236 -17
  1117. package/src/ComplexSelector/ComplexSelector.tsx +69 -4
  1118. package/src/ComplexSelector/__tests__/ComplexSelector.a11y.chromium.spec.ts +965 -0
  1119. package/src/ContextMenu/ContextMenu.doc.mjs +1 -1
  1120. package/src/ContextMenu/ContextMenu.spec.md +38 -30
  1121. package/src/ContextMenu/ContextMenu.test.tsx +189 -11
  1122. package/src/ContextMenu/ContextMenu.tsx +75 -17
  1123. package/src/ContextMenu/__tests__/ContextMenuAudit.a11y.chromium.spec.ts +1 -0
  1124. package/src/ContextMenu/__tests__/ContextMenuCursorAnchor.a11y.browser.spec.ts +1 -0
  1125. package/src/ContextMenu/__tests__/ContextMenuLongPress.a11y.chromium.spec.ts +117 -0
  1126. package/src/DateInput/DateInput.tsx +9 -4
  1127. package/src/DateInput/DateInputTouch.test.tsx +10 -1
  1128. package/src/DateInput/NativeDateField.tsx +2 -1
  1129. package/src/DateInput/TouchDateField.tsx +2 -1
  1130. package/src/DateInput/Wheel.tsx +4 -1
  1131. package/src/DateInput/__tests__/DateInputAudit.a11y.chromium.spec.ts +1 -0
  1132. package/src/DateInput/__tests__/WheelPinchZoom.a11y.chromium.spec.ts +171 -0
  1133. package/src/Dialog/Dialog.doc.mjs +201 -47
  1134. package/src/Dialog/Dialog.tsx +37 -10
  1135. package/src/Dialog/__tests__/Dialog.a11y.browser.spec.ts +1 -0
  1136. package/src/Dialog/__tests__/Dialog.a11y.chromium.spec.ts +1 -0
  1137. package/src/Dialog/__tests__/Dialog.reduced-motion.a11y.browser.spec.ts +191 -0
  1138. package/src/Divider/Divider.spec.md +79 -70
  1139. package/src/Drawer/Drawer.tsx +38 -35
  1140. package/src/Drawer/__tests__/DrawerAudit.a11y.chromium.spec.ts +1 -0
  1141. package/src/Drawer/__tests__/DrawerHeaderAudit.a11y.chromium.spec.ts +1 -0
  1142. package/src/DropdownMenu/DropdownMenu.spec.md +14 -6
  1143. package/src/DropdownMenu/DropdownMenu.ssr.test.tsx +44 -8
  1144. package/src/DropdownMenu/DropdownMenu.test.tsx +64 -5
  1145. package/src/DropdownMenu/DropdownMenu.tsx +47 -21
  1146. package/src/DropdownMenu/DropdownMenuItem.tsx +5 -5
  1147. package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +5 -2
  1148. package/src/DropdownMenu/DropdownMenuRadioItem.spec.md +226 -0
  1149. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +32 -16
  1150. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +158 -0
  1151. package/src/DropdownMenu/DropdownMenuSheetFirstOpen.test.tsx +72 -0
  1152. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +9 -0
  1153. package/src/DropdownMenu/DropdownMenuSubMenu.spec.md +225 -0
  1154. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +105 -0
  1155. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +6 -6
  1156. package/src/DropdownMenu/MenuBottomSheet.tsx +42 -7
  1157. package/src/DropdownMenu/MenuBottomSheetActionList.tsx +3 -3
  1158. package/src/DropdownMenu/__tests__/DropdownMenuDividerAudit.a11y.chromium.spec.ts +1 -0
  1159. package/src/DropdownMenu/__tests__/DropdownMenuDrillIn.a11y.chromium.spec.ts +1 -0
  1160. package/src/DropdownMenu/__tests__/DropdownMenuFocusReturn.a11y.browser.spec.ts +1 -0
  1161. package/src/DropdownMenu/__tests__/DropdownMenuGroupAudit.a11y.chromium.spec.ts +1 -0
  1162. package/src/DropdownMenu/__tests__/DropdownMenuItemAudit.a11y.chromium.spec.ts +1 -0
  1163. package/src/DropdownMenu/__tests__/DropdownMenuRadioGroupAudit.a11y.chromium.spec.ts +1 -0
  1164. package/src/DropdownMenu/__tests__/DropdownMenuRadioItemAudit.a11y.chromium.spec.ts +540 -0
  1165. package/src/DropdownMenu/__tests__/DropdownMenuSubMenuAudit.a11y.chromium.spec.ts +671 -0
  1166. package/src/DropdownMenu/__tests__/Menu.a11y.chromium.spec.ts +1 -0
  1167. package/src/DropdownMenu/__tests__/MenuButton.a11y.chromium.spec.ts +1 -0
  1168. package/src/DropdownMenu/__tests__/MenuHeaderFooter.a11y.chromium.spec.ts +1 -0
  1169. package/src/DropdownMenu/__tests__/MenuHoverFocus.a11y.chromium.spec.ts +238 -0
  1170. package/src/DropdownMenu/__tests__/MenuPinchZoom.a11y.chromium.spec.ts +1 -0
  1171. package/src/DropdownMenu/__tests__/MenuPress.a11y.chromium.spec.ts +1 -0
  1172. package/src/DropdownMenu/__tests__/SubMenuHeaderFooter.a11y.chromium.spec.ts +1 -0
  1173. package/src/DropdownMenu/lazyMenuBottomSheet.ts +28 -2
  1174. package/src/DropdownMenu/menuBottomSheet.stylex.ts +33 -0
  1175. package/src/DropdownMenu/menuItemHover.ts +13 -1
  1176. package/src/DropdownMenu/modules/useMenuPress.spec.md +90 -62
  1177. package/src/DropdownMenu/useMenuDrillIn.tsx +7 -5
  1178. package/src/EmptyState/EmptyState.announce.test.tsx +227 -0
  1179. package/src/EmptyState/EmptyState.doc.mjs +1 -1
  1180. package/src/EmptyState/EmptyState.spec.md +22 -14
  1181. package/src/EmptyState/EmptyState.test.tsx +8 -8
  1182. package/src/EmptyState/EmptyState.tsx +7 -5
  1183. package/src/Field/Field.tsx +1 -1
  1184. package/src/Field/FieldLabel.tsx +1 -1
  1185. package/src/Field/PanelSearchInput.tsx +23 -13
  1186. package/src/Field/__tests__/FieldLabelAudit.a11y.chromium.spec.ts +1 -0
  1187. package/src/Field/inputDisabledFocus.ts +28 -0
  1188. package/src/Field/inputStyles.stylex.ts +15 -15
  1189. package/src/FieldStatus/FieldStatus.test.tsx +12 -0
  1190. package/src/FieldStatus/FieldStatus.tsx +12 -3
  1191. package/src/FieldStatus/__tests__/StatusMessage.a11y.chromium.spec.ts +1 -0
  1192. package/src/FileInput/FileInput.test.tsx +78 -0
  1193. package/src/FileInput/FileInput.tsx +11 -9
  1194. package/src/Heading/Heading.spec.md +198 -0
  1195. package/src/HoverCard/HoverCard.test.tsx +93 -3
  1196. package/src/Icon/Icon.doc.mjs +53 -5
  1197. package/src/Icon/Icon.spec.md +40 -29
  1198. package/src/Icon/Icon.test.tsx +266 -9
  1199. package/src/Icon/Icon.tsx +51 -13
  1200. package/src/Icon/IconSize.stylex.ts +27 -11
  1201. package/src/Icon/globalIconRegistry.test.tsx +326 -3
  1202. package/src/Icon/globalIconRegistry.tsx +137 -36
  1203. package/src/Icon/index.ts +29 -1
  1204. package/src/Icon/useIcon.ts +5 -1
  1205. package/src/IconButton/IconButton.spec.md +197 -0
  1206. package/src/IconButton/IconButton.test.tsx +5 -2
  1207. package/src/InputGroup/InputGroup.spec.md +199 -0
  1208. package/src/InputGroup/InputGroup.test.tsx +120 -0
  1209. package/src/InputGroup/InputGroup.tsx +59 -52
  1210. package/src/InputGroup/InputGroupInternalContext.ts +15 -0
  1211. package/src/InputGroup/InputGroupText.spec.md +139 -0
  1212. package/src/InputGroup/InputGroupText.tsx +2 -0
  1213. package/src/InputGroup/groupStyles.ts +22 -11
  1214. package/src/Item/Item.test.tsx +118 -0
  1215. package/src/Item/Item.tsx +5 -3
  1216. package/src/Item/ItemSwipeLayer.tsx +9 -0
  1217. package/src/Item/__tests__/ItemSwipeActions.a11y.chromium.spec.ts +1 -0
  1218. package/src/Item/__tests__/ItemSwipePinchZoom.a11y.chromium.spec.ts +186 -0
  1219. package/src/Item/useSwipeAction.ts +71 -5
  1220. package/src/Kbd/Kbd.test.tsx +95 -0
  1221. package/src/Kbd/Kbd.tsx +30 -23
  1222. package/src/Layer/__tests__/LayerReducedMotion.a11y.chromium.spec.ts +176 -0
  1223. package/src/Layer/__tests__/TouchTrigger.a11y.chromium.spec.ts +200 -0
  1224. package/src/Layer/layerAnimations.stylex.ts +22 -2
  1225. package/src/Layer/layerDismissalInvariants.test.tsx +9 -0
  1226. package/src/Layer/layerSlideRules.ts +141 -8
  1227. package/src/Layer/layerStack.ts +129 -62
  1228. package/src/Layer/modalOutlet.ts +156 -15
  1229. package/src/Layer/preserveAnimations.ts +304 -0
  1230. package/src/Layer/useLayer.doc.mjs +1 -1
  1231. package/src/Layer/useLayer.test.tsx +743 -0
  1232. package/src/Layer/useLayer.tsx +592 -53
  1233. package/src/Layer/useLayerDismissal.test.tsx +85 -2
  1234. package/src/Layer/useLayerDismissal.ts +12 -9
  1235. package/src/Layer/useTouchTrigger.ts +95 -41
  1236. package/src/Layout/Layout.tsx +18 -0
  1237. package/src/Layout/LayoutContent.tsx +5 -14
  1238. package/src/Layout/LayoutFooter.tsx +2 -0
  1239. package/src/Layout/LayoutHeader.tsx +2 -0
  1240. package/src/Layout/__tests__/Layout.a11y.chromium.spec.ts +1 -0
  1241. package/src/Layout/layoutEdges.stylex.ts +25 -0
  1242. package/src/Lightbox/Lightbox.test.tsx +83 -0
  1243. package/src/Lightbox/Lightbox.tsx +149 -125
  1244. package/src/Lightbox/LightboxKeyboard.a11y.browser.spec.ts +78 -0
  1245. package/src/Lightbox/LightboxViewport.a11y.browser.spec.ts +70 -0
  1246. package/src/Link/Link.spec.md +229 -0
  1247. package/src/Link/LinkProvider.spec.md +167 -0
  1248. package/src/Link/__tests__/Link.a11y.chromium.spec.ts +1 -0
  1249. package/src/Link/__tests__/Link.navigation.a11y.chromium.spec.ts +1 -0
  1250. package/src/List/List.spec.md +90 -33
  1251. package/src/List/ListItem.doc.mjs +3 -3
  1252. package/src/Markdown/Markdown.codeLanguages.test.tsx +137 -0
  1253. package/src/Markdown/Markdown.doc.mjs +12 -0
  1254. package/src/Markdown/Markdown.fr23.bench.ts +3 -1
  1255. package/src/Markdown/Markdown.fr23.perf.test.ts +45 -3
  1256. package/src/Markdown/Markdown.fr23.sampling.ts +13 -4
  1257. package/src/Markdown/Markdown.spec.md +71 -59
  1258. package/src/Markdown/Markdown.tsx +32 -2
  1259. package/src/Markdown/MarkdownTable.a11y.chromium.spec.ts +1 -0
  1260. package/src/Markdown/__tests__/MarkdownNesting.a11y.chromium.spec.ts +1 -0
  1261. package/src/MobileNav/MobileNav.spec.md +161 -64
  1262. package/src/MobileNav/MobileNav.test.tsx +27 -10
  1263. package/src/MobileNav/MobileNav.tsx +51 -38
  1264. package/src/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.ts +1 -0
  1265. package/src/MobileNav/__tests__/MobileNavWidth.a11y.chromium.spec.ts +103 -0
  1266. package/src/MoreMenu/MoreMenu.doc.mjs +2 -2
  1267. package/src/MoreMenu/MoreMenu.spec.md +88 -53
  1268. package/src/MultiSelector/CreateRow.a11y.chromium.spec.ts +1 -0
  1269. package/src/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.ts +1 -0
  1270. package/src/MultiSelector/MultiSelector.test.tsx +122 -10
  1271. package/src/MultiSelector/MultiSelector.tsx +24 -4
  1272. package/src/MultiSelector/OptionActions.a11y.chromium.spec.ts +1 -0
  1273. package/src/MultiSelector/__tests__/MultiSelector.a11y.chromium.spec.ts +1 -0
  1274. package/src/NavIcon/NavIcon.spec.md +66 -38
  1275. package/src/NavMenu/NavHeadingMenu.spec.md +100 -44
  1276. package/src/NavMenu/NavHeadingMenu.test.tsx +199 -1
  1277. package/src/NavMenu/NavHeadingMenuItem.tsx +54 -6
  1278. package/src/NumberInput/NumberInput.doc.mjs +6 -6
  1279. package/src/NumberInput/NumberInput.spec.md +248 -0
  1280. package/src/NumberInput/NumberInput.test.tsx +187 -14
  1281. package/src/NumberInput/NumberInput.tsx +86 -24
  1282. package/src/NumberInput/__tests__/NumberInput.a11y.chromium.spec.ts +1 -0
  1283. package/src/Pagination/Pagination.test.tsx +2 -2
  1284. package/src/Popover/Popover.doc.mjs +38 -2
  1285. package/src/Popover/Popover.spec.md +89 -10
  1286. package/src/Popover/Popover.test.tsx +340 -2
  1287. package/src/Popover/Popover.tsx +401 -35
  1288. package/src/Popover/PopoverPresentation.test.tsx +952 -0
  1289. package/src/Popover/__tests__/PopoverSecondDocument.a11y.chromium.spec.ts +205 -0
  1290. package/src/Popover/index.ts +5 -1
  1291. package/src/Popover/lazyPopoverBottomSheet.ts +57 -0
  1292. package/src/Popover/usePopover.tsx +11 -5
  1293. package/src/PowerSearch/PowerSearch.spec.md +423 -53
  1294. package/src/PowerSearch/PowerSearch.test.tsx +77 -1
  1295. package/src/PowerSearch/PowerSearch.tsx +7 -5
  1296. package/src/ProgressBar/ProgressBar.test.tsx +12 -0
  1297. package/src/ProgressBar/ProgressBar.tsx +18 -0
  1298. package/src/ProgressBar/__tests__/ProgressBar.a11y.chromium.spec.ts +1 -0
  1299. package/src/RadioList/RadioList.test.tsx +34 -7
  1300. package/src/RadioList/RadioListItem.press.source-build.test.mjs +80 -0
  1301. package/src/RadioList/RadioListItem.tsx +26 -12
  1302. package/src/RadioList/__tests__/RadioGroup.a11y.chromium.spec.ts +1 -0
  1303. package/src/Resizable/__tests__/ResizeHandle.a11y.chromium.spec.ts +1 -0
  1304. package/src/ScrollableArea/ScrollableArea.spec.md +6 -5
  1305. package/src/ScrollableArea/ScrollableArea.test.tsx +5 -0
  1306. package/src/ScrollableArea/ScrollableArea.tsx +4 -0
  1307. package/src/SelectableCard/SelectableCard.doc.mjs +7 -6
  1308. package/src/SelectableCard/SelectableCard.test.tsx +11 -1
  1309. package/src/SelectableCard/SelectableCard.tsx +49 -33
  1310. package/src/Selector/Selector.spec.md +12 -4
  1311. package/src/Selector/Selector.test.tsx +114 -8
  1312. package/src/Selector/Selector.tsx +19 -4
  1313. package/src/Selector/__tests__/EmptyStateAnnouncement.a11y.chromium.spec.ts +1 -0
  1314. package/src/Selector/__tests__/Listbox.a11y.chromium.spec.ts +1 -0
  1315. package/src/Selector/__tests__/Selector.a11y.chromium.spec.ts +1 -0
  1316. package/src/Selector/__tests__/Selector.combobox.a11y.chromium.spec.ts +1 -0
  1317. package/src/SideNav/SideNav.spec.md +51 -30
  1318. package/src/SideNav/SideNav.test.tsx +290 -25
  1319. package/src/SideNav/SideNavCollapseButton.spec.md +161 -0
  1320. package/src/SideNav/SideNavHeading.spec.md +219 -0
  1321. package/src/SideNav/SideNavHeading.tsx +41 -0
  1322. package/src/SideNav/SideNavItem.spec.md +246 -0
  1323. package/src/SideNav/SideNavItem.tsx +40 -9
  1324. package/src/SideNav/SideNavSection.spec.md +153 -0
  1325. package/src/Skeleton/Skeleton.spec.md +99 -42
  1326. package/src/Skeleton/Skeleton.test.tsx +108 -1
  1327. package/src/Skeleton/Skeleton.tsx +30 -2
  1328. package/src/Slider/Slider.test.tsx +172 -0
  1329. package/src/Slider/Slider.tsx +60 -12
  1330. package/src/Slider/__tests__/Slider.a11y.chromium.spec.ts +1 -0
  1331. package/src/Spinner/Spinner.spec.md +231 -0
  1332. package/src/StatusDot/StatusDot.spec.md +139 -51
  1333. package/src/StatusDot/StatusDot.test.tsx +13 -0
  1334. package/src/StatusDot/StatusDot.tsx +27 -0
  1335. package/src/Stepper/Step.spec.md +206 -0
  1336. package/src/Stepper/Step.tsx +19 -3
  1337. package/src/Stepper/Stepper.test.tsx +50 -0
  1338. package/src/Switch/Switch.focusRing.source-build.test.mjs +81 -0
  1339. package/src/Switch/Switch.tsx +11 -9
  1340. package/src/Switch/__tests__/Switch.a11y.chromium.spec.ts +1 -0
  1341. package/src/Switch/switch.markers.stylex.ts +7 -2
  1342. package/src/TabList/Tab.spec.md +201 -0
  1343. package/src/TabList/Tab.tsx +7 -1
  1344. package/src/TabList/TabList.doc.mjs +3 -3
  1345. package/src/TabList/TabMenu.spec.md +196 -0
  1346. package/src/TabList/TabMenu.tsx +2 -0
  1347. package/src/TabList/__tests__/TabListOverflow.interaction.browser.spec.ts +99 -0
  1348. package/src/TabList/__tests__/Tabs.a11y.chromium.spec.ts +1 -0
  1349. package/src/Table/Table.spec.md +54 -30
  1350. package/src/Table/TableCell.tsx +6 -0
  1351. package/src/Table/TableHeaderCell.tsx +2 -0
  1352. package/src/Table/__tests__/Table.a11y.chromium.spec.ts +129 -0
  1353. package/src/Table/__tests__/Table.a11y.contracts.ts +35 -0
  1354. package/src/Table/__tests__/Table.a11y.renders.tsx +112 -0
  1355. package/src/Table/__tests__/Table.a11y.states.ts +140 -0
  1356. package/src/Table/__tests__/Table.a11y.test.tsx +198 -0
  1357. package/src/Table/__tests__/TableMinWidth.a11y.chromium.spec.ts +1 -0
  1358. package/src/Table/__tests__/TableScroll.a11y.chromium.spec.ts +1 -0
  1359. package/src/Table/__tests__/TableStickyDividers.a11y.browser.spec.ts +560 -0
  1360. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +23 -8
  1361. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +91 -9
  1362. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +120 -5
  1363. package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.test.tsx +174 -0
  1364. package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.ts +86 -0
  1365. package/src/Table/plugins/sortable/useTableSortable.test.tsx +0 -12
  1366. package/src/Table/plugins/stickyColumns/useTableStickyColumns.test.tsx +51 -1
  1367. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +291 -12
  1368. package/src/Table/rowDivider.ts +154 -0
  1369. package/src/Text/Text.spec.md +114 -127
  1370. package/src/TextArea/TextArea.doc.mjs +6 -6
  1371. package/src/TextArea/TextArea.spec.md +164 -64
  1372. package/src/TextArea/TextArea.test.tsx +65 -6
  1373. package/src/TextArea/TextArea.tsx +27 -15
  1374. package/src/TextInput/TextInput.doc.mjs +8 -8
  1375. package/src/TextInput/TextInput.spec.md +258 -0
  1376. package/src/TextInput/TextInput.test.tsx +83 -10
  1377. package/src/TextInput/TextInput.tsx +46 -22
  1378. package/src/TextInput/__tests__/TextInput.a11y.chromium.spec.ts +1 -0
  1379. package/src/Thumbnail/Thumbnail.doc.mjs +1 -2
  1380. package/src/Thumbnail/Thumbnail.spec.md +244 -0
  1381. package/src/Thumbnail/Thumbnail.test.tsx +120 -7
  1382. package/src/Thumbnail/Thumbnail.tsx +77 -31
  1383. package/src/TimeInput/TimeInput.spec.md +273 -0
  1384. package/src/TimeInput/TimeInput.tsx +12 -4
  1385. package/src/TimeInput/TouchTimeField.tsx +2 -1
  1386. package/src/Timestamp/Timestamp.spec.md +252 -0
  1387. package/src/Toast/ToastViewport.modalHost.test.tsx +630 -5
  1388. package/src/Toast/ToastViewport.tsx +27 -2
  1389. package/src/ToggleButton/ToggleButton.spec.md +256 -0
  1390. package/src/ToggleButton/ToggleButtonGroup.spec.md +194 -0
  1391. package/src/ToggleButton/__tests__/ToggleButton.a11y.chromium.spec.ts +1 -0
  1392. package/src/Token/Token.spec.md +271 -0
  1393. package/src/Token/__tests__/TokenRemoveTarget.a11y.chromium.spec.ts +1 -0
  1394. package/src/Tokenizer/Tokenizer.props-type.test.tsx +126 -0
  1395. package/src/Tokenizer/Tokenizer.spec.md +312 -71
  1396. package/src/Tokenizer/Tokenizer.ssr.test.tsx +196 -0
  1397. package/src/Tokenizer/Tokenizer.test.tsx +70 -16
  1398. package/src/Tokenizer/Tokenizer.tsx +651 -113
  1399. package/src/Tokenizer/TokenizerBottomSheet.test.tsx +2719 -0
  1400. package/src/Tokenizer/TokenizerBottomSheet.tsx +957 -0
  1401. package/src/Tokenizer/__tests__/TokenizerEndLane.a11y.chromium.spec.ts +505 -0
  1402. package/src/Tokenizer/useEndLaneReserve.ts +3 -2
  1403. package/src/Toolbar/Toolbar.spec.md +101 -48
  1404. package/src/Toolbar/__tests__/Toolbar.a11y.chromium.spec.ts +1 -0
  1405. package/src/Tooltip/Tooltip.test.tsx +171 -3
  1406. package/src/Tooltip/__tests__/Tooltip.a11y.chromium.spec.ts +1 -0
  1407. package/src/Tooltip/__tests__/Tooltip.a11y.states.ts +2 -2
  1408. package/src/Tooltip/__tests__/TooltipFocusReturn.a11y.chromium.spec.ts +1 -0
  1409. package/src/Tooltip/__tests__/TooltipHoverBridge.a11y.chromium.spec.ts +1 -0
  1410. package/src/Tooltip/__tests__/TooltipTallContent.a11y.browser.spec.ts +646 -0
  1411. package/src/Tooltip/__tests__/TooltipTallContentTracking.a11y.browser.spec.ts +1162 -0
  1412. package/src/Tooltip/useTooltip.tsx +7 -2
  1413. package/src/TopNav/TopNav.spec.md +190 -0
  1414. package/src/TopNav/TopNavHeading.spec.md +204 -0
  1415. package/src/TopNav/TopNavItem.spec.md +189 -0
  1416. package/src/TopNav/TopNavMegaMenu.reduced-motion.source-build.test.mjs +83 -0
  1417. package/src/TopNav/TopNavMegaMenu.spec.md +190 -0
  1418. package/src/TopNav/TopNavMegaMenu.tsx +21 -4
  1419. package/src/TopNav/TopNavMegaMenuFeaturedCard.spec.md +150 -0
  1420. package/src/TopNav/TopNavMegaMenuItem.spec.md +155 -0
  1421. package/src/TopNav/TopNavMenu.spec.md +195 -0
  1422. package/src/TopNav/__tests__/TopNavMobileLongHeading.a11y.chromium.spec.ts +1 -0
  1423. package/src/TreeList/TreeList.doc.mjs +13 -0
  1424. package/src/TreeList/TreeList.spec.md +51 -35
  1425. package/src/TreeList/TreeList.tsx +234 -2
  1426. package/src/TreeList/TreeListItem.tsx +12 -2
  1427. package/src/TreeList/__tests__/TreeList.a11y.chromium.spec.ts +1 -0
  1428. package/src/TreeList/__tests__/TreeListRowNames.a11y.chromium.spec.ts +1 -0
  1429. package/src/Typeahead/BaseTypeahead.tsx +14 -2
  1430. package/src/Typeahead/Typeahead.test.tsx +114 -1
  1431. package/src/Typeahead/Typeahead.tsx +34 -16
  1432. package/src/VisuallyHidden/VisuallyHidden.doc.mjs +1 -1
  1433. package/src/VisuallyHidden/VisuallyHidden.spec.md +170 -0
  1434. package/src/VisuallyHidden/VisuallyHidden.test.tsx +39 -0
  1435. package/src/VisuallyHidden/VisuallyHidden.tsx +38 -5
  1436. package/src/__tests__/BusyOwnerAnnouncement.test.tsx +66 -5
  1437. package/src/__tests__/CardPress.a11y.chromium.spec.ts +353 -0
  1438. package/src/__tests__/DisabledTriggerFocus.a11y.chromium.spec.ts +2 -1
  1439. package/src/__tests__/PressedState.a11y.chromium.spec.ts +1 -0
  1440. package/src/__tests__/pressState.ts +43 -1
  1441. package/src/__tests__/unthemedLength.ts +34 -0
  1442. package/src/gestures/GestureArena.ts +966 -0
  1443. package/src/gestures/GestureRecognizer.ts +626 -0
  1444. package/src/gestures/LongPressGestureRecognizer.ts +186 -0
  1445. package/src/gestures/PanGestureRecognizer.ts +410 -0
  1446. package/src/gestures/TapGestureRecognizer.ts +192 -0
  1447. package/src/gestures/VelocityTracker.ts +194 -0
  1448. package/src/gestures/__tests__/LongPressGestureRecognizer.test.ts +141 -0
  1449. package/src/gestures/__tests__/PanGestureRecognizer.test.ts +327 -0
  1450. package/src/gestures/__tests__/TapGestureRecognizer.test.ts +154 -0
  1451. package/src/gestures/__tests__/VelocityTracker.test.ts +261 -0
  1452. package/src/gestures/__tests__/arena.test.ts +824 -0
  1453. package/src/gestures/__tests__/arenaContinuous.test.ts +207 -0
  1454. package/src/gestures/__tests__/arenaTapLongPress.test.ts +211 -0
  1455. package/src/gestures/__tests__/harness.ts +204 -0
  1456. package/src/gestures/geometry.ts +55 -0
  1457. package/src/gestures/types.ts +161 -0
  1458. package/src/hooks/AnnounceRenderedText.tsx +27 -0
  1459. package/src/hooks/ModalAnnounceProvider.tsx +155 -0
  1460. package/src/hooks/__tests__/MenuPressShadowRoot.a11y.chromium.spec.ts +98 -4
  1461. package/src/hooks/actionGroupTracker.exports.test.ts +28 -0
  1462. package/src/hooks/actionGroupTracker.test.ts +510 -0
  1463. package/src/hooks/actionGroupTracker.ts +449 -0
  1464. package/src/hooks/index.ts +6 -0
  1465. package/src/hooks/modalAnnounce.ts +439 -0
  1466. package/src/hooks/useAdaptivePresentation.ts +46 -9
  1467. package/src/hooks/useAnimatedLayout.doc.mjs +101 -0
  1468. package/src/hooks/useAnimatedLayout.ts +61 -0
  1469. package/src/hooks/useAnnounce.doc.mjs +4 -4
  1470. package/src/hooks/useAnnounce.modal.test.tsx +1291 -0
  1471. package/src/hooks/useAnnounce.test.tsx +64 -4
  1472. package/src/hooks/useAnnounce.ts +452 -28
  1473. package/src/hooks/useAnnounceRenderedText.adopters.test.tsx +226 -0
  1474. package/src/hooks/useAnnounceRenderedText.ts +81 -11
  1475. package/src/hooks/useBusyAnnouncement.adopters.test.tsx +69 -0
  1476. package/src/hooks/useBusyAnnouncement.test.tsx +112 -0
  1477. package/src/hooks/useBusyAnnouncement.ts +64 -54
  1478. package/src/hooks/useFocusTrap.doc.mjs +3 -3
  1479. package/src/hooks/useFocusTrap.test.tsx +135 -2
  1480. package/src/hooks/useFocusTrap.ts +59 -27
  1481. package/src/hooks/useMenuPress.doc.mjs +2 -2
  1482. package/src/hooks/useMenuPress.test.tsx +5 -2
  1483. package/src/hooks/useMenuPress.ts +72 -37
  1484. package/src/hooks/useScrollableArea.test.tsx +159 -0
  1485. package/src/hooks/useScrollableArea.ts +39 -5
  1486. package/src/i18n/generated-locales/en.generated.ts +35 -0
  1487. package/src/i18n/generated-locales/pseudo.generated.ts +37 -0
  1488. package/src/internal/tokenizer-presentation.test.ts +29 -0
  1489. package/src/internal/tokenizer-presentation.ts +25 -0
  1490. package/src/internal/touch.test.ts +44 -0
  1491. package/src/internal/touch.ts +41 -0
  1492. package/src/motion/LayoutChangeSnapshot.tsx +50 -0
  1493. package/src/motion/MEASUREMENTS.md +271 -0
  1494. package/src/motion/README.md +218 -0
  1495. package/src/motion/__tests__/animatedLayout.interaction.browser.spec.ts +1507 -0
  1496. package/src/motion/__tests__/animatedLayoutAdopters.interaction.browser.spec.ts +217 -0
  1497. package/src/motion/__tests__/animatedLayoutBundle.ts +17 -0
  1498. package/src/motion/animatedLayout.boundary.test.ts +139 -0
  1499. package/src/motion/animatedLayout.test.ts +965 -0
  1500. package/src/motion/animatedLayout.ts +1322 -0
  1501. package/src/motion/animatedLayoutAdopters.test.tsx +500 -0
  1502. package/src/motion/animator.test.ts +2653 -0
  1503. package/src/motion/animator.ts +2794 -0
  1504. package/src/motion/bezier.test.ts +52 -0
  1505. package/src/motion/bezier.ts +64 -0
  1506. package/src/motion/coast.test.ts +99 -0
  1507. package/src/motion/coast.ts +150 -0
  1508. package/src/motion/decay.test.ts +120 -0
  1509. package/src/motion/decay.ts +126 -0
  1510. package/src/motion/projection.test.ts +107 -0
  1511. package/src/motion/projection.ts +116 -0
  1512. package/src/motion/reducedMotion.stylex.ts +41 -0
  1513. package/src/motion/reducedMotion.test.ts +129 -0
  1514. package/src/motion/reducedMotion.ts +94 -0
  1515. package/src/motion/reducedMotionPlan.test.ts +182 -0
  1516. package/src/motion/reducedMotionPlan.ts +263 -0
  1517. package/src/motion/resolveSnapPoint.test.ts +189 -0
  1518. package/src/motion/resolveSnapPoint.ts +169 -0
  1519. package/src/motion/roleValue.ts +105 -0
  1520. package/src/motion/roles.test.ts +256 -0
  1521. package/src/motion/roles.ts +262 -0
  1522. package/src/motion/rubberBand.test.ts +88 -0
  1523. package/src/motion/rubberBand.ts +115 -0
  1524. package/src/motion/selectPage.test.ts +31 -0
  1525. package/src/motion/selectPage.ts +55 -0
  1526. package/src/motion/spring.test.ts +650 -0
  1527. package/src/motion/spring.ts +551 -0
  1528. package/src/motion/uikit/gestures.test.ts +89 -0
  1529. package/src/motion/uikit/gestures.ts +359 -0
  1530. package/src/motion/uikit/index.ts +80 -0
  1531. package/src/motion/uikit/navigation.ts +83 -0
  1532. package/src/motion/uikit/scroll.ts +141 -0
  1533. package/src/motion/uikit/springRows.test.ts +71 -0
  1534. package/src/motion/uikit/springs.ts +514 -0
  1535. package/src/motion/uikit/timing.ts +210 -0
  1536. package/src/motion/uikit/uikit.test.ts +364 -0
  1537. package/src/motion/uikit/values.test.ts +110 -0
  1538. package/src/reset.a11y.chromium.spec.ts +1 -0
  1539. package/src/reset.until-found.a11y.browser.spec.ts +1 -0
  1540. package/src/serverSafeComponents.test.ts +10 -0
  1541. package/src/tailwind-theme.css +51 -1
  1542. package/src/tailwind-theme.test.ts +51 -0
  1543. package/src/theme/Theme.test.tsx +28 -0
  1544. package/src/theme/__tests__/SpacingRootFontSize.a11y.chromium.spec.ts +1 -0
  1545. package/src/theme/declarationBoundary.ts +282 -1
  1546. package/src/theme/defineTheme.test.ts +529 -12
  1547. package/src/theme/defineTheme.ts +175 -19
  1548. package/src/theme/derivedVarRegistry.test.ts +28 -5
  1549. package/src/theme/derivedVarRegistry.ts +4 -0
  1550. package/src/theme/expandMotionScale.test.ts +17 -0
  1551. package/src/theme/generateThemeRules.ts +772 -35
  1552. package/src/theme/index.ts +3 -0
  1553. package/src/theme/onMediaTokens.test.ts +186 -0
  1554. package/src/theme/statusColor.ts +189 -0
  1555. package/src/theme/statusRoleDerivation.ts +289 -0
  1556. package/src/theme/themeAdaptations.test.ts +412 -0
  1557. package/src/theme/themeAdaptations.ts +43 -1
  1558. package/src/theme/tokens.stylex.ts +31 -2
  1559. package/src/theme/tokens.test.ts +96 -1
  1560. package/src/theme/tokens.ts +23 -1
  1561. package/src/theme/useTheme.ts +10 -4
  1562. package/src/utils/customPropertyArmLayering.test.ts +131 -0
  1563. package/src/utils/edgeAutoscroll.test.ts +192 -0
  1564. package/src/utils/edgeAutoscroll.ts +111 -0
  1565. package/src/utils/hitArea.test.ts +628 -0
  1566. package/src/utils/hitArea.ts +770 -0
  1567. package/src/utils/touchPresentation.test.ts +323 -0
  1568. package/src/utils/touchPresentation.ts +153 -0
@@ -0,0 +1,1322 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file animatedLayout.ts
5
+ * @input The DOM (layout rectangles, computed style), Web Animations, the
6
+ * internal `springs.settle` motion role (motion/roles.ts) and the Reduce Motion
7
+ * cross-fade clock (uikit/timing.ts)
8
+ * @output Exports `createAnimatedLayout` and the opaque `AnimatedLayout`
9
+ * handle, `reportLayoutChange`, `playLayoutChange`, `holdLayoutExit` /
10
+ * `releaseLayoutExit` and `applyLayoutChangeTransition`: the one module
11
+ * that produces the
12
+ * size-change glide `spec:AST-105` defines
13
+ * (`architecture:react-component-runtime` INV12)
14
+ * @position Motion foundation, internal to core. A handle comes from the
15
+ * public `useAnimatedLayout` hook; a component that takes it reports its
16
+ * size changes through this module.
17
+ *
18
+ * How it works:
19
+ * - `measureBefore()` runs before the change commits: from the changed
20
+ * element it walks up to the handle's container and, at each level,
21
+ * records the rectangles of the element siblings after it and before it (a
22
+ * centered, end-aligned or space-between row, or `order`, moves those too),
23
+ * through `parentElement`, `nextElementSibling` and
24
+ * `previousElementSibling`, descending only into an element with
25
+ * `display: contents` (it has no box). Each level's walk stops at the first
26
+ * sibling outside the band a change can move content into view from: the
27
+ * area's visible part plus one viewport, or the changed element's size if
28
+ * larger, above and below. So its cost grows with depth plus the siblings
29
+ * near the visible part, never with a list's length.
30
+ * - `animate()` runs after the commit (a layout effect). Every change in the
31
+ * same area reported in one frame is measured together after the commit,
32
+ * once, in a microtask, so each element moves once, by its total change.
33
+ * - An element moves only when its rectangle changed and it is in the area's
34
+ * visible part, before or after. Absolute, fixed, top-layer, hidden and
35
+ * zero-size elements are skipped (an absolute child rides with its moving
36
+ * parent); a stuck sticky element does not change rectangle, so it stays.
37
+ * - The move is a compositor-only `translate` (replace composition) from the
38
+ * old place to the new one, sampled from `springs.settle` into linear
39
+ * keyframes and corrected for a scaled ancestor. An element already gliding
40
+ * keeps that motion and adds the new move: the rest of its curve and the
41
+ * new move are summed into one new glide, velocity included. Nothing
42
+ * animates height, and nothing scrolls the area.
43
+ * - A measurement no commit claims by the next frame is dropped.
44
+ * - The changed element plays its own entrance on the same spring, started in
45
+ * the same frame (`playLayoutChange`), or its exit: kept where it is while
46
+ * it gives up its space and conceals (`holdLayoutExit`). A disclosure's
47
+ * indicator turns on the same motion (`applyLayoutChangeTransition`).
48
+ * - Every pointer (`spec:AST-105` FR5). Under Reduce Motion nothing travels
49
+ * (`design:reduced-motion` DR1–DR3): a cross-fade under a coarse primary
50
+ * pointer, an immediate change otherwise.
51
+ * - Without a handle nothing happens: the component keeps its jump
52
+ * (`spec:AST-105` FR2).
53
+ */
54
+
55
+ import {motionRole} from './roles';
56
+ import {isSpring} from './roleValue';
57
+ import {solveSpring, toSpring, type SpringDescription} from './spring';
58
+ import {registerSpringsTable, SETTLE_SPRING} from './uikit/springs';
59
+ import {reducedMotionCrossFade} from './uikit/timing';
60
+
61
+ /** The shared motion role (`spec:AST-105` FR4). */
62
+ const ROLE_ID = 'springs.settle';
63
+ /** Below this many pixels a shift is not worth a move. */
64
+ const MIN_SHIFT_PX = 0.5;
65
+ /** The touch cross-fade's cap (`design:reduced-motion` DR2). */
66
+ const CROSS_FADE_CAP_MS = 200;
67
+ /** Keyframes per second the spring is sampled at. */
68
+ const SAMPLES_PER_SECOND = 60;
69
+
70
+ // ---------------------------------------------------------------------------
71
+ // Motion
72
+ // ---------------------------------------------------------------------------
73
+
74
+ /** How a change plays under the reader's settings. */
75
+ type LayoutMotion =
76
+ | {readonly kind: 'spring'; readonly progress: SpringProgress}
77
+ | {
78
+ readonly kind: 'fade';
79
+ readonly durationMs: number;
80
+ readonly easing: string;
81
+ }
82
+ | {readonly kind: 'instant'};
83
+
84
+ /** The settle spring as remaining distance (1 → 0) over its duration. */
85
+ interface SpringProgress {
86
+ readonly durationMs: number;
87
+ /** Remaining fraction of the move at `t` ms. */
88
+ remaining(t: number): number;
89
+ }
90
+
91
+ function matches(element: Element, query: string): boolean {
92
+ const view = element.ownerDocument.defaultView;
93
+ return (
94
+ typeof view?.matchMedia === 'function' && view.matchMedia(query).matches
95
+ );
96
+ }
97
+
98
+ /**
99
+ * `springs.settle` from the internal role registry: one shared value for the
100
+ * glide, the changed element and the indicator. Motion roles are internal
101
+ * (`spec:AST-094` DEC-11): no theme, scope or custom property changes it.
102
+ */
103
+ function settleSpring(): SpringDescription {
104
+ registerSpringsTable();
105
+ const value = motionRole(ROLE_ID)?.value;
106
+ return isSpring(value) ? value : SETTLE_SPRING;
107
+ }
108
+
109
+ function springProgress(description: SpringDescription): SpringProgress {
110
+ const curve = solveSpring(toSpring(description), {from: 1, to: 0});
111
+ const durationMs = Math.max(1, curve.settleTime(0.001) * 1000);
112
+ return {
113
+ durationMs,
114
+ remaining: t => (t >= durationMs ? 0 : curve.value(t / 1000)),
115
+ };
116
+ }
117
+
118
+ /** The motion a change in `area` plays now. */
119
+ function layoutMotion(area: Element): LayoutMotion {
120
+ if (matches(area, '(prefers-reduced-motion: reduce)')) {
121
+ if (!matches(area, '(pointer: coarse)')) {
122
+ return {kind: 'instant'};
123
+ }
124
+ const [x1, y1, x2, y2] = reducedMotionCrossFade.curve;
125
+ return {
126
+ kind: 'fade',
127
+ durationMs: Math.min(
128
+ CROSS_FADE_CAP_MS,
129
+ reducedMotionCrossFade.durationMs,
130
+ ),
131
+ easing: `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`,
132
+ };
133
+ }
134
+ return {kind: 'spring', progress: springProgress(settleSpring())};
135
+ }
136
+
137
+ /** Linear keyframes over `durationMs`, one per frame, from `frame(t ms)`. */
138
+ function sampleOver(
139
+ durationMs: number,
140
+ frame: (t: number) => Keyframe,
141
+ ): Keyframe[] {
142
+ const count = Math.max(
143
+ 2,
144
+ Math.ceil((durationMs / 1000) * SAMPLES_PER_SECOND) + 1,
145
+ );
146
+ const keyframes: Keyframe[] = [];
147
+ for (let i = 0; i < count; i++) {
148
+ const offset = i / (count - 1);
149
+ keyframes.push({...frame(offset * durationMs), offset});
150
+ }
151
+ return keyframes;
152
+ }
153
+
154
+ /** Linear keyframes sampled from the spring, one per frame. */
155
+ function sampleKeyframes(
156
+ progress: SpringProgress,
157
+ frame: (remaining: number) => Keyframe,
158
+ ): Keyframe[] {
159
+ return sampleOver(progress.durationMs, t => frame(progress.remaining(t)));
160
+ }
161
+
162
+ /** The spring as a CSS `linear()` easing, for a CSS transition. */
163
+ function linearEasing(progress: SpringProgress): string {
164
+ const stops: string[] = [];
165
+ const count = 24;
166
+ for (let i = 0; i <= count; i++) {
167
+ const fraction = i / count;
168
+ const value = 1 - progress.remaining(fraction * progress.durationMs);
169
+ stops.push(`${round(value)} ${round(fraction * 100)}%`);
170
+ }
171
+ return `linear(${stops.join(', ')})`;
172
+ }
173
+
174
+ function round(value: number): number {
175
+ return Math.round(value * 1000) / 1000;
176
+ }
177
+
178
+ // ---------------------------------------------------------------------------
179
+ // Playing
180
+ // ---------------------------------------------------------------------------
181
+
182
+ /**
183
+ * Play `keyframes` on `element`. Every option here (linear easing over sampled
184
+ * keyframes, replace composition) is one any Web Animations engine takes, so
185
+ * a failure means no Web Animations at all: the change then lands at once.
186
+ */
187
+ function safeAnimate(
188
+ element: Element,
189
+ keyframes: Keyframe[],
190
+ options: KeyframeAnimationOptions,
191
+ ): Animation | null {
192
+ if (typeof (element as HTMLElement).animate !== 'function') {
193
+ return null;
194
+ }
195
+ let animation: Animation;
196
+ try {
197
+ animation = (element as HTMLElement).animate(keyframes, options);
198
+ } catch {
199
+ return null;
200
+ }
201
+ ours.add(animation);
202
+ // Started on the document timeline's current time, not on the next frame:
203
+ // a retargeted glide keeps moving through the frame it is replaced in, and
204
+ // every animation of one change shares the same start.
205
+ const now = element.ownerDocument.timeline?.currentTime;
206
+ if (now != null) {
207
+ animation.startTime = now;
208
+ }
209
+ return animation;
210
+ }
211
+
212
+ /** Every animation this module started, so it can tell the app's apart. */
213
+ const ours = new WeakSet<Animation>();
214
+
215
+ const TRANSFORM_PROPERTIES = ['transform', 'translate', 'rotate', 'scale'];
216
+
217
+ /**
218
+ * Whether the app moves `element` itself: its own `transform`, `translate`,
219
+ * `rotate` or `scale`, or a running animation of one this module did not
220
+ * start.
221
+ */
222
+ function movedByApp(element: Element): boolean {
223
+ const style = element.ownerDocument.defaultView?.getComputedStyle(element);
224
+ if (
225
+ style != null &&
226
+ TRANSFORM_PROPERTIES.some(property => {
227
+ const value = style.getPropertyValue(property);
228
+ return value !== '' && value !== 'none';
229
+ })
230
+ ) {
231
+ return true;
232
+ }
233
+ if (typeof element.getAnimations !== 'function') {
234
+ return false;
235
+ }
236
+ return element.getAnimations().some(animation => {
237
+ if (ours.has(animation)) {
238
+ return false;
239
+ }
240
+ const effect = animation.effect;
241
+ if (!(effect instanceof KeyframeEffect)) {
242
+ return false;
243
+ }
244
+ return effect
245
+ .getKeyframes()
246
+ .some(frame => TRANSFORM_PROPERTIES.some(property => property in frame));
247
+ });
248
+ }
249
+
250
+ /** An offset in the element's own px, as a function of ms into a glide. */
251
+ type OffsetCurve = (t: number) => {readonly x: number; readonly y: number};
252
+
253
+ const AT_REST: OffsetCurve = () => ({x: 0, y: 0});
254
+
255
+ /** A glide an element is playing, so a new change can retarget it. */
256
+ interface Glide {
257
+ readonly animation: Animation;
258
+ readonly offsetAt: OffsetCurve;
259
+ readonly durationMs: number;
260
+ }
261
+
262
+ const glides = new WeakMap<Element, Glide>();
263
+
264
+ // ---------------------------------------------------------------------------
265
+ // Handles
266
+ // ---------------------------------------------------------------------------
267
+
268
+ const AREA = Symbol('astryx.animatedLayout.area');
269
+
270
+ /**
271
+ * The opaque handle `useAnimatedLayout` returns (`spec:AST-105` FR1): no
272
+ * public members. A component that receives it reports its size changes to
273
+ * the handle's container, the area the glide stays inside.
274
+ */
275
+ export interface AnimatedLayout {
276
+ readonly [AREA]: () => Element | null;
277
+ }
278
+
279
+ /** A handle over `area` (the container element, read when a change runs). */
280
+ export function createAnimatedLayout(
281
+ area: () => Element | null,
282
+ ): AnimatedLayout {
283
+ // Not enumerable and frozen: the handle shows no fields to a caller.
284
+ return Object.freeze(
285
+ Object.defineProperty({}, AREA, {value: area}),
286
+ ) as AnimatedLayout;
287
+ }
288
+
289
+ function areaOf(handle: AnimatedLayout, element: Element): Element | null {
290
+ const area = handle[AREA]();
291
+ return area != null && area !== element && area.contains(element)
292
+ ? area
293
+ : null;
294
+ }
295
+
296
+ // ---------------------------------------------------------------------------
297
+ // The walk
298
+ // ---------------------------------------------------------------------------
299
+
300
+ /**
301
+ * Whether `element` takes part: in flow, rendered, not in the top layer.
302
+ * `display: contents` is handled by the caller.
303
+ */
304
+ function takesPart(element: Element, style: CSSStyleDeclaration): boolean {
305
+ if (
306
+ style.display === 'none' ||
307
+ style.visibility === 'hidden' ||
308
+ style.position === 'absolute' ||
309
+ style.position === 'fixed'
310
+ ) {
311
+ return false;
312
+ }
313
+ try {
314
+ if (element.matches(':popover-open, :modal')) {
315
+ return false;
316
+ }
317
+ } catch {
318
+ // An engine without these pseudo-classes has no top layer to skip.
319
+ }
320
+ return true;
321
+ }
322
+
323
+ /**
324
+ * The band of the page a change can move content into or out of view: the
325
+ * area's visible part, extended above and below by one viewport or by the
326
+ * size of every element changing in the frame, whichever is larger (a
327
+ * collapse pulls content up by at most its size, and changes in one frame
328
+ * add up). Content outside it before the change stays outside it, so the
329
+ * walk stops there.
330
+ */
331
+ interface Band {
332
+ /** Its top edge, in client px. */
333
+ readonly start: number;
334
+ /** Its bottom edge, in client px. */
335
+ readonly end: number;
336
+ }
337
+
338
+ function bandFor(visible: DOMRect, reach: number): Band {
339
+ return {start: visible.top - reach, end: visible.bottom + reach};
340
+ }
341
+
342
+ /**
343
+ * What one frame's walks read, kept so a level two changes share, or a walk
344
+ * repeated when the band grows, reads each element once.
345
+ */
346
+ interface WalkCache {
347
+ readonly rects: Map<Element, DOMRect>;
348
+ /** Whether the element takes part, or `contents` for a boxless element. */
349
+ readonly parts: Map<Element, boolean | 'contents'>;
350
+ }
351
+
352
+ function partOf(element: Element, cache: WalkCache): boolean | 'contents' {
353
+ let part = cache.parts.get(element);
354
+ if (part === undefined) {
355
+ const style = element.ownerDocument.defaultView?.getComputedStyle(element);
356
+ part =
357
+ style == null
358
+ ? false
359
+ : style.display === 'contents'
360
+ ? 'contents'
361
+ : takesPart(element, style);
362
+ cache.parts.set(element, part);
363
+ }
364
+ return part;
365
+ }
366
+
367
+ /**
368
+ * Whether a container lays its children out across the block direction, so
369
+ * DOM order does not run down the page: multi-column, a wrapping column flex
370
+ * box, or a grid that flows by column. The band says nothing about where its
371
+ * later children sit, so a walk there runs through the level.
372
+ */
373
+ function flowsAcross(container: Element | null): boolean {
374
+ if (container == null) {
375
+ return false;
376
+ }
377
+ const style =
378
+ container.ownerDocument.defaultView?.getComputedStyle(container);
379
+ if (style == null) {
380
+ return false;
381
+ }
382
+ const count = style.getPropertyValue('column-count');
383
+ const width = style.getPropertyValue('column-width');
384
+ return (
385
+ (count !== '' && count !== 'auto') ||
386
+ (width !== '' && width !== 'auto') ||
387
+ (style.display.includes('flex') &&
388
+ style.flexDirection.startsWith('column') &&
389
+ style.flexWrap.startsWith('wrap')) ||
390
+ (style.display.includes('grid') &&
391
+ style.getPropertyValue('grid-auto-flow').startsWith('column'))
392
+ );
393
+ }
394
+
395
+ /**
396
+ * The box a sticky element sticks to: its nearest scrolling ancestor's, or
397
+ * the viewport.
398
+ */
399
+ function scrollportOf(element: Element): {start: number; end: number} {
400
+ const view = element.ownerDocument.defaultView;
401
+ for (
402
+ let node = element.parentElement;
403
+ node != null && node !== element.ownerDocument.documentElement;
404
+ node = node.parentElement
405
+ ) {
406
+ const overflow = view?.getComputedStyle(node).overflowY ?? 'visible';
407
+ if (
408
+ node === element.ownerDocument.body &&
409
+ view?.getComputedStyle(element.ownerDocument.documentElement)
410
+ .overflowY === 'visible'
411
+ ) {
412
+ // The body's overflow applies to the viewport while the root's is
413
+ // visible: the body is no scroller of its own.
414
+ continue;
415
+ }
416
+ if (overflow !== 'visible' && overflow !== 'clip') {
417
+ const box = node.getBoundingClientRect();
418
+ return {
419
+ start: box.top + node.clientTop,
420
+ end: box.top + node.clientTop + node.clientHeight,
421
+ };
422
+ }
423
+ }
424
+ return {start: 0, end: view?.innerHeight ?? 0};
425
+ }
426
+
427
+ /**
428
+ * Whether a sticky element is stuck: resting against its scrollport's edge
429
+ * at its inset. A stuck element takes its final place; an unstuck one is in
430
+ * flow.
431
+ */
432
+ function isStuck(element: Element, cache: WalkCache): boolean {
433
+ const style = element.ownerDocument.defaultView?.getComputedStyle(element);
434
+ if (style?.position !== 'sticky') {
435
+ return false;
436
+ }
437
+ const rect = rectOf(element, cache);
438
+ const edge = scrollportOf(element);
439
+ const top = Number.parseFloat(style.top);
440
+ const bottom = Number.parseFloat(style.bottom);
441
+ return (
442
+ (Number.isFinite(top) && Math.abs(rect.top - (edge.start + top)) < 1) ||
443
+ (Number.isFinite(bottom) && Math.abs(rect.bottom - (edge.end - bottom)) < 1)
444
+ );
445
+ }
446
+
447
+ function rectOf(element: Element, cache: WalkCache): DOMRect {
448
+ let rect = cache.rects.get(element);
449
+ if (rect === undefined) {
450
+ rect = element.getBoundingClientRect();
451
+ cache.rects.set(element, rect);
452
+ }
453
+ return rect;
454
+ }
455
+
456
+ /**
457
+ * The elements a change can move, each with its rectangle before the change:
458
+ * the changed element's ancestors up to the area (a centered column moves
459
+ * the card around the change), and at each of their levels the siblings
460
+ * after and before (a centered, end-aligned or space-between row, or
461
+ * `order`, moves those too). A `display: contents` element has no box: its
462
+ * children stand in its place, walked in the same direction. At each level
463
+ * the walk stops at the first sibling outside `band`, so its cost grows with
464
+ * depth plus the siblings near the visible part, never with the length of a
465
+ * list; where the area opts out of scroll anchoring (`walksToBand`), the walk
466
+ * after a change above the band goes on to the band, a cost that grows with
467
+ * that distance. Inside a positioned, stuck sticky or top-layer ancestor only the
468
+ * content after the change is taken.
469
+ */
470
+ function collectCandidates(
471
+ changed: Element,
472
+ area: Element,
473
+ band: Band,
474
+ cache: WalkCache,
475
+ walksToBand: boolean,
476
+ ancestors: Set<Element>,
477
+ befores: Set<Element>,
478
+ ): Map<Element, DOMRect> {
479
+ const out = new Map<Element, DOMRect>();
480
+ /** Takes `element`; returns false once it lies outside the band. */
481
+ /** The current level runs through its siblings, ignoring the band. */
482
+ let runsThrough = false;
483
+ const take = (element: Element, isAfter: boolean): boolean => {
484
+ const part = partOf(element, cache);
485
+ if (part === 'contents') {
486
+ for (
487
+ let child = isAfter
488
+ ? element.firstElementChild
489
+ : element.lastElementChild;
490
+ child != null;
491
+ child = isAfter
492
+ ? child.nextElementSibling
493
+ : child.previousElementSibling
494
+ ) {
495
+ if (!take(child, isAfter)) {
496
+ return false;
497
+ }
498
+ }
499
+ return true;
500
+ }
501
+ if (!part) {
502
+ return true;
503
+ }
504
+ const rect = rectOf(element, cache);
505
+ if (runsThrough) {
506
+ out.set(element, rect);
507
+ return true;
508
+ }
509
+ if (rect.top > band.end) {
510
+ return false;
511
+ }
512
+ if (rect.bottom < band.start) {
513
+ // Above the band. Where the scroller opts out of scroll anchoring, the
514
+ // content after a change above the band shifts the rows in view, so
515
+ // the walk after it goes on to the band; with anchoring, it stops.
516
+ return isAfter && walksToBand;
517
+ }
518
+ out.set(element, rect);
519
+ if (!isAfter) {
520
+ befores.add(element);
521
+ }
522
+ return true;
523
+ };
524
+ // The change's chain up to the area, and from where it is inside a
525
+ // positioned, stuck sticky or top-layer ancestor: that ancestor takes its final
526
+ // place, so inside it only the content after the change moves; the
527
+ // ancestors and the siblings before the change stay with it.
528
+ const chain: Element[] = [];
529
+ for (
530
+ let node: Element | null = changed;
531
+ node != null && node !== area;
532
+ node = node.parentElement
533
+ ) {
534
+ chain.push(node);
535
+ }
536
+ // The levels below this index are inside a positioned ancestor.
537
+ let positionedFrom = 0;
538
+ for (let index = chain.length - 1; index > 0; index -= 1) {
539
+ if (partOf(chain[index], cache) === false || isStuck(chain[index], cache)) {
540
+ positionedFrom = index;
541
+ break;
542
+ }
543
+ }
544
+ for (const [level, node] of chain.entries()) {
545
+ runsThrough = flowsAcross(node.parentElement);
546
+ if (
547
+ node !== changed &&
548
+ level > positionedFrom &&
549
+ partOf(node, cache) === true
550
+ ) {
551
+ // An ancestor of the change in flow: where its layout moves it (a
552
+ // centered column), it glides, and what is inside moves only by its own
553
+ // change. A positioned, stuck sticky or top-layer ancestor, and every
554
+ // ancestor inside it, takes its final place.
555
+ out.set(node, rectOf(node, cache));
556
+ ancestors.add(node);
557
+ }
558
+ for (
559
+ let sibling = node.nextElementSibling;
560
+ sibling != null && take(sibling, true);
561
+ sibling = sibling.nextElementSibling
562
+ ) {
563
+ // The siblings after it, until one lies past the band.
564
+ }
565
+ if (level < positionedFrom) {
566
+ continue;
567
+ }
568
+ for (
569
+ let sibling = node.previousElementSibling;
570
+ sibling != null && take(sibling, false);
571
+ sibling = sibling.previousElementSibling
572
+ ) {
573
+ // The siblings before it, until one lies before the band.
574
+ }
575
+ }
576
+ return out;
577
+ }
578
+
579
+ // ---------------------------------------------------------------------------
580
+ // Batches: every change in one area in one frame moves together
581
+ // ---------------------------------------------------------------------------
582
+
583
+ interface Batch {
584
+ readonly area: Element;
585
+ readonly changed: Set<Element>;
586
+ readonly before: Map<Element, DOMRect>;
587
+ /** What each changed element's walk found, so a dropped change moves none. */
588
+ readonly candidates: Map<Element, Element[]>;
589
+ /** The changed elements' sizes before the change, added up. */
590
+ changedSize: number;
591
+ /** How far past the visible part the walks reach (0 before the first). */
592
+ reach: number;
593
+ /** The area's visible part, read once per frame. */
594
+ visible: DOMRect | null;
595
+ /** Whether the area opts out of scroll anchoring, read once per frame. */
596
+ walksToBand: boolean | null;
597
+ /** The change's ancestors among the candidates. */
598
+ readonly ancestors: Set<Element>;
599
+ /** The siblings before the change among the candidates. */
600
+ readonly befores: Set<Element>;
601
+ /**
602
+ * Where the area's content sat before the change, read once per frame: the
603
+ * area's place in view less its scroll offset, so a scroll of the area, an
604
+ * outer scroller or the page shows up as a change of it.
605
+ */
606
+ originBefore: {readonly x: number; readonly y: number} | null;
607
+ readonly cache: WalkCache;
608
+ scheduled: boolean;
609
+ }
610
+
611
+ const batches = new Map<Element, Batch>();
612
+
613
+ function batchFor(area: Element): Batch {
614
+ let batch = batches.get(area);
615
+ if (batch == null) {
616
+ const created: Batch = {
617
+ area,
618
+ changed: new Set(),
619
+ before: new Map(),
620
+ candidates: new Map(),
621
+ changedSize: 0,
622
+ reach: 0,
623
+ visible: null,
624
+ walksToBand: null,
625
+ ancestors: new Set(),
626
+ befores: new Set(),
627
+ originBefore: null,
628
+ cache: {rects: new Map(), parts: new Map()},
629
+ scheduled: false,
630
+ };
631
+ batches.set(area, created);
632
+ // A measurement no commit claims by the next frame (a controlled owner
633
+ // refused the change) is dropped, so it never moves rows later and holds
634
+ // no elements.
635
+ const view = area.ownerDocument.defaultView;
636
+ const drop = () => {
637
+ if (batches.get(area) === created && !created.scheduled) {
638
+ batches.delete(area);
639
+ }
640
+ };
641
+ if (typeof view?.requestAnimationFrame === 'function') {
642
+ view.requestAnimationFrame(drop);
643
+ } else {
644
+ setTimeout(drop, 16);
645
+ }
646
+ batch = created;
647
+ }
648
+ return batch;
649
+ }
650
+
651
+ function intersects(a: DOMRect, b: DOMRect): boolean {
652
+ return (
653
+ a.width > 0 &&
654
+ a.height > 0 &&
655
+ a.right > b.left &&
656
+ a.left < b.right &&
657
+ a.bottom > b.top &&
658
+ a.top < b.bottom
659
+ );
660
+ }
661
+
662
+ /** The part of the area the person can see: its box within the viewport. */
663
+ /** Where the area's scrolled content starts, in client px. */
664
+ function originOf(area: Element): {x: number; y: number} {
665
+ const box = area.getBoundingClientRect();
666
+ return {x: box.left - area.scrollLeft, y: box.top - area.scrollTop};
667
+ }
668
+
669
+ function visibleRect(area: Element): DOMRect {
670
+ const box = area.getBoundingClientRect();
671
+ const view = area.ownerDocument.defaultView;
672
+ const width = view?.innerWidth ?? box.right;
673
+ const height = view?.innerHeight ?? box.bottom;
674
+ const left = Math.max(box.left, 0);
675
+ const top = Math.max(box.top, 0);
676
+ return new DOMRect(
677
+ left,
678
+ top,
679
+ Math.max(0, Math.min(box.right, width) - left),
680
+ Math.max(0, Math.min(box.bottom, height) - top),
681
+ );
682
+ }
683
+
684
+ /** The element's rendered scale against its layout size (a scaled ancestor). */
685
+ function scaleOf(element: Element, rect: DOMRect): {x: number; y: number} {
686
+ const html = element as HTMLElement;
687
+ const x =
688
+ html.offsetWidth > 0 && rect.width > 0 ? rect.width / html.offsetWidth : 1;
689
+ const y =
690
+ html.offsetHeight > 0 && rect.height > 0
691
+ ? rect.height / html.offsetHeight
692
+ : 1;
693
+ // Subpixel rounding makes an unscaled element read a hair off 1; only a
694
+ // real scale is corrected.
695
+ return {
696
+ x: Math.abs(x - 1) < 0.01 ? 1 : x || 1,
697
+ y: Math.abs(y - 1) < 0.01 ? 1 : y || 1,
698
+ };
699
+ }
700
+
701
+ function flush(batch: Batch): void {
702
+ batches.delete(batch.area);
703
+ // What each change's walk measured before it: an element added by the
704
+ // change has no old place, and one it removed is gone.
705
+ const followers = new Set<Element>();
706
+ for (const changed of batch.changed) {
707
+ for (const element of batch.candidates.get(changed) ?? []) {
708
+ if (element.isConnected) {
709
+ followers.add(element);
710
+ }
711
+ }
712
+ }
713
+ if (followers.size === 0) {
714
+ return;
715
+ }
716
+ const motion = layoutMotion(batch.area);
717
+ if (motion.kind === 'instant') {
718
+ return;
719
+ }
720
+ const visible = visibleRect(batch.area);
721
+ // Every running glide stops first and every new place is read before any
722
+ // glide starts, so no reading includes another's new motion.
723
+ const entries: {
724
+ readonly element: Element;
725
+ readonly before: DOMRect;
726
+ readonly carried: OffsetCurve;
727
+ readonly carriedMs: number;
728
+ after?: DOMRect;
729
+ rawX?: number;
730
+ rawY?: number;
731
+ }[] = [];
732
+ for (const element of followers) {
733
+ const before = batch.before.get(element);
734
+ if (before == null || (before.width === 0 && before.height === 0)) {
735
+ // Added by the change, or not rendered before it: it has no old place.
736
+ // A changed element an earlier change displaced does have one, and
737
+ // moves with its row while it plays its own entrance or exit.
738
+ continue;
739
+ }
740
+ // An element already gliding keeps that motion and adds the new move: the
741
+ // running glide stops (so its rectangle is its new layout place) and the
742
+ // rest of its curve carries into the one new glide, velocity included,
743
+ // summed with the new move.
744
+ const running = glides.get(element);
745
+ let carried = AT_REST;
746
+ let carriedMs = 0;
747
+ if (running != null) {
748
+ const time = Number(running.animation.currentTime);
749
+ const elapsed = Number.isFinite(time) ? Math.max(0, time) : 0;
750
+ if (elapsed < running.durationMs) {
751
+ carried = t => running.offsetAt(elapsed + t);
752
+ carriedMs = running.durationMs - elapsed;
753
+ }
754
+ running.animation.cancel();
755
+ glides.delete(element);
756
+ }
757
+ entries.push({element, before, carried, carriedMs});
758
+ }
759
+ const byElement = new Map<Element, (typeof entries)[number]>();
760
+ // An ancestor of the change, and a sibling before it, move by their layout
761
+ // change alone: when scroll anchoring re-scrolls the area, an outer
762
+ // scroller or the page (a change above the visible part), or the area
763
+ // itself moves as its content grows (a dialog re-centered), their place in
764
+ // view shifts by that while their place in the area stays.
765
+ const origin = originOf(batch.area);
766
+ const scrolledX = origin.x - (batch.originBefore?.x ?? origin.x);
767
+ const scrolledY = origin.y - (batch.originBefore?.y ?? origin.y);
768
+ // Netted only where that makes the move smaller: an element the browser
769
+ // kept in place (scroll anchoring for another change in the same frame)
770
+ // stays where it is.
771
+ const nearer = (raw: number, shift: number) =>
772
+ Math.abs(raw + shift) < Math.abs(raw) ? raw + shift : raw;
773
+ for (const entry of entries) {
774
+ entry.after = entry.element.getBoundingClientRect();
775
+ const rawX = entry.before.left - entry.after.left;
776
+ const rawY = entry.before.top - entry.after.top;
777
+ // The siblings before the change stay with the ancestors around them.
778
+ const isAncestor =
779
+ batch.ancestors.has(entry.element) || batch.befores.has(entry.element);
780
+ entry.rawX = isAncestor ? nearer(rawX, scrolledX) : rawX;
781
+ entry.rawY = isAncestor ? nearer(rawY, scrolledY) : rawY;
782
+ byElement.set(entry.element, entry);
783
+ }
784
+ for (const entry of entries) {
785
+ const {element, before, carried, carriedMs} = entry;
786
+ const after = entry.after as DOMRect;
787
+ // Nested changes compose: an element inside another moving element moves
788
+ // only by its own change, whatever order the changes were reported in.
789
+ let dx = entry.rawX ?? 0;
790
+ let dy = entry.rawY ?? 0;
791
+ for (
792
+ let ancestor = element.parentElement;
793
+ ancestor != null && ancestor !== batch.area;
794
+ ancestor = ancestor.parentElement
795
+ ) {
796
+ const moving = byElement.get(ancestor);
797
+ if (moving != null) {
798
+ dx -= moving.rawX ?? 0;
799
+ dy -= moving.rawY ?? 0;
800
+ break;
801
+ }
802
+ }
803
+ if (Math.abs(dx) < MIN_SHIFT_PX && Math.abs(dy) < MIN_SHIFT_PX) {
804
+ continue;
805
+ }
806
+ if (!intersects(before, visible) && !intersects(after, visible)) {
807
+ // Outside the visible part before and after: it lands silently.
808
+ continue;
809
+ }
810
+ if (motion.kind === 'fade') {
811
+ safeAnimate(element, [{opacity: 0}, {opacity: 1}], {
812
+ duration: motion.durationMs,
813
+ easing: motion.easing,
814
+ });
815
+ continue;
816
+ }
817
+ if (movedByApp(element)) {
818
+ // The app moves it itself: it takes its final place at once
819
+ // (`spec:AST-105` Coverage).
820
+ continue;
821
+ }
822
+ // Where it shows now, against its new place, in its own px; the part the
823
+ // carried glide does not cover is the new move.
824
+ const scale = scaleOf(element, after);
825
+ const now = carried(0);
826
+ const moveX = dx / scale.x - now.x;
827
+ const moveY = dy / scale.y - now.y;
828
+ const {progress} = motion;
829
+ const offsetAt: OffsetCurve = t => {
830
+ const remaining = progress.remaining(t);
831
+ const carry = carried(t);
832
+ return {x: carry.x + moveX * remaining, y: carry.y + moveY * remaining};
833
+ };
834
+ const durationMs = Math.max(progress.durationMs, carriedMs);
835
+ // One replace-composited `translate`: the compositor runs it (INV12).
836
+ const animation = safeAnimate(
837
+ element,
838
+ sampleOver(durationMs, t => {
839
+ const offset = offsetAt(t);
840
+ return {translate: `${offset.x}px ${offset.y}px`};
841
+ }),
842
+ {duration: durationMs, easing: 'linear'},
843
+ );
844
+ if (animation != null) {
845
+ const glide: Glide = {animation, offsetAt, durationMs};
846
+ glides.set(element, glide);
847
+ animation.addEventListener?.('finish', () => {
848
+ if (glides.get(element) === glide) {
849
+ glides.delete(element);
850
+ }
851
+ });
852
+ }
853
+ }
854
+ }
855
+
856
+ type Target = {readonly current: Element | null} | (() => Element | null);
857
+
858
+ function resolve(target: Target): Element | null {
859
+ return typeof target === 'function' ? target() : target.current;
860
+ }
861
+
862
+ export interface LayoutChange {
863
+ /** Before the change commits (in the event handler that causes it). */
864
+ measureBefore(): void;
865
+ /**
866
+ * After it commits (a layout effect). Returns whether the change was
867
+ * measured: an unmeasured change (an owner set the state directly) moves
868
+ * nothing, and the component plays no entrance for it either.
869
+ */
870
+ animate(): boolean;
871
+ }
872
+
873
+ /**
874
+ * Report a size change of `target` to the handle's area. Call
875
+ * `measureBefore()` before the change commits and `animate()` after it; the
876
+ * content after `target`, up to the area, glides from its old place.
877
+ * Changes in one area in one frame move together. Without a handle, or
878
+ * outside its container, nothing moves.
879
+ */
880
+ export function reportLayoutChange(
881
+ handle: AnimatedLayout | null | undefined,
882
+ target: Target,
883
+ ): LayoutChange {
884
+ return {
885
+ measureBefore() {
886
+ const element = resolve(target);
887
+ if (element == null || handle == null) {
888
+ return;
889
+ }
890
+ const area = areaOf(handle, element);
891
+ if (area == null) {
892
+ return;
893
+ }
894
+ const batch = batchFor(area);
895
+ if (batch.changed.has(element)) {
896
+ return;
897
+ }
898
+ batch.changed.add(element);
899
+ batch.changedSize += rectOf(element, batch.cache).height;
900
+ batch.visible ??= visibleRect(area);
901
+ batch.originBefore ??= originOf(area);
902
+ batch.walksToBand ??=
903
+ area.ownerDocument.defaultView
904
+ ?.getComputedStyle(area)
905
+ .getPropertyValue('overflow-anchor') === 'none';
906
+ // Changes in one frame add up: every change's walk reaches the band
907
+ // their summed size can pull into view. When that outgrows the band
908
+ // walked so far, the band at least doubles and every change is walked
909
+ // again (from the cache), so a frame of many changes re-walks a few
910
+ // times, not once per change.
911
+ const needed = Math.max(batch.visible.height, batch.changedSize);
912
+ const walks = needed > batch.reach ? [...batch.changed] : [element];
913
+ if (needed > batch.reach) {
914
+ batch.reach = Math.max(needed, batch.reach * 2);
915
+ }
916
+ const band = bandFor(batch.visible, batch.reach);
917
+ for (const changed of walks) {
918
+ const candidates = collectCandidates(
919
+ changed,
920
+ area,
921
+ band,
922
+ batch.cache,
923
+ batch.walksToBand,
924
+ batch.ancestors,
925
+ batch.befores,
926
+ );
927
+ for (const [candidate, rect] of candidates) {
928
+ if (!batch.before.has(candidate)) {
929
+ batch.before.set(candidate, rect);
930
+ }
931
+ }
932
+ batch.candidates.set(changed, [...candidates.keys()]);
933
+ }
934
+ },
935
+ animate() {
936
+ const element = resolve(target);
937
+ if (element == null || handle == null) {
938
+ return false;
939
+ }
940
+ const area = areaOf(handle, element);
941
+ const batch = area == null ? undefined : batches.get(area);
942
+ if (batch == null || !batch.changed.has(element)) {
943
+ return false;
944
+ }
945
+ if (!batch.scheduled) {
946
+ batch.scheduled = true;
947
+ // After every layout effect of this commit, before paint.
948
+ queueMicrotask(() => flush(batch));
949
+ }
950
+ return true;
951
+ },
952
+ };
953
+ }
954
+
955
+ /**
956
+ * The changed element's own animation, on the same motion as the content
957
+ * after it: content that appears reveals downward from its top edge. Plays
958
+ * only with a handle, inside its area and in the area's visible part.
959
+ */
960
+ export function playLayoutChange(
961
+ handle: AnimatedLayout | null | undefined,
962
+ element: Element,
963
+ ): void {
964
+ if (handle == null) {
965
+ return;
966
+ }
967
+ const area = areaOf(handle, element);
968
+ if (area == null) {
969
+ return;
970
+ }
971
+ if (!intersects(element.getBoundingClientRect(), visibleRect(area))) {
972
+ return;
973
+ }
974
+ const motion = layoutMotion(area);
975
+ if (motion.kind === 'instant') {
976
+ return;
977
+ }
978
+ if (motion.kind === 'fade') {
979
+ safeAnimate(element, [{opacity: 0}, {opacity: 1}], {
980
+ duration: motion.durationMs,
981
+ easing: motion.easing,
982
+ });
983
+ return;
984
+ }
985
+ safeAnimate(
986
+ element,
987
+ sampleKeyframes(motion.progress, remaining => ({
988
+ opacity: 1 - remaining,
989
+ clipPath: `inset(0 0 ${round(remaining * 100)}% 0)`,
990
+ })),
991
+ {duration: motion.progress.durationMs, easing: 'linear'},
992
+ );
993
+ }
994
+
995
+ /** The inline properties an exit sets, so a release removes exactly them. */
996
+ const EXIT_PROPERTIES = [
997
+ 'margin-block-end',
998
+ 'margin-inline-end',
999
+ 'pointer-events',
1000
+ ] as const;
1001
+
1002
+ /**
1003
+ * The first element after `element` in the area that takes part in layout:
1004
+ * its next sibling, or its nearest ancestor's below the area. A wrapper's
1005
+ * edge is not used: a negative end margin can collapse through it.
1006
+ */
1007
+ function nextInFlow(element: Element, area: Element): Element | null {
1008
+ const view = element.ownerDocument.defaultView;
1009
+ // The first box at or inside `from` (a `display: contents` element has
1010
+ // none of its own: its children stand in its place).
1011
+ const firstBox = (from: Element): Element | null => {
1012
+ const style = view?.getComputedStyle(from);
1013
+ if (style == null) {
1014
+ return from;
1015
+ }
1016
+ if (style.display === 'contents') {
1017
+ for (
1018
+ let child = from.firstElementChild;
1019
+ child != null;
1020
+ child = child.nextElementSibling
1021
+ ) {
1022
+ const box = firstBox(child);
1023
+ if (box != null) {
1024
+ return box;
1025
+ }
1026
+ }
1027
+ return null;
1028
+ }
1029
+ return takesPart(from, style) ? from : null;
1030
+ };
1031
+ let node: Element | null = element;
1032
+ while (node != null && node !== area) {
1033
+ for (
1034
+ let sibling = node.nextElementSibling;
1035
+ sibling != null;
1036
+ sibling = sibling.nextElementSibling
1037
+ ) {
1038
+ const box = firstBox(sibling);
1039
+ if (box != null) {
1040
+ return box;
1041
+ }
1042
+ }
1043
+ node = node.parentElement;
1044
+ }
1045
+ return null;
1046
+ }
1047
+
1048
+ /**
1049
+ * An element's place: its block start, and its inline start (RTL read right
1050
+ * to left).
1051
+ */
1052
+ function placeOf(
1053
+ element: Element,
1054
+ rtl: boolean,
1055
+ ): {block: number; inline: number} {
1056
+ const rect = element.getBoundingClientRect();
1057
+ return {block: rect.top, inline: rtl ? -rect.right : rect.left};
1058
+ }
1059
+
1060
+ /**
1061
+ * Keeps `element` where it is, in flow (so it scrolls and clips with its
1062
+ * container), while the content after it takes the place it takes once the
1063
+ * element is hidden: a negative end margin measured against that content,
1064
+ * so a gap or collapsing margins come out exact. Returns false, setting
1065
+ * nothing, when no margin reaches that place.
1066
+ */
1067
+ function giveUpSpace(element: HTMLElement, area: Element): boolean {
1068
+ const view = element.ownerDocument.defaultView;
1069
+ const parent =
1070
+ element.parentElement == null
1071
+ ? undefined
1072
+ : view?.getComputedStyle(element.parentElement);
1073
+ const isRow =
1074
+ parent != null &&
1075
+ parent.display.includes('flex') &&
1076
+ parent.flexDirection.startsWith('row');
1077
+ const rtl = view?.getComputedStyle(element).direction === 'rtl';
1078
+ const property = isRow ? 'margin-inline-end' : 'margin-block-end';
1079
+ const size = isRow ? element.offsetWidth : element.offsetHeight;
1080
+ const next = nextInFlow(element, area);
1081
+ if (next == null) {
1082
+ // Nothing after it in the area to land anywhere.
1083
+ element.style.setProperty(property, `${-size}px`);
1084
+ return true;
1085
+ }
1086
+ const own = element.style.getPropertyValue(property);
1087
+ const ownPriority = element.style.getPropertyPriority(property);
1088
+ const axis = isRow ? 'inline' : 'block';
1089
+ // The content after its container must land too: a flex-row item that
1090
+ // sets its row's height moves what follows the row.
1091
+ const afterParent =
1092
+ element.parentElement == null || element.parentElement === area
1093
+ ? null
1094
+ : nextInFlow(element.parentElement, area);
1095
+ const checked = afterParent == null ? [next] : [next, afterParent];
1096
+ // Where the content after it goes once it is hidden, read with it taken
1097
+ // out of flow (not `display: none`, which would restart the CSS animations
1098
+ // inside it).
1099
+ const position = element.style.getPropertyValue('position');
1100
+ const positionPriority = element.style.getPropertyPriority('position');
1101
+ element.style.setProperty('position', 'absolute', 'important');
1102
+ const targets = checked.map(box => placeOf(box, rtl));
1103
+ const target = targets[0];
1104
+ if (position === '') {
1105
+ element.style.removeProperty('position');
1106
+ } else {
1107
+ element.style.setProperty('position', position, positionPriority);
1108
+ }
1109
+ // A first guess (its box), then one correction from the measured result:
1110
+ // a gap, a collapsed margin or the element's own margins.
1111
+ element.style.setProperty(property, `${-size}px`);
1112
+ const guess = placeOf(next, rtl)[axis];
1113
+ // The reading is in screen px, the margin in the element's own: under a
1114
+ // scaled ancestor the correction is divided by the scale on this axis.
1115
+ const scale = scaleOf(element, element.getBoundingClientRect());
1116
+ const correction = (target[axis] - guess) / (isRow ? scale.x : scale.y);
1117
+ element.style.setProperty(property, `${-size + correction}px`);
1118
+ // Everything checked must land on both axes: a flex-row item that sets
1119
+ // its row's height frees no block space with an inline margin.
1120
+ const missed = checked.some((box, index) => {
1121
+ const landed = placeOf(box, rtl);
1122
+ return (
1123
+ Math.abs(landed.block - targets[index].block) > 1 ||
1124
+ Math.abs(landed.inline - targets[index].inline) > 1
1125
+ );
1126
+ });
1127
+ if (missed) {
1128
+ if (own === '') {
1129
+ element.style.removeProperty(property);
1130
+ } else {
1131
+ element.style.setProperty(property, own, ownPriority);
1132
+ }
1133
+ return false;
1134
+ }
1135
+ return true;
1136
+ }
1137
+
1138
+ /** Exits holding an element back, so a release can stop one. */
1139
+ const exits = new WeakMap<Element, Animation | null>();
1140
+
1141
+ /** What an exit replaced on its element, so a release puts back exactly it. */
1142
+ interface Replaced {
1143
+ readonly inert: boolean;
1144
+ readonly styles: ReadonlyArray<readonly [string, string, string]>;
1145
+ }
1146
+ const replaced = new WeakMap<Element, Replaced>();
1147
+
1148
+ /**
1149
+ * The changed element's exit (`spec:AST-105` FR4): content that disappears
1150
+ * keeps its place on screen but gives up its space (a negative end margin
1151
+ * measured against the layout without it, so the content after it glides up
1152
+ * at once to exactly where it ends, and it still scrolls and clips with its
1153
+ * container), is inert (no focus, no pointer, nothing read), conceals upward
1154
+ * from its bottom edge on the same motion, and then `done` runs, when the
1155
+ * component hides or unmounts it. Under Reduce Motion with a coarse primary pointer it
1156
+ * fades instead. Call it in the layout effect of the commit that closes the
1157
+ * element, after the change's `animate()` reported it measured, in the same
1158
+ * task: the glide reads the layout once the element has given up its space.
1159
+ *
1160
+ * Returns false, holding nothing, when the exit lands at once: no handle, a
1161
+ * close no change in the area measured, outside the area or its visible part,
1162
+ * Reduce Motion with a fine pointer, or a layout no end margin can free (a
1163
+ * grid track and its gap, a flex-row item that sets its row's height); in
1164
+ * that last case the content after it takes its final place at once too.
1165
+ * The component then hides the element itself.
1166
+ */
1167
+ export function holdLayoutExit(
1168
+ handle: AnimatedLayout | null | undefined,
1169
+ element: HTMLElement,
1170
+ done: () => void,
1171
+ ): boolean {
1172
+ if (handle == null) {
1173
+ return false;
1174
+ }
1175
+ const area = areaOf(handle, element);
1176
+ if (
1177
+ area == null ||
1178
+ !intersects(element.getBoundingClientRect(), visibleRect(area))
1179
+ ) {
1180
+ return false;
1181
+ }
1182
+ // Only a measured close exits: the content after it glides into its place.
1183
+ const batch = batches.get(area);
1184
+ if (
1185
+ batch == null ||
1186
+ ![...batch.changed].some(
1187
+ changed => changed === element || changed.contains(element),
1188
+ )
1189
+ ) {
1190
+ return false;
1191
+ }
1192
+ const motion = layoutMotion(area);
1193
+ if (motion.kind === 'instant') {
1194
+ return false;
1195
+ }
1196
+ releaseLayoutExit(element);
1197
+ const prior: Replaced = {
1198
+ inert: element.hasAttribute('inert'),
1199
+ styles: EXIT_PROPERTIES.map(
1200
+ property =>
1201
+ [
1202
+ property,
1203
+ element.style.getPropertyValue(property),
1204
+ element.style.getPropertyPriority(property),
1205
+ ] as const,
1206
+ ),
1207
+ };
1208
+ if (!giveUpSpace(element, area)) {
1209
+ // A layout no end margin can free (a grid track and its gap, a flex-row
1210
+ // item that sets its row's height): it hides at once, and the content
1211
+ // after it takes its final place at once (`spec:AST-105` out of
1212
+ // coverage).
1213
+ for (const changed of [...batch.changed]) {
1214
+ if (changed === element || changed.contains(element)) {
1215
+ batch.changed.delete(changed);
1216
+ }
1217
+ }
1218
+ return false;
1219
+ }
1220
+ replaced.set(element, prior);
1221
+ // Out of reach while it conceals: no focus, no pointer, nothing read.
1222
+ element.setAttribute('inert', '');
1223
+ element.style.setProperty('pointer-events', 'none');
1224
+ const animation =
1225
+ motion.kind === 'fade'
1226
+ ? safeAnimate(element, [{opacity: 1}, {opacity: 0}], {
1227
+ duration: motion.durationMs,
1228
+ easing: motion.easing,
1229
+ fill: 'forwards',
1230
+ })
1231
+ : safeAnimate(
1232
+ element,
1233
+ sampleKeyframes(motion.progress, remaining => ({
1234
+ opacity: remaining,
1235
+ clipPath: `inset(0 0 ${round((1 - remaining) * 100)}% 0)`,
1236
+ })),
1237
+ {
1238
+ duration: motion.progress.durationMs,
1239
+ easing: 'linear',
1240
+ fill: 'forwards',
1241
+ },
1242
+ );
1243
+ exits.set(element, animation);
1244
+ if (animation == null) {
1245
+ // No Web Animations: nothing to wait for.
1246
+ done();
1247
+ return true;
1248
+ }
1249
+ animation.addEventListener?.('finish', () => {
1250
+ if (exits.get(element) === animation) {
1251
+ done();
1252
+ }
1253
+ });
1254
+ return true;
1255
+ }
1256
+
1257
+ /**
1258
+ * Puts an element `holdLayoutExit` held back: stops its exit and puts back
1259
+ * what the exit replaced (its `inert` and inline values as they were). Called
1260
+ * once the component has hidden the element, or when the element opens again
1261
+ * mid-exit.
1262
+ */
1263
+ export function releaseLayoutExit(element: HTMLElement): void {
1264
+ if (!exits.has(element)) {
1265
+ return;
1266
+ }
1267
+ exits.get(element)?.cancel();
1268
+ exits.delete(element);
1269
+ const prior = replaced.get(element);
1270
+ replaced.delete(element);
1271
+ if (prior?.inert !== true) {
1272
+ element.removeAttribute('inert');
1273
+ }
1274
+ for (const [property, value, priority] of prior?.styles ?? []) {
1275
+ if (value === '') {
1276
+ element.style.removeProperty(property);
1277
+ } else {
1278
+ element.style.setProperty(property, value, priority);
1279
+ }
1280
+ }
1281
+ }
1282
+
1283
+ /**
1284
+ * A disclosure's indicator (its chevron) turns on the same motion as the
1285
+ * glide: its CSS transition takes the spring as a `linear()` easing, and an
1286
+ * immediate change under Reduce Motion. Without a handle the inline values are
1287
+ * cleared, so the component's own transition applies. An engine without
1288
+ * `linear()` drops that value and keeps the component's easing.
1289
+ */
1290
+ export function applyLayoutChangeTransition(
1291
+ handle: AnimatedLayout | null | undefined,
1292
+ element: HTMLElement | SVGElement | null,
1293
+ ): void {
1294
+ if (element == null) {
1295
+ return;
1296
+ }
1297
+ const area = handle == null ? null : areaOf(handle, element);
1298
+ if (area == null) {
1299
+ element.style.removeProperty('transition-duration');
1300
+ element.style.removeProperty('transition-timing-function');
1301
+ return;
1302
+ }
1303
+ const motion = layoutMotion(area);
1304
+ if (motion.kind !== 'spring') {
1305
+ element.style.setProperty('transition-duration', '0s');
1306
+ element.style.removeProperty('transition-timing-function');
1307
+ return;
1308
+ }
1309
+ element.style.setProperty(
1310
+ 'transition-duration',
1311
+ `${Math.round(motion.progress.durationMs)}ms`,
1312
+ );
1313
+ element.style.setProperty(
1314
+ 'transition-timing-function',
1315
+ linearEasing(motion.progress),
1316
+ );
1317
+ }
1318
+
1319
+ /** @internal For tests: the motion a change in `area` plays. */
1320
+ export function layoutMotionFor(area: Element): LayoutMotion {
1321
+ return layoutMotion(area);
1322
+ }