@astryxdesign/core 0.1.4-canary.ff77e1c → 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 (598) 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.d.ts +1 -1
  175. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  176. package/dist/MobileNav/MobileNav.js +23 -26
  177. package/dist/MobileNav/MobileNavToggle.js +5 -5
  178. package/dist/MoreMenu/MoreMenu.js +3 -3
  179. package/dist/MultiSelector/MultiSelector.js +56 -56
  180. package/dist/NavIcon/NavIcon.js +3 -3
  181. package/dist/NavMenu/NavHeadingMenu.js +5 -5
  182. package/dist/NavMenu/NavHeadingMenuItem.js +8 -8
  183. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  184. package/dist/NumberInput/NumberInput.js +32 -48
  185. package/dist/Outline/Outline.js +15 -15
  186. package/dist/OverflowList/OverflowList.js +8 -8
  187. package/dist/Overlay/Overlay.js +3 -3
  188. package/dist/Overlay/OverlayScrim.js +5 -5
  189. package/dist/Overlay/useOverlay.js +3 -3
  190. package/dist/Pagination/Pagination.d.ts +1 -1
  191. package/dist/Pagination/Pagination.d.ts.map +1 -1
  192. package/dist/Pagination/Pagination.js +72 -125
  193. package/dist/Popover/Popover.js +16 -16
  194. package/dist/Popover/usePopover.js +7 -7
  195. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  196. package/dist/PowerSearch/PowerSearch.js +92 -110
  197. package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
  198. package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
  199. package/dist/PowerSearch/PowerSearchToken.js +5 -5
  200. package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
  201. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  202. package/dist/ProgressBar/ProgressBar.js +18 -25
  203. package/dist/RadioList/RadioList.js +7 -7
  204. package/dist/RadioList/RadioListItem.d.ts +1 -1
  205. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  206. package/dist/RadioList/RadioListItem.js +21 -24
  207. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  208. package/dist/Resizable/ResizeHandle.js +10 -28
  209. package/dist/Section/Section.js +5 -5
  210. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  211. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  212. package/dist/SegmentedControl/SegmentedControl.js +10 -32
  213. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  214. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  215. package/dist/SegmentedControl/SegmentedControlItem.js +12 -18
  216. package/dist/SelectableCard/SelectableCard.js +5 -5
  217. package/dist/Selector/Selector.js +46 -46
  218. package/dist/Selector/SelectorOption.js +3 -3
  219. package/dist/SideNav/SideNav.d.ts.map +1 -1
  220. package/dist/SideNav/SideNav.js +34 -38
  221. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  222. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  223. package/dist/SideNav/SideNavCollapseButton.js +6 -8
  224. package/dist/SideNav/SideNavHeading.js +87 -87
  225. package/dist/SideNav/SideNavItem.js +42 -42
  226. package/dist/SideNav/SideNavSection.d.ts +1 -1
  227. package/dist/SideNav/SideNavSection.d.ts.map +1 -1
  228. package/dist/SideNav/SideNavSection.js +16 -18
  229. package/dist/Skeleton/Skeleton.js +3 -3
  230. package/dist/Slider/Slider.js +23 -23
  231. package/dist/Spinner/Spinner.js +9 -9
  232. package/dist/StatusDot/StatusDot.js +5 -5
  233. package/dist/Switch/Switch.d.ts +4 -8
  234. package/dist/Switch/Switch.d.ts.map +1 -1
  235. package/dist/Switch/Switch.js +29 -34
  236. package/dist/TabList/Tab.js +18 -18
  237. package/dist/TabList/TabList.js +5 -5
  238. package/dist/TabList/TabMenu.d.ts.map +1 -1
  239. package/dist/TabList/TabMenu.js +30 -57
  240. package/dist/TabList/tab.markers.stylex.d.ts +1 -1
  241. package/dist/Table/BaseTable.d.ts.map +1 -1
  242. package/dist/Table/BaseTable.js +39 -50
  243. package/dist/Table/Table.js +7 -7
  244. package/dist/Table/TableBody.d.ts +1 -1
  245. package/dist/Table/TableBody.d.ts.map +1 -1
  246. package/dist/Table/TableBody.js +5 -9
  247. package/dist/Table/TableCell.js +3 -3
  248. package/dist/Table/TableFooter.d.ts +1 -1
  249. package/dist/Table/TableFooter.d.ts.map +1 -1
  250. package/dist/Table/TableFooter.js +5 -9
  251. package/dist/Table/TableHeader.d.ts +1 -1
  252. package/dist/Table/TableHeader.d.ts.map +1 -1
  253. package/dist/Table/TableHeader.js +5 -9
  254. package/dist/Table/TableHeaderCell.js +3 -3
  255. package/dist/Table/TableRow.js +5 -5
  256. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  257. package/dist/Table/plugins/columnResize/useTableColumnResize.js +11 -14
  258. package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
  259. package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
  260. package/dist/Table/plugins/pagination/paginateData.js +1 -5
  261. package/dist/Table/plugins/pagination/useTablePagination.js +7 -7
  262. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +22 -22
  263. package/dist/Table/plugins/selection/useTableSelection.js +18 -18
  264. package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
  265. package/dist/Table/plugins/selection/useTableSelectionState.js +1 -11
  266. package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
  267. package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
  268. package/dist/Table/plugins/sortable/useTableSortableState.js +4 -8
  269. package/dist/Table/tableContextMenu.js +9 -9
  270. package/dist/Text/Text.js +10 -10
  271. package/dist/TextArea/TextArea.js +14 -14
  272. package/dist/TextInput/TextInput.js +15 -15
  273. package/dist/Thumbnail/Thumbnail.d.ts +2 -3
  274. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  275. package/dist/Thumbnail/Thumbnail.js +29 -30
  276. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  277. package/dist/TimeInput/TimeInput.js +21 -26
  278. package/dist/Timestamp/Timestamp.d.ts +1 -1
  279. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  280. package/dist/Timestamp/Timestamp.js +26 -37
  281. package/dist/Toast/Toast.d.ts.map +1 -1
  282. package/dist/Toast/Toast.js +17 -25
  283. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  284. package/dist/Toast/ToastViewport.js +11 -23
  285. package/dist/Toast/useToast.d.ts.map +1 -1
  286. package/dist/Toast/useToast.js +4 -44
  287. package/dist/ToggleButton/ToggleButton.js +12 -12
  288. package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
  289. package/dist/Token/Token.js +21 -21
  290. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  291. package/dist/Tokenizer/Tokenizer.js +34 -36
  292. package/dist/Toolbar/Toolbar.js +18 -18
  293. package/dist/Tooltip/Tooltip.js +11 -11
  294. package/dist/Tooltip/useTooltip.d.ts +1 -5
  295. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  296. package/dist/Tooltip/useTooltip.js +3 -3
  297. package/dist/TopNav/TopNav.js +32 -32
  298. package/dist/TopNav/TopNavHeading.js +67 -67
  299. package/dist/TopNav/TopNavItem.js +5 -5
  300. package/dist/TopNav/TopNavMegaMenu.js +30 -30
  301. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  302. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  303. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +14 -25
  304. package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
  305. package/dist/TopNav/TopNavMenu.js +32 -32
  306. package/dist/TreeList/TreeList.js +8 -8
  307. package/dist/TreeList/TreeListBranches.js +11 -11
  308. package/dist/TreeList/TreeListItem.js +30 -30
  309. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  310. package/dist/Typeahead/BaseTypeahead.js +20 -23
  311. package/dist/Typeahead/Typeahead.js +12 -12
  312. package/dist/Typeahead/TypeaheadItem.js +10 -10
  313. package/dist/VStack/VStack.js +3 -3
  314. package/dist/astryx.css +0 -7
  315. package/dist/astryx.umd.js +59 -59
  316. package/dist/astryx.umd.js.map +4 -4
  317. package/dist/docs-types.d.ts +2 -8
  318. package/dist/docs-types.d.ts.map +1 -1
  319. package/dist/hooks/focusableSelector.d.ts +1 -1
  320. package/dist/hooks/focusableSelector.d.ts.map +1 -1
  321. package/dist/hooks/focusableSelector.js +1 -1
  322. package/dist/hooks/index.d.ts +0 -2
  323. package/dist/hooks/index.d.ts.map +1 -1
  324. package/dist/hooks/index.js +0 -1
  325. package/dist/hooks/useFocusTrap.d.ts +0 -3
  326. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  327. package/dist/hooks/useFocusTrap.js +1 -38
  328. package/dist/hooks/useInteractiveRole.d.ts +2 -6
  329. package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
  330. package/dist/hooks/useInteractiveRole.js +2 -6
  331. package/dist/hooks/useKeyboardHint.js +9 -9
  332. package/dist/hooks/useStreamingText.d.ts +1 -3
  333. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  334. package/dist/hooks/useStreamingText.js +5 -14
  335. package/dist/theme/MediaTheme.js +3 -3
  336. package/dist/theme/Theme.js +7 -7
  337. package/dist/theme/defineTheme.d.ts +1 -1
  338. package/dist/theme/defineTheme.d.ts.map +1 -1
  339. package/dist/theme/expandColorScale.d.ts.map +1 -1
  340. package/dist/theme/expandColorScale.js +3 -10
  341. package/dist/theme/hct.d.ts +15 -0
  342. package/dist/theme/hct.d.ts.map +1 -1
  343. package/dist/theme/hct.js +9 -9
  344. package/dist/theme/syntax/SyntaxTheme.js +5 -5
  345. package/dist/theme/tokens.d.ts +2 -10
  346. package/dist/theme/tokens.d.ts.map +1 -1
  347. package/dist/theme/tokens.js +4 -220
  348. package/dist/theme/useTheme.d.ts +2 -3
  349. package/dist/theme/useTheme.d.ts.map +1 -1
  350. package/dist/theme/useTheme.js +6 -73
  351. package/dist/utils/index.d.ts +0 -3
  352. package/dist/utils/index.d.ts.map +1 -1
  353. package/dist/utils/index.js +1 -3
  354. package/dist/utils/timeParser.d.ts.map +1 -1
  355. package/dist/utils/timeParser.js +5 -8
  356. package/package.json +3 -3
  357. package/src/AlertDialog/AlertDialog.doc.mjs +0 -4
  358. package/src/AlertDialog/AlertDialog.tsx +0 -2
  359. package/src/AppShell/AppShell.tsx +0 -2
  360. package/src/AspectRatio/AspectRatio.doc.mjs +1 -28
  361. package/src/AspectRatio/AspectRatio.test.tsx +1 -142
  362. package/src/AspectRatio/AspectRatio.tsx +10 -70
  363. package/src/AspectRatio/index.ts +1 -5
  364. package/src/Avatar/Avatar.doc.mjs +0 -11
  365. package/src/Avatar/Avatar.test.tsx +1 -32
  366. package/src/Avatar/Avatar.tsx +20 -12
  367. package/src/AvatarGroup/AvatarGroup.doc.mjs +0 -1
  368. package/src/Banner/Banner.doc.mjs +0 -8
  369. package/src/Banner/Banner.test.tsx +0 -38
  370. package/src/Banner/Banner.tsx +1 -8
  371. package/src/Calendar/Calendar.doc.mjs +1 -1
  372. package/src/Calendar/Calendar.test.tsx +17 -122
  373. package/src/Calendar/Calendar.tsx +5 -26
  374. package/src/Calendar/dayCellUtils.ts +1 -3
  375. package/src/Calendar/styles.ts +2 -12
  376. package/src/Card/Card.doc.mjs +1 -1
  377. package/src/Card/Card.tsx +6 -16
  378. package/src/Carousel/Carousel.doc.mjs +12 -12
  379. package/src/Carousel/Carousel.test.tsx +0 -13
  380. package/src/Carousel/Carousel.tsx +2 -4
  381. package/src/Carousel/carousel.markers.stylex.ts +10 -0
  382. package/src/Chat/Chat.doc.mjs +1 -1
  383. package/src/Chat/ChatComposerInput.test.tsx +1 -27
  384. package/src/Chat/ChatComposerInput.tsx +15 -20
  385. package/src/Chat/ChatDictationButton.tsx +4 -4
  386. package/src/Chat/ChatLayoutScrollButton.tsx +1 -3
  387. package/src/Chat/ChatMessageMetadata.tsx +6 -4
  388. package/src/Chat/ChatSystemMessage.test.tsx +11 -26
  389. package/src/Chat/ChatSystemMessage.tsx +7 -7
  390. package/src/Chat/ChatTokenizedText.test.tsx +16 -29
  391. package/src/Chat/ChatTokenizedText.tsx +8 -15
  392. package/src/Chat/ChatToolCalls.test.tsx +0 -55
  393. package/src/Chat/ChatToolCalls.tsx +12 -10
  394. package/src/Chat/index.ts +4 -1
  395. package/src/Chat/useTriggerMenu.tsx +4 -1
  396. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  397. package/src/CheckboxInput/CheckboxInput.test.tsx +4 -71
  398. package/src/CheckboxInput/CheckboxInput.tsx +0 -2
  399. package/src/CheckboxList/CheckboxList.test.tsx +0 -19
  400. package/src/CheckboxList/CheckboxListItem.tsx +2 -11
  401. package/src/Citation/Citation.doc.mjs +0 -5
  402. package/src/ClickableCard/ClickableCard.tsx +2 -45
  403. package/src/CodeBlock/CodeBlock.doc.mjs +2 -7
  404. package/src/CodeBlock/CodeBlock.test.tsx +3 -122
  405. package/src/CodeBlock/CodeBlock.tsx +4 -62
  406. package/src/Collapsible/Collapsible.doc.mjs +4 -8
  407. package/src/Collapsible/Collapsible.tsx +10 -86
  408. package/src/Collapsible/CollapsibleGroup.doc.mjs +3 -27
  409. package/src/Collapsible/CollapsibleGroup.test.tsx +0 -318
  410. package/src/Collapsible/CollapsibleGroup.tsx +9 -107
  411. package/src/Collapsible/CollapsibleGroupContext.tsx +2 -42
  412. package/src/Collapsible/index.ts +0 -4
  413. package/src/Collapsible/useCollapsible.ts +6 -20
  414. package/src/CommandPalette/CommandPalette.doc.mjs +0 -5
  415. package/src/CommandPalette/CommandPalette.tsx +3 -5
  416. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +0 -5
  417. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +0 -10
  418. package/src/CommandPalette/CommandPaletteInput.doc.mjs +0 -6
  419. package/src/CommandPalette/CommandPaletteItem.doc.mjs +0 -6
  420. package/src/CommandPalette/CommandPaletteList.doc.mjs +0 -9
  421. package/src/ContextMenu/ContextMenu.doc.mjs +0 -15
  422. package/src/ContextMenu/ContextMenu.test.tsx +0 -87
  423. package/src/ContextMenu/ContextMenu.tsx +28 -87
  424. package/src/ContextMenu/ContextMenuItem.doc.mjs +0 -6
  425. package/src/DateInput/DateInput.test.tsx +20 -11
  426. package/src/DateRangeInput/DateRangeInput.test.tsx +44 -31
  427. package/src/DateTimeInput/DateTimeInput.doc.mjs +2 -3
  428. package/src/DateTimeInput/DateTimeInput.test.tsx +16 -118
  429. package/src/DateTimeInput/DateTimeInput.tsx +2 -8
  430. package/src/DateTimeInput/index.ts +0 -1
  431. package/src/Dialog/Dialog.doc.mjs +0 -4
  432. package/src/Dialog/DialogHeader.doc.mjs +0 -45
  433. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
  434. package/src/DropdownMenu/DropdownMenu.test.tsx +2 -22
  435. package/src/DropdownMenu/DropdownMenuItem.tsx +17 -5
  436. package/src/EmptyState/EmptyState.doc.mjs +1 -1
  437. package/src/Field/Field.test.tsx +4 -1
  438. package/src/Field/FieldLabel.test.tsx +2 -2
  439. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +3 -0
  440. package/src/Grid/Grid.test.tsx +18 -43
  441. package/src/Grid/Grid.tsx +9 -26
  442. package/src/HoverCard/HoverCard.doc.mjs +6 -6
  443. package/src/HoverCard/useHoverCard.doc.mjs +5 -5
  444. package/src/HoverCard/useHoverCard.tsx +2 -9
  445. package/src/Icon/Icon.test.tsx +29 -41
  446. package/src/Icon/Icon.tsx +2 -6
  447. package/src/InputGroup/InputGroup.doc.mjs +0 -1
  448. package/src/InputGroup/InputGroup.tsx +2 -2
  449. package/src/Item/Item.tsx +1 -1
  450. package/src/Layer/useLayer.doc.mjs +2 -2
  451. package/src/Layer/useLayer.test.tsx +2 -221
  452. package/src/Layer/useLayer.tsx +30 -69
  453. package/src/Layout/LayoutContent.doc.mjs +0 -12
  454. package/src/Layout/LayoutPanel.doc.mjs +0 -40
  455. package/src/Lightbox/Lightbox.doc.mjs +0 -5
  456. package/src/Lightbox/Lightbox.test.tsx +2 -123
  457. package/src/Lightbox/Lightbox.tsx +1 -29
  458. package/src/Markdown/Markdown.tsx +7 -9
  459. package/src/Markdown/parser.perf.test.ts +12 -34
  460. package/src/MobileNav/MobileNav.test.tsx +0 -56
  461. package/src/MobileNav/MobileNav.tsx +8 -13
  462. package/src/NavMenu/NavMenu.doc.mjs +0 -15
  463. package/src/NumberInput/NumberInput.test.tsx +3 -48
  464. package/src/NumberInput/NumberInput.tsx +15 -32
  465. package/src/Outline/Outline.doc.mjs +0 -2
  466. package/src/Overlay/Overlay.doc.mjs +0 -6
  467. package/src/Pagination/Pagination.test.tsx +0 -162
  468. package/src/Pagination/Pagination.tsx +26 -80
  469. package/src/Popover/Popover.doc.mjs +6 -6
  470. package/src/Popover/Popover.test.tsx +0 -65
  471. package/src/Popover/usePopover.doc.mjs +1 -1
  472. package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
  473. package/src/PowerSearch/PowerSearch.test.tsx +1 -109
  474. package/src/PowerSearch/PowerSearch.tsx +16 -37
  475. package/src/ProgressBar/ProgressBar.doc.mjs +0 -2
  476. package/src/ProgressBar/ProgressBar.test.tsx +0 -30
  477. package/src/ProgressBar/ProgressBar.tsx +5 -12
  478. package/src/RadioList/RadioList.test.tsx +0 -19
  479. package/src/RadioList/RadioListItem.tsx +4 -9
  480. package/src/Resizable/ResizeHandle.tsx +4 -22
  481. package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
  482. package/src/SegmentedControl/SegmentedControl.test.tsx +0 -192
  483. package/src/SegmentedControl/SegmentedControl.tsx +5 -27
  484. package/src/SegmentedControl/SegmentedControlItem.tsx +4 -9
  485. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  486. package/src/Selector/Selector.test.tsx +1 -27
  487. package/src/SideNav/SideNav.doc.mjs +1 -7
  488. package/src/SideNav/SideNav.test.tsx +0 -66
  489. package/src/SideNav/SideNav.tsx +2 -6
  490. package/src/SideNav/SideNavCollapseButton.tsx +3 -4
  491. package/src/SideNav/SideNavSection.tsx +4 -6
  492. package/src/Switch/Switch.doc.mjs +7 -7
  493. package/src/Switch/Switch.test.tsx +3 -102
  494. package/src/Switch/Switch.tsx +7 -20
  495. package/src/TabList/TabList.test.tsx +1 -185
  496. package/src/TabList/TabMenu.tsx +9 -45
  497. package/src/Table/BaseTable.tsx +2 -13
  498. package/src/Table/Table.doc.mjs +0 -5
  499. package/src/Table/Table.test.tsx +0 -87
  500. package/src/Table/TableBody.tsx +2 -15
  501. package/src/Table/TableFooter.tsx +2 -15
  502. package/src/Table/TableHeader.tsx +2 -15
  503. package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +0 -13
  504. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +1 -3
  505. package/src/Table/plugins/pagination/paginateData.ts +1 -5
  506. package/src/Table/plugins/pagination/useTablePagination.test.tsx +0 -13
  507. package/src/Table/plugins/selection/useTableSelectionState.test.tsx +0 -23
  508. package/src/Table/plugins/selection/useTableSelectionState.tsx +6 -11
  509. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +1 -35
  510. package/src/Table/plugins/sortable/useTableSortableState.tsx +4 -8
  511. package/src/TextArea/TextArea.test.tsx +3 -3
  512. package/src/TextInput/TextInput.test.tsx +3 -3
  513. package/src/Thumbnail/Thumbnail.test.tsx +2 -36
  514. package/src/Thumbnail/Thumbnail.tsx +2 -4
  515. package/src/TimeInput/TimeInput.test.tsx +0 -37
  516. package/src/TimeInput/TimeInput.tsx +1 -11
  517. package/src/Timestamp/Timestamp.doc.mjs +1 -1
  518. package/src/Timestamp/Timestamp.test.tsx +0 -52
  519. package/src/Timestamp/Timestamp.tsx +16 -30
  520. package/src/Toast/Toast.tsx +3 -11
  521. package/src/Toast/ToastViewport.test.tsx +0 -64
  522. package/src/Toast/ToastViewport.tsx +0 -12
  523. package/src/Toast/useToast.tsx +0 -41
  524. package/src/ToggleButton/ToggleButton.doc.mjs +0 -1
  525. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  526. package/src/Tokenizer/Tokenizer.test.tsx +0 -54
  527. package/src/Tokenizer/Tokenizer.tsx +4 -5
  528. package/src/Tooltip/Tooltip.doc.mjs +6 -6
  529. package/src/Tooltip/useTooltip.doc.mjs +5 -5
  530. package/src/Tooltip/useTooltip.tsx +2 -12
  531. package/src/TopNav/TopNav.doc.mjs +1 -1
  532. package/src/TopNav/TopNav.test.tsx +7 -23
  533. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +2 -9
  534. package/src/TreeList/TreeList.doc.mjs +2 -2
  535. package/src/Typeahead/BaseTypeahead.doc.mjs +0 -19
  536. package/src/Typeahead/BaseTypeahead.tsx +2 -5
  537. package/src/Typeahead/Typeahead.doc.mjs +1 -1
  538. package/src/Typeahead/Typeahead.test.tsx +1 -45
  539. package/src/docs-types.ts +1 -9
  540. package/src/hooks/focusableSelector.ts +1 -1
  541. package/src/hooks/index.ts +0 -3
  542. package/src/hooks/useFocusTrap.doc.mjs +2 -4
  543. package/src/hooks/useFocusTrap.test.tsx +1 -149
  544. package/src/hooks/useFocusTrap.ts +1 -50
  545. package/src/hooks/useInteractiveRole.ts +4 -12
  546. package/src/hooks/useStreamingText.test.ts +19 -54
  547. package/src/hooks/useStreamingText.ts +5 -16
  548. package/src/hooks/useTreeFocus.test.tsx +3 -1
  549. package/src/reset.css +0 -29
  550. package/src/theme/SyntaxTheme.doc.mjs +4 -4
  551. package/src/theme/defineTheme.ts +13 -4
  552. package/src/theme/derivedVarRegistry.test.ts +2 -2
  553. package/src/theme/expandColorScale.test.ts +0 -29
  554. package/src/theme/expandColorScale.ts +6 -11
  555. package/src/theme/hct.ts +17 -9
  556. package/src/theme/tokens.test.ts +9 -182
  557. package/src/theme/tokens.ts +4 -239
  558. package/src/theme/useTheme.test.tsx +2 -126
  559. package/src/theme/useTheme.ts +6 -87
  560. package/src/utils/index.ts +0 -4
  561. package/src/utils/sharedResizeObserver.test.ts +2 -2
  562. package/src/utils/timeParser.test.ts +0 -13
  563. package/src/utils/timeParser.ts +5 -8
  564. package/dist/hooks/useHotkeys.d.ts +0 -51
  565. package/dist/hooks/useHotkeys.d.ts.map +0 -1
  566. package/dist/hooks/useHotkeys.js +0 -160
  567. package/dist/utils/color.d.ts +0 -42
  568. package/dist/utils/color.d.ts.map +0 -1
  569. package/dist/utils/color.js +0 -150
  570. package/dist/utils/composeEventHandlers.d.ts +0 -30
  571. package/dist/utils/composeEventHandlers.d.ts.map +0 -1
  572. package/dist/utils/composeEventHandlers.js +0 -40
  573. package/src/Chat/ChatDictationButton.test.tsx +0 -43
  574. package/src/Chat/ChatLayoutScrollButton.test.tsx +0 -33
  575. package/src/Chat/ChatMessageMetadata.test.tsx +0 -32
  576. package/src/Collapsible/Collapsible.test.tsx +0 -405
  577. package/src/FieldStatus/FieldStatus.test.tsx +0 -282
  578. package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +0 -185
  579. package/src/Layout/Layout.test.tsx +0 -285
  580. package/src/Layout/LayoutSlots.test.tsx +0 -364
  581. package/src/Outline/parseOutlineFromMarkdown.test.ts +0 -80
  582. package/src/OverflowList/OverflowList.test.tsx +0 -416
  583. package/src/Overlay/Overlay.test.tsx +0 -356
  584. package/src/Resizable/ResizeHandle.test.tsx +0 -218
  585. package/src/SizeContext/SizeContext.test.tsx +0 -226
  586. package/src/Toast/useToast.test.tsx +0 -258
  587. package/src/__tests__/TestIcon.tsx +0 -26
  588. package/src/__tests__/fastRoleQueries.ts +0 -66
  589. package/src/docPropReferences.test.ts +0 -178
  590. package/src/hooks/useHotkeys.doc.mjs +0 -52
  591. package/src/hooks/useHotkeys.test.ts +0 -245
  592. package/src/hooks/useHotkeys.ts +0 -203
  593. package/src/theme/themingTargets.test.ts +0 -353
  594. package/src/utils/color.test.ts +0 -133
  595. package/src/utils/color.ts +0 -148
  596. package/src/utils/composeEventHandlers.test.ts +0 -71
  597. package/src/utils/composeEventHandlers.ts +0 -44
  598. package/src/utils/mergeProps.test.ts +0 -166
