@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
@@ -121,14 +121,8 @@ export function Toast({
121
121
  // Will be initialized by startTimer when actually used
122
122
  const startTimeRef = useRef<number | null>(null);
123
123
 
124
- // Read onDismiss through a ref: the viewport re-creates it on every render
125
- // (another toast arriving/exiting), and a startTimer that depends on it
126
- // would restart — and un-pause — this toast's timer on unrelated renders.
127
- const onDismissRef = useRef(onDismiss);
128
- onDismissRef.current = onDismiss;
129
-
130
124
  const startTimer = useCallback(() => {
131
- if (!isAutoHide || isPausedRef.current) {
125
+ if (!isAutoHide) {
132
126
  return;
133
127
  }
134
128
  if (timerRef.current) {
@@ -136,9 +130,9 @@ export function Toast({
136
130
  }
137
131
  startTimeRef.current = Date.now();
138
132
  timerRef.current = setTimeout(() => {
139
- onDismissRef.current('auto');
133
+ onDismiss('auto');
140
134
  }, remainingRef.current);
141
- }, [isAutoHide]);
135
+ }, [isAutoHide, onDismiss]);
142
136
 
143
137
  const pauseTimer = useCallback(() => {
144
138
  if (!isAutoHide || isPausedRef.current) {
@@ -171,8 +165,6 @@ export function Toast({
171
165
  clearTimeout(timerRef.current);
172
166
  }
173
167
  };
174
- // startTimer's identity is stable per isAutoHide, so this runs on mount
175
- // and on a genuine duration change — not on unrelated viewport renders.
176
168
  }, [autoHideDuration, startTimer]);
177
169
 
178
170
  // Pause the auto-hide timer while the window is not focused, so a toast
@@ -212,67 +212,3 @@ describe('ToastViewport region ARIA', () => {
212
212
  expect(region).not.toHaveAttribute('aria-modal');
213
213
  });
214
214
  });
215
-
216
- describe('toast timer lifecycle (#3589)', () => {
217
- it('fires onHide exactly once when dismissed twice during the exit window', () => {
218
- const onHide = vi.fn();
219
- renderViewport(
220
- <ShowToastButton options={{body: 'Once', onHide}} triggerLabel="Show" />,
221
- );
222
- act(() => {
223
- fireEvent.click(screen.getByText('Show'));
224
- });
225
- const dismiss = screen.getByRole('button', {name: 'Dismiss notification'});
226
- act(() => {
227
- fireEvent.click(dismiss);
228
- });
229
- // The toast stays mounted during its exit transition; a second click
230
- // lands on the same still-mounted button.
231
- act(() => {
232
- fireEvent.click(dismiss);
233
- });
234
- expect(onHide).toHaveBeenCalledTimes(1);
235
- });
236
-
237
- it('keeps a window-blur pause alive when another toast arrives', () => {
238
- vi.useFakeTimers();
239
- try {
240
- const onHide = vi.fn();
241
- renderViewport(
242
- <>
243
- <ShowToastButton
244
- options={{body: 'Paused', autoHideDuration: 3000, onHide}}
245
- triggerLabel="Show A"
246
- />
247
- <ShowToastButton options={INFO_B} triggerLabel="Show B" />
248
- </>,
249
- );
250
- act(() => {
251
- fireEvent.click(screen.getByText('Show A'));
252
- });
253
- act(() => {
254
- fireEvent.blur(window);
255
- });
256
- // A second toast arriving re-renders the viewport; the paused timer
257
- // must not silently restart.
258
- act(() => {
259
- fireEvent.click(screen.getByText('Show B'));
260
- });
261
- act(() => {
262
- vi.advanceTimersByTime(60_000);
263
- });
264
- expect(onHide).not.toHaveBeenCalled();
265
- // Focus returns: the remaining time resumes and completes normally.
266
- act(() => {
267
- fireEvent.focus(window);
268
- });
269
- act(() => {
270
- vi.advanceTimersByTime(60_000);
271
- });
272
- expect(onHide).toHaveBeenCalledTimes(1);
273
- expect(onHide).toHaveBeenCalledWith('auto');
274
- } finally {
275
- vi.useRealTimers();
276
- }
277
- });
278
- });
@@ -114,9 +114,6 @@ export function ToastViewport({
114
114
 
115
115
  // Show the popover on mount so it enters the top layer.
116
116
  const viewportRef = useRef<HTMLDivElement>(null);
117
- // Toast ids whose exit has begun — guards onHide from double-firing (see
118
- // removeToast). Mirrors exitingIds state, readable synchronously.
119
- const exitingIdsRef = useRef<Set<string>>(new Set());
120
117
  // The element that was focused before the user jumped into the viewport
121
118
  // (via F6). Used to restore focus once all toasts are dismissed so focus
122
119
  // never falls to <body>.
@@ -174,14 +171,6 @@ export function ToastViewport({
174
171
  }, []);
175
172
 
176
173
  const removeToast = useCallback((id: string, reason: ToastDismissReason) => {
177
- // An exiting toast stays in toastsRef until its exit transition ends, so
178
- // a second dismissal inside that window (double-click, auto-timer plus
179
- // manual dismiss()) would re-fire onHide. Track exiting ids in a ref —
180
- // the exitingIds state dedupe below runs too late to protect onHide.
181
- if (exitingIdsRef.current.has(id)) {
182
- return;
183
- }
184
- exitingIdsRef.current.add(id);
185
174
  const entry = toastsRef.current.find(t => t.id === id);
186
175
  if (entry) {
187
176
  entry.options.onHide?.(reason);
@@ -221,7 +210,6 @@ export function ToastViewport({
221
210
  }, []);
222
211
 
223
212
  const handleExited = useCallback((id: string) => {
224
- exitingIdsRef.current.delete(id);
225
213
  setExitingIds(prev => {
226
214
  if (!prev.has(id)) {
227
215
  return prev;
@@ -4,7 +4,6 @@
4
4
 
5
5
  import {useCallback, use, useEffect, useRef} from 'react';
6
6
  import {createRoot} from 'react-dom/client';
7
- import {dataAttr} from '../naming';
8
7
  import {ToastContext, type ToastContextValue} from './ToastContext';
9
8
  import {ToastViewport} from './ToastViewport';
10
9
  import type {
@@ -19,45 +18,6 @@ let fallbackContext: ToastContextValue | null = null;
19
18
  let fallbackRoot: ReturnType<typeof createRoot> | null = null;
20
19
  let fallbackWarned = false;
21
20
 
22
- const ROOT_THEME_ATTRS = ['data-theme', dataAttr('theme')] as const;
23
-
24
- // The fallback container is a detached tree with no ThemeContext, so this
25
- // mirrors <html>'s theme attributes onto it directly (live via
26
- // MutationObserver) for the theme's @scope'd CSS to reach it. It's a
27
- // lifetime-of-app singleton that's never torn down, so there's nothing to
28
- // disconnect — this returns void.
29
- function syncRootThemeAttrs(container: HTMLElement): void {
30
- const sync = () => {
31
- let mirroredMode: string | null = null;
32
- for (const attr of ROOT_THEME_ATTRS) {
33
- const value = document.documentElement.getAttribute(attr);
34
- if (value == null) {
35
- container.removeAttribute(attr);
36
- } else {
37
- container.setAttribute(attr, value);
38
- if (attr === 'data-theme') {
39
- mirroredMode = value;
40
- }
41
- }
42
- }
43
- // Pages whose built theme CSS pins color-scheme unconditionally (#3658)
44
- // would otherwise resolve light-dark() tokens by OS preference while the
45
- // mirrored mode above follows the app theme; the inline style wins over
46
- // that CSS.
47
- if (mirroredMode === 'light' || mirroredMode === 'dark') {
48
- container.style.colorScheme = mirroredMode;
49
- } else {
50
- container.style.removeProperty('color-scheme');
51
- }
52
- };
53
- sync();
54
- const observer = new MutationObserver(sync);
55
- observer.observe(document.documentElement, {
56
- attributes: true,
57
- attributeFilter: [...ROOT_THEME_ATTRS],
58
- });
59
- }
60
-
61
21
  function getFallbackContext(): ToastContextValue {
62
22
  if (fallbackContext) {
63
23
  return fallbackContext;
@@ -81,7 +41,6 @@ function getFallbackContext(): ToastContextValue {
81
41
  const container = document.createElement('div');
82
42
  container.setAttribute('data-astryx-toast-fallback', '');
83
43
  document.body.appendChild(container);
84
- syncRootThemeAttrs(container);
85
44
 
86
45
  let resolveCtx: ((ctx: ToastContextValue) => void) | undefined;
87
46
  const ctxReady = new Promise<ToastContextValue>(r => {
@@ -17,7 +17,6 @@ export const docs = {
17
17
  theming: {
18
18
  targets: [
19
19
  {className: 'astryx-toggle-button-group'},
20
- {className: 'astryx-toggle-button', states: ['isPressed']},
21
20
  ],
22
21
  },
23
22
  description: 'A button that toggles between pressed and unpressed states. Thin wrapper over Button with controlled toggle pattern, icon swap, and font weight emphasis.',
@@ -189,7 +189,7 @@ export const docs = {
189
189
  ],
190
190
  theming: {
191
191
  targets: [
192
- {className: 'astryx-tokenizer', visualProps: ['size', 'status']},
192
+ {className: 'astryx-tokenizer', visualProps: ['size']},
193
193
  ],
194
194
  },
195
195
  usage: {
@@ -390,7 +390,7 @@ export const docsZh = {
390
390
  ],
391
391
  theming: {
392
392
  targets: [
393
- {className: 'astryx-tokenizer', visualProps: ['size', 'status']},
393
+ {className: 'astryx-tokenizer', visualProps: ['size']},
394
394
  ],
395
395
  },
396
396
  usage: {
@@ -479,60 +479,6 @@ describe('Tokenizer', () => {
479
479
  expect(screen.getByText('Charlie')).toBeInTheDocument();
480
480
  });
481
481
 
482
- it('unfocusedLayer: RTL emits no justify-self into the inset-positioned popover', () => {
483
- // The popover positions itself with explicit anchor() insets
484
- // (positioning: 'custom'), so none of useLayer's placement-derived
485
- // styles may reach it — an RTL justify-self with insets and no
486
- // position-area would re-align the box inside the inset-modified
487
- // containing block instead of hugging the anchor.
488
- const original = window.getComputedStyle;
489
- let root: HTMLElement | null = null;
490
- const spy = vi
491
- .spyOn(window, 'getComputedStyle')
492
- .mockImplementation((el, pseudo) => {
493
- const style = original(el, pseudo);
494
- if (root && el instanceof Element && root.contains(el)) {
495
- Object.defineProperty(style, 'direction', {
496
- value: 'rtl',
497
- configurable: true,
498
- });
499
- }
500
- return style;
501
- });
502
-
503
- try {
504
- const {container} = render(
505
- <div style={{direction: 'rtl'}}>
506
- <Tokenizer
507
- label="Members"
508
- searchSource={userSource}
509
- value={[users[0], users[1], users[2]]}
510
- onChange={() => {}}
511
- tokenOverflowBehavior="unfocusedLayer"
512
- data-testid="tokenizer"
513
- />
514
- </div>,
515
- );
516
- root = container.firstElementChild as HTMLElement;
517
-
518
- fireEvent.focusIn(screen.getByTestId('tokenizer'));
519
- expect(HTMLElement.prototype.showPopover).toHaveBeenCalled();
520
-
521
- const popover = container.querySelector('[popover]');
522
- const style = popover?.getAttribute('style') ?? '';
523
- // jsdom drops anchor() values for known properties (top/left), so
524
- // anchor the positive check on position-anchor instead. The negative
525
- // checks are meaningful: jsdom serializes both justify-self and
526
- // position-area when emitted (the DropdownMenu RTL test relies on it).
527
- expect(style).toContain('position-anchor');
528
- expect(style).not.toContain('justify-self');
529
- expect(style).not.toContain('position-area');
530
- expect(style).not.toContain('position-try-fallbacks');
531
- } finally {
532
- spy.mockRestore();
533
- }
534
- });
535
-
536
482
  it('unfocusedLayer: collapses on blur', () => {
537
483
  const {container} = render(
538
484
  <Tokenizer
@@ -684,11 +684,9 @@ export function Tokenizer<T extends SearchableItem>({
684
684
  );
685
685
  });
686
686
 
687
- // Self-authored position styles (positioning: 'custom' below): explicit
688
- // anchor() insets pin the expanded layer over the field itself.
689
- // `left` is physical, so this popover does not yet mirror in RTL —
690
- // known follow-up from #3389.
691
687
  const popoverOverrideStyle: React.CSSProperties = {
688
+ positionArea: undefined,
689
+ positionTryFallbacks: undefined,
692
690
  top: 'anchor(top)',
693
691
  left: 'anchor(start)',
694
692
  };
@@ -848,7 +846,8 @@ export function Tokenizer<T extends SearchableItem>({
848
846
  {wrapperContent}
849
847
  </div>,
850
848
  {
851
- positioning: 'custom',
849
+ placement: 'below',
850
+ alignment: 'start',
852
851
  xstyle: styles.layerPopover,
853
852
  style: popoverOverrideStyle,
854
853
  },
@@ -39,13 +39,13 @@ export const docs = {
39
39
  {
40
40
  name: 'placement',
41
41
  type: "'above' | 'below' | 'start' | 'end'",
42
- description: "Position relative to the anchor element. Logical: start/end resolve against the popover\'s own inherited direction (RTL mirrors in pure CSS).",
42
+ description: 'Position relative to the anchor element.',
43
43
  default: "'above'",
44
44
  },
45
45
  {
46
46
  name: 'alignment',
47
47
  type: "'start' | 'center' | 'end'",
48
- description: "Alignment along the placement axis. Logical: start/end resolve against the popover\'s own inherited direction (RTL mirrors in pure CSS).",
48
+ description: 'Alignment along the placement axis.',
49
49
  default: "'center'",
50
50
  },
51
51
  {
@@ -138,13 +138,13 @@ export const docsZh = {
138
138
  {
139
139
  name: 'placement',
140
140
  type: "'above' | 'below' | 'start' | 'end'",
141
- description: '相对于锚点元素的位置。逻辑值:start/end 根据弹出层自身继承的方向解析(RTL 镜像)。',
141
+ description: '相对于锚点元素的位置。',
142
142
  default: "'above'",
143
143
  },
144
144
  {
145
145
  name: 'alignment',
146
146
  type: "'start' | 'center' | 'end'",
147
- description: '沿放置轴的对齐方式。逻辑值:start/end 根据弹出层自身继承的方向解析(RTL 镜像)。',
147
+ description: '沿放置轴的对齐方式。',
148
148
  default: "'center'",
149
149
  },
150
150
  {
@@ -230,8 +230,8 @@ export const docsDense = {
230
230
  children: 'Trigger element(s) that activate tooltip.',
231
231
  anchorRef: 'External anchor ref for sibling mode.',
232
232
  content: 'Tooltip content, typically short text.',
233
- placement: 'Position relative to anchor. Logical: start/end follow the popover\'s inherited direction (RTL mirrors).',
234
- alignment: 'Alignment along placement axis. Logical: start/end follow the popover\'s inherited direction (RTL mirrors).',
233
+ placement: 'Position relative to anchor.',
234
+ alignment: 'Alignment along placement axis.',
235
235
  delay: 'Show delay in ms.',
236
236
  hideDelay: 'Hide delay in ms.',
237
237
  focusTrigger: 'Controls when focus events trigger tooltip.',
@@ -7,8 +7,8 @@ export const docs = {
7
7
  group: 'Tooltip',
8
8
  keywords: ['tooltip', 'hint', 'label', 'hover', 'info', 'title', 'floating'],
9
9
  params: [
10
- {name: 'placement', type: "'above' | 'below' | 'start' | 'end'", description: "Position relative to the trigger. Logical: start/end resolve against the popover\'s own inherited direction (RTL mirrors in pure CSS).", default: "'above'"},
11
- {name: 'alignment', type: "'start' | 'center' | 'end'", description: "Alignment along the placement axis. Logical: start/end resolve against the popover\'s own inherited direction (RTL mirrors in pure CSS).", default: "'center'"},
10
+ {name: 'placement', type: "'above' | 'below' | 'start' | 'end'", description: 'Position relative to the trigger.', default: "'above'"},
11
+ {name: 'alignment', type: "'start' | 'center' | 'end'", description: 'Alignment along the placement axis.', default: "'center'"},
12
12
  {name: 'delay', type: 'number', description: 'Delay before showing on hover, in milliseconds.', default: '200'},
13
13
  {name: 'hideDelay', type: 'number', description: 'Delay before hiding after mouse or focus leaves, in milliseconds.', default: '0'},
14
14
  {name: 'focusTrigger', type: "'auto' | 'always' | 'never'", description: 'When focus should open the tooltip. auto only attaches focus listeners to naturally focusable elements.', default: "'auto'"},
@@ -24,7 +24,7 @@ export const docs = {
24
24
  {name: 'interactionRef', type: 'RefCallback<HTMLElement>', description: 'Ref for the hover/focus interaction element.'},
25
25
  {name: 'anchorId', type: 'string', description: 'CSS anchor name for advanced positioning cases.'},
26
26
  {name: 'describedBy', type: 'string', description: 'ID to compose into aria-describedby on the trigger.'},
27
- {name: 'renderTooltip', type: "(children: ReactNode, props?: Omit<ContextRenderProps, 'positioning'>) => ReactNode", description: 'Render function for the anchor-positioned tooltip content. The positioning opt-out is excluded: the tooltip always derives its position from placement/alignment.'},
27
+ {name: 'renderTooltip', type: '(children: ReactNode, props?: ContextRenderProps) => ReactNode', description: 'Render function for the anchor-positioned tooltip content.'},
28
28
  ],
29
29
  usage: {
30
30
  description: 'Headless hook for hover/focus-triggered tooltips. Builds on useLayer with hover intent, keyboard focus handling, and accessible aria-describedby linking. Use for custom trigger elements that need tooltip behavior without the wrapper component.',
@@ -44,8 +44,8 @@ export const docs = {
44
44
  export const docsDense = {
45
45
  description: 'Headless hover/focus tooltip hook. Builds on useLayer w/ hover intent, keyboard focus handling, aria-describedby. Use for custom triggers without wrapper component.',
46
46
  paramDescriptions: {
47
- placement: 'position relative to trigger. logical: start/end follow the popover\'s inherited direction (RTL mirrors).',
48
- alignment: 'alignment along placement axis. logical: start/end follow the popover\'s inherited direction (RTL mirrors).',
47
+ placement: 'position relative to trigger.',
48
+ alignment: 'alignment along placement axis.',
49
49
  delay: 'show delay in ms.',
50
50
  hideDelay: 'hide delay after mouse/focus leave in ms.',
51
51
  focusTrigger: 'when focus opens tooltip; auto = naturally focusable elements only.',
@@ -190,15 +190,8 @@ export interface TooltipReturn {
190
190
  /**
191
191
  * Render function for tooltip content.
192
192
  * Returns anchor-positioned popover element.
193
- *
194
- * `positioning` is excluded: the tooltip always derives its position from
195
- * placement/alignment, so accepting the custom opt-out here would be a
196
- * silent no-op.
197
193
  */
198
- renderTooltip: (
199
- children: ReactNode,
200
- props?: Omit<ContextRenderProps, 'positioning'>,
201
- ) => ReactNode;
194
+ renderTooltip: (children: ReactNode, props?: ContextRenderProps) => ReactNode;
202
195
  }
203
196
 
204
197
  /**
@@ -470,10 +463,7 @@ export function useTooltip(options: TooltipOptions = {}): TooltipReturn {
470
463
 
471
464
  // Render function that wraps layer.render with tooltip styling
472
465
  const renderTooltip = useCallback(
473
- (
474
- children: ReactNode,
475
- props?: Omit<ContextRenderProps, 'positioning'>,
476
- ): ReactNode => {
466
+ (children: ReactNode, props?: ContextRenderProps): ReactNode => {
477
467
  const renderPlacement = props?.placement ?? placement;
478
468
  const renderProps = {
479
469
  placement: renderPlacement,
@@ -17,7 +17,7 @@ export const docs = {
17
17
  theming: {
18
18
  targets: [
19
19
  {className: 'astryx-top-nav', states: ['mode']},
20
- {className: 'astryx-top-nav-item', states: ['mode', 'selected']},
20
+ {className: 'astryx-top-nav-item', states: ['mode']},
21
21
  {className: 'astryx-top-nav-heading'},
22
22
  {className: 'astryx-top-nav-mega-menu', states: ['mode']},
23
23
  {className: 'astryx-top-nav-mega-menu-item', states: ['mode']},
@@ -16,7 +16,6 @@ import {TopNav} from './TopNav';
16
16
  import {TopNavHeading} from './TopNavHeading';
17
17
  import {NavIcon} from '../NavIcon';
18
18
  import {TopNavItem} from './TopNavItem';
19
- import {TopNavMegaMenuFeaturedCard} from './TopNavMegaMenuFeaturedCard';
20
19
  import {LinkProvider} from '../Link/LinkProvider';
21
20
 
22
21
  function CustomLink({
@@ -46,7 +45,9 @@ describe('TopNav', () => {
46
45
  });
47
46
 
48
47
  it('renders heading slot content', () => {
49
- render(<TopNav heading={<span data-testid="title-content">Logo</span>} />);
48
+ render(
49
+ <TopNav heading={<span data-testid="title-content">Logo</span>} />,
50
+ );
50
51
  expect(screen.getByTestId('title-content')).toBeInTheDocument();
51
52
  });
52
53
 
@@ -241,9 +242,7 @@ describe('TopNavHeading', () => {
241
242
  });
242
243
 
243
244
  it('names a logo-only link via logoLabel', () => {
244
- render(
245
- <TopNavHeading logo={logo} headingHref="/home" logoLabel="Home" />,
246
- );
245
+ render(<TopNavHeading logo={logo} headingHref="/home" logoLabel="Home" />);
247
246
  expect(screen.getByRole('link', {name: 'Home'})).toHaveAttribute(
248
247
  'href',
249
248
  '/home',
@@ -295,7 +294,9 @@ describe('TopNavItem', () => {
295
294
  });
296
295
 
297
296
  it('renders children instead of label when provided', () => {
298
- render(<TopNavItem label="Accessible name">Custom content</TopNavItem>);
297
+ render(
298
+ <TopNavItem label="Accessible name">Custom content</TopNavItem>,
299
+ );
299
300
  expect(screen.getByText('Custom content')).toBeInTheDocument();
300
301
  });
301
302
 
@@ -397,21 +398,4 @@ describe('TopNavItem', () => {
397
398
  expect(link).toHaveAttribute('data-custom-link');
398
399
  expect(link).not.toHaveAttribute('data-another-link');
399
400
  });
400
-
401
- describe('TopNavMegaMenuFeaturedCard rest forwarding', () => {
402
- it('forwards data-testid, id, and aria-* to the root element', () => {
403
- render(
404
- <TopNavMegaMenuFeaturedCard
405
- title="What's new"
406
- description="Details"
407
- data-testid="featured-card"
408
- id="card-1"
409
- aria-label="Featured"
410
- />,
411
- );
412
- const card = screen.getByTestId('featured-card');
413
- expect(card).toHaveAttribute('id', 'card-1');
414
- expect(card).toHaveAttribute('aria-label', 'Featured');
415
- });
416
- });
417
401
  });
@@ -132,10 +132,6 @@ export function TopNavMegaMenuFeaturedCard({
132
132
  linkLabel,
133
133
  linkHref,
134
134
  children,
135
- xstyle,
136
- className,
137
- style,
138
- ...rest
139
135
  }: TopNavMegaMenuFeaturedCardProps) {
140
136
  const LinkComponent = useLinkComponent();
141
137
  return (
@@ -143,11 +139,8 @@ export function TopNavMegaMenuFeaturedCard({
143
139
  ref={ref}
144
140
  {...mergeProps(
145
141
  themeProps('top-nav-mega-menu-featured-card'),
146
- stylex.props(styles.root, xstyle),
147
- className,
148
- style,
149
- )}
150
- {...rest}>
142
+ stylex.props(styles.root),
143
+ )}>
151
144
  {image && (
152
145
  <img src={image} alt={imageAlt ?? ''} {...stylex.props(styles.image)} />
153
146
  )}
@@ -25,7 +25,7 @@ export const docs = {
25
25
  theming: {
26
26
  targets: [
27
27
  {className: 'astryx-tree-list', visualProps: ['density']},
28
- {className: 'astryx-tree-list-item', visualProps: ['density'], states: ['selected', 'disabled']},
28
+ {className: 'astryx-tree-list-item', states: ['selected', 'disabled']},
29
29
  ],
30
30
  },
31
31
  components: [
@@ -89,7 +89,7 @@ export const docsZh = {
89
89
  theming: {
90
90
  targets: [
91
91
  {className: 'astryx-tree-list', visualProps: ['density']},
92
- {className: 'astryx-tree-list-item', visualProps: ['density'], states: ['selected', 'disabled']},
92
+ {className: 'astryx-tree-list-item', states: ['selected', 'disabled']},
93
93
  ],
94
94
  },
95
95
  components: [
@@ -8,16 +8,6 @@ export const docs = {
8
8
  displayName: 'Base Typeahead',
9
9
  isHiddenFromOverview: true,
10
10
  description: 'Unstyled combobox engine providing input, search, keyboard navigation, and dropdown. No wrapper div, no border styling, no token rendering. Used by Typeahead and Tokenizer for custom compositions.',
11
- usage: {
12
- description: 'Unstyled combobox engine providing input, search, keyboard navigation, and dropdown. No wrapper div, no border styling, no token rendering. Used by Typeahead and Tokenizer for custom compositions.',
13
- bestPractices: [
14
- { guidance: true, description: 'Use Typeahead or Tokenizer for standard fields; they wrap BaseTypeahead with the wrapper div, border styling, and token rendering it intentionally omits.' },
15
- { guidance: true, description: 'Provide your own wrapper div with border and layout when composing directly, since BaseTypeahead renders no visual chrome of its own.' },
16
- { guidance: true, description: 'Pass anchorRef pointing to your wrapper so the dropdown positions against your custom input chrome, not just the bare input element.' },
17
- { guidance: false, description: 'Expect a wrapper div, border, or token rendering. BaseTypeahead is an engine only; all visual chrome is the caller\'s responsibility.' },
18
- { guidance: false, description: 'Use BaseTypeahead when Typeahead or Tokenizer would suffice; the extra wrapper and styling work is only justified for truly custom compositions.' },
19
- ],
20
- },
21
11
  props: [
22
12
  {
23
13
  name: 'searchSource',
@@ -236,15 +226,6 @@ export const docsDense = {
236
226
  isHiddenFromOverview: true,
237
227
  displayName: 'Base Typeahead',
238
228
  description: 'Unstyled combobox engine; input+search+keyboard nav+dropdown. No wrapper/border/token. Used by Typeahead+Tokenizer.',
239
- usage: {
240
- bestPractices: [
241
- { guidance: true, description: 'Use Typeahead or Tokenizer for standard fields; they add the wrapper, border, and token rendering BaseTypeahead omits.' },
242
- { guidance: true, description: 'Provide your own wrapper div with border and layout when composing directly; BaseTypeahead renders no chrome.' },
243
- { guidance: true, description: 'Pass anchorRef to your wrapper so the dropdown positions against your input chrome, not the bare input.' },
244
- { guidance: false, description: 'Expect wrapper, border, or token rendering. Engine only; chrome is the caller\'s job.' },
245
- { guidance: false, description: 'Use BaseTypeahead when Typeahead or Tokenizer suffice; extra work only pays off for custom compositions.' },
246
- ],
247
- },
248
229
  propDescriptions: {
249
230
  searchSource: 'Data source w/ search+bootstrap methods.',
250
231
  value: 'Currently selected item.',
@@ -410,10 +410,7 @@ export const BaseTypeahead = function BaseTypeahead<T extends SearchableItem>({
410
410
  const performSearch = useCallback(
411
411
  async (searchQuery: string) => {
412
412
  searchSource.cancel?.();
413
- // Claim a new generation so overlapping searches can't race: an
414
- // in-flight response for an older query fails the gen check below
415
- // instead of overwriting the newer results.
416
- const gen = ++searchGenRef.current;
413
+ const gen = searchGenRef.current;
417
414
  setIsLoading(true);
418
415
  setHasSearched(true);
419
416
  try {
@@ -454,7 +451,7 @@ export const BaseTypeahead = function BaseTypeahead<T extends SearchableItem>({
454
451
 
455
452
  // Perform bootstrap
456
453
  const performBootstrap = useCallback(async () => {
457
- const gen = ++searchGenRef.current;
454
+ const gen = searchGenRef.current;
458
455
  setIsLoading(true);
459
456
  try {
460
457
  const bootstrapResults = await searchSource.bootstrap();
@@ -168,7 +168,7 @@ export const docs = {
168
168
  components: [{name: 'BaseTypeahead'}, {name: 'TypeaheadItem'}],
169
169
  theming: {
170
170
  targets: [
171
- {className: 'astryx-typeahead', visualProps: ['status', 'size']},
171
+ {className: 'astryx-typeahead', visualProps: ['status']},
172
172
  {className: 'astryx-typeahead-dropdown'},
173
173
  {className: 'astryx-typeahead-item'},
174
174
  ],
@@ -18,7 +18,7 @@ import {
18
18
  afterAll,
19
19
  beforeEach,
20
20
  } from 'vitest';
21
- import {render, screen, fireEvent, waitFor, act} from '@testing-library/react';
21
+ import {render, screen, fireEvent, waitFor} from '@testing-library/react';
22
22
  import userEvent from '@testing-library/user-event';
23
23
  import {Typeahead} from './Typeahead';
24
24
  import {BaseTypeahead} from './BaseTypeahead';
@@ -314,50 +314,6 @@ describe('BaseTypeahead focus-out', () => {
314
314
  });
315
315
 
316
316
  describe('Typeahead', () => {
317
- describe('out-of-order async results', () => {
318
- it('discards a stale response that resolves after a newer query', async () => {
319
- const resolvers = new Map<string, (items: SearchableItem[]) => void>();
320
- const rawSource: SearchSource = {
321
- search: async (query: string) =>
322
- new Promise<SearchableItem[]>(resolve => {
323
- resolvers.set(query, resolve);
324
- }),
325
- bootstrap: () => [],
326
- };
327
-
328
- render(
329
- <Typeahead
330
- label="Fruit"
331
- searchSource={rawSource}
332
- value={null}
333
- onChange={() => {}}
334
- debounceMs={0}
335
- />,
336
- );
337
-
338
- const input = screen.getByRole('combobox');
339
- fireEvent.change(input, {target: {value: 'a'}});
340
- fireEvent.change(input, {target: {value: 'ap'}});
341
-
342
- // The newer query resolves first…
343
- await act(async () => {
344
- resolvers.get('ap')!([{id: 'apple', label: 'Apple'}]);
345
- });
346
- expect(screen.getByText('Apple')).toBeInTheDocument();
347
-
348
- // …then the abandoned query's slow response arrives and must be
349
- // discarded rather than overwriting the current results.
350
- await act(async () => {
351
- resolvers.get('a')!([
352
- {id: 'avocado', label: 'Avocado'},
353
- {id: 'apricot', label: 'Apricot'},
354
- ]);
355
- });
356
- expect(screen.getByText('Apple')).toBeInTheDocument();
357
- expect(screen.queryByText('Avocado')).not.toBeInTheDocument();
358
- });
359
- });
360
-
361
317
  it('renders with label', () => {
362
318
  render(
363
319
  <Typeahead