@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
package/src/Grid/Grid.tsx CHANGED
@@ -38,10 +38,9 @@ export type GridAlignment = 'start' | 'center' | 'end' | 'stretch';
38
38
  * - `minWidth` — minimum width (px) for each column track
39
39
  * - `repeat` — `'fill'` (default) preserves empty tracks for consistent widths;
40
40
  * `'fit'` collapses empty tracks so items stretch to fill
41
- * - `max` — caps the maximum number of columns. The grid stretches to 100%
42
- * of its parent and the columns that are present always fill the row, so a
43
- * layout collapsing to a single column on mobile stretches to full width
44
- * (no dead space on the right).
41
+ * - `max` — caps the maximum number of columns by limiting track max size.
42
+ * The grid stretches to 100% of its parent; `max` only limits how many
43
+ * columns appear.
45
44
  */
46
45
  export type GridColumns =
47
46
  | number
@@ -322,20 +321,9 @@ const spacingVarNames: Record<SpacingStep, string> = {
322
321
  };
323
322
 
324
323
  /**
325
- * Build a grid-template-columns value that caps the column *count* at `max`
326
- * while still letting the columns that are actually present stretch to fill
327
- * the row.
328
- *
329
- * The cap lives on the track's **min** size, not its max: each track is at
330
- * least `perColumn = (100% - (max-1) * gap) / max`, so more than `max` columns
331
- * can never fit. The track **max** stays `1fr`, so whenever fewer than `max`
332
- * columns fit (most importantly a lone column on mobile) they still grow to
333
- * fill the whole row — no dead space on the right.
334
- *
335
- * The track min is `max(minWidth, perColumn)` so an explicit `minWidth` is
336
- * still honored, wrapped in `min(100%, …)` so a single column on a viewport
337
- * narrower than `minWidth`/`perColumn` shrinks to the container instead of
338
- * overflowing it.
324
+ * Build a grid-template-columns value that caps columns at `max` by
325
+ * limiting each track's max size to `(100% - (max-1) * gap) / max`.
326
+ * The grid stays 100% width; the track-max prevents more than `max` columns.
339
327
  */