@@ -354,69 +354,4 @@ describe('Popover', () => {
354
354
  expect(trigger).toHaveAttribute('aria-expanded', 'true');
355
355
  });
356
356
  });
357
-
358
- describe('focus restoration', () => {
359
- it('returns focus to the trigger when closed via Escape', () => {
360
- render(
361
- <Popover
362
- content={
363
- <button type="button" data-testid="inside-content">
364
- Inside
365
- </button>
366
- }
367
- label="Test">
368
- <button type="button">Open</button>
369
- </Popover>,
370
- );
371
- const trigger = screen.getByRole('button', {name: 'Open'});
372
- trigger.focus();
373
- expect(trigger).toHaveFocus();
374
-
375
- fireEvent.click(trigger);
376
- expect(trigger).toHaveAttribute('aria-expanded', 'true');
377
-
378
- // Move focus into the open popover, as a keyboard user would.
379
- const inside = screen.getByTestId('inside-content');
380
- inside.focus();
381
- expect(inside).toHaveFocus();
382
-
383
- fireEvent.keyDown(document, {key: 'Escape'});
384
- expect(trigger).toHaveAttribute('aria-expanded', 'false');
385
- expect(trigger).toHaveFocus();
386
- });
387
-
388
- it('returns focus to the trigger on light dismiss', () => {
389
- render(
390
- <Popover
391
- content={
392
- <button type="button" data-testid="inside-content">
393
- Inside
394
- </button>
395
- }
396
- label="Test">
397
- <button type="button">Open</button>
398
- </Popover>,
399
- );
400
- const trigger = screen.getByRole('button', {name: 'Open'});
401
- trigger.focus();
402
-
403
- fireEvent.click(trigger);
404
- expect(trigger).toHaveAttribute('aria-expanded', 'true');
405
-
406
- const inside = screen.getByTestId('inside-content');
407
- inside.focus();
408
- expect(inside).toHaveFocus();
409
-
410
- // Simulate the browser's light dismiss for popover="auto": clicking
411
- // outside fires a `toggle` event with newState "closed".
412
- const popoverEl = document.querySelector('[popover]');
413
- expect(popoverEl).not.toBeNull();
414
- const toggleEvent = new Event('toggle');
415
- Object.defineProperty(toggleEvent, 'newState', {value: 'closed'});
416
- fireEvent(popoverEl as HTMLElement, toggleEvent);
417
-
418
- expect(trigger).toHaveAttribute('aria-expanded', 'false');
419
- expect(trigger).toHaveFocus();
420
- });
421
- });
422
357
  });
