@astryxdesign/core 0.1.4-canary.fd7ab46 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (579) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +18 -20
  4. package/dist/AlertDialog/useImperativeAlertDialog.js +3 -3
  5. package/dist/AppShell/AppShell.d.ts +1 -1
  6. package/dist/AppShell/AppShell.d.ts.map +1 -1
  7. package/dist/AppShell/AppShell.js +53 -55
  8. package/dist/AspectRatio/AspectRatio.d.ts +10 -48
  9. package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
  10. package/dist/AspectRatio/AspectRatio.js +12 -33
  11. package/dist/AspectRatio/index.d.ts +1 -1
  12. package/dist/AspectRatio/index.d.ts.map +1 -1
  13. package/dist/Avatar/Avatar.d.ts.map +1 -1
  14. package/dist/Avatar/Avatar.js +25 -27
  15. package/dist/Avatar/AvatarStatusDot.js +5 -5
  16. package/dist/AvatarGroup/AvatarGroup.js +5 -5
  17. package/dist/AvatarGroup/AvatarGroupOverflow.js +5 -5
  18. package/dist/Badge/Badge.js +3 -3
  19. package/dist/Banner/Banner.d.ts.map +1 -1
  20. package/dist/Banner/Banner.js +25 -32
  21. package/dist/Blockquote/Blockquote.js +7 -7
  22. package/dist/Breadcrumbs/BreadcrumbItem.js +17 -17
  23. package/dist/Breadcrumbs/Breadcrumbs.js +7 -7
  24. package/dist/Button/Button.js +19 -19
  25. package/dist/ButtonGroup/ButtonGroup.js +7 -7
  26. package/dist/Calendar/Calendar.d.ts.map +1 -1
  27. package/dist/Calendar/Calendar.js +48 -68
  28. package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
  29. package/dist/Calendar/styles.d.ts +2 -2
  30. package/dist/Calendar/styles.d.ts.map +1 -1
  31. package/dist/Calendar/styles.js +2 -2
  32. package/dist/Card/Card.d.ts +2 -4
  33. package/dist/Card/Card.d.ts.map +1 -1
  34. package/dist/Card/Card.js +10 -18
  35. package/dist/Carousel/Carousel.d.ts.map +1 -1
  36. package/dist/Carousel/Carousel.js +21 -24
  37. package/dist/Carousel/carousel.markers.stylex.d.ts +7 -0
  38. package/dist/Carousel/carousel.markers.stylex.d.ts.map +1 -0
  39. package/dist/Carousel/carousel.markers.stylex.js +12 -0
  40. package/dist/Center/Center.js +3 -3
  41. package/dist/Chat/ChatComposer.js +23 -23
  42. package/dist/Chat/ChatComposerDrawer.js +14 -14
  43. package/dist/Chat/ChatComposerInput.d.ts +1 -1
  44. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  45. package/dist/Chat/ChatComposerInput.js +15 -27
  46. package/dist/Chat/ChatDictationButton.d.ts +1 -1
  47. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  48. package/dist/Chat/ChatDictationButton.js +11 -13
  49. package/dist/Chat/ChatLayout.js +17 -17
  50. package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
  51. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  52. package/dist/Chat/ChatLayoutScrollButton.js +10 -12
  53. package/dist/Chat/ChatMessage.js +12 -12
  54. package/dist/Chat/ChatMessageBubble.js +7 -7
  55. package/dist/Chat/ChatMessageList.js +14 -14
  56. package/dist/Chat/ChatMessageMetadata.d.ts +1 -1
  57. package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
  58. package/dist/Chat/ChatMessageMetadata.js +12 -14
  59. package/dist/Chat/ChatPastedTextToken.js +13 -13
  60. package/dist/Chat/ChatSendButton.js +3 -3
  61. package/dist/Chat/ChatSystemMessage.d.ts +1 -1
  62. package/dist/Chat/ChatSystemMessage.d.ts.map +1 -1
  63. package/dist/Chat/ChatSystemMessage.js +17 -17
  64. package/dist/Chat/ChatTokenizedText.d.ts +1 -1
  65. package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
  66. package/dist/Chat/ChatTokenizedText.js +15 -24
  67. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  68. package/dist/Chat/ChatToolCalls.js +74 -81
  69. package/dist/Chat/index.d.ts +1 -1
  70. package/dist/Chat/index.d.ts.map +1 -1
  71. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  72. package/dist/Chat/useTriggerMenu.js +15 -15
  73. package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
  74. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  75. package/dist/CheckboxInput/CheckboxInput.js +23 -25
  76. package/dist/CheckboxList/CheckboxList.js +9 -9
  77. package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
  78. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  79. package/dist/CheckboxList/CheckboxListItem.js +6 -8
  80. package/dist/Citation/Citation.js +10 -10
  81. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  82. package/dist/ClickableCard/ClickableCard.js +9 -32
  83. package/dist/Code/Code.js +3 -3
  84. package/dist/CodeBlock/CodeBlock.d.ts +1 -10
  85. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  86. package/dist/CodeBlock/CodeBlock.js +52 -88
  87. package/dist/Collapsible/Collapsible.d.ts +3 -9
  88. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  89. package/dist/Collapsible/Collapsible.js +22 -110
  90. package/dist/Collapsible/CollapsibleGroup.d.ts +7 -39
  91. package/dist/Collapsible/CollapsibleGroup.d.ts.map +1 -1
  92. package/dist/Collapsible/CollapsibleGroup.js +12 -73
  93. package/dist/Collapsible/CollapsibleGroupContext.d.ts +0 -31
  94. package/dist/Collapsible/CollapsibleGroupContext.d.ts.map +1 -1
  95. package/dist/Collapsible/CollapsibleGroupContext.js +3 -33
  96. package/dist/Collapsible/index.d.ts +0 -1
  97. package/dist/Collapsible/index.d.ts.map +1 -1
  98. package/dist/Collapsible/useCollapsible.d.ts +1 -4
  99. package/dist/Collapsible/useCollapsible.d.ts.map +1 -1
  100. package/dist/Collapsible/useCollapsible.js +6 -20
  101. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  102. package/dist/CommandPalette/CommandPalette.js +34 -36
  103. package/dist/CommandPalette/CommandPaletteEmpty.js +3 -3
  104. package/dist/CommandPalette/CommandPaletteFooter.js +16 -16
  105. package/dist/CommandPalette/CommandPaletteGroup.js +5 -5
  106. package/dist/CommandPalette/CommandPaletteInput.js +13 -13
  107. package/dist/CommandPalette/CommandPaletteItem.js +3 -3
  108. package/dist/CommandPalette/CommandPaletteList.js +3 -3
  109. package/dist/ContextMenu/ContextMenu.d.ts +2 -7
  110. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  111. package/dist/ContextMenu/ContextMenu.js +43 -76
  112. package/dist/DateInput/DateInput.js +18 -18
  113. package/dist/DateRangeInput/DateRangeInput.js +21 -21
  114. package/dist/DateTimeInput/DateTimeInput.d.ts +2 -5
  115. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  116. package/dist/DateTimeInput/DateTimeInput.js +26 -30
  117. package/dist/DateTimeInput/index.d.ts +1 -1
  118. package/dist/DateTimeInput/index.d.ts.map +1 -1
  119. package/dist/Dialog/Dialog.js +9 -9
  120. package/dist/Dialog/DialogHeader.js +16 -16
  121. package/dist/Dialog/useImperativeDialog.js +3 -3
  122. package/dist/Divider/Divider.js +7 -7
  123. package/dist/DropdownMenu/DropdownMenu.js +10 -10
  124. package/dist/DropdownMenu/DropdownMenuItem.d.ts +17 -2
  125. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  126. package/dist/DropdownMenu/DropdownMenuItem.js +3 -3
  127. package/dist/DropdownMenu/renderDropdownItems.js +10 -10
  128. package/dist/EmptyState/EmptyState.js +9 -9
  129. package/dist/Field/Field.js +17 -17
  130. package/dist/Field/FieldLabel.js +15 -15
  131. package/dist/Field/InputClearButton.js +5 -5
  132. package/dist/FieldStatus/FieldStatus.js +3 -3
  133. package/dist/FileInput/FileInput.js +29 -29
  134. package/dist/FormLayout/FormLayout.js +5 -5
  135. package/dist/Grid/Grid.d.ts +3 -4
  136. package/dist/Grid/Grid.d.ts.map +1 -1
  137. package/dist/Grid/Grid.js +12 -29
  138. package/dist/Grid/GridSpan.js +3 -3
  139. package/dist/HStack/HStack.js +3 -3
  140. package/dist/Heading/Heading.js +10 -10
  141. package/dist/HoverCard/HoverCard.js +9 -9
  142. package/dist/HoverCard/useHoverCard.d.ts +1 -5
  143. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  144. package/dist/HoverCard/useHoverCard.js +3 -3
  145. package/dist/Icon/Icon.d.ts.map +1 -1
  146. package/dist/Icon/Icon.js +12 -16
  147. package/dist/Icon/defaultIcons.js +116 -116
  148. package/dist/IconButton/IconButton.js +3 -3
  149. package/dist/InputGroup/InputGroup.js +11 -11
  150. package/dist/InputGroup/InputGroupText.js +3 -3
  151. package/dist/Item/Item.js +18 -18
  152. package/dist/Kbd/Kbd.js +5 -5
  153. package/dist/Layer/LayerProvider.js +7 -7
  154. package/dist/Layer/useLayer.d.ts +2 -29
  155. package/dist/Layer/useLayer.d.ts.map +1 -1
  156. package/dist/Layer/useLayer.js +31 -44
  157. package/dist/Layout/Layout.js +21 -21
  158. package/dist/Layout/LayoutContent.js +3 -3
  159. package/dist/Layout/LayoutFooter.js +5 -5
  160. package/dist/Layout/LayoutHeader.js +5 -5
  161. package/dist/Layout/LayoutPanel.js +3 -3
  162. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  163. package/dist/Lightbox/Lightbox.js +31 -55
  164. package/dist/Lightbox/useLightbox.js +3 -3
  165. package/dist/Link/Link.js +15 -15
  166. package/dist/Link/LinkProvider.js +3 -3
  167. package/dist/Link/useLinkify.js +3 -3
  168. package/dist/List/List.js +11 -11
  169. package/dist/List/ListItem.js +11 -11
  170. package/dist/Markdown/Markdown.d.ts.map +1 -1
  171. package/dist/Markdown/Markdown.js +102 -102
  172. package/dist/MetadataList/MetadataList.js +10 -10
  173. package/dist/MetadataList/MetadataListItem.js +15 -15
  174. package/dist/MobileNav/MobileNav.js +15 -15
  175. package/dist/MobileNav/MobileNavToggle.js +5 -5
  176. package/dist/MoreMenu/MoreMenu.js +3 -3
  177. package/dist/MultiSelector/MultiSelector.js +56 -56
  178. package/dist/NavIcon/NavIcon.js +3 -3
  179. package/dist/NavMenu/NavHeadingMenu.js +5 -5
  180. package/dist/NavMenu/NavHeadingMenuItem.js +8 -8
  181. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  182. package/dist/NumberInput/NumberInput.js +32 -48
  183. package/dist/Outline/Outline.js +15 -15
  184. package/dist/OverflowList/OverflowList.js +8 -8
  185. package/dist/Overlay/Overlay.js +3 -3
  186. package/dist/Overlay/OverlayScrim.js +5 -5
  187. package/dist/Overlay/useOverlay.js +3 -3
  188. package/dist/Pagination/Pagination.d.ts +1 -1
  189. package/dist/Pagination/Pagination.d.ts.map +1 -1
  190. package/dist/Pagination/Pagination.js +72 -125
  191. package/dist/Popover/Popover.js +16 -16
  192. package/dist/Popover/usePopover.js +7 -7
  193. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  194. package/dist/PowerSearch/PowerSearch.js +92 -110
  195. package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
  196. package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
  197. package/dist/PowerSearch/PowerSearchToken.js +5 -5
  198. package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
  199. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  200. package/dist/ProgressBar/ProgressBar.js +18 -25
  201. package/dist/RadioList/RadioList.js +7 -7
  202. package/dist/RadioList/RadioListItem.d.ts +1 -1
  203. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  204. package/dist/RadioList/RadioListItem.js +21 -24
  205. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  206. package/dist/Resizable/ResizeHandle.js +10 -28
  207. package/dist/Section/Section.js +5 -5
  208. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  209. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  210. package/dist/SegmentedControl/SegmentedControl.js +10 -32
  211. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  212. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  213. package/dist/SegmentedControl/SegmentedControlItem.js +12 -18
  214. package/dist/SelectableCard/SelectableCard.js +5 -5
  215. package/dist/Selector/Selector.js +46 -46
  216. package/dist/Selector/SelectorOption.js +3 -3
  217. package/dist/SideNav/SideNav.d.ts.map +1 -1
  218. package/dist/SideNav/SideNav.js +34 -38
  219. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  220. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  221. package/dist/SideNav/SideNavCollapseButton.js +6 -8
  222. package/dist/SideNav/SideNavHeading.js +87 -87
  223. package/dist/SideNav/SideNavItem.js +42 -42
  224. package/dist/SideNav/SideNavSection.d.ts +1 -1
  225. package/dist/SideNav/SideNavSection.d.ts.map +1 -1
  226. package/dist/SideNav/SideNavSection.js +16 -18
  227. package/dist/Skeleton/Skeleton.js +3 -3
  228. package/dist/Slider/Slider.js +23 -23
  229. package/dist/Spinner/Spinner.js +9 -9
  230. package/dist/StatusDot/StatusDot.js +5 -5
  231. package/dist/Switch/Switch.d.ts +4 -8
  232. package/dist/Switch/Switch.d.ts.map +1 -1
  233. package/dist/Switch/Switch.js +29 -34
  234. package/dist/TabList/Tab.js +18 -18
  235. package/dist/TabList/TabList.js +5 -5
  236. package/dist/TabList/TabMenu.d.ts.map +1 -1
  237. package/dist/TabList/TabMenu.js +30 -57
  238. package/dist/TabList/tab.markers.stylex.d.ts +1 -1
  239. package/dist/Table/BaseTable.d.ts.map +1 -1
  240. package/dist/Table/BaseTable.js +39 -50
  241. package/dist/Table/Table.js +7 -7
  242. package/dist/Table/TableBody.d.ts +1 -1
  243. package/dist/Table/TableBody.d.ts.map +1 -1
  244. package/dist/Table/TableBody.js +5 -9
  245. package/dist/Table/TableCell.js +3 -3
  246. package/dist/Table/TableFooter.d.ts +1 -1
  247. package/dist/Table/TableFooter.d.ts.map +1 -1
  248. package/dist/Table/TableFooter.js +5 -9
  249. package/dist/Table/TableHeader.d.ts +1 -1
  250. package/dist/Table/TableHeader.d.ts.map +1 -1
  251. package/dist/Table/TableHeader.js +5 -9
  252. package/dist/Table/TableHeaderCell.js +3 -3
  253. package/dist/Table/TableRow.js +5 -5
  254. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  255. package/dist/Table/plugins/columnResize/useTableColumnResize.js +11 -14
  256. package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
  257. package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
  258. package/dist/Table/plugins/pagination/paginateData.js +1 -5
  259. package/dist/Table/plugins/pagination/useTablePagination.js +7 -7
  260. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +22 -22
  261. package/dist/Table/plugins/selection/useTableSelection.js +18 -18
  262. package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
  263. package/dist/Table/plugins/selection/useTableSelectionState.js +1 -11
  264. package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
  265. package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
  266. package/dist/Table/plugins/sortable/useTableSortableState.js +4 -8
  267. package/dist/Table/tableContextMenu.js +9 -9
  268. package/dist/Text/Text.js +10 -10
  269. package/dist/TextArea/TextArea.js +14 -14
  270. package/dist/TextInput/TextInput.js +15 -15
  271. package/dist/Thumbnail/Thumbnail.d.ts +2 -3
  272. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  273. package/dist/Thumbnail/Thumbnail.js +29 -30
  274. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  275. package/dist/TimeInput/TimeInput.js +21 -26
  276. package/dist/Timestamp/Timestamp.d.ts +1 -1
  277. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  278. package/dist/Timestamp/Timestamp.js +26 -37
  279. package/dist/Toast/Toast.d.ts.map +1 -1
  280. package/dist/Toast/Toast.js +17 -25
  281. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  282. package/dist/Toast/ToastViewport.js +11 -23
  283. package/dist/Toast/useToast.js +4 -4
  284. package/dist/ToggleButton/ToggleButton.js +12 -12
  285. package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
  286. package/dist/Token/Token.js +21 -21
  287. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  288. package/dist/Tokenizer/Tokenizer.js +34 -36
  289. package/dist/Toolbar/Toolbar.js +18 -18
  290. package/dist/Tooltip/Tooltip.js +11 -11
  291. package/dist/Tooltip/useTooltip.d.ts +1 -5
  292. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  293. package/dist/Tooltip/useTooltip.js +3 -3
  294. package/dist/TopNav/TopNav.js +32 -32
  295. package/dist/TopNav/TopNavHeading.js +67 -67
  296. package/dist/TopNav/TopNavItem.js +5 -5
  297. package/dist/TopNav/TopNavMegaMenu.js +30 -30
  298. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  299. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  300. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +14 -25
  301. package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
  302. package/dist/TopNav/TopNavMenu.js +32 -32
  303. package/dist/TreeList/TreeList.js +8 -8
  304. package/dist/TreeList/TreeListBranches.js +11 -11
  305. package/dist/TreeList/TreeListItem.js +30 -30
  306. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  307. package/dist/Typeahead/BaseTypeahead.js +20 -23
  308. package/dist/Typeahead/Typeahead.js +12 -12
  309. package/dist/Typeahead/TypeaheadItem.js +10 -10
  310. package/dist/VStack/VStack.js +3 -3
  311. package/dist/astryx.css +0 -7
  312. package/dist/astryx.umd.js +60 -60
  313. package/dist/astryx.umd.js.map +4 -4
  314. package/dist/docs-types.d.ts +2 -8
  315. package/dist/docs-types.d.ts.map +1 -1
  316. package/dist/hooks/focusableSelector.d.ts +1 -1
  317. package/dist/hooks/focusableSelector.d.ts.map +1 -1
  318. package/dist/hooks/focusableSelector.js +1 -1
  319. package/dist/hooks/index.d.ts +0 -2
  320. package/dist/hooks/index.d.ts.map +1 -1
  321. package/dist/hooks/index.js +0 -1
  322. package/dist/hooks/useFocusTrap.d.ts +0 -3
  323. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  324. package/dist/hooks/useFocusTrap.js +1 -38
  325. package/dist/hooks/useInteractiveRole.d.ts +2 -6
  326. package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
  327. package/dist/hooks/useInteractiveRole.js +2 -6
  328. package/dist/hooks/useKeyboardHint.js +9 -9
  329. package/dist/hooks/useStreamingText.d.ts +1 -3
  330. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  331. package/dist/hooks/useStreamingText.js +5 -14
  332. package/dist/theme/MediaTheme.js +3 -3
  333. package/dist/theme/Theme.js +7 -7
  334. package/dist/theme/defineTheme.d.ts +1 -1
  335. package/dist/theme/defineTheme.d.ts.map +1 -1
  336. package/dist/theme/expandColorScale.d.ts.map +1 -1
  337. package/dist/theme/expandColorScale.js +3 -10
  338. package/dist/theme/hct.d.ts +15 -0
  339. package/dist/theme/hct.d.ts.map +1 -1
  340. package/dist/theme/hct.js +9 -9
  341. package/dist/theme/syntax/SyntaxTheme.js +5 -5
  342. package/dist/theme/tokens.d.ts +2 -10
  343. package/dist/theme/tokens.d.ts.map +1 -1
  344. package/dist/theme/tokens.js +4 -220
  345. package/dist/utils/index.d.ts +0 -3
  346. package/dist/utils/index.d.ts.map +1 -1
  347. package/dist/utils/index.js +1 -3
  348. package/dist/utils/timeParser.d.ts.map +1 -1
  349. package/dist/utils/timeParser.js +5 -8
  350. package/package.json +3 -3
  351. package/src/AlertDialog/AlertDialog.doc.mjs +0 -4
  352. package/src/AlertDialog/AlertDialog.tsx +0 -2
  353. package/src/AppShell/AppShell.tsx +0 -2
  354. package/src/AspectRatio/AspectRatio.doc.mjs +1 -28
  355. package/src/AspectRatio/AspectRatio.test.tsx +1 -142
  356. package/src/AspectRatio/AspectRatio.tsx +10 -70
  357. package/src/AspectRatio/index.ts +1 -5
  358. package/src/Avatar/Avatar.doc.mjs +0 -11
  359. package/src/Avatar/Avatar.test.tsx +1 -32
  360. package/src/Avatar/Avatar.tsx +20 -12
  361. package/src/Banner/Banner.doc.mjs +0 -8
  362. package/src/Banner/Banner.test.tsx +0 -38
  363. package/src/Banner/Banner.tsx +1 -8
  364. package/src/Calendar/Calendar.doc.mjs +1 -1
  365. package/src/Calendar/Calendar.test.tsx +17 -122
  366. package/src/Calendar/Calendar.tsx +5 -26
  367. package/src/Calendar/dayCellUtils.ts +1 -3
  368. package/src/Calendar/styles.ts +2 -12
  369. package/src/Card/Card.tsx +6 -16
  370. package/src/Carousel/Carousel.doc.mjs +12 -12
  371. package/src/Carousel/Carousel.test.tsx +0 -13
  372. package/src/Carousel/Carousel.tsx +2 -4
  373. package/src/Carousel/carousel.markers.stylex.ts +10 -0
  374. package/src/Chat/Chat.doc.mjs +1 -1
  375. package/src/Chat/ChatComposerInput.test.tsx +1 -27
  376. package/src/Chat/ChatComposerInput.tsx +15 -20
  377. package/src/Chat/ChatDictationButton.tsx +4 -4
  378. package/src/Chat/ChatLayoutScrollButton.tsx +1 -3
  379. package/src/Chat/ChatMessageMetadata.tsx +6 -4
  380. package/src/Chat/ChatSystemMessage.test.tsx +11 -26
  381. package/src/Chat/ChatSystemMessage.tsx +7 -7
  382. package/src/Chat/ChatTokenizedText.test.tsx +16 -29
  383. package/src/Chat/ChatTokenizedText.tsx +8 -15
  384. package/src/Chat/ChatToolCalls.test.tsx +0 -55
  385. package/src/Chat/ChatToolCalls.tsx +12 -10
  386. package/src/Chat/index.ts +4 -1
  387. package/src/Chat/useTriggerMenu.tsx +4 -1
  388. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  389. package/src/CheckboxInput/CheckboxInput.test.tsx +4 -71
  390. package/src/CheckboxInput/CheckboxInput.tsx +0 -2
  391. package/src/CheckboxList/CheckboxList.test.tsx +0 -19
  392. package/src/CheckboxList/CheckboxListItem.tsx +2 -11
  393. package/src/Citation/Citation.doc.mjs +0 -5
  394. package/src/ClickableCard/ClickableCard.tsx +2 -45
  395. package/src/CodeBlock/CodeBlock.doc.mjs +2 -7
  396. package/src/CodeBlock/CodeBlock.test.tsx +3 -122
  397. package/src/CodeBlock/CodeBlock.tsx +4 -62
  398. package/src/Collapsible/Collapsible.doc.mjs +4 -8
  399. package/src/Collapsible/Collapsible.tsx +10 -86
  400. package/src/Collapsible/CollapsibleGroup.doc.mjs +3 -27
  401. package/src/Collapsible/CollapsibleGroup.test.tsx +0 -318
  402. package/src/Collapsible/CollapsibleGroup.tsx +9 -107
  403. package/src/Collapsible/CollapsibleGroupContext.tsx +2 -42
  404. package/src/Collapsible/index.ts +0 -4
  405. package/src/Collapsible/useCollapsible.ts +6 -20
  406. package/src/CommandPalette/CommandPalette.doc.mjs +0 -4
  407. package/src/CommandPalette/CommandPalette.tsx +3 -5
  408. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +0 -5
  409. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +0 -10
  410. package/src/CommandPalette/CommandPaletteInput.doc.mjs +0 -6
  411. package/src/CommandPalette/CommandPaletteItem.doc.mjs +0 -6
  412. package/src/CommandPalette/CommandPaletteList.doc.mjs +0 -9
  413. package/src/ContextMenu/ContextMenu.doc.mjs +0 -15
  414. package/src/ContextMenu/ContextMenu.test.tsx +0 -87
  415. package/src/ContextMenu/ContextMenu.tsx +28 -87
  416. package/src/ContextMenu/ContextMenuItem.doc.mjs +0 -6
  417. package/src/DateInput/DateInput.test.tsx +20 -11
  418. package/src/DateRangeInput/DateRangeInput.test.tsx +44 -31
  419. package/src/DateTimeInput/DateTimeInput.doc.mjs +2 -3
  420. package/src/DateTimeInput/DateTimeInput.test.tsx +16 -118
  421. package/src/DateTimeInput/DateTimeInput.tsx +2 -8
  422. package/src/DateTimeInput/index.ts +0 -1
  423. package/src/Dialog/Dialog.doc.mjs +0 -4
  424. package/src/Dialog/DialogHeader.doc.mjs +0 -45
  425. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
  426. package/src/DropdownMenu/DropdownMenu.test.tsx +2 -22
  427. package/src/DropdownMenu/DropdownMenuItem.tsx +17 -5
  428. package/src/Field/Field.test.tsx +4 -1
  429. package/src/Field/FieldLabel.test.tsx +2 -2
  430. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +3 -0
  431. package/src/Grid/Grid.test.tsx +18 -43
  432. package/src/Grid/Grid.tsx +9 -26
  433. package/src/HoverCard/HoverCard.doc.mjs +6 -6
  434. package/src/HoverCard/useHoverCard.doc.mjs +5 -5
  435. package/src/HoverCard/useHoverCard.tsx +2 -9
  436. package/src/Icon/Icon.test.tsx +29 -41
  437. package/src/Icon/Icon.tsx +2 -6
  438. package/src/InputGroup/InputGroup.tsx +2 -2
  439. package/src/Item/Item.tsx +1 -1
  440. package/src/Layer/useLayer.doc.mjs +2 -2
  441. package/src/Layer/useLayer.test.tsx +2 -221
  442. package/src/Layer/useLayer.tsx +30 -69
  443. package/src/Layout/LayoutContent.doc.mjs +0 -12
  444. package/src/Layout/LayoutPanel.doc.mjs +0 -40
  445. package/src/Lightbox/Lightbox.doc.mjs +0 -5
  446. package/src/Lightbox/Lightbox.test.tsx +2 -123
  447. package/src/Lightbox/Lightbox.tsx +1 -29
  448. package/src/Markdown/Markdown.tsx +7 -9
  449. package/src/Markdown/parser.perf.test.ts +12 -34
  450. package/src/NavMenu/NavMenu.doc.mjs +0 -15
  451. package/src/NumberInput/NumberInput.test.tsx +3 -48
  452. package/src/NumberInput/NumberInput.tsx +15 -32
  453. package/src/Overlay/Overlay.doc.mjs +0 -6
  454. package/src/Pagination/Pagination.test.tsx +0 -162
  455. package/src/Pagination/Pagination.tsx +26 -80
  456. package/src/Popover/Popover.doc.mjs +6 -6
  457. package/src/Popover/Popover.test.tsx +0 -65
  458. package/src/Popover/usePopover.doc.mjs +1 -1
  459. package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
  460. package/src/PowerSearch/PowerSearch.test.tsx +1 -109
  461. package/src/PowerSearch/PowerSearch.tsx +16 -37
  462. package/src/ProgressBar/ProgressBar.test.tsx +0 -30
  463. package/src/ProgressBar/ProgressBar.tsx +5 -12
  464. package/src/RadioList/RadioList.test.tsx +0 -19
  465. package/src/RadioList/RadioListItem.tsx +4 -9
  466. package/src/Resizable/ResizeHandle.tsx +4 -22
  467. package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
  468. package/src/SegmentedControl/SegmentedControl.test.tsx +0 -192
  469. package/src/SegmentedControl/SegmentedControl.tsx +5 -27
  470. package/src/SegmentedControl/SegmentedControlItem.tsx +4 -9
  471. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  472. package/src/Selector/Selector.test.tsx +1 -27
  473. package/src/SideNav/SideNav.doc.mjs +1 -7
  474. package/src/SideNav/SideNav.test.tsx +0 -66
  475. package/src/SideNav/SideNav.tsx +2 -6
  476. package/src/SideNav/SideNavCollapseButton.tsx +3 -4
  477. package/src/SideNav/SideNavSection.tsx +4 -6
  478. package/src/Switch/Switch.doc.mjs +7 -7
  479. package/src/Switch/Switch.test.tsx +3 -102
  480. package/src/Switch/Switch.tsx +7 -20
  481. package/src/TabList/TabList.test.tsx +1 -185
  482. package/src/TabList/TabMenu.tsx +9 -45
  483. package/src/Table/BaseTable.tsx +2 -13
  484. package/src/Table/Table.test.tsx +0 -87
  485. package/src/Table/TableBody.tsx +2 -15
  486. package/src/Table/TableFooter.tsx +2 -15
  487. package/src/Table/TableHeader.tsx +2 -15
  488. package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +0 -13
  489. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +1 -3
  490. package/src/Table/plugins/pagination/paginateData.ts +1 -5
  491. package/src/Table/plugins/pagination/useTablePagination.test.tsx +0 -13
  492. package/src/Table/plugins/selection/useTableSelectionState.test.tsx +0 -23
  493. package/src/Table/plugins/selection/useTableSelectionState.tsx +6 -11
  494. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +1 -35
  495. package/src/Table/plugins/sortable/useTableSortableState.tsx +4 -8
  496. package/src/TextArea/TextArea.test.tsx +3 -3
  497. package/src/TextInput/TextInput.test.tsx +3 -3
  498. package/src/Thumbnail/Thumbnail.test.tsx +2 -36
  499. package/src/Thumbnail/Thumbnail.tsx +2 -4
  500. package/src/TimeInput/TimeInput.test.tsx +0 -37
  501. package/src/TimeInput/TimeInput.tsx +1 -11
  502. package/src/Timestamp/Timestamp.doc.mjs +1 -1
  503. package/src/Timestamp/Timestamp.test.tsx +0 -52
  504. package/src/Timestamp/Timestamp.tsx +16 -30
  505. package/src/Toast/Toast.tsx +3 -11
  506. package/src/Toast/ToastViewport.test.tsx +0 -64
  507. package/src/Toast/ToastViewport.tsx +0 -12
  508. package/src/ToggleButton/ToggleButton.doc.mjs +0 -1
  509. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  510. package/src/Tokenizer/Tokenizer.test.tsx +0 -54
  511. package/src/Tokenizer/Tokenizer.tsx +4 -5
  512. package/src/Tooltip/Tooltip.doc.mjs +6 -6
  513. package/src/Tooltip/useTooltip.doc.mjs +5 -5
  514. package/src/Tooltip/useTooltip.tsx +2 -12
  515. package/src/TopNav/TopNav.doc.mjs +1 -1
  516. package/src/TopNav/TopNav.test.tsx +7 -23
  517. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +2 -9
  518. package/src/TreeList/TreeList.doc.mjs +2 -2
  519. package/src/Typeahead/BaseTypeahead.doc.mjs +0 -19
  520. package/src/Typeahead/BaseTypeahead.tsx +2 -5
  521. package/src/Typeahead/Typeahead.doc.mjs +1 -1
  522. package/src/Typeahead/Typeahead.test.tsx +1 -45
  523. package/src/docs-types.ts +1 -9
  524. package/src/hooks/focusableSelector.ts +1 -1
  525. package/src/hooks/index.ts +0 -3
  526. package/src/hooks/useFocusTrap.doc.mjs +2 -4
  527. package/src/hooks/useFocusTrap.test.tsx +1 -149
  528. package/src/hooks/useFocusTrap.ts +1 -50
  529. package/src/hooks/useInteractiveRole.ts +4 -12
  530. package/src/hooks/useStreamingText.test.ts +19 -54
  531. package/src/hooks/useStreamingText.ts +5 -16
  532. package/src/hooks/useTreeFocus.test.tsx +3 -1
  533. package/src/reset.css +0 -29
  534. package/src/theme/SyntaxTheme.doc.mjs +4 -4
  535. package/src/theme/defineTheme.ts +13 -4
  536. package/src/theme/derivedVarRegistry.test.ts +2 -2
  537. package/src/theme/expandColorScale.test.ts +0 -29
  538. package/src/theme/expandColorScale.ts +6 -11
  539. package/src/theme/hct.ts +17 -9
  540. package/src/theme/tokens.test.ts +9 -182
  541. package/src/theme/tokens.ts +4 -239
  542. package/src/theme/useTheme.test.tsx +0 -20
  543. package/src/utils/index.ts +0 -4
  544. package/src/utils/sharedResizeObserver.test.ts +2 -2
  545. package/src/utils/timeParser.test.ts +0 -13
  546. package/src/utils/timeParser.ts +5 -8
  547. package/dist/hooks/useHotkeys.d.ts +0 -51
  548. package/dist/hooks/useHotkeys.d.ts.map +0 -1
  549. package/dist/hooks/useHotkeys.js +0 -160
  550. package/dist/utils/color.d.ts +0 -42
  551. package/dist/utils/color.d.ts.map +0 -1
  552. package/dist/utils/color.js +0 -150
  553. package/dist/utils/composeEventHandlers.d.ts +0 -30
  554. package/dist/utils/composeEventHandlers.d.ts.map +0 -1
  555. package/dist/utils/composeEventHandlers.js +0 -40
  556. package/src/Chat/ChatDictationButton.test.tsx +0 -43
  557. package/src/Chat/ChatLayoutScrollButton.test.tsx +0 -33
  558. package/src/Chat/ChatMessageMetadata.test.tsx +0 -32
  559. package/src/Collapsible/Collapsible.test.tsx +0 -405
  560. package/src/FieldStatus/FieldStatus.test.tsx +0 -282
  561. package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +0 -185
  562. package/src/Layout/Layout.test.tsx +0 -285
  563. package/src/Layout/LayoutSlots.test.tsx +0 -364
  564. package/src/Outline/parseOutlineFromMarkdown.test.ts +0 -80
  565. package/src/OverflowList/OverflowList.test.tsx +0 -416
  566. package/src/Overlay/Overlay.test.tsx +0 -356
  567. package/src/Resizable/ResizeHandle.test.tsx +0 -218
  568. package/src/SizeContext/SizeContext.test.tsx +0 -226
  569. package/src/__tests__/TestIcon.tsx +0 -26
  570. package/src/__tests__/fastRoleQueries.ts +0 -66
  571. package/src/docPropReferences.test.ts +0 -178
  572. package/src/hooks/useHotkeys.doc.mjs +0 -52
  573. package/src/hooks/useHotkeys.test.ts +0 -245
  574. package/src/hooks/useHotkeys.ts +0 -203
  575. package/src/utils/color.test.ts +0 -133
  576. package/src/utils/color.ts +0 -148
  577. package/src/utils/composeEventHandlers.test.ts +0 -71
  578. package/src/utils/composeEventHandlers.ts +0 -44
  579. package/src/utils/mergeProps.test.ts +0 -166