340
328
  function buildCappedTemplate(
341
329
  minWidth: number,
@@ -351,17 +339,12 @@ function buildCappedTemplate(
351
339
  ? spacingVarNames[gap]
352
340
  : null;
353
341
 
354
- // perColumn = (100% - (maxCols - 1) * gap) / maxCols — the width a track
355
- // would have if exactly `maxCols` columns were present. Used as a floor so
356
- // the grid never fits more than `maxCols` columns.
357
- const perColumn = gapVar
342
+ // trackMax = (100% - (maxCols - 1) * gap) / maxCols
343
+ const trackMax = gapVar
358
344
  ? `calc((100% - ${maxCols - 1} * var(${gapVar})) / ${maxCols})`
359
345
  : `calc(100% / ${maxCols})`;
360
346
 
361
- // Track min caps the count; track max stays 1fr so present columns fill.
362
- const trackMin = `min(100%, max(${minWidth}px, ${perColumn}))`;
363
-
364
- return `repeat(${repeatMode}, minmax(${trackMin}, 1fr))`;
347
+ return `repeat(${repeatMode}, minmax(${minWidth}px, ${trackMax}))`;
365
348
  }
366
349
 
367
350
  /**
@@ -46,13 +46,13 @@ export const docs = {
46
46
  {
47
47
  name: 'placement',
48
48
  type: "'above' | 'below' | 'start' | 'end'",
49
- description: "Position relative to the anchor element. Logical: start/end resolve against the popover\'s own inherited direction (RTL mirrors in pure CSS).",
49
+ description: 'Position relative to the anchor element.',
50
50
  default: "'above'",
51
51
  },
52
52
  {
53
53
  name: 'alignment',
54
54
  type: "'start' | 'center' | 'end'",
55
- description: "Alignment along the placement axis. Logical: start/end resolve against the popover\'s own inherited direction (RTL mirrors in pure CSS).",
55
+ description: 'Alignment along the placement axis.',
56
56
  default: "'center'",
57
57
  },
58
58
  {
@@ -155,13 +155,13 @@ export const docsZh = {
155
155
  {
156
156
  name: 'placement',
157
157
  type: "'above' | 'below' | 'start' | 'end'",
158
- description: '相对于锚点元素的位置。逻辑值:start/end 根据弹出层自身继承的方向解析(RTL 镜像)。',
158
+ description: '相对于锚点元素的位置。',
159
159
  default: "'above'",
160
160
  },
161
161
  {
162
162
  name: 'alignment',
163
163
  type: "'start' | 'center' | 'end'",
164
- description: '沿放置轴的对齐方式。逻辑值:start/end 根据弹出层自身继承的方向解析(RTL 镜像)。',
164
+ description: '沿放置轴的对齐方式。',
165
165
  default: "'center'",
166
166
  },
167
167
  {
@@ -246,8 +246,8 @@ export const docsDense = {
246
246
  propDescriptions: {
247
247
  children: 'Trigger element; must accept ref.',
248
248
  content: 'Hover card content.',
249
- placement: 'Position relative to anchor element. Logical: start/end follow the popover\'s inherited direction (RTL mirrors).',
250
- alignment: 'Alignment along placement axis. Logical: start/end follow the popover\'s inherited direction (RTL mirrors).',
249
+ placement: 'Position relative to anchor element.',
250
+ alignment: 'Alignment along placement axis.',
251
251
  delay: 'Show delay in ms.',
252
252
  hideDelay: 'Hide delay in ms.',
253
253
  focusTrigger: 'Controls when focus events trigger hover card.',
@@ -7,8 +7,8 @@ export const docs = {
7
7
  group: 'HoverCard',
8
8
  keywords: ['hovercard', 'hover', 'preview', 'card', 'tooltip', 'popup', 'floating', 'anchor'],
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 the hover card on hover, in milliseconds.', default: '300'},
13
13
  {name: 'hideDelay', type: 'number', description: 'Delay before hiding after mouse or focus leaves, in milliseconds.', default: '200'},
14
14
  {name: 'focusTrigger', type: "'auto' | 'always' | 'never'", description: 'When focus should open the hover card. 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. Use with positionRef for split trigger patterns.'},
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: 'renderHoverCard', type: "(children: ReactNode, props?: Omit<ContextRenderProps, 'positioning'>) => ReactNode", description: 'Render function for the anchor-positioned hover card content. The positioning opt-out is excluded: the hover card always derives its position from placement/alignment.'},
27
+ {name: 'renderHoverCard', type: '(children: ReactNode, props?: ContextRenderProps) => ReactNode', description: 'Render function for the anchor-positioned hover card content.'},
28
28
  {name: 'show', type: '() => void', description: 'Imperatively show the hover card immediately.'},
29
29
  {name: 'hide', type: '() => void', description: 'Imperatively hide the hover card immediately.'},
30
30
  ],
@@ -46,8 +46,8 @@ export const docs = {
46
46
  export const docsDense = {
47
47
  description: 'Headless hover-triggered floating cards. Builds on useLayer w/ hover/focus intent, delays, safe hover behavior, aria-describedby. Use for rich previews when trigger/content rendering needs full control.',
48
48
  paramDescriptions: {
49
- placement: 'position relative to trigger. logical: start/end follow the popover\'s inherited direction (RTL mirrors).',
50
- alignment: 'alignment along placement axis. logical: start/end follow the popover\'s inherited direction (RTL mirrors).',
49
+ placement: 'position relative to trigger.',
50
+ alignment: 'alignment along placement axis.',
51
51
  delay: 'show delay in ms.',
52
52
  hideDelay: 'hide delay after mouse/focus leave in ms.',
53
53
  focusTrigger: 'when focus opens hover card; auto = naturally focusable elements only.',
@@ -181,14 +181,10 @@ export interface HoverCardReturn {
181
181
  /**
182
182
  * Render function for hover card content.
183
183
  * Returns anchor-positioned popover element.
184
- *
185
- * `positioning` is excluded: the hover card always derives its position
186
- * from placement/alignment, so accepting the custom opt-out here would be
187
- * a silent no-op.
188
184
  */
189
185
  renderHoverCard: (
190
186
  children: ReactNode,
191
- props?: Omit<ContextRenderProps, 'positioning'>,
187
+ props?: ContextRenderProps,
192
188
  ) => ReactNode;
193
189
 
194
190
  /**
@@ -454,10 +450,7 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
454
450
 
455
451
  // Render function that wraps layer.render with hover card behavior
456
452
  const renderHoverCard = useCallback(
457
- (
458
- children: ReactNode,
459
- props?: Omit<ContextRenderProps, 'positioning'>,
460
- ): ReactNode => {
453
+ (children: ReactNode, props?: ContextRenderProps): ReactNode => {
461
454
  const renderPlacement = props?.placement ?? placement;
462
455
  const renderProps = {
463
456
  placement: renderPlacement,
@@ -11,48 +11,48 @@
11
11
 
12
12
  import {describe, it, expect, vi} from 'vitest';
13
13
  import {render, screen} from '@testing-library/react';
14
- import {TestIcon} from '../__tests__/TestIcon';
14
+ import {HomeIcon} from '@heroicons/react/24/outline';
15
15
  import {Icon} from './Icon';
16
16
 
17
17
  describe('Icon', () => {
18
18
  it('renders the icon component', () => {
19
- render(<Icon icon={TestIcon} data-testid="icon" />);
19
+ render(<Icon icon={HomeIcon} data-testid="icon" />);
20
20
  expect(screen.getByTestId('icon')).toBeInTheDocument();
21
21
  });
22
22
 
23
23
  it('renders as an SVG element', () => {
24
- render(<Icon icon={TestIcon} data-testid="icon" />);
24
+ render(<Icon icon={HomeIcon} data-testid="icon" />);
25
25
  const icon = screen.getByTestId('icon');
26
26
  expect(icon.tagName.toLowerCase()).toBe('svg');
27
27
  });
28
28
 
29
29
  it('applies aria-hidden by default', () => {
30
- render(<Icon icon={TestIcon} data-testid="icon" />);
30
+ render(<Icon icon={HomeIcon} data-testid="icon" />);
31
31
  expect(screen.getByTestId('icon')).toHaveAttribute('aria-hidden', 'true');
32
32
  });
33
33
 
34
34
  it('renders with different color variants', () => {
35
35
  const {rerender} = render(
36
- <Icon icon={TestIcon} color="primary" data-testid="icon" />,
36
+ <Icon icon={HomeIcon} color="primary" data-testid="icon" />,
37
37
  );
38
38
  expect(screen.getByTestId('icon')).toBeInTheDocument();
39
39
 
40
- rerender(<Icon icon={TestIcon} color="secondary" data-testid="icon" />);
40
+ rerender(<Icon icon={HomeIcon} color="secondary" data-testid="icon" />);
41
41
  expect(screen.getByTestId('icon')).toBeInTheDocument();
42
42
 
43
- rerender(<Icon icon={TestIcon} color="accent" data-testid="icon" />);
43
+ rerender(<Icon icon={HomeIcon} color="accent" data-testid="icon" />);
44
44
  expect(screen.getByTestId('icon')).toBeInTheDocument();
45
45
 
46
- rerender(<Icon icon={TestIcon} color="success" data-testid="icon" />);
46
+ rerender(<Icon icon={HomeIcon} color="success" data-testid="icon" />);
47
47
  expect(screen.getByTestId('icon')).toBeInTheDocument();
48
48
 
49
- rerender(<Icon icon={TestIcon} color="error" data-testid="icon" />);
49
+ rerender(<Icon icon={HomeIcon} color="error" data-testid="icon" />);
50
50
  expect(screen.getByTestId('icon')).toBeInTheDocument();
51
51
 
52
- rerender(<Icon icon={TestIcon} color="warning" data-testid="icon" />);
52
+ rerender(<Icon icon={HomeIcon} color="warning" data-testid="icon" />);
53
53
  expect(screen.getByTestId('icon')).toBeInTheDocument();
54
54
 
55
- rerender(<Icon icon={TestIcon} color="inherit" data-testid="icon" />);
55
+ rerender(<Icon icon={HomeIcon} color="inherit" data-testid="icon" />);
56
56
  expect(screen.getByTestId('icon')).toBeInTheDocument();
57
57
  });
58
58
 
@@ -70,41 +70,50 @@ describe('Icon', () => {
70
70
  'purple',
71
71
  ] as const;
72
72
  const {rerender} = render(
73
- <Icon icon={TestIcon} color={nonSemanticColors[0]} data-testid="icon" />,
73
+ <Icon
74
+ icon={HomeIcon}
75
+ color={nonSemanticColors[0]}
76
+ data-testid="icon"
77
+ />,
74
78
  );
75
79
  expect(screen.getByTestId('icon')).toBeInTheDocument();
76
80
 
77
81
  for (const c of nonSemanticColors.slice(1)) {
78
- rerender(<Icon icon={TestIcon} color={c} data-testid="icon" />);
82
+ rerender(<Icon icon={HomeIcon} color={c} data-testid="icon" />);
79
83
  expect(screen.getByTestId('icon')).toBeInTheDocument();
80
84
  }
81
85
  });
82
86
 
83
87
  it('renders with different size variants', () => {
84
88
  const {rerender} = render(
85
- <Icon icon={TestIcon} size="xsm" data-testid="icon" />,
89
+ <Icon icon={HomeIcon} size="xsm" data-testid="icon" />,
86
90
  );
87
91
  expect(screen.getByTestId('icon')).toBeInTheDocument();
88
92
 
89
- rerender(<Icon icon={TestIcon} size="sm" data-testid="icon" />);
93
+ rerender(<Icon icon={HomeIcon} size="sm" data-testid="icon" />);
90
94
  expect(screen.getByTestId('icon')).toBeInTheDocument();
91
95
 
92
- rerender(<Icon icon={TestIcon} size="md" data-testid="icon" />);
96
+ rerender(<Icon icon={HomeIcon} size="md" data-testid="icon" />);
93
97
  expect(screen.getByTestId('icon')).toBeInTheDocument();
94
98
 
95
- rerender(<Icon icon={TestIcon} size="lg" data-testid="icon" />);
99
+ rerender(<Icon icon={HomeIcon} size="lg" data-testid="icon" />);
96
100
  expect(screen.getByTestId('icon')).toBeInTheDocument();
97
101
  });
98
102
 
99
103
  it('forwards ref correctly', () => {
100
104
  const ref = vi.fn();
101
- render(<Icon icon={TestIcon} ref={ref} />);
105
+ render(<Icon icon={HomeIcon} ref={ref} />);
102
106
  expect(ref).toHaveBeenCalledWith(expect.any(SVGSVGElement));
103
107
  });
104
108
 
105
109
  it('passes additional SVG props', () => {
106
110
  render(
107
- <Icon icon={TestIcon} data-testid="icon" role="img" aria-label="Home" />,
111
+ <Icon
112
+ icon={HomeIcon}
113
+ data-testid="icon"
114
+ role="img"
115
+ aria-label="Home"
116
+ />,
108
117
  );
109
118
  const icon = screen.getByTestId('icon');
110
119
  expect(icon).toHaveAttribute('role', 'img');
@@ -112,29 +121,8 @@ describe('Icon', () => {
112
121
  });
113
122
 
114
123
  it('uses default color and size when not specified', () => {
115
- render(<Icon icon={TestIcon} data-testid="icon" />);
124
+ render(<Icon icon={HomeIcon} data-testid="icon" />);
116
125
  // The component should render without errors with defaults
117
126
  expect(screen.getByTestId('icon')).toBeInTheDocument();
118
127
  });
119
-
120
- it('applies aria-hidden by default in string (registry) mode', () => {
121
- render(<Icon icon="check" data-testid="icon" />);
122
- expect(screen.getByTestId('icon')).toHaveAttribute('aria-hidden', 'true');
123
- });
124
-
125
- it('lets a string-mode icon be made meaningful by overriding aria-hidden', () => {
126
- render(
127
- <Icon
128
- icon="check"
129
- data-testid="icon"
130
- role="img"
131
- aria-label="Done"
132
- aria-hidden={false}
133
- />,
134
- );
135
- const icon = screen.getByTestId('icon');
136
- expect(icon).toHaveAttribute('role', 'img');
137
- expect(icon).toHaveAttribute('aria-label', 'Done');
138
- expect(icon).toHaveAttribute('aria-hidden', 'false');
139
- });
140
128
  });
package/src/Icon/Icon.tsx CHANGED
@@ -281,16 +281,12 @@ function IconFromRegistry({
281
281
 
282
282
  return (
283
283
  <span
284
- // Decorative by default, but placed BEFORE the prop spread so consumers
285
- // can override it (e.g. `aria-hidden={false}` + `role="img"` +
286
- // `aria-label`) to expose a meaningful standalone icon. This matches
287
- // component-mode Icon, which already sets aria-hidden before its spread.
288
- aria-hidden="true"
289
284
  {...(spanProps as React.HTMLAttributes<HTMLSpanElement>)}
290
285
  {...mergeProps(
291
286
  themeProps('icon', {size, color}),
292
287
  stylex.props(styles.span, colorStyles[color], spanSizeStyles[size]),
293
- )}>
288
+ )}
289
+ aria-hidden="true">
294
290
  {resolvedIcon}
295
291
  </span>
296
292
  );
@@ -20,7 +20,6 @@ export const docs = {
20
20
  theming: {
21
21
  targets: [
22
22
  {className: 'astryx-input-group', visualProps: ['size', 'status']},
23
- {className: 'astryx-input-group-text'},
24
23
  ],
25
24
  },
26
25
  description:
@@ -201,11 +201,11 @@ export function InputGroup({
201
201
  labelTooltip={labelTooltip}>
202
202
  <div
203
203
  ref={ref}
204
- data-testid={testId}
205
- {...rest}
206
204
  role="group"
207
205
  aria-labelledby={labelID}
208
206
  aria-describedby={describedByIDs}
207
+ data-testid={testId}
208
+ {...rest}
209
209
  {...mergeProps(
210
210
  themeProps('input-group', {
211
211
  size,
package/src/Item/Item.tsx CHANGED
@@ -470,9 +470,9 @@ export function Item({
470
470
  return (
471
471
  <Component
472
472
  ref={ref as React.Ref<never>}
473
- {...restProps}
474
473
  aria-selected={isSelected || undefined}
475
474
  aria-disabled={isDisabled || undefined}
475
+ {...restProps}
476
476
  {...mergeProps(
477
477
  themeProps('item', {density, align}),
478
478
  stylex.props(
@@ -78,7 +78,7 @@ export const docs = {
78
78
  name: 'render',
79
79
  type: '(children: ReactNode, props: ContextRenderProps | FixedRenderProps) => ReactNode',
80
80
  description:
81
- 'Render function for the popover element. Pass placement/alignment in context mode or x/y in fixed mode. Placement/alignment are logical: they map to the self-* position-area keyword family, which resolves against the popover\'s own inherited direction, so RTL contexts mirror automatically in pure CSS. Pass `positioning: "custom"` in context mode to author position styles yourself via `style` (e.g. explicit anchor() insets or an anchor-size() cover): the hook keeps the popover behavior and position-anchor wiring but derives no position styles — including the automatic RTL mirroring, which becomes your responsibility. In context mode, pass `as: "span"` to render an inline-safe layer (e.g. inside a paragraph). The layer renders inline in the React tree; the Popover API promotes it to the top layer when shown, so it escapes ancestor clipping and stacking without a portal.',
81
+ 'Render function for the popover element. Pass placement/alignment in context mode or x/y in fixed mode. In context mode, pass `as: "span"` to render an inline-safe layer (e.g. inside a paragraph). The layer renders inline in the React tree; the Popover API promotes it to the top layer when shown, so it escapes ancestor clipping and stacking without a portal.',
82
82
  },
83
83
  ],
84
84
  usage: {
@@ -130,7 +130,7 @@ export const docsDense = {
130
130
  hide: 'hide layer.',
131
131
  isOpen: 'whether layer is open.',
132
132
  id: 'unique ARIA id.',
133
- render: 'renders popover element; pass placement/alignment or x/y. Placement/alignment logical: mapped to self-* position-area keywords resolved against the popover\'s inherited direction (RTL mirrors in pure CSS). `positioning: "custom"` (context mode) = author position styles yourself via `style`; keeps popover behavior + position-anchor wiring, derives nothing (incl. RTL mirroring — yours). Context mode accepts `as: "span"` for inline-safe layers. Renders inline; the Popover API top layer escapes clipping/stacking without a portal.',
133
+ render: 'renders popover element; pass placement/alignment or x/y. Context mode accepts `as: "span"` for inline-safe layers. Renders inline; the Popover API top layer escapes clipping/stacking without a portal.',
134
134
  },
135
135
  usage: {
136
136
  description:
@@ -3,21 +3,15 @@
3
3
  /**
4
4
  * @file useLayer.test.tsx
5
5
  * @input Uses vitest, @testing-library/react, useLayer hook
6
- * @output Tests for useLayer show/hide feature-detection guards and context-mode positioning
6
+ * @output Unit tests for useLayer show/hide behavior and feature-detection guards
7
7
  * @position Testing; validates useLayer.tsx implementation
8
8
  *
9
- * SYNC: When useLayer.tsx changes, update tests accordingly
9
+ * SYNC: When useLayer.tsx changes, update tests to match new behavior
10
10
  */
11
11
 
12
12
  import {describe, it, expect, vi, afterEach} from 'vitest';
13
13
  import {render, act} from '@testing-library/react';
14
- import userEvent from '@testing-library/user-event';
15
14
  import {useLayer} from './useLayer';
16
- import type {
17
- LayerPlacement,
18
- LayerAlignment,
19
- ContextRenderProps,
20
- } from './useLayer';
21
15
 
22
16
  /**
23
17
  * Minimal harness that exposes the imperative show/hide callbacks and renders
@@ -115,216 +109,3 @@ describe('useLayer', () => {
115
109
  });
116
110
  });
117
111
  });
118
-
119
- /**
120
- * Harness that owns the trigger element.
121
- */
122
- function Harness({
123
- placement,
124
- alignment,
125
- triggerStyle,
126
- triggerDir,
127
- }: {
128
- placement: LayerPlacement;
129
- alignment: LayerAlignment;
130
- triggerStyle?: React.CSSProperties;
131
- triggerDir?: string;
132
- }) {
133
- const layer = useLayer({mode: 'context'});
134
- return (
135
- <>
136
- <button
137
- type="button"
138
- ref={layer.ref}
139
- dir={triggerDir}
140
- style={triggerStyle}
141
- onClick={layer.isOpen ? layer.hide : layer.show}>
142
- trigger
143
- </button>
144
- {layer.render(<span>content</span>, {placement, alignment})}
145
- </>
146
- );
147
- }
148
-
149
- async function openAndGetStyle(ui: React.ReactElement): Promise<string> {
150
- const user = userEvent.setup();
151
- const {container, getByRole} = render(ui);
152
- await user.click(getByRole('button', {name: 'trigger'}));
153
- const popover = container.querySelector('[popover]');
154
- return popover?.getAttribute('style') ?? '';
155
- }
156
-
157
- describe('useLayer context positioning', () => {
158
- // The mapping uses the self-* logical keyword family, so the emitted
159
- // string is direction-independent by construction: the browser resolves
160
- // the inline axis against the popover's own inherited direction, and RTL
161
- // mirrors with no JS. jsdom has no layout engine, so these tests can only
162
- // assert the emitted string — the actual RTL geometry is covered by the
163
- // RTL Storybook story (and was verified against the full 12-cell matrix
164
- // in a real browser).
165
- describe('self-* position-area mapping', () => {
166
- it.each([
167
- // [placement, alignment, expected position-area]
168
- ['above', 'start', 'self-block-start span-self-inline-end'],
169
- ['above', 'center', 'self-block-start'],
170
- ['above', 'end', 'self-block-start span-self-inline-start'],
171
- ['below', 'start', 'self-block-end span-self-inline-end'],
172
- ['below', 'center', 'self-block-end'],
173
- ['below', 'end', 'self-block-end span-self-inline-start'],
174
- ['start', 'start', 'self-inline-start span-self-block-end'],
175
- ['start', 'center', 'self-inline-start'],
176
- ['start', 'end', 'self-inline-start span-self-block-start'],
177
- ['end', 'start', 'self-inline-end span-self-block-end'],
178
- ['end', 'center', 'self-inline-end'],
179
- ['end', 'end', 'self-inline-end span-self-block-start'],
180
- ] as const)(
181
- 'placement=%s alignment=%s emits position-area %s',
182
- async (placement, alignment, expectedArea) => {
183
- const style = await openAndGetStyle(
184
- <Harness placement={placement} alignment={alignment} />,
185
- );
186
- expect(style).toMatch(
187
- new RegExp(`position-area: ${expectedArea}(;|$)`),
188
- );
189
- expect(style).not.toContain('justify-self');
190
- },
191
- );
192
-
193
- it('emits the same string regardless of trigger direction', async () => {
194
- const user = userEvent.setup();
195
- const first = render(<Harness placement="below" alignment="start" />);
196
- await user.click(first.getByRole('button', {name: 'trigger'}));
197
- const ltr =
198
- first.container.querySelector('[popover]')?.getAttribute('style') ?? '';
199
- first.unmount();
200
-
201
- const second = render(
202
- <Harness
203
- placement="below"
204
- alignment="start"
205
- triggerDir="rtl"
206
- triggerStyle={{direction: 'rtl'}}
207
- />,
208
- );
209
- await user.click(second.getByRole('button', {name: 'trigger'}));
210
- const rtl =
211
- second.container.querySelector('[popover]')?.getAttribute('style') ??
212
- '';
213
- // The unique position-anchor id differs per render; the placement
214
- // mapping must not.
215
- const positionArea = (s: string) => s.match(/position-area:[^;]*/)?.[0];
216
- expect(positionArea(rtl)).toBeDefined();
217
- expect(positionArea(rtl)).toBe(positionArea(ltr));
218
- });
219
-
220
- it('keeps position-try fallbacks intact', async () => {
221
- const style = await openAndGetStyle(
222
- <Harness placement="below" alignment="start" />,
223
- );
224
- expect(style).toContain(
225
- 'position-try-fallbacks: flip-block, flip-inline, flip-block flip-inline',
226
- );
227
- });
228
- });
229
-
230
- describe("positioning='custom' (consumer-authored position styles)", () => {
231
- // Consumers like Carousel and Tokenizer keep useLayer's popover behavior
232
- // and anchor wiring but position the layer themselves. The opt-out must
233
- // suppress every placement-derived style — position-area and the try
234
- // fallbacks — so those consumers never need to know which properties
235
- // the hook would have emitted.
236
- function CustomHarness({
237
- triggerStyle,
238
- renderProps,
239
- }: {
240
- triggerStyle?: React.CSSProperties;
241
- renderProps: ContextRenderProps;
242
- }) {
243
- const layer = useLayer({mode: 'context'});
244
- return (
245
- <>
246
- <button
247
- type="button"
248
- ref={layer.ref}
249
- style={triggerStyle}
250
- onClick={layer.isOpen ? layer.hide : layer.show}>
251
- trigger
252
- </button>
253
- {layer.render(<span>content</span>, renderProps)}
254
- </>
255
- );
256
- }
257
-
258
- it('keeps the anchor wiring but derives no placement styles', async () => {
259
- const style = await openAndGetStyle(
260
- <CustomHarness
261
- renderProps={{
262
- positioning: 'custom',
263
- style: {positionArea: 'center'},
264
- }}
265
- />,
266
- );
267
- expect(style).toContain('position-anchor');
268
- // The consumer-authored area is the only one present…
269
- expect(style).toContain('position-area: center');
270
- // …and no placement-derived styles leak through.
271
- expect(style).not.toContain('position-try-fallbacks');
272
- });
273
-
274
- it('ignores placement and alignment when positioning is custom', async () => {
275
- // placement/alignment are documented as ignored under custom. Derived
276
- // output would be position-area "self-block-end span-self-inline-end";
277
- // none of it may appear.
278
- const style = await openAndGetStyle(
279
- <CustomHarness
280
- renderProps={{
281
- positioning: 'custom',
282
- placement: 'below',
283
- alignment: 'start',
284
- style: {positionArea: 'center'},
285
- }}
286
- />,
287
- );
288
- expect(style).toContain('position-anchor');
289
- expect(style).toContain('position-area: center');
290
- expect(style).not.toContain('self-block');
291
- expect(style).not.toContain('position-try-fallbacks');
292
- });
293
-
294
- it('emits only the anchor wiring when custom positioning passes no style at all', async () => {
295
- // The strongest suppression probe: with no consumer style in the merge
296
- // (Tokenizer's insets-only shape reduces to this in jsdom), nothing can
297
- // clobber a leaked derived value — any position-area or try-fallbacks
298
- // in the output is a genuine leak.
299
- const style = await openAndGetStyle(
300
- <CustomHarness renderProps={{positioning: 'custom'}} />,
301
- );
302
- expect(style).toContain('position-anchor');
303
- expect(style).not.toContain('position-area');
304
- expect(style).not.toContain('position-try-fallbacks');
305
- });
306
- });
307
-
308
- it('fixed mode emits no anchor-positioning styles', async () => {
309
- function FixedHarness() {
310
- const layer = useLayer({mode: 'fixed'});
311
- return (
312
- <>
313
- <button type="button" onClick={layer.show}>
314
- opener
315
- </button>
316
- {layer.render(<span>content</span>, {x: 10, y: 20})}
317
- </>
318
- );
319
- }
320
-
321
- const user = userEvent.setup();
322
- const {container, getByRole} = render(<FixedHarness />);
323
- await user.click(getByRole('button', {name: 'opener'}));
324
-
325
- const style =
326
- container.querySelector('[popover]')?.getAttribute('style') ?? '';
327
- expect(style).not.toContain('position-area');
328
- expect(style).not.toContain('position-anchor');
329
- });
330
- });