@@ -29,7 +29,7 @@ export const docs = {
29
29
  {name: 'toggle', type: '() => void', description: 'Toggle the popover open or closed.'},
30
30
  {name: 'isOpen', type: 'boolean', description: 'Whether the popover is currently open.'},
31
31
  {name: 'id', type: 'string', description: 'Unique ID for aria-describedby or aria-controls.'},
32
- {name: 'render', type: '(children: ReactNode, props?: ContextRenderProps) => ReactNode', description: 'Render function for anchor-positioned popover content. Pass placement and alignment here. Logical: start/end resolve against the popover\'s own inherited direction (RTL mirrors in pure CSS).'},
32
+ {name: 'render', type: '(children: ReactNode, props?: ContextRenderProps) => ReactNode', description: 'Render function for anchor-positioned popover content. Pass placement and alignment here.'},
33
33
  {name: 'triggerProps', type: '{aria-haspopup: "dialog" | "true"; aria-expanded: boolean; aria-controls: string}', description: 'ARIA attributes to spread onto the trigger element. aria-haspopup reflects the popover role.'},
34
34
  ],
35
35
  usage: {
@@ -120,7 +120,7 @@ export const docs = {
120
120
  name: 'resultCount',
121
121
  type: 'number | string',
122
122
  description:
123
- 'Number of results matching the current filters. When a number, formatted as "N results". When a string, displayed as-is. Changes are announced to screen readers via a polite live region.',
123
+ 'Number of results matching the current filters. When a number, formatted as "N results". When a string, displayed as-is.',
124
124
  },
125
125
  {
126
126
  name: 'size',
@@ -261,7 +261,7 @@ export const docsZh = {
261
261
  name: 'resultCount',
262
262
  type: 'number | string',
263
263
  description:
264
- '匹配当前过滤器的结果数量。数字类型时格式化为"N results"。字符串类型时按原样显示。数量变化会通过 polite 实时区域向屏幕阅读器播报。',
264
+ '匹配当前过滤器的结果数量。数字类型时格式化为"N results"。字符串类型时按原样显示。',
265
265
  },
266
266
  {
267
267
  name: 'size',
@@ -10,11 +10,10 @@
10
10
  */
11
11
 
12
12
  import {useState} from 'react';
13
- import {describe, it, expect, vi, beforeAll, afterAll, afterEach} from 'vitest';
13
+ import {describe, it, expect, vi, beforeAll, afterAll} from 'vitest';
14
14
  import {render, screen, act, fireEvent, waitFor} from '@testing-library/react';
15
15
  import userEvent from '@testing-library/user-event';
16
16
  import {PowerSearch} from './PowerSearch';
17
- import {__resetLiveRegionsForTest} from '../hooks/useAnnounce';
18
17
  import type {PowerSearchConfig, PowerSearchFilter} from './types';
19
18
 
20
19
  // =============================================================================
@@ -60,12 +59,6 @@ afterAll(() => {
60
59
  (HTMLElement.prototype as any).matches = originalMatches;
61
60
  });
62
61
 
63
- // Reset the singleton live regions between tests so result-count
64
- // announcements from one test don't leak into the next.
65
- afterEach(() => {
66
- __resetLiveRegionsForTest();
67
- });
68
-
69
62
  // =============================================================================
70
63
  // Fixtures
71
64
  // =============================================================================
@@ -302,105 +295,4 @@ describe('PowerSearch', () => {
302
295
  expect(screen.getByRole('combobox')).toBeDisabled();
303
296
  });
304
297
  });
305
-
306
- describe('result count announcements', () => {
307
- const politeRegion = () =>
308
- document.querySelector('[data-astryx-live-region="polite"]');
309
-
310
- it('announces the result count to a polite live region when it changes', async () => {
311
- const {rerender} = render(
312
- <PowerSearch
313
- config={config}
314
- filters={[]}
315
- onChange={() => {}}
316
- resultCount={0}
317
- />,
318
- );
319
- rerender(
320
- <PowerSearch
321
- config={config}
322
- filters={[]}
323
- onChange={() => {}}
324
- resultCount={5}
325
- />,
326
- );
327
- await waitFor(() => {
328
- expect(politeRegion()).toHaveTextContent('5 results');
329
- });
330
- });
331
-
332
- it('announces "1 result" (singular) for a single match', async () => {
333
- const {rerender} = render(
334
- <PowerSearch
335
- config={config}
336
- filters={[]}
337
- onChange={() => {}}
338
- resultCount={0}
339
- />,
340
- );
341
- rerender(
342
- <PowerSearch
343
- config={config}
344
- filters={[]}
345
- onChange={() => {}}
346
- resultCount={1}
347
- />,
348
- );
349
- await waitFor(() => {
350
- expect(politeRegion()).toHaveTextContent('1 result');
351
- });
352
- expect(politeRegion()?.textContent).not.toMatch(/results/);
353
- });
354
-
355
- it('announces a string result count verbatim', async () => {
356
- const {rerender} = render(
357
- <PowerSearch
358
- config={config}
359
- filters={[]}
360
- onChange={() => {}}
361
- resultCount="0 items"
362
- />,
363
- );
364
- rerender(
365
- <PowerSearch
366
- config={config}
367
- filters={[]}
368
- onChange={() => {}}
369
- resultCount="Showing 1.2k matches"
370
- />,
371
- );
372
- await waitFor(() => {
373
- expect(politeRegion()).toHaveTextContent('Showing 1.2k matches');
374
- });
375
- });
376
-
377
- it('does not announce the result count present on initial mount', async () => {
378
- render(
379
- <PowerSearch
380
- config={config}
381
- filters={[]}
382
- onChange={() => {}}
383
- resultCount={42}
384
- />,
385
- );
386
- // Flush effects and any pending live-region rAF writes.
387
- await act(async () => {
388
- await new Promise(resolve => setTimeout(resolve, 50));
389
- });
390
- expect(politeRegion()?.textContent ?? '').not.toContain('42');
391
- });
392
-
393
- it('leaves Typeahead dropdown announcements intact and stays silent when no resultCount is set', async () => {
394
- const user = userEvent.setup();
395
- render(<PowerSearchWrapper config={config} />);
396
- const input = screen.getByRole('combobox');
397
- await user.click(input);
398
- await user.type(input, 'Status');
399
- // BaseTypeahead announces the dropdown suggestion count; PowerSearch adds
400
- // no result-count announcement because resultCount is unset.
401
- await waitFor(() => {
402
- expect(politeRegion()?.textContent).toMatch(/\d+ results?/);
403
- });
404
- });
405
- });
406
298
  });