@@ -77,22 +77,6 @@ describe('Collapsible', () => {
77
77
  expect(screen.getByText('Hidden content')).not.toBeVisible();
78
78
  });
79
79
 
80
- it('links the trigger to its content region via aria-controls', () => {
81
- render(
82
- <Collapsible trigger="Details">
83
- <p>Region content</p>
84
- </Collapsible>,
85
- );
86
-
87
- const trigger = screen.getByRole('button', {name: /Details/});
88
- const controlsId = trigger.getAttribute('aria-controls');
89
- // aria-controls must be present and point at the real content region.
90
- expect(controlsId).toBeTruthy();
91
- const region = document.getElementById(controlsId as string);
92
- expect(region).not.toBeNull();
93
- expect(region).toContainElement(screen.getByText('Region content'));
94
- });
95
-
96
80
  it('respects controlled isOpen/onOpenChange', async () => {
97
81
  const onOpenChange = vi.fn();
98
82
  const user = userEvent.setup();
@@ -127,36 +111,6 @@ describe('Collapsible', () => {
127
111
  expect(screen.getByText('Controlled content')).not.toBeVisible();
128
112
  });
129
113
 
130
- it('self-toggles in uncontrolled mode even when onOpenChange is supplied', async () => {
131
- // Regression: passing onOpenChange without isOpen must NOT make the
132
- // component behave as controlled. Internal state should still drive
133
- // visibility, and the callback should fire in addition.
134
- const onOpenChange = vi.fn();
135
- const user = userEvent.setup();
136
- render(
137
- <Collapsible trigger="Uncontrolled" onOpenChange={onOpenChange}>
138
- <p>Uncontrolled content</p>
139
- </Collapsible>,
140
- );
141
-
142
- const trigger = screen.getByRole('button', {name: /Uncontrolled/});
143
- // Starts open (defaultIsOpen defaults to true).
144
- expect(trigger).toHaveAttribute('aria-expanded', 'true');
145
- expect(screen.getByText('Uncontrolled content')).toBeVisible();
146
-
147
- // Click collapses via internal state AND notifies.
148
- await user.click(trigger);
149
- expect(trigger).toHaveAttribute('aria-expanded', 'false');
150
- expect(screen.getByText('Uncontrolled content')).not.toBeVisible();
151
- expect(onOpenChange).toHaveBeenNthCalledWith(1, false);
152
-
153
- // Click again re-expands — proving the component isn't stuck.
154
- await user.click(trigger);
155
- expect(trigger).toHaveAttribute('aria-expanded', 'true');
156
- expect(screen.getByText('Uncontrolled content')).toBeVisible();
157
- expect(onOpenChange).toHaveBeenNthCalledWith(2, true);
158
- });
159
-
160
114
  it('renders chevron indicator', () => {
161
115
  render(
162
116
  <Collapsible trigger="With Chevron">
@@ -443,276 +397,4 @@ describe('CollapsibleGroup', () => {
443
397
  expect(trigger).toHaveAttribute('aria-expanded', 'true');
444
398
  });
445
399
  });
446
-
447
- describe('dividers', () => {
448
- function getItem(name: RegExp): HTMLElement {
449
- const root = screen
450
- .getByRole('button', {name})
451
- .closest('.astryx-collapsible');
452
- expect(root).not.toBeNull();
453
- return root as HTMLElement;
454
- }
455
-
456
- it('renders no wrapper DOM by default and with dividers="none"', () => {
457
- const {container, rerender} = render(
458
- <CollapsibleGroup>
459
- <Collapsible trigger="Item A" value="a">
460
- <p>Content A</p>
461
- </Collapsible>
462
- </CollapsibleGroup>,
463
- );
464
- expect(container.querySelector('.astryx-collapsible-group')).toBeNull();
465
-
466
- rerender(
467
- <CollapsibleGroup dividers="none">
468
- <Collapsible trigger="Item A" value="a">
469
- <p>Content A</p>
470
- </Collapsible>
471
- </CollapsibleGroup>,
472
- );
473
- expect(container.querySelector('.astryx-collapsible-group')).toBeNull();
474
- });
475
-
476
- it('renders a wrapper with data attributes when dividers are enabled', () => {
477
- const {container} = render(
478
- <CollapsibleGroup dividers="between">
479
- <Collapsible trigger="Item A" value="a">
480
- <p>Content A</p>
481
- </Collapsible>
482
- <Collapsible trigger="Item B" value="b">
483
- <p>Content B</p>
484
- </Collapsible>
485
- </CollapsibleGroup>,
486
- );
487
-
488
- const wrapper = container.querySelector('.astryx-collapsible-group');
489
- expect(wrapper).not.toBeNull();
490
- expect(wrapper).toHaveAttribute('data-dividers', 'between');
491
- // Divided groups default to balanced density
492
- expect(wrapper).toHaveAttribute('data-density', 'balanced');
493
- expect(wrapper).toContainElement(getItem(/Item A/));
494
- expect(wrapper).toContainElement(getItem(/Item B/));
495
- });
496
-
497
- it('reflects dividers and density on each item', () => {
498
- render(
499
- <CollapsibleGroup dividers="all" density="compact">
500
- <Collapsible trigger="Item A" value="a">
501
- <p>Content A</p>
502
- </Collapsible>
503
- </CollapsibleGroup>,
504
- );
505
-
506
- const item = getItem(/Item A/);
507
- expect(item).toHaveAttribute('data-dividers', 'all');
508
- expect(item).toHaveAttribute('data-density', 'compact');
509
- });
510
-
511
- it('does not reflect divider chrome on items without dividers', () => {
512
- render(
513
- <CollapsibleGroup>
514
- <Collapsible trigger="Item A" value="a">
515
- <p>Content A</p>
516
- </Collapsible>
517
- </CollapsibleGroup>,
518
- );
519
-
520
- const item = getItem(/Item A/);
521
- expect(item).not.toHaveAttribute('data-dividers');
522
- expect(item).not.toHaveAttribute('data-density');
523
- });
524
-
525
- it('applies density without dividers (and without a wrapper)', () => {
526
- const {container} = render(
527
- <CollapsibleGroup density="spacious">
528
- <Collapsible trigger="Item A" value="a">
529
- <p>Content A</p>
530
- </Collapsible>
531
- </CollapsibleGroup>,
532
- );
533
-
534
- expect(container.querySelector('.astryx-collapsible-group')).toBeNull();
535
- expect(getItem(/Item A/)).toHaveAttribute('data-density', 'spacious');
536
- });
537
-
538
- it('does not leak divider chrome into nested collapsibles', () => {
539
- render(
540
- <CollapsibleGroup dividers="between" defaultValue="outer">
541
- <Collapsible trigger="Outer" value="outer">
542
- <Collapsible trigger="Nested">
543
- <p>Nested content</p>
544
- </Collapsible>
545
- </Collapsible>
546
- </CollapsibleGroup>,
547
- );
548
-
549
- expect(getItem(/Outer/)).toHaveAttribute('data-dividers', 'between');
550
- expect(getItem(/Nested/)).not.toHaveAttribute('data-dividers');
551
- expect(getItem(/Nested/)).not.toHaveAttribute('data-density');
552
- });
553
-
554
- it('keeps group coordination working with dividers enabled', async () => {
555
- const user = userEvent.setup();
556
- render(
557
- <CollapsibleGroup type="single" dividers="between" defaultValue="a">
558
- <Collapsible trigger="Item A" value="a">
559
- <p>Content A</p>
560
- </Collapsible>
561
- <Collapsible trigger="Item B" value="b">
562
- <p>Content B</p>
563
- </Collapsible>
564
- </CollapsibleGroup>,
565
- );
566
-
567
- expect(screen.getByText('Content A')).toBeVisible();
568
- await user.click(screen.getByRole('button', {name: /Item B/}));
569
- expect(screen.getByText('Content A')).not.toBeVisible();
570
- expect(screen.getByText('Content B')).toBeVisible();
571
- });
572
-
573
- it('applies xstyle/className/style to the wrapper in divider mode', () => {
574
- const {container} = render(
575
- <CollapsibleGroup
576
- dividers="between"
577
- className="custom-class"
578
- data-testid="group">
579
- <Collapsible trigger="Item A" value="a">
580
- <p>Content A</p>
581
- </Collapsible>
582
- </CollapsibleGroup>,
583
- );
584
-
585
- const wrapper = container.querySelector('.astryx-collapsible-group');
586
- expect(wrapper).toHaveClass('custom-class');
587
- expect(wrapper).toHaveAttribute('data-testid', 'group');
588
- });
589
-
590
- it('forwards ref to the wrapper in divider mode', () => {
591
- const ref = {current: null as HTMLElement | null};
592
- const {container} = render(
593
- <CollapsibleGroup dividers="between" ref={ref}>
594
- <Collapsible trigger="Item A" value="a">
595
- <p>Content A</p>
596
- </Collapsible>
597
- </CollapsibleGroup>,
598
- );
599
-
600
- expect(ref.current).toBe(
601
- container.querySelector('.astryx-collapsible-group'),
602
- );
603
- });
604
-
605
- it('explicit density overrides the divider default', () => {
606
- const {container} = render(
607
- <CollapsibleGroup dividers="between" density="spacious">
608
- <Collapsible trigger="Item A" value="a">
609
- <p>Content A</p>
610
- </Collapsible>
611
- </CollapsibleGroup>,
612
- );
613
-
614
- const wrapper = container.querySelector('.astryx-collapsible-group');
615
- expect(wrapper).toHaveAttribute('data-density', 'spacious');
616
- expect(getItem(/Item A/)).toHaveAttribute('data-density', 'spacious');
617
- });
618
-
619
- it('tolerates interleaved non-Collapsible children', async () => {
620
- const user = userEvent.setup();
621
- render(
622
- <CollapsibleGroup type="single" dividers="between" defaultValue="a">
623
- <Collapsible trigger="Item A" value="a">
624
- <p>Content A</p>
625
- </Collapsible>
626
- <hr data-testid="separator" />
627
- <Collapsible trigger="Item B" value="b">
628
- <p>Content B</p>
629
- </Collapsible>
630
- </CollapsibleGroup>,
631
- );
632
-
633
- expect(screen.getByTestId('separator')).toBeInTheDocument();
634
- expect(getItem(/Item A/)).toHaveAttribute('data-dividers', 'between');
635
- expect(getItem(/Item B/)).toHaveAttribute('data-dividers', 'between');
636
- await user.click(screen.getByRole('button', {name: /Item B/}));
637
- expect(screen.getByText('Content A')).not.toBeVisible();
638
- expect(screen.getByText('Content B')).toBeVisible();
639
- });
640
-
641
- it('lets a nested group define its own chrome instead of inheriting', () => {
642
- render(
643
- <CollapsibleGroup dividers="between" defaultValue="outer">
644
- <Collapsible trigger="Outer" value="outer">
645
- <CollapsibleGroup type="multiple" dividers="all">
646
- <Collapsible trigger="Inner divided" value="in-a">
647
- <p>Inner content</p>
648
- </Collapsible>
649
- </CollapsibleGroup>
650
- <CollapsibleGroup type="multiple">
651
- <Collapsible trigger="Inner plain" value="in-b">
652
- <p>Inner content</p>
653
- </Collapsible>
654
- </CollapsibleGroup>
655
- </Collapsible>
656
- </CollapsibleGroup>,
657
- );
658
-
659
- expect(getItem(/Outer/)).toHaveAttribute('data-dividers', 'between');
660
- expect(getItem(/Inner divided/)).toHaveAttribute('data-dividers', 'all');
661
- expect(getItem(/Inner plain/)).not.toHaveAttribute('data-dividers');
662
- });
663
-
664
- it('keeps controlled coordination and onChange shape with dividers', async () => {
665
- const user = userEvent.setup();
666
- const onChange = vi.fn();
667
- const {rerender} = render(
668
- <CollapsibleGroup
669
- type="single"
670
- dividers="all"
671
- value="a"
672
- onChange={onChange}>
673
- <Collapsible trigger="Item A" value="a">
674
- <p>Content A</p>
675
- </Collapsible>
676
- <Collapsible trigger="Item B" value="b">
677
- <p>Content B</p>
678
- </Collapsible>
679
- </CollapsibleGroup>,
680
- );
681
-
682
- await user.click(screen.getByRole('button', {name: /Item B/}));
683
- expect(onChange).toHaveBeenCalledWith('b');
684
- // Controlled: nothing opens until the parent passes the new value
685
- expect(screen.getByText('Content B')).not.toBeVisible();
686
-
687
- rerender(
688
- <CollapsibleGroup
689
- type="single"
690
- dividers="all"
691
- value="b"
692
- onChange={onChange}>
693
- <Collapsible trigger="Item A" value="a">
694
- <p>Content A</p>
695
- </Collapsible>
696
- <Collapsible trigger="Item B" value="b">
697
- <p>Content B</p>
698
- </Collapsible>
699
- </CollapsibleGroup>,
700
- );
701
- expect(screen.getByText('Content A')).not.toBeVisible();
702
- expect(screen.getByText('Content B')).toBeVisible();
703
- });
704
-
705
- it('renders standalone Collapsible without any group chrome', () => {
706
- render(
707
- <Collapsible trigger="Alone">
708
- <p>Standalone content</p>
709
- </Collapsible>,
710
- );
711
-
712
- const item = getItem(/Alone/);
713
- expect(item).not.toHaveAttribute('data-dividers');
714
- expect(item).not.toHaveAttribute('data-density');
715
- expect(item.querySelector('.astryx-collapsible-group')).toBeNull();
716
- });
717
- });
718
400
  });
@@ -4,18 +4,13 @@
4
4
 
5
5
  /**
6
6
  * @file CollapsibleGroup.tsx
7
- * @input Uses React useState, useCallback, CollapsibleGroupContext, StyleX, theme tokens
7
+ * @input Uses React useState, useCallback, CollapsibleGroupContext
8
8
  * @output Exports CollapsibleGroup component and CollapsibleGroupProps
9
- * @position Core collapsible group coordination provider — renders no wrapper
10
- * DOM unless `dividers` is enabled
9
+ * @position Core collapsible group coordination provider — renders no wrapper DOM
11
10
  *
12
11
  * CollapsibleGroup groups collapsible components (Card, etc.) with
13
- * coordinated open/close behavior. By default it renders only `{children}` —
14
- * no wrapper DOM element. When `dividers` is 'between' or 'all' it renders a
15
- * wrapper div that anchors the divider chrome (outer borders, reliable
16
- * :first-child suppression) and provides dividers/density to items via
17
- * CollapsibleGroupPresentationContext — each Collapsible draws its own
18
- * borders since StyleX has no child selectors.
12
+ * coordinated open/close behavior. It renders only `{children}` — no wrapper
13
+ * DOM element.
19
14
  *
20
15
  * In "single" mode (default), only one item can be open at a time.
21
16
  * In "multiple" mode, any number of items can be open simultaneously.
@@ -29,35 +24,10 @@
29
24
  */
30
25
 
31
26
  import React, {useCallback, useMemo, useState, type ReactNode} from 'react';
32
- import * as stylex from '@stylexjs/stylex';
33
- import {borderVars, colorVars} from '../theme/tokens.stylex';
34
- import {
35
- CollapsibleGroupContext,
36
- CollapsibleGroupPresentationContext,
37
- } from './CollapsibleGroupContext';
38
- import type {
39
- CollapsibleGroupContextValue,
40
- CollapsibleGroupDensity,
41
- CollapsibleGroupDividers,
42
- CollapsibleGroupPresentationValue,
43
- } from './CollapsibleGroupContext';
44
- import {mergeProps} from '../utils';
45
- import {themeProps} from '../utils/themeProps';
27
+ import {CollapsibleGroupContext} from './CollapsibleGroupContext';
28
+ import type {CollapsibleGroupContextValue} from './CollapsibleGroupContext';
46
29
  import type {BaseProps} from '../BaseProps';
47
30
 
48
- const styles = stylex.create({
49
- // 'all' draws the group's outer top/bottom edges; between-item lines are
50
- // drawn by each Collapsible (borderBlockStart, suppressed on :first-child)
51
- wrapperAll: {
52
- borderBlockStartWidth: borderVars['--border-width'],
53
- borderBlockStartStyle: 'solid',
54
- borderBlockStartColor: colorVars['--color-border'],
55
- borderBlockEndWidth: borderVars['--border-width'],
56
- borderBlockEndStyle: 'solid',
57
- borderBlockEndColor: colorVars['--color-border'],
58
- },
59
- });
60
-
61
31
  export interface CollapsibleGroupProps extends Omit<
62
32
  BaseProps<HTMLElement>,
63
33
  'onChange'
@@ -86,24 +56,6 @@ export interface CollapsibleGroupProps extends Omit<
86
56
  */
87
57
  onChange?: (value: string | string[]) => void;
88
58
 
89
- /**
90
- * Divider style rendered around the group's items — the accordion row
91
- * chrome. 'between' draws hairlines between adjacent items; 'all' adds the
92
- * group's top and bottom edges. When enabled, the group renders a wrapper
93
- * div (it otherwise renders no DOM) and items get 'balanced' density unless
94
- * `density` says otherwise. Pair with bare Collapsible children; Card-wrapped
95
- * items provide their own separation.
96
- * @default "none"
97
- */
98
- dividers?: CollapsibleGroupDividers;
99
-
100
- /**
101
- * Row density controlling trigger and content block padding on the group's
102
- * items. Defaults to 'balanced' when dividers are shown; otherwise items
103
- * keep their default unpadded look.
104
- */
105
- density?: CollapsibleGroupDensity;
106
-
107
59
  /**
108
60
  * Children — any components that support isCollapsible + value.
109
61
  *
@@ -140,26 +92,16 @@ function normalizeToArray(value: string | string[] | undefined): string[] {
140
92
 
141
93
  /**
142
94
  * Groups collapsible components with coordinated open/close behavior.
143
- * Renders no wrapper DOM unless `dividers` is enabled.
95
+ * Renders no wrapper DOM.
144
96
  *
145
97
  * In "single" mode (default), opening one item closes the others.
146
98
  * In "multiple" mode, items toggle independently.
147
99
  *
148
100
  * @compositionHint Wrap Collapsible instances to coordinate their open/close state.
149
- * Each Collapsible needs a `value` prop to participate. For FAQ-style lists,
150
- * use `dividers` with bare Collapsible children instead of wrapping each item
151
- * in Card.
101
+ * Each Collapsible needs a `value` prop to participate.
152
102
  *
153
103
  * @example
154
104
  * ```
155
- * <CollapsibleGroup type="single" dividers="between" defaultValue="faq1">
156
- * <Collapsible trigger="What is Astryx?" value="faq1">
157
- * Astryx is a design system for building internal tools.
158
- * </Collapsible>
159
- * <Collapsible trigger="How do I start?" value="faq2">
160
- * Install the package and import components.
161
- * </Collapsible>
162
- * </CollapsibleGroup>
163
105
  * <CollapsibleGroup type="single" defaultValue="faq1">
164
106
  * <VStack gap={2}>
165
107
  * <Card>
@@ -181,14 +123,7 @@ export function CollapsibleGroup({
181
123
  defaultValue,
182
124
  value: controlledValue,
183
125
  onChange,
184
- dividers = 'none',
185
- density,
186
126
  children,
187
- ref,
188
- xstyle,
189
- className,
190
- style,
191
- ...props
192
127
  }: CollapsibleGroupProps) {
193
128
  const isControlled = controlledValue !== undefined;
194
129
  const [internalValue, setInternalValue] = useState<string[]>(() =>
@@ -239,42 +174,9 @@ export function CollapsibleGroup({
239
174
  [isOpen, toggle],
240
175
  );
241
176
 
242
- const hasDividers = dividers !== 'none';
243
- const resolvedDensity = density ?? (hasDividers ? 'balanced' : null);
244
-
245
- const presentationValue = useMemo<CollapsibleGroupPresentationValue>(
246
- () => ({dividers, density: resolvedDensity}),
247
- [dividers, resolvedDensity],
248
- );
249
-
250
- // The wrapper anchors divider chrome: 'all' outer borders live here, and it
251
- // makes the items' :first-child suppression independent of surrounding
252
- // siblings. Without dividers the group stays DOM-less (documented contract),
253
- // so ref/xstyle/className/style only take effect in wrapper mode.
254
- const content = hasDividers ? (
255
- <div
256
- ref={ref as React.Ref<HTMLDivElement>}
257
- {...mergeProps(
258
- themeProps('collapsible-group', {
259
- dividers,
260
- density: resolvedDensity ?? undefined,
261
- }),
262
- stylex.props(dividers === 'all' && styles.wrapperAll, xstyle),
263
- className,
264
- style,
265
- )}
266
- {...props}>
267
- {children}
268
- </div>
269
- ) : (
270
- children
271
- );
272
-
273
177
  return (
274
178
  <CollapsibleGroupContext value={contextValue}>
275
- <CollapsibleGroupPresentationContext value={presentationValue}>
276
- {content}
277
- </CollapsibleGroupPresentationContext>
179
+ {children}
278
180
  </CollapsibleGroupContext>
279
181
  );
280
182
  }
@@ -5,10 +5,8 @@
5
5
  /**
6
6
  * @file CollapsibleGroupContext.tsx
7
7
  * @input Uses React createContext
8
- * @output Exports CollapsibleGroupContext, CollapsibleGroupContextValue,
9
- * CollapsibleGroupPresentationContext, CollapsibleGroupPresentationValue,
10
- * CollapsibleGroupDividers, and CollapsibleGroupDensity types
11
- * @position Context definitions for collapsible group coordination and presentation
8
+ * @output Exports CollapsibleGroupContext and CollapsibleGroupContextValue type
9
+ * @position Context definition for collapsible group coordination
12
10
  *
13
11
  * SYNC: When modified, update these files to stay in sync:
14
12
  * - /packages/core/src/Collapsible/CollapsibleGroup.tsx (provider)
@@ -35,41 +33,3 @@ export interface CollapsibleGroupContextValue {
35
33
  export const CollapsibleGroupContext =
36
34
  createContext<CollapsibleGroupContextValue | null>(null);
37
35
  CollapsibleGroupContext.displayName = 'CollapsibleGroupContext';
38
-
39
- /**
40
- * Divider style rendered around the items of a CollapsibleGroup.
41
- * - 'between': hairlines between adjacent items only.
42
- * - 'all': hairlines between items plus the group's top and bottom edges.
43
- * - 'none': no dividers (default).
44
- */
45
- export type CollapsibleGroupDividers = 'between' | 'all' | 'none';
46
-
47
- /**
48
- * Row density for the items of a CollapsibleGroup, controlling trigger and
49
- * content block padding. Shares the repo-wide density vocabulary
50
- * (Table, List, Item).
51
- */
52
- export type CollapsibleGroupDensity = 'compact' | 'balanced' | 'spacious';
53
-
54
- /**
55
- * Presentation value provided by CollapsibleGroup so each Collapsible can
56
- * draw its own group chrome (StyleX has no child selectors, so the group
57
- * cannot style items from the outside).
58
- */
59
- export interface CollapsibleGroupPresentationValue {
60
- /** Resolved divider style for the group's items. */
61
- dividers: CollapsibleGroupDividers;
62
- /** Resolved row density, or null to keep the default (unpadded) look. */
63
- density: CollapsibleGroupDensity | null;
64
- }
65
-
66
- /**
67
- * Context for collapsible group presentation (dividers, density).
68
- * Kept separate from CollapsibleGroupContext so the public useCollapsible
69
- * state API is unaffected. Collapsible resets this context around its
70
- * children so nested collapsibles never inherit row chrome.
71
- */
72
- export const CollapsibleGroupPresentationContext =
73
- createContext<CollapsibleGroupPresentationValue | null>(null);
74
- CollapsibleGroupPresentationContext.displayName =
75
- 'CollapsibleGroupPresentationContext';
@@ -16,10 +16,6 @@ export type {CollapsibleProps} from './Collapsible';
16
16
 
17
17
  export {CollapsibleGroup} from './CollapsibleGroup';
18
18
  export type {CollapsibleGroupProps} from './CollapsibleGroup';
19
- export type {
20
- CollapsibleGroupDividers,
21
- CollapsibleGroupDensity,
22
- } from './CollapsibleGroupContext';
23
19
 
24
20
  export {useCollapsible} from './useCollapsible';
25
21
  export type {
@@ -65,11 +65,8 @@ export interface UseCollapsibleReturn {
65
65
  *
66
66
  * Supports three modes:
67
67
  * 1. **Group-controlled**: When inside a CollapsibleGroup with a `value`, defers to group.
68
- * 2. **Controlled**: When `isOpen` is provided in config, the parent owns state;
69
- * `toggle` only calls `onOpenChange` and never mutates internal state.
68
+ * 2. **Controlled**: When `isOpen` and `onOpenChange` are provided in config.
70
69
  * 3. **Uncontrolled**: Self-managed internal state with optional `defaultIsOpen`.
71
- * `onOpenChange`, if supplied, is invoked in addition to the internal update —
72
- * it is a notification callback, not a signal that the component is controlled.
73
70
  *
74
71
  * @example
75
72
  * ```
@@ -114,26 +111,15 @@ export function useCollapsible(
114
111
  isOpen = internalIsOpen;
115
112
  }
116
113
 
117
- // Toggle handler dispatches to the appropriate controller.
118
- //
119
- // Controlled vs uncontrolled is decided by whether `isOpen` was provided —
120
- // mirroring how `isOpen` is derived above. `onOpenChange` is a notification
121
- // callback, not a signal of control: an uncontrolled component may still want
122
- // to observe changes. So in uncontrolled mode we drive internal state AND
123
- // fire the callback; only in controlled mode do we defer entirely to the
124
- // parent via the callback.
114
+ // Toggle handler dispatches to the appropriate controller
125
115
  const toggle = () => {
126
116
  if (isControlledByGroup && value != null) {
127
117
  group.toggle(value);
128
- return;
118
+ } else if (config?.onOpenChange) {
119
+ config.onOpenChange(!isOpen);
120
+ } else {
121
+ setInternalIsOpen(prev => !prev);
129
122
  }
130
- const next = !isOpen;
131
- // Uncontrolled: internal state is the source of truth, so update it.
132
- if (config?.isOpen === undefined) {
133
- setInternalIsOpen(next);
134
- }
135
- // Always notify — for both controlled and uncontrolled usage.
136
- config?.onOpenChange?.(next);
137
123
  };
138
124
 
139
125
  return {isEnabled, isOpen, toggle};
@@ -20,10 +20,6 @@ export const docs = {
20
20
  'navigation',
21
21
  ],
22
22
  description: 'Root component. Manages open state, search, keyboard navigation, and composition slots.',
23
- // Intentionally a contained isInline preview, not playground.overlay: the
24
- // component stays visible on load and knobs stay live, whereas a real
25
- // showModal() overlay makes the page inert — see PlaygroundConfig.overlay
26
- // in docs-types.ts (#3657).
27
23
  playground: {
28
24
  defaults: {
29
25
  isOpen: true,
@@ -438,13 +438,11 @@ export function CommandPalette<T extends SearchableItem = SearchableItem>({
438
438
  const contextValue = useMemo(
439
439
  () => ({
440
440
  // Input uses optimisticSearch — reflects keystrokes immediately.
441
- // setSearch calls setOptimisticSearch inside a transition for instant
442
- // feedback then triggers the async search directly (no effect indirection).
441
+ // setSearch calls setOptimisticSearch for instant feedback then
442
+ // triggers the async search directly (no effect indirection).
443
443
  search: optimisticSearch,
444
444
  setSearch: (query: string) => {
445
- startTransition(() => {
446
- setOptimisticSearch(query);
447
- });
445
+ setOptimisticSearch(query);
448
446
  runSearch(query);
449
447
  },
450
448
  value,
@@ -16,11 +16,6 @@ export const docs = {
16
16
  required: true,
17
17
  },
18
18
  ],
19
- playground: {
20
- defaults: {
21
- children: 'No results found. Try a different search.',
22
- },
23
- },
24
19
  };
25
20
 
26
21
  export const docsZh = {
@@ -27,16 +27,6 @@ export const docs = {
27
27
  description: 'StyleX styles for layout customization. Must be a stylex.create() value.',
28
28
  },
29
29
  ],
30
- playground: {
31
- defaults: {
32
- heading: 'Navigation',
33
- children: [
34
- {__element: 'CommandPaletteItem', props: {value: 'home', onSelect: undefined}, children: 'Go Home'},
35
- {__element: 'CommandPaletteItem', props: {value: 'settings', onSelect: undefined}, children: 'Open Settings'},
36
- {__element: 'CommandPaletteItem', props: {value: 'profile', onSelect: undefined}, children: 'View Profile'},
37
- ],
38
- },
39
- },
40
30
  };
41
31
 
42
32
  export const docsZh = {