@astryxdesign/core 0.1.4-canary.fd7ab46 → 0.1.4

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 (579) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +18 -20
  4. package/dist/AlertDialog/useImperativeAlertDialog.js +3 -3
  5. package/dist/AppShell/AppShell.d.ts +1 -1
  6. package/dist/AppShell/AppShell.d.ts.map +1 -1
  7. package/dist/AppShell/AppShell.js +53 -55
  8. package/dist/AspectRatio/AspectRatio.d.ts +10 -48
  9. package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
  10. package/dist/AspectRatio/AspectRatio.js +12 -33
  11. package/dist/AspectRatio/index.d.ts +1 -1
  12. package/dist/AspectRatio/index.d.ts.map +1 -1
  13. package/dist/Avatar/Avatar.d.ts.map +1 -1
  14. package/dist/Avatar/Avatar.js +25 -27
  15. package/dist/Avatar/AvatarStatusDot.js +5 -5
  16. package/dist/AvatarGroup/AvatarGroup.js +5 -5
  17. package/dist/AvatarGroup/AvatarGroupOverflow.js +5 -5
  18. package/dist/Badge/Badge.js +3 -3
  19. package/dist/Banner/Banner.d.ts.map +1 -1
  20. package/dist/Banner/Banner.js +25 -32
  21. package/dist/Blockquote/Blockquote.js +7 -7
  22. package/dist/Breadcrumbs/BreadcrumbItem.js +17 -17
  23. package/dist/Breadcrumbs/Breadcrumbs.js +7 -7
  24. package/dist/Button/Button.js +19 -19
  25. package/dist/ButtonGroup/ButtonGroup.js +7 -7
  26. package/dist/Calendar/Calendar.d.ts.map +1 -1
  27. package/dist/Calendar/Calendar.js +48 -68
  28. package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
  29. package/dist/Calendar/styles.d.ts +2 -2
  30. package/dist/Calendar/styles.d.ts.map +1 -1
  31. package/dist/Calendar/styles.js +2 -2
  32. package/dist/Card/Card.d.ts +2 -4
  33. package/dist/Card/Card.d.ts.map +1 -1
  34. package/dist/Card/Card.js +10 -18
  35. package/dist/Carousel/Carousel.d.ts.map +1 -1
  36. package/dist/Carousel/Carousel.js +21 -24
  37. package/dist/Carousel/carousel.markers.stylex.d.ts +7 -0
  38. package/dist/Carousel/carousel.markers.stylex.d.ts.map +1 -0
  39. package/dist/Carousel/carousel.markers.stylex.js +12 -0
  40. package/dist/Center/Center.js +3 -3
  41. package/dist/Chat/ChatComposer.js +23 -23
  42. package/dist/Chat/ChatComposerDrawer.js +14 -14
  43. package/dist/Chat/ChatComposerInput.d.ts +1 -1
  44. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  45. package/dist/Chat/ChatComposerInput.js +15 -27
  46. package/dist/Chat/ChatDictationButton.d.ts +1 -1
  47. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  48. package/dist/Chat/ChatDictationButton.js +11 -13
  49. package/dist/Chat/ChatLayout.js +17 -17
  50. package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
  51. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  52. package/dist/Chat/ChatLayoutScrollButton.js +10 -12
  53. package/dist/Chat/ChatMessage.js +12 -12
  54. package/dist/Chat/ChatMessageBubble.js +7 -7
  55. package/dist/Chat/ChatMessageList.js +14 -14
  56. package/dist/Chat/ChatMessageMetadata.d.ts +1 -1
  57. package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
  58. package/dist/Chat/ChatMessageMetadata.js +12 -14
  59. package/dist/Chat/ChatPastedTextToken.js +13 -13
  60. package/dist/Chat/ChatSendButton.js +3 -3
  61. package/dist/Chat/ChatSystemMessage.d.ts +1 -1
  62. package/dist/Chat/ChatSystemMessage.d.ts.map +1 -1
  63. package/dist/Chat/ChatSystemMessage.js +17 -17
  64. package/dist/Chat/ChatTokenizedText.d.ts +1 -1
  65. package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
  66. package/dist/Chat/ChatTokenizedText.js +15 -24
  67. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  68. package/dist/Chat/ChatToolCalls.js +74 -81
  69. package/dist/Chat/index.d.ts +1 -1
  70. package/dist/Chat/index.d.ts.map +1 -1
  71. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  72. package/dist/Chat/useTriggerMenu.js +15 -15
  73. package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
  74. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  75. package/dist/CheckboxInput/CheckboxInput.js +23 -25
  76. package/dist/CheckboxList/CheckboxList.js +9 -9
  77. package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
  78. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  79. package/dist/CheckboxList/CheckboxListItem.js +6 -8
  80. package/dist/Citation/Citation.js +10 -10
  81. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  82. package/dist/ClickableCard/ClickableCard.js +9 -32
  83. package/dist/Code/Code.js +3 -3
  84. package/dist/CodeBlock/CodeBlock.d.ts +1 -10
  85. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  86. package/dist/CodeBlock/CodeBlock.js +52 -88
  87. package/dist/Collapsible/Collapsible.d.ts +3 -9
  88. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  89. package/dist/Collapsible/Collapsible.js +22 -110
  90. package/dist/Collapsible/CollapsibleGroup.d.ts +7 -39
  91. package/dist/Collapsible/CollapsibleGroup.d.ts.map +1 -1
  92. package/dist/Collapsible/CollapsibleGroup.js +12 -73
  93. package/dist/Collapsible/CollapsibleGroupContext.d.ts +0 -31
  94. package/dist/Collapsible/CollapsibleGroupContext.d.ts.map +1 -1
  95. package/dist/Collapsible/CollapsibleGroupContext.js +3 -33
  96. package/dist/Collapsible/index.d.ts +0 -1
  97. package/dist/Collapsible/index.d.ts.map +1 -1
  98. package/dist/Collapsible/useCollapsible.d.ts +1 -4
  99. package/dist/Collapsible/useCollapsible.d.ts.map +1 -1
  100. package/dist/Collapsible/useCollapsible.js +6 -20
  101. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  102. package/dist/CommandPalette/CommandPalette.js +34 -36
  103. package/dist/CommandPalette/CommandPaletteEmpty.js +3 -3
  104. package/dist/CommandPalette/CommandPaletteFooter.js +16 -16
  105. package/dist/CommandPalette/CommandPaletteGroup.js +5 -5
  106. package/dist/CommandPalette/CommandPaletteInput.js +13 -13
  107. package/dist/CommandPalette/CommandPaletteItem.js +3 -3
  108. package/dist/CommandPalette/CommandPaletteList.js +3 -3
  109. package/dist/ContextMenu/ContextMenu.d.ts +2 -7
  110. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  111. package/dist/ContextMenu/ContextMenu.js +43 -76
  112. package/dist/DateInput/DateInput.js +18 -18
  113. package/dist/DateRangeInput/DateRangeInput.js +21 -21
  114. package/dist/DateTimeInput/DateTimeInput.d.ts +2 -5
  115. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  116. package/dist/DateTimeInput/DateTimeInput.js +26 -30
  117. package/dist/DateTimeInput/index.d.ts +1 -1
  118. package/dist/DateTimeInput/index.d.ts.map +1 -1
  119. package/dist/Dialog/Dialog.js +9 -9
  120. package/dist/Dialog/DialogHeader.js +16 -16
  121. package/dist/Dialog/useImperativeDialog.js +3 -3
  122. package/dist/Divider/Divider.js +7 -7
  123. package/dist/DropdownMenu/DropdownMenu.js +10 -10
  124. package/dist/DropdownMenu/DropdownMenuItem.d.ts +17 -2
  125. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  126. package/dist/DropdownMenu/DropdownMenuItem.js +3 -3
  127. package/dist/DropdownMenu/renderDropdownItems.js +10 -10
  128. package/dist/EmptyState/EmptyState.js +9 -9
  129. package/dist/Field/Field.js +17 -17
  130. package/dist/Field/FieldLabel.js +15 -15
  131. package/dist/Field/InputClearButton.js +5 -5
  132. package/dist/FieldStatus/FieldStatus.js +3 -3
  133. package/dist/FileInput/FileInput.js +29 -29
  134. package/dist/FormLayout/FormLayout.js +5 -5
  135. package/dist/Grid/Grid.d.ts +3 -4
  136. package/dist/Grid/Grid.d.ts.map +1 -1
  137. package/dist/Grid/Grid.js +12 -29
  138. package/dist/Grid/GridSpan.js +3 -3
  139. package/dist/HStack/HStack.js +3 -3
  140. package/dist/Heading/Heading.js +10 -10
  141. package/dist/HoverCard/HoverCard.js +9 -9
  142. package/dist/HoverCard/useHoverCard.d.ts +1 -5
  143. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  144. package/dist/HoverCard/useHoverCard.js +3 -3
  145. package/dist/Icon/Icon.d.ts.map +1 -1
  146. package/dist/Icon/Icon.js +12 -16
  147. package/dist/Icon/defaultIcons.js +116 -116
  148. package/dist/IconButton/IconButton.js +3 -3
  149. package/dist/InputGroup/InputGroup.js +11 -11
  150. package/dist/InputGroup/InputGroupText.js +3 -3
  151. package/dist/Item/Item.js +18 -18
  152. package/dist/Kbd/Kbd.js +5 -5
  153. package/dist/Layer/LayerProvider.js +7 -7
  154. package/dist/Layer/useLayer.d.ts +2 -29
  155. package/dist/Layer/useLayer.d.ts.map +1 -1
  156. package/dist/Layer/useLayer.js +31 -44
  157. package/dist/Layout/Layout.js +21 -21
  158. package/dist/Layout/LayoutContent.js +3 -3
  159. package/dist/Layout/LayoutFooter.js +5 -5
  160. package/dist/Layout/LayoutHeader.js +5 -5
  161. package/dist/Layout/LayoutPanel.js +3 -3
  162. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  163. package/dist/Lightbox/Lightbox.js +31 -55
  164. package/dist/Lightbox/useLightbox.js +3 -3
  165. package/dist/Link/Link.js +15 -15
  166. package/dist/Link/LinkProvider.js +3 -3
  167. package/dist/Link/useLinkify.js +3 -3
  168. package/dist/List/List.js +11 -11
  169. package/dist/List/ListItem.js +11 -11
  170. package/dist/Markdown/Markdown.d.ts.map +1 -1
  171. package/dist/Markdown/Markdown.js +102 -102
  172. package/dist/MetadataList/MetadataList.js +10 -10
  173. package/dist/MetadataList/MetadataListItem.js +15 -15
  174. package/dist/MobileNav/MobileNav.js +15 -15
  175. package/dist/MobileNav/MobileNavToggle.js +5 -5
  176. package/dist/MoreMenu/MoreMenu.js +3 -3
  177. package/dist/MultiSelector/MultiSelector.js +56 -56
  178. package/dist/NavIcon/NavIcon.js +3 -3
  179. package/dist/NavMenu/NavHeadingMenu.js +5 -5
  180. package/dist/NavMenu/NavHeadingMenuItem.js +8 -8
  181. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  182. package/dist/NumberInput/NumberInput.js +32 -48
  183. package/dist/Outline/Outline.js +15 -15
  184. package/dist/OverflowList/OverflowList.js +8 -8
  185. package/dist/Overlay/Overlay.js +3 -3
  186. package/dist/Overlay/OverlayScrim.js +5 -5
  187. package/dist/Overlay/useOverlay.js +3 -3
  188. package/dist/Pagination/Pagination.d.ts +1 -1
  189. package/dist/Pagination/Pagination.d.ts.map +1 -1
  190. package/dist/Pagination/Pagination.js +72 -125
  191. package/dist/Popover/Popover.js +16 -16
  192. package/dist/Popover/usePopover.js +7 -7
  193. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  194. package/dist/PowerSearch/PowerSearch.js +92 -110
  195. package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
  196. package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
  197. package/dist/PowerSearch/PowerSearchToken.js +5 -5
  198. package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
  199. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  200. package/dist/ProgressBar/ProgressBar.js +18 -25
  201. package/dist/RadioList/RadioList.js +7 -7
  202. package/dist/RadioList/RadioListItem.d.ts +1 -1
  203. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  204. package/dist/RadioList/RadioListItem.js +21 -24
  205. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  206. package/dist/Resizable/ResizeHandle.js +10 -28
  207. package/dist/Section/Section.js +5 -5
  208. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  209. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  210. package/dist/SegmentedControl/SegmentedControl.js +10 -32
  211. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  212. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  213. package/dist/SegmentedControl/SegmentedControlItem.js +12 -18
  214. package/dist/SelectableCard/SelectableCard.js +5 -5
  215. package/dist/Selector/Selector.js +46 -46
  216. package/dist/Selector/SelectorOption.js +3 -3
  217. package/dist/SideNav/SideNav.d.ts.map +1 -1
  218. package/dist/SideNav/SideNav.js +34 -38
  219. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  220. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  221. package/dist/SideNav/SideNavCollapseButton.js +6 -8
  222. package/dist/SideNav/SideNavHeading.js +87 -87
  223. package/dist/SideNav/SideNavItem.js +42 -42
  224. package/dist/SideNav/SideNavSection.d.ts +1 -1
  225. package/dist/SideNav/SideNavSection.d.ts.map +1 -1
  226. package/dist/SideNav/SideNavSection.js +16 -18
  227. package/dist/Skeleton/Skeleton.js +3 -3
  228. package/dist/Slider/Slider.js +23 -23
  229. package/dist/Spinner/Spinner.js +9 -9
  230. package/dist/StatusDot/StatusDot.js +5 -5
  231. package/dist/Switch/Switch.d.ts +4 -8
  232. package/dist/Switch/Switch.d.ts.map +1 -1
  233. package/dist/Switch/Switch.js +29 -34
  234. package/dist/TabList/Tab.js +18 -18
  235. package/dist/TabList/TabList.js +5 -5
  236. package/dist/TabList/TabMenu.d.ts.map +1 -1
  237. package/dist/TabList/TabMenu.js +30 -57
  238. package/dist/TabList/tab.markers.stylex.d.ts +1 -1
  239. package/dist/Table/BaseTable.d.ts.map +1 -1
  240. package/dist/Table/BaseTable.js +39 -50
  241. package/dist/Table/Table.js +7 -7
  242. package/dist/Table/TableBody.d.ts +1 -1
  243. package/dist/Table/TableBody.d.ts.map +1 -1
  244. package/dist/Table/TableBody.js +5 -9
  245. package/dist/Table/TableCell.js +3 -3
  246. package/dist/Table/TableFooter.d.ts +1 -1
  247. package/dist/Table/TableFooter.d.ts.map +1 -1
  248. package/dist/Table/TableFooter.js +5 -9
  249. package/dist/Table/TableHeader.d.ts +1 -1
  250. package/dist/Table/TableHeader.d.ts.map +1 -1
  251. package/dist/Table/TableHeader.js +5 -9
  252. package/dist/Table/TableHeaderCell.js +3 -3
  253. package/dist/Table/TableRow.js +5 -5
  254. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  255. package/dist/Table/plugins/columnResize/useTableColumnResize.js +11 -14
  256. package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
  257. package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
  258. package/dist/Table/plugins/pagination/paginateData.js +1 -5
  259. package/dist/Table/plugins/pagination/useTablePagination.js +7 -7
  260. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +22 -22
  261. package/dist/Table/plugins/selection/useTableSelection.js +18 -18
  262. package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
  263. package/dist/Table/plugins/selection/useTableSelectionState.js +1 -11
  264. package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
  265. package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
  266. package/dist/Table/plugins/sortable/useTableSortableState.js +4 -8
  267. package/dist/Table/tableContextMenu.js +9 -9
  268. package/dist/Text/Text.js +10 -10
  269. package/dist/TextArea/TextArea.js +14 -14
  270. package/dist/TextInput/TextInput.js +15 -15
  271. package/dist/Thumbnail/Thumbnail.d.ts +2 -3
  272. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  273. package/dist/Thumbnail/Thumbnail.js +29 -30
  274. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  275. package/dist/TimeInput/TimeInput.js +21 -26
  276. package/dist/Timestamp/Timestamp.d.ts +1 -1
  277. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  278. package/dist/Timestamp/Timestamp.js +26 -37
  279. package/dist/Toast/Toast.d.ts.map +1 -1
  280. package/dist/Toast/Toast.js +17 -25
  281. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  282. package/dist/Toast/ToastViewport.js +11 -23
  283. package/dist/Toast/useToast.js +4 -4
  284. package/dist/ToggleButton/ToggleButton.js +12 -12
  285. package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
  286. package/dist/Token/Token.js +21 -21
  287. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  288. package/dist/Tokenizer/Tokenizer.js +34 -36
  289. package/dist/Toolbar/Toolbar.js +18 -18
  290. package/dist/Tooltip/Tooltip.js +11 -11
  291. package/dist/Tooltip/useTooltip.d.ts +1 -5
  292. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  293. package/dist/Tooltip/useTooltip.js +3 -3
  294. package/dist/TopNav/TopNav.js +32 -32
  295. package/dist/TopNav/TopNavHeading.js +67 -67
  296. package/dist/TopNav/TopNavItem.js +5 -5
  297. package/dist/TopNav/TopNavMegaMenu.js +30 -30
  298. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  299. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  300. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +14 -25
  301. package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
  302. package/dist/TopNav/TopNavMenu.js +32 -32
  303. package/dist/TreeList/TreeList.js +8 -8
  304. package/dist/TreeList/TreeListBranches.js +11 -11
  305. package/dist/TreeList/TreeListItem.js +30 -30
  306. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  307. package/dist/Typeahead/BaseTypeahead.js +20 -23
  308. package/dist/Typeahead/Typeahead.js +12 -12
  309. package/dist/Typeahead/TypeaheadItem.js +10 -10
  310. package/dist/VStack/VStack.js +3 -3
  311. package/dist/astryx.css +0 -7
  312. package/dist/astryx.umd.js +60 -60
  313. package/dist/astryx.umd.js.map +4 -4
  314. package/dist/docs-types.d.ts +2 -8
  315. package/dist/docs-types.d.ts.map +1 -1
  316. package/dist/hooks/focusableSelector.d.ts +1 -1
  317. package/dist/hooks/focusableSelector.d.ts.map +1 -1
  318. package/dist/hooks/focusableSelector.js +1 -1
  319. package/dist/hooks/index.d.ts +0 -2
  320. package/dist/hooks/index.d.ts.map +1 -1
  321. package/dist/hooks/index.js +0 -1
  322. package/dist/hooks/useFocusTrap.d.ts +0 -3
  323. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  324. package/dist/hooks/useFocusTrap.js +1 -38
  325. package/dist/hooks/useInteractiveRole.d.ts +2 -6
  326. package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
  327. package/dist/hooks/useInteractiveRole.js +2 -6
  328. package/dist/hooks/useKeyboardHint.js +9 -9
  329. package/dist/hooks/useStreamingText.d.ts +1 -3
  330. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  331. package/dist/hooks/useStreamingText.js +5 -14
  332. package/dist/theme/MediaTheme.js +3 -3
  333. package/dist/theme/Theme.js +7 -7
  334. package/dist/theme/defineTheme.d.ts +1 -1
  335. package/dist/theme/defineTheme.d.ts.map +1 -1
  336. package/dist/theme/expandColorScale.d.ts.map +1 -1
  337. package/dist/theme/expandColorScale.js +3 -10
  338. package/dist/theme/hct.d.ts +15 -0
  339. package/dist/theme/hct.d.ts.map +1 -1
  340. package/dist/theme/hct.js +9 -9
  341. package/dist/theme/syntax/SyntaxTheme.js +5 -5
  342. package/dist/theme/tokens.d.ts +2 -10
  343. package/dist/theme/tokens.d.ts.map +1 -1
  344. package/dist/theme/tokens.js +4 -220
  345. package/dist/utils/index.d.ts +0 -3
  346. package/dist/utils/index.d.ts.map +1 -1
  347. package/dist/utils/index.js +1 -3
  348. package/dist/utils/timeParser.d.ts.map +1 -1
  349. package/dist/utils/timeParser.js +5 -8
  350. package/package.json +3 -3
  351. package/src/AlertDialog/AlertDialog.doc.mjs +0 -4
  352. package/src/AlertDialog/AlertDialog.tsx +0 -2
  353. package/src/AppShell/AppShell.tsx +0 -2
  354. package/src/AspectRatio/AspectRatio.doc.mjs +1 -28
  355. package/src/AspectRatio/AspectRatio.test.tsx +1 -142
  356. package/src/AspectRatio/AspectRatio.tsx +10 -70
  357. package/src/AspectRatio/index.ts +1 -5
  358. package/src/Avatar/Avatar.doc.mjs +0 -11
  359. package/src/Avatar/Avatar.test.tsx +1 -32
  360. package/src/Avatar/Avatar.tsx +20 -12
  361. package/src/Banner/Banner.doc.mjs +0 -8
  362. package/src/Banner/Banner.test.tsx +0 -38
  363. package/src/Banner/Banner.tsx +1 -8
  364. package/src/Calendar/Calendar.doc.mjs +1 -1
  365. package/src/Calendar/Calendar.test.tsx +17 -122
  366. package/src/Calendar/Calendar.tsx +5 -26
  367. package/src/Calendar/dayCellUtils.ts +1 -3
  368. package/src/Calendar/styles.ts +2 -12
  369. package/src/Card/Card.tsx +6 -16
  370. package/src/Carousel/Carousel.doc.mjs +12 -12
  371. package/src/Carousel/Carousel.test.tsx +0 -13
  372. package/src/Carousel/Carousel.tsx +2 -4
  373. package/src/Carousel/carousel.markers.stylex.ts +10 -0
  374. package/src/Chat/Chat.doc.mjs +1 -1
  375. package/src/Chat/ChatComposerInput.test.tsx +1 -27
  376. package/src/Chat/ChatComposerInput.tsx +15 -20
  377. package/src/Chat/ChatDictationButton.tsx +4 -4
  378. package/src/Chat/ChatLayoutScrollButton.tsx +1 -3
  379. package/src/Chat/ChatMessageMetadata.tsx +6 -4
  380. package/src/Chat/ChatSystemMessage.test.tsx +11 -26
  381. package/src/Chat/ChatSystemMessage.tsx +7 -7
  382. package/src/Chat/ChatTokenizedText.test.tsx +16 -29
  383. package/src/Chat/ChatTokenizedText.tsx +8 -15
  384. package/src/Chat/ChatToolCalls.test.tsx +0 -55
  385. package/src/Chat/ChatToolCalls.tsx +12 -10
  386. package/src/Chat/index.ts +4 -1
  387. package/src/Chat/useTriggerMenu.tsx +4 -1
  388. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  389. package/src/CheckboxInput/CheckboxInput.test.tsx +4 -71
  390. package/src/CheckboxInput/CheckboxInput.tsx +0 -2
  391. package/src/CheckboxList/CheckboxList.test.tsx +0 -19
  392. package/src/CheckboxList/CheckboxListItem.tsx +2 -11
  393. package/src/Citation/Citation.doc.mjs +0 -5
  394. package/src/ClickableCard/ClickableCard.tsx +2 -45
  395. package/src/CodeBlock/CodeBlock.doc.mjs +2 -7
  396. package/src/CodeBlock/CodeBlock.test.tsx +3 -122
  397. package/src/CodeBlock/CodeBlock.tsx +4 -62
  398. package/src/Collapsible/Collapsible.doc.mjs +4 -8
  399. package/src/Collapsible/Collapsible.tsx +10 -86
  400. package/src/Collapsible/CollapsibleGroup.doc.mjs +3 -27
  401. package/src/Collapsible/CollapsibleGroup.test.tsx +0 -318
  402. package/src/Collapsible/CollapsibleGroup.tsx +9 -107
  403. package/src/Collapsible/CollapsibleGroupContext.tsx +2 -42
  404. package/src/Collapsible/index.ts +0 -4
  405. package/src/Collapsible/useCollapsible.ts +6 -20
  406. package/src/CommandPalette/CommandPalette.doc.mjs +0 -4
  407. package/src/CommandPalette/CommandPalette.tsx +3 -5
  408. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +0 -5
  409. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +0 -10
  410. package/src/CommandPalette/CommandPaletteInput.doc.mjs +0 -6
  411. package/src/CommandPalette/CommandPaletteItem.doc.mjs +0 -6
  412. package/src/CommandPalette/CommandPaletteList.doc.mjs +0 -9
  413. package/src/ContextMenu/ContextMenu.doc.mjs +0 -15
  414. package/src/ContextMenu/ContextMenu.test.tsx +0 -87
  415. package/src/ContextMenu/ContextMenu.tsx +28 -87
  416. package/src/ContextMenu/ContextMenuItem.doc.mjs +0 -6
  417. package/src/DateInput/DateInput.test.tsx +20 -11
  418. package/src/DateRangeInput/DateRangeInput.test.tsx +44 -31
  419. package/src/DateTimeInput/DateTimeInput.doc.mjs +2 -3
  420. package/src/DateTimeInput/DateTimeInput.test.tsx +16 -118
  421. package/src/DateTimeInput/DateTimeInput.tsx +2 -8
  422. package/src/DateTimeInput/index.ts +0 -1
  423. package/src/Dialog/Dialog.doc.mjs +0 -4
  424. package/src/Dialog/DialogHeader.doc.mjs +0 -45
  425. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
  426. package/src/DropdownMenu/DropdownMenu.test.tsx +2 -22
  427. package/src/DropdownMenu/DropdownMenuItem.tsx +17 -5
  428. package/src/Field/Field.test.tsx +4 -1
  429. package/src/Field/FieldLabel.test.tsx +2 -2
  430. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +3 -0
  431. package/src/Grid/Grid.test.tsx +18 -43
  432. package/src/Grid/Grid.tsx +9 -26
  433. package/src/HoverCard/HoverCard.doc.mjs +6 -6
  434. package/src/HoverCard/useHoverCard.doc.mjs +5 -5
  435. package/src/HoverCard/useHoverCard.tsx +2 -9
  436. package/src/Icon/Icon.test.tsx +29 -41
  437. package/src/Icon/Icon.tsx +2 -6
  438. package/src/InputGroup/InputGroup.tsx +2 -2
  439. package/src/Item/Item.tsx +1 -1
  440. package/src/Layer/useLayer.doc.mjs +2 -2
  441. package/src/Layer/useLayer.test.tsx +2 -221
  442. package/src/Layer/useLayer.tsx +30 -69
  443. package/src/Layout/LayoutContent.doc.mjs +0 -12
  444. package/src/Layout/LayoutPanel.doc.mjs +0 -40
  445. package/src/Lightbox/Lightbox.doc.mjs +0 -5
  446. package/src/Lightbox/Lightbox.test.tsx +2 -123
  447. package/src/Lightbox/Lightbox.tsx +1 -29
  448. package/src/Markdown/Markdown.tsx +7 -9
  449. package/src/Markdown/parser.perf.test.ts +12 -34
  450. package/src/NavMenu/NavMenu.doc.mjs +0 -15
  451. package/src/NumberInput/NumberInput.test.tsx +3 -48
  452. package/src/NumberInput/NumberInput.tsx +15 -32
  453. package/src/Overlay/Overlay.doc.mjs +0 -6
  454. package/src/Pagination/Pagination.test.tsx +0 -162
  455. package/src/Pagination/Pagination.tsx +26 -80
  456. package/src/Popover/Popover.doc.mjs +6 -6
  457. package/src/Popover/Popover.test.tsx +0 -65
  458. package/src/Popover/usePopover.doc.mjs +1 -1
  459. package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
  460. package/src/PowerSearch/PowerSearch.test.tsx +1 -109
  461. package/src/PowerSearch/PowerSearch.tsx +16 -37
  462. package/src/ProgressBar/ProgressBar.test.tsx +0 -30
  463. package/src/ProgressBar/ProgressBar.tsx +5 -12
  464. package/src/RadioList/RadioList.test.tsx +0 -19
  465. package/src/RadioList/RadioListItem.tsx +4 -9
  466. package/src/Resizable/ResizeHandle.tsx +4 -22
  467. package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
  468. package/src/SegmentedControl/SegmentedControl.test.tsx +0 -192
  469. package/src/SegmentedControl/SegmentedControl.tsx +5 -27
  470. package/src/SegmentedControl/SegmentedControlItem.tsx +4 -9
  471. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  472. package/src/Selector/Selector.test.tsx +1 -27
  473. package/src/SideNav/SideNav.doc.mjs +1 -7
  474. package/src/SideNav/SideNav.test.tsx +0 -66
  475. package/src/SideNav/SideNav.tsx +2 -6
  476. package/src/SideNav/SideNavCollapseButton.tsx +3 -4
  477. package/src/SideNav/SideNavSection.tsx +4 -6
  478. package/src/Switch/Switch.doc.mjs +7 -7
  479. package/src/Switch/Switch.test.tsx +3 -102
  480. package/src/Switch/Switch.tsx +7 -20
  481. package/src/TabList/TabList.test.tsx +1 -185
  482. package/src/TabList/TabMenu.tsx +9 -45
  483. package/src/Table/BaseTable.tsx +2 -13
  484. package/src/Table/Table.test.tsx +0 -87
  485. package/src/Table/TableBody.tsx +2 -15
  486. package/src/Table/TableFooter.tsx +2 -15
  487. package/src/Table/TableHeader.tsx +2 -15
  488. package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +0 -13
  489. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +1 -3
  490. package/src/Table/plugins/pagination/paginateData.ts +1 -5
  491. package/src/Table/plugins/pagination/useTablePagination.test.tsx +0 -13
  492. package/src/Table/plugins/selection/useTableSelectionState.test.tsx +0 -23
  493. package/src/Table/plugins/selection/useTableSelectionState.tsx +6 -11
  494. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +1 -35
  495. package/src/Table/plugins/sortable/useTableSortableState.tsx +4 -8
  496. package/src/TextArea/TextArea.test.tsx +3 -3
  497. package/src/TextInput/TextInput.test.tsx +3 -3
  498. package/src/Thumbnail/Thumbnail.test.tsx +2 -36
  499. package/src/Thumbnail/Thumbnail.tsx +2 -4
  500. package/src/TimeInput/TimeInput.test.tsx +0 -37
  501. package/src/TimeInput/TimeInput.tsx +1 -11
  502. package/src/Timestamp/Timestamp.doc.mjs +1 -1
  503. package/src/Timestamp/Timestamp.test.tsx +0 -52
  504. package/src/Timestamp/Timestamp.tsx +16 -30
  505. package/src/Toast/Toast.tsx +3 -11
  506. package/src/Toast/ToastViewport.test.tsx +0 -64
  507. package/src/Toast/ToastViewport.tsx +0 -12
  508. package/src/ToggleButton/ToggleButton.doc.mjs +0 -1
  509. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  510. package/src/Tokenizer/Tokenizer.test.tsx +0 -54
  511. package/src/Tokenizer/Tokenizer.tsx +4 -5
  512. package/src/Tooltip/Tooltip.doc.mjs +6 -6
  513. package/src/Tooltip/useTooltip.doc.mjs +5 -5
  514. package/src/Tooltip/useTooltip.tsx +2 -12
  515. package/src/TopNav/TopNav.doc.mjs +1 -1
  516. package/src/TopNav/TopNav.test.tsx +7 -23
  517. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +2 -9
  518. package/src/TreeList/TreeList.doc.mjs +2 -2
  519. package/src/Typeahead/BaseTypeahead.doc.mjs +0 -19
  520. package/src/Typeahead/BaseTypeahead.tsx +2 -5
  521. package/src/Typeahead/Typeahead.doc.mjs +1 -1
  522. package/src/Typeahead/Typeahead.test.tsx +1 -45
  523. package/src/docs-types.ts +1 -9
  524. package/src/hooks/focusableSelector.ts +1 -1
  525. package/src/hooks/index.ts +0 -3
  526. package/src/hooks/useFocusTrap.doc.mjs +2 -4
  527. package/src/hooks/useFocusTrap.test.tsx +1 -149
  528. package/src/hooks/useFocusTrap.ts +1 -50
  529. package/src/hooks/useInteractiveRole.ts +4 -12
  530. package/src/hooks/useStreamingText.test.ts +19 -54
  531. package/src/hooks/useStreamingText.ts +5 -16
  532. package/src/hooks/useTreeFocus.test.tsx +3 -1
  533. package/src/reset.css +0 -29
  534. package/src/theme/SyntaxTheme.doc.mjs +4 -4
  535. package/src/theme/defineTheme.ts +13 -4
  536. package/src/theme/derivedVarRegistry.test.ts +2 -2
  537. package/src/theme/expandColorScale.test.ts +0 -29
  538. package/src/theme/expandColorScale.ts +6 -11
  539. package/src/theme/hct.ts +17 -9
  540. package/src/theme/tokens.test.ts +9 -182
  541. package/src/theme/tokens.ts +4 -239
  542. package/src/theme/useTheme.test.tsx +0 -20
  543. package/src/utils/index.ts +0 -4
  544. package/src/utils/sharedResizeObserver.test.ts +2 -2
  545. package/src/utils/timeParser.test.ts +0 -13
  546. package/src/utils/timeParser.ts +5 -8
  547. package/dist/hooks/useHotkeys.d.ts +0 -51
  548. package/dist/hooks/useHotkeys.d.ts.map +0 -1
  549. package/dist/hooks/useHotkeys.js +0 -160
  550. package/dist/utils/color.d.ts +0 -42
  551. package/dist/utils/color.d.ts.map +0 -1
  552. package/dist/utils/color.js +0 -150
  553. package/dist/utils/composeEventHandlers.d.ts +0 -30
  554. package/dist/utils/composeEventHandlers.d.ts.map +0 -1
  555. package/dist/utils/composeEventHandlers.js +0 -40
  556. package/src/Chat/ChatDictationButton.test.tsx +0 -43
  557. package/src/Chat/ChatLayoutScrollButton.test.tsx +0 -33
  558. package/src/Chat/ChatMessageMetadata.test.tsx +0 -32
  559. package/src/Collapsible/Collapsible.test.tsx +0 -405
  560. package/src/FieldStatus/FieldStatus.test.tsx +0 -282
  561. package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +0 -185
  562. package/src/Layout/Layout.test.tsx +0 -285
  563. package/src/Layout/LayoutSlots.test.tsx +0 -364
  564. package/src/Outline/parseOutlineFromMarkdown.test.ts +0 -80
  565. package/src/OverflowList/OverflowList.test.tsx +0 -416
  566. package/src/Overlay/Overlay.test.tsx +0 -356
  567. package/src/Resizable/ResizeHandle.test.tsx +0 -218
  568. package/src/SizeContext/SizeContext.test.tsx +0 -226
  569. package/src/__tests__/TestIcon.tsx +0 -26
  570. package/src/__tests__/fastRoleQueries.ts +0 -66
  571. package/src/docPropReferences.test.ts +0 -178
  572. package/src/hooks/useHotkeys.doc.mjs +0 -52
  573. package/src/hooks/useHotkeys.test.ts +0 -245
  574. package/src/hooks/useHotkeys.ts +0 -203
  575. package/src/utils/color.test.ts +0 -133
  576. package/src/utils/color.ts +0 -148
  577. package/src/utils/composeEventHandlers.test.ts +0 -71
  578. package/src/utils/composeEventHandlers.ts +0 -44
  579. package/src/utils/mergeProps.test.ts +0 -166