@@ -16,7 +16,6 @@
16
16
 
17
17
  import React, {
18
18
  useCallback,
19
- useEffect,
20
19
  useImperativeHandle,
21
20
  useMemo,
22
21
  useRef,
@@ -39,7 +38,6 @@ import type {IconType} from '../Icon';
39
38
  import type {IconName} from '../Icon/globalIconRegistry';
40
39
  import type {InputStatus} from '../Field';
41
40
  import {usePopover} from '../Popover/usePopover';
42
- import {useAnnounce} from '../hooks/useAnnounce';
43
41
  import {
44
42
  spacingVars,
45
43
  colorVars,
@@ -947,42 +945,23 @@ export function PowerSearch({
947
945
  isReadOnly,
948
946
  ]);
949
947
 
950
- // Plain-text form of the result count, shared by the visible label and the
951
- // screen-reader announcement so the two never drift.
952
- const resultCountText = useMemo((): string | null => {
953
- if (resultCount == null) {
954
- return null;
955
- }
956
- if (typeof resultCount === 'number') {
957
- const formatted = new Intl.NumberFormat().format(resultCount);
958
- return `${formatted} ${resultCount === 1 ? 'result' : 'results'}`;
959
- }
960
- return resultCount;
961
- }, [resultCount]);
962
-
963
- // Announce result-count changes to screen readers through a polite live
964
- // region, mirroring the way Typeahead announces its dropdown result count.
965
- // The count is otherwise only shown visually and stays silent to assistive
966
- // tech. Skip the first run so the count already present on mount isn't
967
- // announced unprompted — only user-driven changes are spoken.
968
- const announce = useAnnounce();
969
- const hasMountedRef = useRef(false);
970
- useEffect(() => {
971
- if (!hasMountedRef.current) {
972
- hasMountedRef.current = true;
973
- return;
974
- }
975
- if (resultCountText != null) {
976
- announce(resultCountText);
977
- }
978
- }, [resultCountText, announce]);
979
-
980
948
  // Build combined endContent from resultCount + endContent props
981
949
  const combinedEndContent = useMemo((): React.ReactNode => {
982
- const resultCountNode =
983
- resultCountText != null ? (
984
- <span {...stylex.props(resultCountStyles.text)}>{resultCountText}</span>
985
- ) : null;
950
+ let resultCountNode: React.ReactNode = null;
951
+ if (resultCount != null) {
952
+ if (typeof resultCount === 'number') {
953
+ const formatted = new Intl.NumberFormat().format(resultCount);
954
+ resultCountNode = (
955
+ <span {...stylex.props(resultCountStyles.text)}>
956
+ {formatted} {resultCount === 1 ? 'result' : 'results'}
957
+ </span>
958
+ );
959
+ } else {
960
+ resultCountNode = (
961
+ <span {...stylex.props(resultCountStyles.text)}>{resultCount}</span>
962
+ );
963
+ }
964
+ }
986
965
 
987
966
  if (resultCountNode && endContent) {
988
967
  return (
@@ -993,7 +972,7 @@ export function PowerSearch({
993
972
  );
994
973
  }
995
974
  return resultCountNode || endContent || undefined;
996
- }, [resultCountText, endContent]);
975
+ }, [resultCount, endContent]);
997
976
 
998
977
  return (
999
978
  <>
@@ -73,7 +73,6 @@ export const docs = {
73
73
  targets: [
74
74
  {className: 'astryx-progressbar', visualProps: ['variant']},
75
75
  {className: 'astryx-progressbar-fill', visualProps: ['variant']},
76
- {className: 'astryx-progressbar-track'},
77
76
  ],
78
77
  },
79
78
  usage: {
@@ -160,7 +159,6 @@ export const docsZh = {
160
159
  targets: [
161
160
  {className: 'astryx-progressbar', visualProps: ['variant']},
162
161
  {className: 'astryx-progressbar-fill', visualProps: ['variant']},
163
- {className: 'astryx-progressbar-track'},
164
162
  ],
165
163
  },
166
164
  usage: {
@@ -140,36 +140,6 @@ describe('ProgressBar', () => {
140
140
  expect(progressbar).toHaveAttribute('aria-valuemax', '0');
141
141
  });
142
142
 
143
- it('treats a NaN value as empty progress instead of leaking "NaN"', () => {
144
- // e.g. an upstream `loaded / total * 100` where total is still 0.
145
- render(<ProgressBar value={NaN} label="Upload" hasValueLabel />);
146
- const progressbar = screen.getByRole('progressbar');
147
- expect(progressbar).toHaveAttribute('aria-valuenow', '0');
148
- expect(progressbar.getAttribute('aria-valuetext')).toBe('0%');
149
- expect(screen.queryByText(/NaN/)).not.toBeInTheDocument();
150
- // The fill width must be a real percentage, not "NaN%".
151
- const fill = progressbar.firstElementChild as HTMLElement;
152
- expect(fill.style.width).toBe('0%');
153
- });
154
-
155
- it('treats a NaN max as an empty range instead of leaking "NaN"', () => {
156
- render(<ProgressBar value={5} max={NaN} label="Steps" hasValueLabel />);
157
- const progressbar = screen.getByRole('progressbar');
158
- expect(progressbar).toHaveAttribute('aria-valuenow', '0');
159
- expect(progressbar).toHaveAttribute('aria-valuemax', '0');
160
- expect(screen.queryByText(/NaN/)).not.toBeInTheDocument();
161
- });
162
-
163
- it('does not render NaN in the value label when max is zero', () => {
164
- render(<ProgressBar value={0} max={0} label="Empty" hasValueLabel />);
165
- expect(screen.queryByText(/NaN|Infinity/)).not.toBeInTheDocument();
166
- const progressbar = screen.getByRole('progressbar');
167
- expect(progressbar.getAttribute('aria-valuetext') ?? '').not.toMatch(
168
- /NaN|Infinity/,
169
- );
170
- expect(screen.getByText('0%')).toBeInTheDocument();
171
- });
172
-
173
143
  // Disabled state
174
144
  describe('disabled state', () => {
175
145
  it('renders with isDisabled', () => {
@@ -228,8 +228,7 @@ const variantStyles = stylex.create({
228
228
  });
229
229
 
230
230
  function defaultFormatValueLabel(value: number, max: number): string {
231
- const pct = max > 0 ? Math.round((value / max) * 100) : 0;
232
- return `${pct}%`;
231
+ return `${Math.round((value / max) * 100)}%`;
233
232
  }
234
233
 
235
234
  /**
@@ -273,15 +272,9 @@ export function ProgressBar({
273
272
  ...rest
274
273
  }: ProgressBarProps) {
275
274
  const labelId = useId();
276
- // A non-finite value or max (e.g. a NaN from an upstream `loaded / total`
277
- // with total 0) would otherwise leak into aria-valuenow, the value label,
278
- // and the fill width as the string "NaN". Treat it as empty progress,
279
- // matching the max=0 handling below.
280
- const safeValue = Number.isFinite(value) ? value : 0;
281
- const safeMax = Number.isFinite(max) ? max : 0;
282
- const clampedValue = Math.min(Math.max(0, safeValue), safeMax);
283
- const percentage = safeMax > 0 ? (clampedValue / safeMax) * 100 : 0;
284
- const valueText = formatValueLabel(clampedValue, safeMax);
275
+ const clampedValue = Math.min(Math.max(0, value), max);
276
+ const percentage = max > 0 ? (clampedValue / max) * 100 : 0;
277
+ const valueText = formatValueLabel(clampedValue, max);
285
278
 
286
279
  const showValueLabel = hasValueLabel && !isIndeterminate;
287
280
 
@@ -329,7 +322,7 @@ export function ProgressBar({
329
322
  role="progressbar"
330
323
  aria-valuenow={isIndeterminate ? undefined : clampedValue}
331
324
  aria-valuemin={isIndeterminate ? undefined : 0}
332
- aria-valuemax={isIndeterminate ? undefined : safeMax}
325
+ aria-valuemax={isIndeterminate ? undefined : max}
333
326
  aria-labelledby={labelId}
334
327
  aria-valuetext={isIndeterminate ? undefined : valueText}
335
328
  {...mergeProps(
@@ -622,23 +622,4 @@ describe('RadioList', () => {
622
622
  expect(input.getAttribute('name')).toBeTruthy();
623
623
  });
624
624
  });
625
-
626
- describe('RadioListItem rest forwarding', () => {
627
- it('forwards data-testid, id, and aria-* to the item root element', () => {
628
- render(
629
- <RadioList label="Preference" value="" onChange={() => {}}>
630
- <RadioListItem
631
- label="Option A"
632
- value="a"
633
- data-testid="item-a"
634
- id="item-a-id"
635
- aria-label="First option"
636
- />
637
- </RadioList>,
638
- );
639
- const item = screen.getByTestId('item-a');
640
- expect(item).toHaveAttribute('id', 'item-a-id');
641
- expect(item).toHaveAttribute('aria-label', 'First option');
642
- });
643
- });
644
625
  });
@@ -220,10 +220,7 @@ export function RadioListItem({
220
220
  isDisabled: isItemDisabled = false,
221
221
  startContent,
222
222
  endContent,
223
- xstyle,
224
- className,
225
- style,
226
- ...rest
223
+ 'data-testid': dataTestId,
227
224
  }: RadioListItemProps) {
228
225
  const context = use(RadioListContext);
229
226
  if (!context) {
@@ -316,13 +313,11 @@ export function RadioListItem({
316
313
  return (
317
314
  <div
318
315
  ref={ref}
316
+ data-testid={dataTestId}
319
317
  {...mergeProps(
320
318
  themeProps('radio-list-item'),
321
- stylex.props(styles.container, !isDisabled && radioScope, xstyle),
322
- className,
323
- style,
324
- )}
325
- {...rest}>
319
+ stylex.props(styles.container, !isDisabled && radioScope),
320
+ )}>
326
321
  <Item
327
322
  startContent={mediaContent}
328
323
  label={
@@ -316,9 +316,6 @@ export function ResizeHandle({
316
316
  ...props
317
317
  }: ResizeHandleProps) {
318
318
  const handleRef = useRef<HTMLDivElement>(null);
319
- // Removes the in-flight drag's window listeners (and resets body styles).
320
- // Held in a ref so unmount can tear down a drag that never got a pointerup.
321
- const dragCleanupRef = useRef<(() => void) | null>(null);
322
319
  const [isDragging, setIsDragging] = useState(false);
323
320
  const [isHovered, setIsHovered] = useState(false);
324
321
  const [isFocused, setIsFocused] = useState(false);
@@ -378,12 +375,10 @@ export function ResizeHandle({
378
375
  window.removeEventListener('pointermove', onMove);
379
376
  window.removeEventListener('pointerup', onUp);
380
377
  window.removeEventListener('pointercancel', onCancel);
381
- dragCleanupRef.current = null;
382
378
  }
383
379
  window.addEventListener('pointermove', onMove);
384
380
  window.addEventListener('pointerup', onUp);
385
381
  window.addEventListener('pointercancel', onCancel);
386
- dragCleanupRef.current = cleanup;
387
382
  },
388
383
  [isDisabled, resizable, isHorizontal, getRTLMultiplier, sign],
389
384
  );
@@ -459,19 +454,14 @@ export function ResizeHandle({
459
454
  }, [isDisabled, resizable]);
460
455
 
461
456
  // --- Cleanup on unmount ---
462
- // A drag in flight when the handle unmounts never gets its pointerup, so
463
- // tear down the window listeners here too — otherwise every pointermove
464
- // keeps driving the (still-mounted) region's resize state after the handle
465
- // is gone, and the body cursor/user-select overrides stick.
466
457
  useEffect(() => {
467
458
  return () => {
468
- if (dragCleanupRef.current) {
469
- dragCleanupRef.current();
459
+ if (isDragging) {
470
460
  document.body.style.cursor = '';
471
461
  document.body.style.userSelect = '';
472
462
  }
473
463
  };
474
- }, []);
464
+ }, [isDragging]);
475
465
 
476
466
  // --- ARIA ---
477
467
  const ariaValueNow = resizable ? resizable._size : undefined;
@@ -520,16 +510,7 @@ export function ResizeHandle({
520
510
  ),
521
511
  className,
522
512
  )}
523
- {...props}
524
- // Keyboard resizing must fire from the focusable separator, not a child:
525
- // keydown fires on the focused element and bubbles up, so a handler on a
526
- // descendant never runs (per the WAI-ARIA window-splitter pattern).
527
- // Placed after {...props} and composed with any consumer onKeyDown so
528
- // this accessibility-critical handler can't be clobbered by a passed prop.
529
- onKeyDown={e => {
530
- props.onKeyDown?.(e);
531
- handleKeyDown(e);
532
- }}>
513
+ {...props}>
533
514
  {/* Wider invisible hit area for pointer interaction */}
534
515
  <div
535
516
  {...stylex.props(
@@ -547,6 +528,7 @@ export function ResizeHandle({
547
528
  setIsHovered(false);
548
529
  }
549
530
  }}
531
+ onKeyDown={handleKeyDown}
550
532
  />
551
533
  {/* Pill grip indicator — themed via .astryx-resize-handle-pill */}
552
534
  {children ?? (
@@ -16,7 +16,7 @@ export const docs = {
16
16
  theming: {
17
17
  targets: [
18
18
  {className: 'astryx-segmented-control', visualProps: ['size']},
19
- {className: 'astryx-segmented-control-item', visualProps: ['size'], states: ['selected', 'disabled']},
19
+ {className: 'astryx-segmented-control-item'},
20
20
  ],
21
21
  vars: [
22
22
  {name: '--_segmented-control-radius', description: 'Border radius of the segmented control', default: 'var(--radius-element)', private: true},