@@ -19,7 +19,6 @@
19
19
  import {
20
20
  useCallback,
21
21
  useEffect,
22
- useMemo,
23
22
  useRef,
24
23
  useState,
25
24
  type MouseEvent as ReactMouseEvent,
@@ -29,7 +28,6 @@ import * as stylex from '@stylexjs/stylex';
29
28
  import {colorVars, spacingVars, typeScaleVars} from '../theme/tokens.stylex';
30
29
  import {Icon} from '../Icon';
31
30
  import {IconButton} from '../IconButton';
32
- import {useAnnounce} from '../hooks/useAnnounce';
33
31
  import {useScrollLock} from '../hooks/useScrollLock';
34
32
  import {useIsomorphicLayoutEffect} from '../hooks/useIsomorphicLayoutEffect';
35
33
  import {mergeProps, mergeRefs} from '../utils';
@@ -308,10 +306,7 @@ export function Lightbox({
308
306
  const dragStartRef = useRef({x: 0, y: 0, panX: 0, panY: 0});
309
307
 
310
308
  // Resolve current media item
311
- const mediaArray = useMemo(
312
- () => (Array.isArray(media) ? media : [media]),
313
- [media],
314
- );
309
+ const mediaArray = Array.isArray(media) ? media : [media];
315
310
  const isGallery = mediaArray.length > 1;
316
311
  const currentItem =
317
312
  mediaArray.length > 0
@@ -334,29 +329,6 @@ export function Lightbox({
334
329
  setPan({x: 0, y: 0});
335
330
  }, [index, currentItem?.src]);
336
331
 
337
- // Announce gallery navigation to screen readers. Moving between images only
338
- // updates the visual counter, which is silent to assistive tech, so mirror
339
- // each change in a polite live region ("<alt>, 3 of 12", or "Image 3 of 12"
340
- // when the image has no alt). Announce only when the image changes during an
341
- // already-open session — not on mount, not when opening (even at a new
342
- // index, since the dialog's aria-label already names the current image), and
343
- // not on close.
344
- const announce = useAnnounce();
345
- const prevIndexRef = useRef(index);
346
- const wasOpenRef = useRef(isOpen);
347
- useEffect(() => {
348
- const indexChanged = prevIndexRef.current !== index;
349
- const wasOpen = wasOpenRef.current;
350
- prevIndexRef.current = index;
351
- wasOpenRef.current = isOpen;
352
- if (!indexChanged || !isOpen || !wasOpen) {
353
- return;
354
- }
355
- const item = mediaArray[Math.min(index, mediaArray.length - 1)];
356
- const position = `${index + 1} of ${mediaArray.length}`;
357
- announce(item?.alt ? `${item.alt}, ${position}` : `Image ${position}`);
358
- }, [index, isOpen, announce, mediaArray]);
359
-
360
332
  // Open/close dialog
361
333
  useIsomorphicLayoutEffect(() => {
362
334
  const dialog = dialogRef.current;
@@ -425,14 +425,7 @@ const streamingStyles = stylex.create({
425
425
  fadeIn: {
426
426
  opacity: 1,
427
427
  transitionProperty: 'opacity',
428
- // Collapse the entry fade to an instant swap under reduced motion. The
429
- // 0s duration makes the @starting-style opacity jump non-animated (the
430
- // media query can't nest inside @starting-style), mirroring the
431
- // conditional-duration form in Spinner (Spinner.tsx).
432
- transitionDuration: {
433
- default: durationVars['--duration-medium'],
434
- '@media (prefers-reduced-motion: reduce)': '0s',
435
- },
428
+ transitionDuration: durationVars['--duration-medium'],
436
429
  transitionTimingFunction: easeVars['--ease-standard'],
437
430
  '@starting-style': {
438
431
  opacity: 0,
@@ -1056,7 +1049,12 @@ function renderBlock(
1056
1049
  switch (node.type) {
1057
1050
  case 'heading': {
1058
1051
  const level = Math.min(node.level + headingLevelStart - 1, 6) as
1059
- 1 | 2 | 3 | 4 | 5 | 6;
1052
+ | 1
1053
+ | 2
1054
+ | 3
1055
+ | 4
1056
+ | 5
1057
+ | 6;
1060
1058
  const headingChildren = node.children.map((c, i) =>
1061
1059
  renderInline(
1062
1060
  c,
@@ -69,31 +69,6 @@ function simulateStreamingIncremental(
69
69
  return parseMarkdownIncremental(fullText, state);
70
70
  }
71
71
 
72
- // A single wall-clock measurement is flaky when the whole suite runs in
73
- // parallel forks: scheduler contention can inflate a millisecond-scale
74
- // sample well past a tight budget (observed 30.9ms against the 20ms Small
75
- // budget). The fastest of a few runs approximates the un-contended cost —
76
- // a real regression raises the minimum too — so budgets stay tight without
77
- // flapping. The streaming budget tests below keep a single run: their
78
- // budgets carry 10x+ headroom, which contention cannot realistically eat.
79
- function measureBest<T>(
80
- runs: number,
81
- fn: () => T,
82
- ): {elapsed: number; result: T} {
83
- let elapsed = Infinity;
84
- let result!: T;
85
- for (let i = 0; i < runs; i++) {
86
- const start = performance.now();
87
- const r = fn();
88
- const t = performance.now() - start;
89
- if (t < elapsed) {
90
- elapsed = t;
91
- result = r;
92
- }
93
- }
94
- return {elapsed, result};
95
- }
96
-
97
72
  describe('parseMarkdown performance', () => {
98
73
  const sizes = [
99
74
  {name: 'Small', paragraphs: 10, maxMs: 20},
@@ -118,7 +93,9 @@ describe('parseMarkdown performance', () => {
118
93
  for (const size of sizes) {
119
94
  it(`full re-parse ${size.name} (${size.paragraphs} paragraphs) under ${size.maxMs}ms`, () => {
120
95
  const text = generateAIResponse(size.paragraphs);
121
- const {elapsed, result} = measureBest(3, () => parseMarkdown(text));
96
+ const start = performance.now();
97
+ const result = parseMarkdown(text);
98
+ const elapsed = performance.now() - start;
122
99
  console.log(
123
100
  ` ${size.name} full parse: ${elapsed.toFixed(2)}ms → ${result.length} blocks`,
124
101
  );
@@ -172,14 +149,15 @@ describe('parseMarkdown performance', () => {
172
149
  const text = generateAIResponse(200);
173
150
  const chunkSize = 50;
174
151
 
175
- // The assertion below compares a ratio of two measurements, so noise on
176
- // either side can flip it — measure both as best-of-3.
177
- const {elapsed: fullElapsed} = measureBest(3, () =>
178
- simulateStreamingFullReparse(text, chunkSize),
179
- );
180
- const {elapsed: incrElapsed} = measureBest(3, () =>
181
- simulateStreamingIncremental(text, chunkSize),
182
- );
152
+ // Full re-parse timing
153
+ const fullStart = performance.now();
154
+ simulateStreamingFullReparse(text, chunkSize);
155
+ const fullElapsed = performance.now() - fullStart;
156
+
157
+ // Incremental timing
158
+ const incrStart = performance.now();
159
+ simulateStreamingIncremental(text, chunkSize);
160
+ const incrElapsed = performance.now() - incrStart;
183
161
 
184
162
  const speedup = fullElapsed / incrElapsed;
185
163
  console.log(`\n === Incremental vs Full Re-parse Speedup ===`);
@@ -17,27 +17,12 @@ export const docs = {
17
17
  'NavHeadingMenuItem renders individual selectable items. ' +
18
18
  'Pass as the menu prop of SideNavHeading or TopNavHeading.',
19
19
  },
20
- playground: {
21
- defaults: {
22
- children: [
23
- {__element: 'NavHeadingMenuItem', props: {label: 'Dashboard', href: '#'}},
24
- {__element: 'NavHeadingMenuItem', props: {label: 'Analytics', href: '#'}},
25
- {__element: 'NavHeadingMenuItem', props: {label: 'Settings', href: '#'}},
26
- ],
27
- },
28
- },
29
20
  props: [
30
21
  {name: 'children', type: 'ReactNode', required: true, description: 'Menu items.'},
31
22
  {name: 'size', type: "'sm' | 'md' | 'lg'", default: "'md'", description: 'Controls min-width and item padding.'},
32
23
  {name: 'minWidth', type: 'number | string', description: 'Minimum width override.'},
33
24
  {name: 'xstyle', type: 'StyleXStyles', description: 'StyleX styles for layout customization (margins, positioning, sizing). Must be a stylex.create() value, not an inline style object like style={{}}.'},
34
25
  ],
35
- theming: {
36
- targets: [
37
- {className: 'astryx-nav-heading-menu', visualProps: ['size']},
38
- {className: 'astryx-nav-heading-menu-item', visualProps: ['size']},
39
- ],
40
- },
41
26
  };
42
27
 
43
28
  /** @type {import('../docs-types').TranslationDoc} */
@@ -12,7 +12,7 @@
12
12
  import {describe, it, expect, vi, beforeEach} from 'vitest';
13
13
  import {render, screen, fireEvent, waitFor} from '@testing-library/react';
14
14
  import userEvent from '@testing-library/user-event';
15
- import {TestIcon} from '../__tests__/TestIcon';
15
+ import {HashtagIcon} from '@heroicons/react/24/outline';
16
16
  import {NumberInput} from './NumberInput';
17
17
 
18
18
  // Mock showPopover/hidePopover since jsdom does not implement them. Used by the
@@ -174,7 +174,7 @@ describe('NumberInput', () => {
174
174
  label="Count"
175
175
  value={null}
176
176
  onChange={() => {}}
177
- startIcon={TestIcon}
177
+ startIcon={HashtagIcon}
178
178
  />,
179
179
  );
180
180
  expect(screen.getByRole('spinbutton')).toBeInTheDocument();
@@ -707,7 +707,7 @@ describe('NumberInput', () => {
707
707
  label="Qty"
708
708
  value={0}
709
709
  onChange={() => {}}
710
- startIcon={<TestIcon />}
710
+ startIcon={<HashtagIcon />}
711
711
  />,
712
712
  );
713
713
 
@@ -867,48 +867,3 @@ describe('NumberInput', () => {
867
867
  });
868
868
  });
869
869
  });
870
-
871
- describe('keyboard clearing with hasClear (#3599)', () => {
872
- it('commits null when the input is emptied and blurred', () => {
873
- const onChange = vi.fn();
874
- render(
875
- <NumberInput label="Qty" hasClear value={42} onChange={onChange} />,
876
- );
877
- const input = screen.getByLabelText('Qty');
878
- fireEvent.change(input, {target: {value: ''}});
879
- fireEvent.blur(input);
880
- expect(onChange).toHaveBeenCalledWith(null);
881
- });
882
-
883
- it('commits null when the input is emptied and Enter is pressed', () => {
884
- const onChange = vi.fn();
885
- render(
886
- <NumberInput label="Qty" hasClear value={42} onChange={onChange} />,
887
- );
888
- const input = screen.getByLabelText('Qty');
889
- fireEvent.change(input, {target: {value: ''}});
890
- fireEvent.keyDown(input, {key: 'Enter'});
891
- expect(onChange).toHaveBeenCalledWith(null);
892
- });
893
-
894
- it('does not fire when emptied and blurred with no prior value', () => {
895
- const onChange = vi.fn();
896
- render(
897
- <NumberInput label="Qty" hasClear value={null} onChange={onChange} />,
898
- );
899
- const input = screen.getByLabelText('Qty');
900
- fireEvent.change(input, {target: {value: ''}});
901
- fireEvent.blur(input);
902
- expect(onChange).not.toHaveBeenCalled();
903
- });
904
-
905
- it('still reverts on blur when hasClear is not set', () => {
906
- const onChange = vi.fn();
907
- render(<NumberInput label="Qty" value={42} onChange={onChange} />);
908
- const input = screen.getByLabelText('Qty');
909
- fireEvent.change(input, {target: {value: ''}});
910
- fireEvent.blur(input);
911
- expect(onChange).not.toHaveBeenCalled();
912
- expect((input as HTMLInputElement).value).toBe('42');
913
- });
914
- });
@@ -503,21 +503,13 @@ export function NumberInput({
503
503
  const handleBlur = useCallback(
504
504
  (e: FocusEvent<HTMLInputElement>) => {
505
505
  if (pendingInput !== null) {
506
- if (hasClear && pendingInput.trim() === '') {
507
- // Keyboard clearing honors the clearable contract: an emptied
508
- // input commits null instead of silently reverting on blur.
509
- if (value != null) {
510
- onChange(null);
511
- }
512
- } else {
513
- const parsed = parseNumberInput(pendingInput, {
514
- min,
515
- max,
516
- isIntegerOnly,
517
- });
518
- if (parsed !== null && parsed !== value) {
519
- onChange(parsed);
520
- }
506
+ const parsed = parseNumberInput(pendingInput, {
507
+ min,
508
+ max,
509
+ isIntegerOnly,
510
+ });
511
+ if (parsed !== null && parsed !== value) {
512
+ onChange(parsed);
521
513
  }
522
514
  }
523
515
 
@@ -525,7 +517,7 @@ export function NumberInput({
525
517
  setPendingInput(null);
526
518
  onBlur?.(e);
527
519
  },
528
- [pendingInput, value, onChange, min, max, isIntegerOnly, onBlur, hasClear],
520
+ [pendingInput, value, onChange, min, max, isIntegerOnly, onBlur],
529
521
  );
530
522
 
531
523
  // Handle keyboard events
@@ -534,21 +526,13 @@ export function NumberInput({
534
526
  if (e.key === 'Enter') {
535
527
  // Validate and commit on Enter
536
528
  if (pendingInput !== null) {
537
- if (hasClear && pendingInput.trim() === '') {
538
- // Same clearable contract as blur: Enter on an emptied input
539
- // commits null instead of reverting.
540
- if (value != null) {
541
- onChange(null);
542
- }
543
- } else {
544
- const parsed = parseNumberInput(pendingInput, {
545
- min,
546
- max,
547
- isIntegerOnly,
548
- });
549
- if (parsed !== null && parsed !== value) {
550
- onChange(parsed);
551
- }
529
+ const parsed = parseNumberInput(pendingInput, {
530
+ min,
531
+ max,
532
+ isIntegerOnly,
533
+ });
534
+ if (parsed !== null && parsed !== value) {
535
+ onChange(parsed);
552
536
  }
553
537
  }
554
538
  onEnter?.();
@@ -564,7 +548,6 @@ export function NumberInput({
564
548
  isIntegerOnly,
565
549
  onEnter,
566
550
  onKeyDown,
567
- hasClear,
568
551
  ],
569
552
  );
570
553
 
@@ -180,12 +180,6 @@ export const docs = {
180
180
  description: 'Ref forwarded to the overlay root element.',
181
181
  },
182
182
  ],
183
- theming: {
184
- targets: [
185
- {className: 'astryx-overlay'},
186
- {className: 'astryx-overlay-scrim', visualProps: ['position']},
187
- ],
188
- },
189
183
  };
190
184
 
191
185
  /** @type {import('../docs-types').TranslationDoc} */
@@ -345,149 +345,6 @@ describe('Pagination', () => {
345
345
  const activeDot = screen.getByRole('button', {name: 'Go to page 3'});
346
346
  expect(activeDot).toHaveAttribute('aria-current', 'page');
347
347
  });
348
-
349
- // -------------------------------------------------------------------------
350
- // Keyboard navigation (roving tabindex + arrow keys via useListFocus).
351
- // Selection follows focus: arrow/Home/End move focus and select that page.
352
- // -------------------------------------------------------------------------
353
-
354
- it('uses roving tabindex — active dot has tabIndex 0, others -1', () => {
355
- render(
356
- <Pagination
357
- page={2}
358
- onChange={() => {}}
359
- totalPages={4}
360
- variant="dots"
361
- />,
362
- );
363
- expect(
364
- screen.getByRole('button', {name: 'Go to page 2'}),
365
- ).toHaveAttribute('tabindex', '0');
366
- expect(
367
- screen.getByRole('button', {name: 'Go to page 1'}),
368
- ).toHaveAttribute('tabindex', '-1');
369
- expect(
370
- screen.getByRole('button', {name: 'Go to page 3'}),
371
- ).toHaveAttribute('tabindex', '-1');
372
- });
373
-
374
- it('ArrowRight moves focus to the next dot and selects it', async () => {
375
- const user = userEvent.setup();
376
- const onChange = vi.fn();
377
- render(
378
- <Pagination
379
- page={2}
380
- onChange={onChange}
381
- totalPages={4}
382
- variant="dots"
383
- />,
384
- );
385
- screen.getByRole('button', {name: 'Go to page 2'}).focus();
386
- await user.keyboard('{ArrowRight}');
387
- expect(onChange).toHaveBeenCalledWith(3);
388
- expect(screen.getByRole('button', {name: 'Go to page 3'})).toHaveFocus();
389
- });
390
-
391
- it('ArrowLeft moves focus to the previous dot and selects it', async () => {
392
- const user = userEvent.setup();
393
- const onChange = vi.fn();
394
- render(
395
- <Pagination
396
- page={3}
397
- onChange={onChange}
398
- totalPages={4}
399
- variant="dots"
400
- />,
401
- );
402
- screen.getByRole('button', {name: 'Go to page 3'}).focus();
403
- await user.keyboard('{ArrowLeft}');
404
- expect(onChange).toHaveBeenCalledWith(2);
405
- expect(screen.getByRole('button', {name: 'Go to page 2'})).toHaveFocus();
406
- });
407
-
408
- it('Home selects the first page, End the last', async () => {
409
- const user = userEvent.setup();
410
- const onChange = vi.fn();
411
- const {rerender} = render(
412
- <Pagination
413
- page={3}
414
- onChange={onChange}
415
- totalPages={5}
416
- variant="dots"
417
- />,
418
- );
419
- screen.getByRole('button', {name: 'Go to page 3'}).focus();
420
- await user.keyboard('{Home}');
421
- expect(onChange).toHaveBeenCalledWith(1);
422
- expect(screen.getByRole('button', {name: 'Go to page 1'})).toHaveFocus();
423
-
424
- onChange.mockClear();
425
- rerender(
426
- <Pagination
427
- page={3}
428
- onChange={onChange}
429
- totalPages={5}
430
- variant="dots"
431
- />,
432
- );
433
- screen.getByRole('button', {name: 'Go to page 3'}).focus();
434
- await user.keyboard('{End}');
435
- expect(onChange).toHaveBeenCalledWith(5);
436
- expect(screen.getByRole('button', {name: 'Go to page 5'})).toHaveFocus();
437
- });
438
-
439
- it('wraps from the last dot to the first with ArrowRight', async () => {
440
- const user = userEvent.setup();
441
- const onChange = vi.fn();
442
- render(
443
- <Pagination
444
- page={4}
445
- onChange={onChange}
446
- totalPages={4}
447
- variant="dots"
448
- />,
449
- );
450
- screen.getByRole('button', {name: 'Go to page 4'}).focus();
451
- await user.keyboard('{ArrowRight}');
452
- expect(onChange).toHaveBeenCalledWith(1);
453
- expect(screen.getByRole('button', {name: 'Go to page 1'})).toHaveFocus();
454
- });
455
-
456
- it('wraps from the first dot to the last with ArrowLeft', async () => {
457
- const user = userEvent.setup();
458
- const onChange = vi.fn();
459
- render(
460
- <Pagination
461
- page={1}
462
- onChange={onChange}
463
- totalPages={4}
464
- variant="dots"
465
- />,
466
- );
467
- screen.getByRole('button', {name: 'Go to page 1'}).focus();
468
- await user.keyboard('{ArrowLeft}');
469
- expect(onChange).toHaveBeenCalledWith(4);
470
- expect(screen.getByRole('button', {name: 'Go to page 4'})).toHaveFocus();
471
- });
472
-
473
- it('does not navigate with arrow keys when disabled', async () => {
474
- const user = userEvent.setup();
475
- const onChange = vi.fn();
476
- render(
477
- <Pagination
478
- page={2}
479
- onChange={onChange}
480
- totalPages={4}
481
- variant="dots"
482
- isDisabled
483
- />,
484
- );
485
- const dot = screen.getByRole('button', {name: 'Go to page 2'});
486
- expect(dot).toBeDisabled();
487
- dot.focus();
488
- await user.keyboard('{ArrowRight}');
489
- expect(onChange).not.toHaveBeenCalled();
490
- });
491
348
  });
492
349
 
493
350
  // ---------------------------------------------------------------------------
@@ -903,23 +760,4 @@ describe('Pagination', () => {
903
760
  ).not.toBeInTheDocument();
904
761
  });
905
762
  });
906
-
907
- describe('rest forwarding', () => {
908
- it('forwards data-testid, id, and aria-* to the root nav', () => {
909
- const {container} = render(
910
- <Pagination
911
- page={1}
912
- onChange={() => {}}
913
- totalPages={3}
914
- data-testid="pager"
915
- id="pager-1"
916
- aria-describedby="hint"
917
- />,
918
- );
919
- const nav = container.querySelector('nav')!;
920
- expect(nav).toHaveAttribute('data-testid', 'pager');
921
- expect(nav).toHaveAttribute('id', 'pager-1');
922
- expect(nav).toHaveAttribute('aria-describedby', 'hint');
923
- });
924
- });
925
763
  });
@@ -35,7 +35,6 @@ import {Icon} from '../Icon';
35
35
  import {Selector} from '../Selector';
36
36
  import {Text} from '../Text';
37
37
  import {useAnnounce} from '../hooks/useAnnounce';
38
- import {useListFocus} from '../hooks/useListFocus';
39
38
  import {mergeProps} from '../utils';
40
39
  import type {BaseProps} from '../BaseProps';
41
40
  import {themeProps} from '../utils/themeProps';
@@ -350,7 +349,6 @@ export function Pagination({
350
349
  className,
351
350
  style,
352
351
  ref,
353
- ...rest
354
352
  }: PaginationProps) {
355
353
  const [, startTransition] = useTransition();
356
354
 
@@ -372,21 +370,6 @@ export function Pagination({
372
370
  // in-flight target instead of stalling on the last committed page.
373
371
  const [optimisticPage, setOptimisticPage] = useOptimistic(page);
374
372
 
375
- // Roving-tabindex + arrow/Home/End keyboard nav for the dots variant, owned
376
- // by the shared useListFocus primitive (mirrors SegmentedControl). It stamps a
377
- // single tab stop across the dots and moves focus horizontally; selection
378
- // follows focus via handleDotsFocus so arrow keys move the active page.
379
- const {
380
- listRef: dotsListRef,
381
- handleKeyDown: handleDotsKeyDown,
382
- handleFocus: handleDotsRovingFocus,
383
- } = useListFocus<HTMLDivElement>({
384
- itemSelector: 'button',
385
- hasRovingTabIndex: true,
386
- wrap: true,
387
- orientation: 'horizontal',
388
- });
389
-
390
373
  // Compute pagination state
391
374
  const computedTotalPages =
392
375
  totalPagesProp ??
@@ -427,28 +410,6 @@ export function Pagination({
427
410
  });
428
411
  };
429
412
 
430
- // Selection-follows-focus for the dots (APG radiogroup pattern): useListFocus
431
- // only *moves* focus, so when focus lands on a dot -- via arrow/Home/End, or a
432
- // click that focuses it -- we select that dot's page. handleDotsRovingFocus
433
- // keeps the roving tab stop in sync. The current page is skipped so tabbing
434
- // into the group is a no-op.
435
- const handleDotsFocus = (e: React.FocusEvent) => {
436
- handleDotsRovingFocus(e);
437
- if (isDisabled) {
438
- return;
439
- }
440
- const focused = (e.target as HTMLElement | null)?.closest<HTMLElement>(
441
- 'button[data-page]',
442
- );
443
- if (!focused) {
444
- return;
445
- }
446
- const nextPage = Number(focused.dataset.page);
447
- if (Number.isFinite(nextPage) && nextPage !== optimisticPage) {
448
- handlePageChange(nextPage);
449
- }
450
- };
451
-
452
413
  const handlePrevious = () => {
453
414
  if (hasPrevious) {
454
415
  handlePageChange(optimisticPage - 1);
@@ -557,47 +518,33 @@ export function Pagination({
557
518
  if (computedTotalPages == null) {
558
519
  return null;
559
520
  }
560
-
561
521
  return (
562
522
  <div
563
- ref={dotsListRef}
564
523
  {...stylex.props(styles.dotsContainer)}
565
524
  role="group"
566
- aria-label="Page indicators"
567
- onKeyDown={handleDotsKeyDown}
568
- onFocus={handleDotsFocus}>
569
- {Array.from({length: computedTotalPages}, (_, i) => {
570
- const isActive = i + 1 === optimisticPage;
571
- return (
572
- <button
573
- key={i + 1}
574
- type="button"
575
- data-page={i + 1}
576
- aria-label={`Go to page ${i + 1}`}
577
- aria-current={isActive ? 'page' : undefined}
578
- // The active dot is the single roving tab stop; useListFocus
579
- // maintains it as focus and the active page move.
580
- tabIndex={isActive ? 0 : -1}
581
- // Selection is driven by focus (handleDotsFocus); clicking only
582
- // needs to focus the dot, which some browsers (Safari) skip for
583
- // buttons, so focus it explicitly.
584
- onClick={e => e.currentTarget.focus()}
585
- disabled={isDisabled}
586
- {...mergeProps(
587
- themeProps('pagination-dot', {
588
- active: isActive ? 'active' : null,
589
- size,
590
- }),
591
- stylex.props(
592
- styles.dot,
593
- isSm && styles.dotSm,
594
- isActive && styles.dotActive,
595
- isDisabled && styles.dotDisabled,
596
- ),
597
- )}
598
- />
599
- );
600
- })}
525
+ aria-label="Page indicators">
526
+ {Array.from({length: computedTotalPages}, (_, i) => (
527
+ <button
528
+ key={i + 1}
529
+ type="button"
530
+ aria-label={`Go to page ${i + 1}`}
531
+ aria-current={i + 1 === optimisticPage ? 'page' : undefined}
532
+ onClick={() => handlePageChange(i + 1)}
533
+ disabled={isDisabled}
534
+ {...mergeProps(
535
+ themeProps('pagination-dot', {
536
+ active: i + 1 === optimisticPage ? 'active' : null,
537
+ size,
538
+ }),
539
+ stylex.props(
540
+ styles.dot,
541
+ isSm && styles.dotSm,
542
+ i + 1 === optimisticPage && styles.dotActive,
543
+ isDisabled && styles.dotDisabled,
544
+ ),
545
+ )}
546
+ />
547
+ ))}
601
548
  </div>
602
549
  );
603
550
  }
@@ -611,15 +558,14 @@ export function Pagination({
611
558
  return (
612
559
  <nav
613
560
  ref={ref}
561
+ aria-label={label}
562
+ data-testid={testId}
614
563
  {...mergeProps(
615
564
  themeProps('pagination', {variant, size}),
616
565
  stylex.props(styles.root, xstyle),
617
566
  className,
618
567
  style,
619
- )}
620
- {...rest}
621
- aria-label={label}
622
- data-testid={testId}>
568
+ )}>
623
569
  {pageSizeOptions != null && pageSizeOptions.length > 0 && (
624
570
  <div {...stylex.props(styles.pageSizeSelector)}>
625
571
  <div {...stylex.props(styles.pageSizeSelectorControl)}>