@astryxdesign/core 0.1.3 → 0.1.4-canary.01e5b29

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 (642) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  3. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  4. package/dist/AlertDialog/AlertDialog.js +20 -18
  5. package/dist/AlertDialog/useImperativeAlertDialog.js +3 -3
  6. package/dist/AppShell/AppShell.d.ts +1 -1
  7. package/dist/AppShell/AppShell.d.ts.map +1 -1
  8. package/dist/AppShell/AppShell.js +55 -53
  9. package/dist/AspectRatio/AspectRatio.js +5 -5
  10. package/dist/Avatar/Avatar.d.ts.map +1 -1
  11. package/dist/Avatar/Avatar.js +27 -25
  12. package/dist/Avatar/AvatarStatusDot.js +5 -5
  13. package/dist/AvatarGroup/AvatarGroup.js +5 -5
  14. package/dist/AvatarGroup/AvatarGroupOverflow.js +5 -5
  15. package/dist/Badge/Badge.js +3 -3
  16. package/dist/Banner/Banner.d.ts.map +1 -1
  17. package/dist/Banner/Banner.js +32 -25
  18. package/dist/Blockquote/Blockquote.js +7 -7
  19. package/dist/Breadcrumbs/BreadcrumbItem.js +17 -17
  20. package/dist/Breadcrumbs/Breadcrumbs.js +7 -7
  21. package/dist/Button/Button.d.ts.map +1 -1
  22. package/dist/Button/Button.js +47 -26
  23. package/dist/ButtonGroup/ButtonGroup.js +7 -7
  24. package/dist/Calendar/Calendar.d.ts.map +1 -1
  25. package/dist/Calendar/Calendar.js +108 -64
  26. package/dist/Calendar/dayCellUtils.d.ts +67 -5
  27. package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
  28. package/dist/Calendar/dayCellUtils.js +139 -18
  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 +4 -2
  33. package/dist/Card/Card.d.ts.map +1 -1
  34. package/dist/Card/Card.js +18 -10
  35. package/dist/Carousel/Carousel.d.ts.map +1 -1
  36. package/dist/Carousel/Carousel.js +20 -19
  37. package/dist/Center/Center.js +3 -3
  38. package/dist/Chat/ChatComposer.js +23 -23
  39. package/dist/Chat/ChatComposerDrawer.js +14 -14
  40. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  41. package/dist/Chat/ChatComposerInput.js +27 -15
  42. package/dist/Chat/ChatDictationButton.d.ts +1 -1
  43. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  44. package/dist/Chat/ChatDictationButton.js +13 -11
  45. package/dist/Chat/ChatLayout.js +17 -17
  46. package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
  47. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  48. package/dist/Chat/ChatLayoutScrollButton.js +12 -10
  49. package/dist/Chat/ChatMessage.js +12 -12
  50. package/dist/Chat/ChatMessageBubble.js +7 -7
  51. package/dist/Chat/ChatMessageList.js +14 -14
  52. package/dist/Chat/ChatMessageMetadata.d.ts +1 -1
  53. package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
  54. package/dist/Chat/ChatMessageMetadata.js +14 -12
  55. package/dist/Chat/ChatPastedTextToken.js +13 -13
  56. package/dist/Chat/ChatSendButton.js +3 -3
  57. package/dist/Chat/ChatSystemMessage.d.ts +1 -1
  58. package/dist/Chat/ChatSystemMessage.d.ts.map +1 -1
  59. package/dist/Chat/ChatSystemMessage.js +17 -17
  60. package/dist/Chat/ChatTokenizedText.d.ts +1 -1
  61. package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
  62. package/dist/Chat/ChatTokenizedText.js +24 -15
  63. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  64. package/dist/Chat/ChatToolCalls.js +81 -74
  65. package/dist/Chat/index.d.ts +1 -1
  66. package/dist/Chat/index.d.ts.map +1 -1
  67. package/dist/Chat/useTriggerMenu.js +15 -15
  68. package/dist/CheckboxInput/CheckboxInput.d.ts +6 -1
  69. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  70. package/dist/CheckboxInput/CheckboxInput.js +32 -24
  71. package/dist/CheckboxList/CheckboxList.js +9 -9
  72. package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
  73. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  74. package/dist/CheckboxList/CheckboxListItem.js +8 -6
  75. package/dist/Citation/Citation.js +10 -10
  76. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  77. package/dist/ClickableCard/ClickableCard.js +32 -9
  78. package/dist/Code/Code.d.ts +15 -1
  79. package/dist/Code/Code.d.ts.map +1 -1
  80. package/dist/Code/Code.js +35 -5
  81. package/dist/Code/index.d.ts +1 -1
  82. package/dist/Code/index.d.ts.map +1 -1
  83. package/dist/CodeBlock/CodeBlock.d.ts +10 -1
  84. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  85. package/dist/CodeBlock/CodeBlock.js +88 -52
  86. package/dist/CodeBlock/index.d.ts +1 -1
  87. package/dist/CodeBlock/index.d.ts.map +1 -1
  88. package/dist/Collapsible/Collapsible.d.ts +9 -3
  89. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  90. package/dist/Collapsible/Collapsible.js +110 -22
  91. package/dist/Collapsible/CollapsibleGroup.d.ts +39 -7
  92. package/dist/Collapsible/CollapsibleGroup.d.ts.map +1 -1
  93. package/dist/Collapsible/CollapsibleGroup.js +73 -12
  94. package/dist/Collapsible/CollapsibleGroupContext.d.ts +31 -0
  95. package/dist/Collapsible/CollapsibleGroupContext.d.ts.map +1 -1
  96. package/dist/Collapsible/CollapsibleGroupContext.js +33 -3
  97. package/dist/Collapsible/index.d.ts +1 -0
  98. package/dist/Collapsible/index.d.ts.map +1 -1
  99. package/dist/Collapsible/useCollapsible.d.ts +4 -1
  100. package/dist/Collapsible/useCollapsible.d.ts.map +1 -1
  101. package/dist/Collapsible/useCollapsible.js +20 -6
  102. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  103. package/dist/CommandPalette/CommandPalette.js +36 -34
  104. package/dist/CommandPalette/CommandPaletteEmpty.d.ts +1 -1
  105. package/dist/CommandPalette/CommandPaletteEmpty.d.ts.map +1 -1
  106. package/dist/CommandPalette/CommandPaletteEmpty.js +27 -7
  107. package/dist/CommandPalette/CommandPaletteFooter.js +16 -16
  108. package/dist/CommandPalette/CommandPaletteGroup.js +5 -5
  109. package/dist/CommandPalette/CommandPaletteInput.js +13 -13
  110. package/dist/CommandPalette/CommandPaletteItem.js +3 -3
  111. package/dist/CommandPalette/CommandPaletteList.js +3 -3
  112. package/dist/ContextMenu/ContextMenu.d.ts +9 -1
  113. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  114. package/dist/ContextMenu/ContextMenu.js +16 -11
  115. package/dist/DateInput/DateInput.js +18 -18
  116. package/dist/DateRangeInput/DateRangeInput.js +23 -23
  117. package/dist/DateTimeInput/DateTimeInput.d.ts +5 -7
  118. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  119. package/dist/DateTimeInput/DateTimeInput.js +30 -26
  120. package/dist/DateTimeInput/index.d.ts +1 -1
  121. package/dist/DateTimeInput/index.d.ts.map +1 -1
  122. package/dist/Dialog/Dialog.js +9 -9
  123. package/dist/Dialog/DialogHeader.js +16 -16
  124. package/dist/Dialog/useImperativeDialog.js +3 -3
  125. package/dist/Divider/Divider.d.ts +0 -22
  126. package/dist/Divider/Divider.d.ts.map +1 -1
  127. package/dist/Divider/Divider.js +7 -7
  128. package/dist/DropdownMenu/DropdownMenu.js +10 -10
  129. package/dist/DropdownMenu/DropdownMenuItem.d.ts +2 -17
  130. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  131. package/dist/DropdownMenu/DropdownMenuItem.js +3 -3
  132. package/dist/DropdownMenu/renderDropdownItems.js +10 -10
  133. package/dist/EmptyState/EmptyState.js +9 -9
  134. package/dist/Field/Field.js +17 -17
  135. package/dist/Field/FieldLabel.js +15 -15
  136. package/dist/Field/InputClearButton.js +5 -5
  137. package/dist/FieldStatus/FieldStatus.js +3 -3
  138. package/dist/FileInput/FileInput.js +29 -29
  139. package/dist/FormLayout/FormLayout.js +5 -5
  140. package/dist/Grid/Grid.d.ts +4 -3
  141. package/dist/Grid/Grid.d.ts.map +1 -1
  142. package/dist/Grid/Grid.js +29 -12
  143. package/dist/Grid/GridSpan.js +3 -3
  144. package/dist/HStack/HStack.js +3 -3
  145. package/dist/Heading/Heading.js +10 -10
  146. package/dist/HoverCard/HoverCard.js +9 -9
  147. package/dist/HoverCard/useHoverCard.js +3 -3
  148. package/dist/Icon/Icon.d.ts.map +1 -1
  149. package/dist/Icon/Icon.js +16 -12
  150. package/dist/Icon/defaultIcons.js +116 -116
  151. package/dist/IconButton/IconButton.js +3 -3
  152. package/dist/InputGroup/InputGroup.js +11 -11
  153. package/dist/InputGroup/InputGroupText.js +3 -3
  154. package/dist/Item/Item.js +18 -18
  155. package/dist/Kbd/Kbd.js +5 -5
  156. package/dist/Layer/LayerProvider.js +7 -7
  157. package/dist/Layer/useLayer.js +5 -5
  158. package/dist/Layout/Layout.js +21 -21
  159. package/dist/Layout/LayoutContent.js +3 -3
  160. package/dist/Layout/LayoutFooter.js +5 -5
  161. package/dist/Layout/LayoutHeader.js +5 -5
  162. package/dist/Layout/LayoutPanel.js +3 -3
  163. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  164. package/dist/Lightbox/Lightbox.js +55 -31
  165. package/dist/Lightbox/useLightbox.js +3 -3
  166. package/dist/Link/Link.js +15 -15
  167. package/dist/Link/LinkProvider.js +3 -3
  168. package/dist/Link/useLinkify.js +3 -3
  169. package/dist/List/List.js +11 -11
  170. package/dist/List/ListItem.js +11 -11
  171. package/dist/Markdown/Markdown.d.ts.map +1 -1
  172. package/dist/Markdown/Markdown.js +102 -102
  173. package/dist/Markdown/parser.d.ts +7 -0
  174. package/dist/Markdown/parser.d.ts.map +1 -1
  175. package/dist/Markdown/parser.js +300 -6
  176. package/dist/MetadataList/MetadataList.js +10 -10
  177. package/dist/MetadataList/MetadataListItem.js +15 -15
  178. package/dist/MobileNav/MobileNav.js +15 -15
  179. package/dist/MobileNav/MobileNavToggle.js +5 -5
  180. package/dist/MoreMenu/MoreMenu.js +3 -3
  181. package/dist/MultiSelector/MultiSelector.d.ts +7 -1
  182. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  183. package/dist/MultiSelector/MultiSelector.js +64 -55
  184. package/dist/NavIcon/NavIcon.js +3 -3
  185. package/dist/NavMenu/NavHeadingMenu.js +5 -5
  186. package/dist/NavMenu/NavHeadingMenuItem.js +8 -8
  187. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  188. package/dist/NumberInput/NumberInput.js +48 -32
  189. package/dist/Outline/Outline.js +15 -15
  190. package/dist/OverflowList/OverflowList.js +8 -8
  191. package/dist/Overlay/Overlay.js +3 -3
  192. package/dist/Overlay/OverlayScrim.js +5 -5
  193. package/dist/Overlay/useOverlay.js +3 -3
  194. package/dist/Pagination/Pagination.d.ts +1 -1
  195. package/dist/Pagination/Pagination.d.ts.map +1 -1
  196. package/dist/Pagination/Pagination.js +125 -72
  197. package/dist/Popover/Popover.js +16 -16
  198. package/dist/Popover/usePopover.js +7 -7
  199. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  200. package/dist/PowerSearch/PowerSearch.js +110 -92
  201. package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
  202. package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
  203. package/dist/PowerSearch/PowerSearchToken.js +5 -5
  204. package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
  205. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  206. package/dist/ProgressBar/ProgressBar.js +25 -18
  207. package/dist/RadioList/RadioList.d.ts +7 -1
  208. package/dist/RadioList/RadioList.d.ts.map +1 -1
  209. package/dist/RadioList/RadioList.js +10 -8
  210. package/dist/RadioList/RadioListItem.d.ts +1 -1
  211. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  212. package/dist/RadioList/RadioListItem.js +30 -22
  213. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  214. package/dist/Resizable/ResizeHandle.js +28 -10
  215. package/dist/Section/Section.js +5 -5
  216. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  217. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  218. package/dist/SegmentedControl/SegmentedControl.js +32 -10
  219. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  220. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  221. package/dist/SegmentedControl/SegmentedControlItem.js +18 -12
  222. package/dist/SelectableCard/SelectableCard.js +5 -5
  223. package/dist/Selector/Selector.d.ts +6 -0
  224. package/dist/Selector/Selector.d.ts.map +1 -1
  225. package/dist/Selector/Selector.js +54 -45
  226. package/dist/Selector/SelectorOption.js +3 -3
  227. package/dist/SideNav/SideNav.d.ts.map +1 -1
  228. package/dist/SideNav/SideNav.js +38 -34
  229. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  230. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  231. package/dist/SideNav/SideNavCollapseButton.js +8 -6
  232. package/dist/SideNav/SideNavHeading.js +87 -87
  233. package/dist/SideNav/SideNavItem.js +42 -42
  234. package/dist/SideNav/SideNavSection.d.ts +1 -1
  235. package/dist/SideNav/SideNavSection.d.ts.map +1 -1
  236. package/dist/SideNav/SideNavSection.js +18 -16
  237. package/dist/Skeleton/Skeleton.js +3 -3
  238. package/dist/Slider/Slider.d.ts +6 -0
  239. package/dist/Slider/Slider.d.ts.map +1 -1
  240. package/dist/Slider/Slider.js +31 -22
  241. package/dist/Spinner/Spinner.d.ts.map +1 -1
  242. package/dist/Spinner/Spinner.js +10 -10
  243. package/dist/StatusDot/StatusDot.js +5 -5
  244. package/dist/Switch/Switch.d.ts +13 -4
  245. package/dist/Switch/Switch.d.ts.map +1 -1
  246. package/dist/Switch/Switch.js +41 -30
  247. package/dist/TabList/Tab.js +18 -18
  248. package/dist/TabList/TabList.js +5 -5
  249. package/dist/TabList/TabMenu.d.ts.map +1 -1
  250. package/dist/TabList/TabMenu.js +57 -30
  251. package/dist/TabList/tab.markers.stylex.d.ts +1 -1
  252. package/dist/Table/BaseTable.d.ts.map +1 -1
  253. package/dist/Table/BaseTable.js +51 -39
  254. package/dist/Table/Table.js +7 -7
  255. package/dist/Table/TableBody.d.ts +1 -1
  256. package/dist/Table/TableBody.d.ts.map +1 -1
  257. package/dist/Table/TableBody.js +9 -5
  258. package/dist/Table/TableCell.d.ts.map +1 -1
  259. package/dist/Table/TableCell.js +76 -7
  260. package/dist/Table/TableFooter.d.ts +1 -1
  261. package/dist/Table/TableFooter.d.ts.map +1 -1
  262. package/dist/Table/TableFooter.js +9 -5
  263. package/dist/Table/TableHeader.d.ts +1 -1
  264. package/dist/Table/TableHeader.d.ts.map +1 -1
  265. package/dist/Table/TableHeader.js +9 -5
  266. package/dist/Table/TableHeaderCell.js +3 -3
  267. package/dist/Table/TableRow.js +5 -5
  268. package/dist/Table/index.d.ts +2 -0
  269. package/dist/Table/index.d.ts.map +1 -1
  270. package/dist/Table/index.js +1 -0
  271. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  272. package/dist/Table/plugins/columnResize/useTableColumnResize.js +14 -11
  273. package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
  274. package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
  275. package/dist/Table/plugins/pagination/paginateData.js +5 -1
  276. package/dist/Table/plugins/pagination/useTablePagination.js +7 -7
  277. package/dist/Table/plugins/rowExpansion/index.d.ts +3 -0
  278. package/dist/Table/plugins/rowExpansion/index.d.ts.map +1 -0
  279. package/dist/Table/plugins/rowExpansion/index.js +3 -0
  280. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +90 -0
  281. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -0
  282. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +398 -0
  283. package/dist/Table/plugins/selection/useTableSelection.js +18 -18
  284. package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
  285. package/dist/Table/plugins/selection/useTableSelectionState.js +11 -1
  286. package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
  287. package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
  288. package/dist/Table/plugins/sortable/useTableSortableState.js +8 -4
  289. package/dist/Table/tableContextMenu.d.ts +5 -1
  290. package/dist/Table/tableContextMenu.d.ts.map +1 -1
  291. package/dist/Table/tableContextMenu.js +19 -12
  292. package/dist/Text/Text.d.ts +1 -1
  293. package/dist/Text/Text.d.ts.map +1 -1
  294. package/dist/Text/Text.js +14 -13
  295. package/dist/Text/text.stylex.d.ts +35 -0
  296. package/dist/Text/text.stylex.d.ts.map +1 -1
  297. package/dist/Text/text.stylex.js +52 -1
  298. package/dist/TextArea/TextArea.js +14 -14
  299. package/dist/TextInput/TextInput.js +15 -15
  300. package/dist/Thumbnail/Thumbnail.d.ts +3 -2
  301. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  302. package/dist/Thumbnail/Thumbnail.js +30 -29
  303. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  304. package/dist/TimeInput/TimeInput.js +26 -21
  305. package/dist/Timestamp/Timestamp.d.ts +1 -1
  306. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  307. package/dist/Timestamp/Timestamp.js +37 -26
  308. package/dist/Toast/Toast.d.ts.map +1 -1
  309. package/dist/Toast/Toast.js +25 -17
  310. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  311. package/dist/Toast/ToastViewport.js +23 -11
  312. package/dist/Toast/useToast.js +4 -4
  313. package/dist/ToggleButton/ToggleButton.js +12 -12
  314. package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
  315. package/dist/Token/Token.js +21 -21
  316. package/dist/Tokenizer/Tokenizer.d.ts +6 -1
  317. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  318. package/dist/Tokenizer/Tokenizer.js +38 -29
  319. package/dist/Toolbar/Toolbar.js +18 -18
  320. package/dist/Tooltip/Tooltip.js +11 -11
  321. package/dist/Tooltip/useTooltip.js +3 -3
  322. package/dist/TopNav/TopNav.js +32 -32
  323. package/dist/TopNav/TopNavHeading.js +67 -67
  324. package/dist/TopNav/TopNavItem.js +5 -5
  325. package/dist/TopNav/TopNavMegaMenu.js +30 -30
  326. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  327. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  328. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +25 -14
  329. package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
  330. package/dist/TopNav/TopNavMenu.js +32 -32
  331. package/dist/TreeList/TreeList.js +8 -8
  332. package/dist/TreeList/TreeListBranches.js +11 -11
  333. package/dist/TreeList/TreeListItem.js +30 -30
  334. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  335. package/dist/Typeahead/BaseTypeahead.js +23 -20
  336. package/dist/Typeahead/Typeahead.js +12 -12
  337. package/dist/Typeahead/TypeaheadItem.js +10 -10
  338. package/dist/VStack/VStack.js +3 -3
  339. package/dist/astryx.css +23 -0
  340. package/dist/astryx.umd.js +60 -58
  341. package/dist/astryx.umd.js.map +4 -4
  342. package/dist/docs-types.d.ts +13 -1
  343. package/dist/docs-types.d.ts.map +1 -1
  344. package/dist/hooks/focusableSelector.d.ts +1 -1
  345. package/dist/hooks/focusableSelector.d.ts.map +1 -1
  346. package/dist/hooks/focusableSelector.js +1 -1
  347. package/dist/hooks/index.d.ts +2 -0
  348. package/dist/hooks/index.d.ts.map +1 -1
  349. package/dist/hooks/index.js +1 -0
  350. package/dist/hooks/useFocusTrap.d.ts +3 -0
  351. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  352. package/dist/hooks/useFocusTrap.js +38 -1
  353. package/dist/hooks/useHotkeys.d.ts +51 -0
  354. package/dist/hooks/useHotkeys.d.ts.map +1 -0
  355. package/dist/hooks/useHotkeys.js +160 -0
  356. package/dist/hooks/useInteractiveRole.d.ts +6 -2
  357. package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
  358. package/dist/hooks/useInteractiveRole.js +6 -2
  359. package/dist/hooks/useKeyboardHint.js +9 -9
  360. package/dist/hooks/useStreamingText.d.ts +3 -1
  361. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  362. package/dist/hooks/useStreamingText.js +14 -5
  363. package/dist/theme/MediaTheme.js +3 -3
  364. package/dist/theme/Theme.js +7 -7
  365. package/dist/theme/defineTheme.d.ts +1 -1
  366. package/dist/theme/defineTheme.d.ts.map +1 -1
  367. package/dist/theme/expandColorScale.d.ts.map +1 -1
  368. package/dist/theme/expandColorScale.js +10 -3
  369. package/dist/theme/hct.d.ts +0 -15
  370. package/dist/theme/hct.d.ts.map +1 -1
  371. package/dist/theme/hct.js +9 -9
  372. package/dist/theme/syntax/SyntaxTheme.js +5 -5
  373. package/dist/theme/tokens.d.ts +10 -2
  374. package/dist/theme/tokens.d.ts.map +1 -1
  375. package/dist/theme/tokens.js +220 -4
  376. package/dist/utils/color.d.ts +42 -0
  377. package/dist/utils/color.d.ts.map +1 -0
  378. package/dist/utils/color.js +150 -0
  379. package/dist/utils/composeEventHandlers.d.ts +30 -0
  380. package/dist/utils/composeEventHandlers.d.ts.map +1 -0
  381. package/dist/utils/composeEventHandlers.js +40 -0
  382. package/dist/utils/index.d.ts +3 -0
  383. package/dist/utils/index.d.ts.map +1 -1
  384. package/dist/utils/index.js +3 -1
  385. package/dist/utils/timeParser.d.ts.map +1 -1
  386. package/dist/utils/timeParser.js +8 -5
  387. package/package.json +3 -3
  388. package/src/AlertDialog/AlertDialog.tsx +2 -0
  389. package/src/AppShell/AppShell.tsx +2 -0
  390. package/src/AspectRatio/AspectRatio.doc.mjs +1 -1
  391. package/src/Avatar/Avatar.doc.mjs +13 -2
  392. package/src/Avatar/Avatar.test.tsx +32 -1
  393. package/src/Avatar/Avatar.tsx +12 -20
  394. package/src/Banner/Banner.doc.mjs +8 -0
  395. package/src/Banner/Banner.test.tsx +38 -0
  396. package/src/Banner/Banner.tsx +8 -1
  397. package/src/Button/Button.tsx +39 -6
  398. package/src/ButtonGroup/ButtonGroup.doc.mjs +1 -1
  399. package/src/Calendar/Calendar.doc.mjs +1 -1
  400. package/src/Calendar/Calendar.test.tsx +201 -17
  401. package/src/Calendar/Calendar.tsx +79 -26
  402. package/src/Calendar/dayCellUtils.test.ts +306 -1
  403. package/src/Calendar/dayCellUtils.ts +206 -13
  404. package/src/Calendar/styles.ts +12 -2
  405. package/src/Card/Card.doc.mjs +1 -1
  406. package/src/Card/Card.tsx +16 -6
  407. package/src/Carousel/Carousel.doc.mjs +12 -12
  408. package/src/Carousel/Carousel.test.tsx +13 -0
  409. package/src/Carousel/Carousel.tsx +1 -0
  410. package/src/Chat/Chat.doc.mjs +1 -1
  411. package/src/Chat/ChatComposerInput.test.tsx +24 -0
  412. package/src/Chat/ChatComposerInput.tsx +17 -1
  413. package/src/Chat/ChatDictationButton.test.tsx +43 -0
  414. package/src/Chat/ChatDictationButton.tsx +4 -4
  415. package/src/Chat/ChatLayoutScrollButton.test.tsx +33 -0
  416. package/src/Chat/ChatLayoutScrollButton.tsx +3 -1
  417. package/src/Chat/ChatMessageMetadata.test.tsx +32 -0
  418. package/src/Chat/ChatMessageMetadata.tsx +4 -6
  419. package/src/Chat/ChatSystemMessage.test.tsx +26 -11
  420. package/src/Chat/ChatSystemMessage.tsx +7 -7
  421. package/src/Chat/ChatTokenizedText.test.tsx +29 -16
  422. package/src/Chat/ChatTokenizedText.tsx +15 -8
  423. package/src/Chat/ChatToolCalls.test.tsx +55 -0
  424. package/src/Chat/ChatToolCalls.tsx +10 -12
  425. package/src/Chat/index.ts +1 -4
  426. package/src/Chat/useChatNewMessages.test.tsx +4 -4
  427. package/src/CheckboxInput/CheckboxInput.doc.mjs +12 -4
  428. package/src/CheckboxInput/CheckboxInput.test.tsx +103 -0
  429. package/src/CheckboxInput/CheckboxInput.tsx +13 -0
  430. package/src/CheckboxList/CheckboxList.doc.mjs +1 -1
  431. package/src/CheckboxList/CheckboxList.test.tsx +19 -0
  432. package/src/CheckboxList/CheckboxListItem.tsx +11 -2
  433. package/src/Citation/Citation.doc.mjs +5 -0
  434. package/src/ClickableCard/ClickableCard.tsx +45 -2
  435. package/src/Code/Code.test.tsx +54 -0
  436. package/src/Code/Code.tsx +48 -4
  437. package/src/Code/index.ts +1 -1
  438. package/src/CodeBlock/CodeBlock.doc.mjs +7 -2
  439. package/src/CodeBlock/CodeBlock.test.tsx +122 -3
  440. package/src/CodeBlock/CodeBlock.tsx +62 -4
  441. package/src/CodeBlock/index.ts +1 -1
  442. package/src/Collapsible/Collapsible.doc.mjs +8 -4
  443. package/src/Collapsible/Collapsible.test.tsx +405 -0
  444. package/src/Collapsible/Collapsible.tsx +86 -10
  445. package/src/Collapsible/CollapsibleGroup.doc.mjs +27 -3
  446. package/src/Collapsible/CollapsibleGroup.test.tsx +318 -0
  447. package/src/Collapsible/CollapsibleGroup.tsx +107 -9
  448. package/src/Collapsible/CollapsibleGroupContext.tsx +42 -2
  449. package/src/Collapsible/index.ts +4 -0
  450. package/src/Collapsible/useCollapsible.ts +20 -6
  451. package/src/CommandPalette/CommandPalette.tsx +5 -3
  452. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +5 -0
  453. package/src/CommandPalette/CommandPaletteEmpty.tsx +15 -1
  454. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +10 -0
  455. package/src/CommandPalette/CommandPaletteInput.doc.mjs +6 -0
  456. package/src/CommandPalette/CommandPaletteItem.doc.mjs +6 -0
  457. package/src/CommandPalette/CommandPaletteList.doc.mjs +9 -0
  458. package/src/ContextMenu/ContextMenu.doc.mjs +15 -0
  459. package/src/ContextMenu/ContextMenu.test.tsx +15 -0
  460. package/src/ContextMenu/ContextMenu.tsx +19 -1
  461. package/src/ContextMenu/ContextMenuItem.doc.mjs +6 -0
  462. package/src/DateInput/DateInput.doc.mjs +6 -1
  463. package/src/DateInput/DateInput.test.tsx +11 -20
  464. package/src/DateRangeInput/DateRangeInput.doc.mjs +1 -1
  465. package/src/DateRangeInput/DateRangeInput.test.tsx +31 -44
  466. package/src/DateRangeInput/DateRangeInput.tsx +2 -2
  467. package/src/DateTimeInput/DateTimeInput.doc.mjs +4 -3
  468. package/src/DateTimeInput/DateTimeInput.test.tsx +118 -16
  469. package/src/DateTimeInput/DateTimeInput.tsx +9 -8
  470. package/src/DateTimeInput/index.ts +1 -0
  471. package/src/Dialog/DialogHeader.doc.mjs +45 -0
  472. package/src/Divider/Divider.tsx +1 -23
  473. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
  474. package/src/DropdownMenu/DropdownMenu.test.tsx +5 -3
  475. package/src/DropdownMenu/DropdownMenuItem.tsx +5 -17
  476. package/src/EmptyState/EmptyState.doc.mjs +1 -1
  477. package/src/Field/Field.doc.mjs +1 -1
  478. package/src/Field/FieldLabel.test.tsx +2 -2
  479. package/src/FieldStatus/FieldStatus.test.tsx +282 -0
  480. package/src/FileInput/FileInput.doc.mjs +1 -1
  481. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +0 -3
  482. package/src/Grid/Grid.doc.mjs +3 -3
  483. package/src/Grid/Grid.test.tsx +43 -18
  484. package/src/Grid/Grid.tsx +26 -9
  485. package/src/Icon/Icon.test.tsx +41 -29
  486. package/src/Icon/Icon.tsx +6 -2
  487. package/src/InputGroup/InputGroup.tsx +2 -2
  488. package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +185 -0
  489. package/src/Item/Item.tsx +1 -1
  490. package/src/Layout/Layout.test.tsx +285 -0
  491. package/src/Layout/LayoutContent.doc.mjs +12 -0
  492. package/src/Layout/LayoutPanel.doc.mjs +40 -0
  493. package/src/Layout/LayoutSlots.test.tsx +364 -0
  494. package/src/Layout/__tests__/edgeCompensation.test.tsx +72 -0
  495. package/src/Lightbox/Lightbox.doc.mjs +5 -0
  496. package/src/Lightbox/Lightbox.test.tsx +123 -2
  497. package/src/Lightbox/Lightbox.tsx +29 -1
  498. package/src/Markdown/Markdown.test.tsx +23 -0
  499. package/src/Markdown/Markdown.tsx +9 -7
  500. package/src/Markdown/incremental.test.ts +36 -0
  501. package/src/Markdown/parser.perf.test.ts +34 -12
  502. package/src/Markdown/parser.test.ts +210 -0
  503. package/src/Markdown/parser.ts +301 -6
  504. package/src/MobileNav/MobileNav.doc.mjs +20 -0
  505. package/src/MultiSelector/MultiSelector.doc.mjs +14 -1
  506. package/src/MultiSelector/MultiSelector.test.tsx +33 -0
  507. package/src/MultiSelector/MultiSelector.tsx +20 -0
  508. package/src/NavMenu/NavMenu.doc.mjs +15 -0
  509. package/src/NumberInput/NumberInput.test.tsx +48 -3
  510. package/src/NumberInput/NumberInput.tsx +32 -15
  511. package/src/Outline/parseOutlineFromMarkdown.test.ts +80 -0
  512. package/src/OverflowList/OverflowList.test.tsx +416 -0
  513. package/src/Overlay/Overlay.doc.mjs +6 -0
  514. package/src/Overlay/Overlay.test.tsx +356 -0
  515. package/src/Pagination/Pagination.test.tsx +162 -0
  516. package/src/Pagination/Pagination.tsx +80 -26
  517. package/src/Popover/Popover.test.tsx +65 -0
  518. package/src/PowerSearch/PowerSearch.doc.mjs +4 -4
  519. package/src/PowerSearch/PowerSearch.test.tsx +109 -1
  520. package/src/PowerSearch/PowerSearch.tsx +37 -16
  521. package/src/ProgressBar/ProgressBar.test.tsx +30 -0
  522. package/src/ProgressBar/ProgressBar.tsx +12 -5
  523. package/src/RadioList/RadioList.doc.mjs +7 -1
  524. package/src/RadioList/RadioList.test.tsx +65 -0
  525. package/src/RadioList/RadioList.tsx +10 -1
  526. package/src/RadioList/RadioListItem.tsx +13 -4
  527. package/src/Resizable/ResizeHandle.test.tsx +218 -0
  528. package/src/Resizable/ResizeHandle.tsx +22 -4
  529. package/src/Section/Section.test.tsx +4 -10
  530. package/src/SegmentedControl/SegmentedControl.doc.mjs +2 -2
  531. package/src/SegmentedControl/SegmentedControl.test.tsx +192 -0
  532. package/src/SegmentedControl/SegmentedControl.tsx +27 -5
  533. package/src/SegmentedControl/SegmentedControlItem.tsx +9 -4
  534. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  535. package/src/Selector/Selector.doc.mjs +12 -1
  536. package/src/Selector/Selector.test.tsx +30 -0
  537. package/src/Selector/Selector.tsx +18 -0
  538. package/src/SideNav/SideNav.doc.mjs +7 -1
  539. package/src/SideNav/SideNav.test.tsx +66 -0
  540. package/src/SideNav/SideNav.tsx +6 -2
  541. package/src/SideNav/SideNavCollapseButton.tsx +4 -3
  542. package/src/SideNav/SideNavSection.tsx +6 -4
  543. package/src/SizeContext/SizeContext.test.tsx +226 -0
  544. package/src/Slider/Slider.doc.mjs +14 -2
  545. package/src/Slider/Slider.test.tsx +30 -0
  546. package/src/Slider/Slider.tsx +20 -0
  547. package/src/Spinner/Spinner.tsx +1 -0
  548. package/src/Switch/Switch.doc.mjs +21 -9
  549. package/src/Switch/Switch.test.tsx +137 -0
  550. package/src/Switch/Switch.tsx +32 -7
  551. package/src/TabList/TabList.doc.mjs +3 -3
  552. package/src/TabList/TabList.test.tsx +185 -1
  553. package/src/TabList/TabMenu.tsx +45 -9
  554. package/src/Table/BaseTable.tsx +16 -3
  555. package/src/Table/Table.test.tsx +87 -0
  556. package/src/Table/TableBody.tsx +15 -2
  557. package/src/Table/TableCell.tsx +87 -8
  558. package/src/Table/TableFooter.tsx +15 -2
  559. package/src/Table/TableHeader.tsx +15 -2
  560. package/src/Table/index.ts +5 -0
  561. package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +13 -0
  562. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +3 -1
  563. package/src/Table/plugins/pagination/paginateData.ts +5 -1
  564. package/src/Table/plugins/pagination/useTablePagination.test.tsx +13 -0
  565. package/src/Table/plugins/rowExpansion/index.ts +7 -0
  566. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +155 -0
  567. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +590 -0
  568. package/src/Table/plugins/selection/useTableSelectionState.test.tsx +23 -0
  569. package/src/Table/plugins/selection/useTableSelectionState.tsx +11 -6
  570. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +35 -1
  571. package/src/Table/plugins/sortable/useTableSortableState.tsx +8 -4
  572. package/src/Table/tableContextMenu.test.tsx +27 -3
  573. package/src/Table/tableContextMenu.tsx +20 -2
  574. package/src/Table/useTablePagination.doc.mjs +4 -1
  575. package/src/Table/useTableRowExpansion.doc.mjs +80 -0
  576. package/src/Table/useTableSortable.doc.mjs +4 -1
  577. package/src/Text/Text.doc.mjs +2 -2
  578. package/src/Text/Text.test.tsx +11 -0
  579. package/src/Text/Text.tsx +4 -2
  580. package/src/Text/text.stylex.ts +41 -0
  581. package/src/TextArea/TextArea.doc.mjs +1 -1
  582. package/src/TextArea/TextArea.test.tsx +3 -3
  583. package/src/TextInput/TextInput.doc.mjs +1 -1
  584. package/src/TextInput/TextInput.test.tsx +3 -3
  585. package/src/Thumbnail/Thumbnail.test.tsx +36 -2
  586. package/src/Thumbnail/Thumbnail.tsx +4 -2
  587. package/src/TimeInput/TimeInput.doc.mjs +11 -6
  588. package/src/TimeInput/TimeInput.test.tsx +37 -0
  589. package/src/TimeInput/TimeInput.tsx +11 -1
  590. package/src/Timestamp/Timestamp.doc.mjs +1 -1
  591. package/src/Timestamp/Timestamp.test.tsx +52 -0
  592. package/src/Timestamp/Timestamp.tsx +30 -16
  593. package/src/Toast/Toast.tsx +11 -3
  594. package/src/Toast/ToastViewport.test.tsx +64 -0
  595. package/src/Toast/ToastViewport.tsx +12 -0
  596. package/src/ToggleButton/ToggleButton.doc.mjs +1 -0
  597. package/src/Tokenizer/Tokenizer.doc.mjs +16 -4
  598. package/src/Tokenizer/Tokenizer.test.tsx +33 -0
  599. package/src/Tokenizer/Tokenizer.tsx +19 -0
  600. package/src/Toolbar/Toolbar.test.tsx +1 -1
  601. package/src/TopNav/TopNav.doc.mjs +1 -1
  602. package/src/TopNav/TopNav.test.tsx +18 -0
  603. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +9 -2
  604. package/src/TreeList/TreeList.doc.mjs +2 -2
  605. package/src/Typeahead/BaseTypeahead.doc.mjs +19 -0
  606. package/src/Typeahead/BaseTypeahead.tsx +5 -2
  607. package/src/Typeahead/Typeahead.doc.mjs +7 -2
  608. package/src/Typeahead/Typeahead.test.tsx +45 -1
  609. package/src/__tests__/TestIcon.tsx +26 -0
  610. package/src/__tests__/fastRoleQueries.ts +66 -0
  611. package/src/docPropReferences.test.ts +178 -0
  612. package/src/docs-types.ts +14 -0
  613. package/src/hooks/focusableSelector.ts +1 -1
  614. package/src/hooks/index.ts +3 -0
  615. package/src/hooks/useFocusTrap.doc.mjs +4 -2
  616. package/src/hooks/useFocusTrap.test.tsx +149 -1
  617. package/src/hooks/useFocusTrap.ts +50 -1
  618. package/src/hooks/useHotkeys.doc.mjs +52 -0
  619. package/src/hooks/useHotkeys.test.ts +245 -0
  620. package/src/hooks/useHotkeys.ts +203 -0
  621. package/src/hooks/useInteractiveRole.ts +12 -4
  622. package/src/hooks/useKeyboardHint.doc.mjs +6 -6
  623. package/src/hooks/useStreamingText.test.ts +54 -19
  624. package/src/hooks/useStreamingText.ts +16 -5
  625. package/src/theme/SyntaxTheme.doc.mjs +4 -4
  626. package/src/theme/defineTheme.ts +4 -13
  627. package/src/theme/derivedVarRegistry.test.ts +2 -2
  628. package/src/theme/expandColorScale.test.ts +29 -0
  629. package/src/theme/expandColorScale.ts +11 -6
  630. package/src/theme/hct.ts +9 -17
  631. package/src/theme/tokens.test.ts +182 -9
  632. package/src/theme/tokens.ts +239 -4
  633. package/src/theme/useTheme.test.tsx +20 -0
  634. package/src/utils/color.test.ts +133 -0
  635. package/src/utils/color.ts +148 -0
  636. package/src/utils/composeEventHandlers.test.ts +71 -0
  637. package/src/utils/composeEventHandlers.ts +44 -0
  638. package/src/utils/index.ts +4 -0
  639. package/src/utils/mergeProps.test.ts +166 -0
  640. package/src/utils/sharedResizeObserver.test.ts +2 -2
  641. package/src/utils/timeParser.test.ts +13 -0
  642. package/src/utils/timeParser.ts +8 -5
@@ -1,12 +1,17 @@
1
1
  /**
2
2
  * @file CollapsibleGroup.tsx
3
- * @input Uses React useState, useCallback, CollapsibleGroupContext
3
+ * @input Uses React useState, useCallback, CollapsibleGroupContext, StyleX, theme tokens
4
4
  * @output Exports CollapsibleGroup component and CollapsibleGroupProps
5
- * @position Core collapsible group coordination provider — renders no wrapper DOM
5
+ * @position Core collapsible group coordination provider — renders no wrapper
6
+ * DOM unless `dividers` is enabled
6
7
  *
7
8
  * CollapsibleGroup groups collapsible components (Card, etc.) with
8
- * coordinated open/close behavior. It renders only `{children}` — no wrapper
9
- * DOM element.
9
+ * coordinated open/close behavior. By default it renders only `{children}` —
10
+ * no wrapper DOM element. When `dividers` is 'between' or 'all' it renders a
11
+ * wrapper div that anchors the divider chrome (outer borders, reliable
12
+ * :first-child suppression) and provides dividers/density to items via
13
+ * CollapsibleGroupPresentationContext — each Collapsible draws its own
14
+ * borders since StyleX has no child selectors.
10
15
  *
11
16
  * In "single" mode (default), only one item can be open at a time.
12
17
  * In "multiple" mode, any number of items can be open simultaneously.
@@ -19,6 +24,7 @@
19
24
  * - /packages/cli/templates/blocks/components/Collapsible/ (showcase blocks)
20
25
  */
21
26
  import React, { type ReactNode } from 'react';
27
+ import type { CollapsibleGroupDensity, CollapsibleGroupDividers } from './CollapsibleGroupContext';
22
28
  import type { BaseProps } from '../BaseProps';
23
29
  export interface CollapsibleGroupProps extends Omit<BaseProps<HTMLElement>, 'onChange'> {
24
30
  ref?: React.Ref<HTMLElement>;
@@ -41,6 +47,22 @@ export interface CollapsibleGroupProps extends Omit<BaseProps<HTMLElement>, 'onC
41
47
  * Callback when the open item(s) change.
42
48
  */
43
49
  onChange?: (value: string | string[]) => void;
50
+ /**
51
+ * Divider style rendered around the group's items — the accordion row
52
+ * chrome. 'between' draws hairlines between adjacent items; 'all' adds the
53
+ * group's top and bottom edges. When enabled, the group renders a wrapper
54
+ * div (it otherwise renders no DOM) and items get 'balanced' density unless
55
+ * `density` says otherwise. Pair with bare Collapsible children; Card-wrapped
56
+ * items provide their own separation.
57
+ * @default "none"
58
+ */
59
+ dividers?: CollapsibleGroupDividers;
60
+ /**
61
+ * Row density controlling trigger and content block padding on the group's
62
+ * items. Defaults to 'balanced' when dividers are shown; otherwise items
63
+ * keep their default unpadded look.
64
+ */
65
+ density?: CollapsibleGroupDensity;
44
66
  /**
45
67
  * Children — any components that support isCollapsible + value.
46
68
  *
@@ -69,16 +91,26 @@ export interface CollapsibleGroupProps extends Omit<BaseProps<HTMLElement>, 'onC
69
91
  }
70
92
  /**
71
93
  * Groups collapsible components with coordinated open/close behavior.
72
- * Renders no wrapper DOM.
94
+ * Renders no wrapper DOM unless `dividers` is enabled.
73
95
  *
74
96
  * In "single" mode (default), opening one item closes the others.
75
97
  * In "multiple" mode, items toggle independently.
76
98
  *
77
99
  * @compositionHint Wrap Collapsible instances to coordinate their open/close state.
78
- * Each Collapsible needs a `value` prop to participate.
100
+ * Each Collapsible needs a `value` prop to participate. For FAQ-style lists,
101
+ * use `dividers` with bare Collapsible children instead of wrapping each item
102
+ * in Card.
79
103
  *
80
104
  * @example
81
105
  * ```
106
+ * <CollapsibleGroup type="single" dividers="between" defaultValue="faq1">
107
+ * <Collapsible trigger="What is Astryx?" value="faq1">
108
+ * Astryx is a design system for building internal tools.
109
+ * </Collapsible>
110
+ * <Collapsible trigger="How do I start?" value="faq2">
111
+ * Install the package and import components.
112
+ * </Collapsible>
113
+ * </CollapsibleGroup>
82
114
  * <CollapsibleGroup type="single" defaultValue="faq1">
83
115
  * <VStack gap={2}>
84
116
  * <Card>
@@ -95,7 +127,7 @@ export interface CollapsibleGroupProps extends Omit<BaseProps<HTMLElement>, 'onC
95
127
  * </CollapsibleGroup>
96
128
  * ```
97
129
  */
98
- export declare function CollapsibleGroup({ type, defaultValue, value: controlledValue, onChange, children, }: CollapsibleGroupProps): React.JSX.Element;
130
+ export declare function CollapsibleGroup({ type, defaultValue, value: controlledValue, onChange, dividers, density, children, ref, xstyle, className, style, ...props }: CollapsibleGroupProps): React.JSX.Element;
99
131
  export declare namespace CollapsibleGroup {
100
132
  var displayName: string;
101
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsibleGroup.d.ts","sourceRoot":"","sources":["../../src/Collapsible/CollapsibleGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG5E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CACjD,SAAS,CAAC,WAAW,CAAC,EACtB,UAAU,CACX;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAE7B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEjC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IAE9C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,IAAe,EACf,YAAY,EACZ,KAAK,EAAE,eAAe,EACtB,QAAQ,EACR,QAAQ,GACT,EAAE,qBAAqB,qBAuDvB;yBA7De,gBAAgB"}
1
+ {"version":3,"file":"CollapsibleGroup.d.ts","sourceRoot":"","sources":["../../src/Collapsible/CollapsibleGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAO5E,OAAO,KAAK,EAEV,uBAAuB,EACvB,wBAAwB,EAEzB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAe5C,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CACjD,SAAS,CAAC,WAAW,CAAC,EACtB,UAAU,CACX;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAE7B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEjC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IAE9C;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IAEpC;;;;OAIG;IACH,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAElC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,IAAe,EACf,YAAY,EACZ,KAAK,EAAE,eAAe,EACtB,QAAQ,EACR,QAAiB,EACjB,OAAO,EACP,QAAQ,EACR,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,qBAAqB,qBAwFvB;yBArGe,gBAAgB"}
@@ -4,13 +4,18 @@
4
4
 
5
5
  /**
6
6
  * @file CollapsibleGroup.tsx
7
- * @input Uses React useState, useCallback, CollapsibleGroupContext
7
+ * @input Uses React useState, useCallback, CollapsibleGroupContext, StyleX, theme tokens
8
8
  * @output Exports CollapsibleGroup component and CollapsibleGroupProps
9
- * @position Core collapsible group coordination provider — renders no wrapper DOM
9
+ * @position Core collapsible group coordination provider — renders no wrapper
10
+ * DOM unless `dividers` is enabled
10
11
  *
11
12
  * CollapsibleGroup groups collapsible components (Card, etc.) with
12
- * coordinated open/close behavior. It renders only `{children}` — no wrapper
13
- * DOM element.
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.
14
19
  *
15
20
  * In "single" mode (default), only one item can be open at a time.
16
21
  * In "multiple" mode, any number of items can be open simultaneously.
@@ -23,8 +28,24 @@
23
28
  * - /packages/cli/templates/blocks/components/Collapsible/ (showcase blocks)
24
29
  */
25
30
  import React, { useCallback, useMemo, useState } from 'react';
26
- import { CollapsibleGroupContext } from "./CollapsibleGroupContext.js";
27
- import { jsx as _jsx } from "react/jsx-runtime";
31
+ import * as stylex from '@stylexjs/stylex';
32
+ import "../theme/tokens.stylex.js";
33
+ import { borderVars, colorVars } from "../theme/tokens.stylex.js";
34
+ import { CollapsibleGroupContext, CollapsibleGroupPresentationContext } from "./CollapsibleGroupContext.js";
35
+ import { mergeProps } from "../utils/index.js";
36
+ import { themeProps } from "../utils/themeProps.js";
37
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
38
+ const styles = {
39
+ wrapperAll: {
40
+ kEafiO: "x11xkdxz",
41
+ kPef9Z: "x13fuv20",
42
+ kLZC3w: "x1pc3f07",
43
+ kt9PQ7: "x92x3c3",
44
+ kfdmCh: "x1q0q8m5",
45
+ kL6WhQ: "xw8gpjh",
46
+ $$css: true
47
+ }
48
+ };
28
49
  function normalizeToArray(value) {
29
50
  if (value == null) {
30
51
  return [];
@@ -34,16 +55,26 @@ function normalizeToArray(value) {
34
55
 
35
56
  /**
36
57
  * Groups collapsible components with coordinated open/close behavior.
37
- * Renders no wrapper DOM.
58
+ * Renders no wrapper DOM unless `dividers` is enabled.
38
59
  *
39
60
  * In "single" mode (default), opening one item closes the others.
40
61
  * In "multiple" mode, items toggle independently.
41
62
  *
42
63
  * @compositionHint Wrap Collapsible instances to coordinate their open/close state.
43
- * Each Collapsible needs a `value` prop to participate.
64
+ * Each Collapsible needs a `value` prop to participate. For FAQ-style lists,
65
+ * use `dividers` with bare Collapsible children instead of wrapping each item
66
+ * in Card.
44
67
  *
45
68
  * @example
46
69
  * ```
70
+ * <CollapsibleGroup type="single" dividers="between" defaultValue="faq1">
71
+ * <Collapsible trigger="What is Astryx?" value="faq1">
72
+ * Astryx is a design system for building internal tools.
73
+ * </Collapsible>
74
+ * <Collapsible trigger="How do I start?" value="faq2">
75
+ * Install the package and import components.
76
+ * </Collapsible>
77
+ * </CollapsibleGroup>
47
78
  * <CollapsibleGroup type="single" defaultValue="faq1">
48
79
  * <VStack gap={2}>
49
80
  * <Card>
@@ -65,7 +96,14 @@ export function CollapsibleGroup({
65
96
  defaultValue,
66
97
  value: controlledValue,
67
98
  onChange,
68
- children
99
+ dividers = 'none',
100
+ density,
101
+ children,
102
+ ref,
103
+ xstyle,
104
+ className,
105
+ style,
106
+ ...props
69
107
  }) {
70
108
  const isControlled = controlledValue !== undefined;
71
109
  const [internalValue, setInternalValue] = useState(() => normalizeToArray(defaultValue));
@@ -96,9 +134,32 @@ export function CollapsibleGroup({
96
134
  isOpen,
97
135
  toggle
98
136
  }), [isOpen, toggle]);
99
- return /*#__PURE__*/_jsx(CollapsibleGroupContext, {
100
- value: contextValue,
137
+ const hasDividers = dividers !== 'none';
138
+ const resolvedDensity = density ?? (hasDividers ? 'balanced' : null);
139
+ const presentationValue = useMemo(() => ({
140
+ dividers,
141
+ density: resolvedDensity
142
+ }), [dividers, resolvedDensity]);
143
+
144
+ // The wrapper anchors divider chrome: 'all' outer borders live here, and it
145
+ // makes the items' :first-child suppression independent of surrounding
146
+ // siblings. Without dividers the group stays DOM-less (documented contract),
147
+ // so ref/xstyle/className/style only take effect in wrapper mode.
148
+ const content = hasDividers ? /*#__PURE__*/_jsxDEV("div", {
149
+ ref: ref,
150
+ ...mergeProps(themeProps('collapsible-group', {
151
+ dividers,
152
+ density: resolvedDensity ?? undefined
153
+ }), stylex.props(dividers === 'all' && styles.wrapperAll, xstyle), className, style),
154
+ ...props,
101
155
  children: children
102
- });
156
+ }, void 0, false) : children;
157
+ return /*#__PURE__*/_jsxDEV(CollapsibleGroupContext, {
158
+ value: contextValue,
159
+ children: /*#__PURE__*/_jsxDEV(CollapsibleGroupPresentationContext, {
160
+ value: presentationValue,
161
+ children: content
162
+ }, void 0, false)
163
+ }, void 0, false);
103
164
  }
104
165
  CollapsibleGroup.displayName = 'CollapsibleGroup';
@@ -12,4 +12,35 @@ export interface CollapsibleGroupContextValue {
12
12
  * When present, collapsible components defer their open/close state to the group.
13
13
  */
14
14
  export declare const CollapsibleGroupContext: import("react").Context<CollapsibleGroupContextValue | null>;
15
+ /**
16
+ * Divider style rendered around the items of a CollapsibleGroup.
17
+ * - 'between': hairlines between adjacent items only.
18
+ * - 'all': hairlines between items plus the group's top and bottom edges.
19
+ * - 'none': no dividers (default).
20
+ */
21
+ export type CollapsibleGroupDividers = 'between' | 'all' | 'none';
22
+ /**
23
+ * Row density for the items of a CollapsibleGroup, controlling trigger and
24
+ * content block padding. Shares the repo-wide density vocabulary
25
+ * (Table, List, Item).
26
+ */
27
+ export type CollapsibleGroupDensity = 'compact' | 'balanced' | 'spacious';
28
+ /**
29
+ * Presentation value provided by CollapsibleGroup so each Collapsible can
30
+ * draw its own group chrome (StyleX has no child selectors, so the group
31
+ * cannot style items from the outside).
32
+ */
33
+ export interface CollapsibleGroupPresentationValue {
34
+ /** Resolved divider style for the group's items. */
35
+ dividers: CollapsibleGroupDividers;
36
+ /** Resolved row density, or null to keep the default (unpadded) look. */
37
+ density: CollapsibleGroupDensity | null;
38
+ }
39
+ /**
40
+ * Context for collapsible group presentation (dividers, density).
41
+ * Kept separate from CollapsibleGroupContext so the public useCollapsible
42
+ * state API is unaffected. Collapsible resets this context around its
43
+ * children so nested collapsibles never inherit row chrome.
44
+ */
45
+ export declare const CollapsibleGroupPresentationContext: import("react").Context<CollapsibleGroupPresentationValue | null>;
15
46
  //# sourceMappingURL=CollapsibleGroupContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsibleGroupContext.d.ts","sourceRoot":"","sources":["../../src/Collapsible/CollapsibleGroupContext.tsx"],"names":[],"mappings":"AAkBA;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,gDAAgD;IAChD,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,8CAA8C;IAC9C,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,8DACsB,CAAC"}
1
+ {"version":3,"file":"CollapsibleGroupContext.d.ts","sourceRoot":"","sources":["../../src/Collapsible/CollapsibleGroupContext.tsx"],"names":[],"mappings":"AAoBA;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,gDAAgD;IAChD,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,8CAA8C;IAC9C,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,8DACsB,CAAC;AAG3D;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAElE;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE1E;;;;GAIG;AACH,MAAM,WAAW,iCAAiC;IAChD,oDAAoD;IACpD,QAAQ,EAAE,wBAAwB,CAAC;IACnC,yEAAyE;IACzE,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACzC;AAED;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC,mEACe,CAAC"}
@@ -5,8 +5,10 @@
5
5
  /**
6
6
  * @file CollapsibleGroupContext.tsx
7
7
  * @input Uses React createContext
8
- * @output Exports CollapsibleGroupContext and CollapsibleGroupContextValue type
9
- * @position Context definition for collapsible group coordination
8
+ * @output Exports CollapsibleGroupContext, CollapsibleGroupContextValue,
9
+ * CollapsibleGroupPresentationContext, CollapsibleGroupPresentationValue,
10
+ * CollapsibleGroupDividers, and CollapsibleGroupDensity types
11
+ * @position Context definitions for collapsible group coordination and presentation
10
12
  *
11
13
  * SYNC: When modified, update these files to stay in sync:
12
14
  * - /packages/core/src/Collapsible/CollapsibleGroup.tsx (provider)
@@ -24,4 +26,32 @@ import { createContext } from 'react';
24
26
  * When present, collapsible components defer their open/close state to the group.
25
27
  */
26
28
  export const CollapsibleGroupContext = /*#__PURE__*/createContext(null);
27
- CollapsibleGroupContext.displayName = 'CollapsibleGroupContext';
29
+ CollapsibleGroupContext.displayName = 'CollapsibleGroupContext';
30
+
31
+ /**
32
+ * Divider style rendered around the items of a CollapsibleGroup.
33
+ * - 'between': hairlines between adjacent items only.
34
+ * - 'all': hairlines between items plus the group's top and bottom edges.
35
+ * - 'none': no dividers (default).
36
+ */
37
+
38
+ /**
39
+ * Row density for the items of a CollapsibleGroup, controlling trigger and
40
+ * content block padding. Shares the repo-wide density vocabulary
41
+ * (Table, List, Item).
42
+ */
43
+
44
+ /**
45
+ * Presentation value provided by CollapsibleGroup so each Collapsible can
46
+ * draw its own group chrome (StyleX has no child selectors, so the group
47
+ * cannot style items from the outside).
48
+ */
49
+
50
+ /**
51
+ * Context for collapsible group presentation (dividers, density).
52
+ * Kept separate from CollapsibleGroupContext so the public useCollapsible
53
+ * state API is unaffected. Collapsible resets this context around its
54
+ * children so nested collapsibles never inherit row chrome.
55
+ */
56
+ export const CollapsibleGroupPresentationContext = /*#__PURE__*/createContext(null);
57
+ CollapsibleGroupPresentationContext.displayName = 'CollapsibleGroupPresentationContext';
@@ -10,6 +10,7 @@ export { Collapsible } from './Collapsible';
10
10
  export type { CollapsibleProps } from './Collapsible';
11
11
  export { CollapsibleGroup } from './CollapsibleGroup';
12
12
  export type { CollapsibleGroupProps } from './CollapsibleGroup';
13
+ export type { CollapsibleGroupDividers, CollapsibleGroupDensity, } from './CollapsibleGroupContext';
13
14
  export { useCollapsible } from './useCollapsible';
14
15
  export type { CollapsibleConfig, UseCollapsibleOptions, UseCollapsibleReturn, } from './useCollapsible';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Collapsible/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Collapsible/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EACV,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
@@ -36,8 +36,11 @@ export interface UseCollapsibleReturn {
36
36
  *
37
37
  * Supports three modes:
38
38
  * 1. **Group-controlled**: When inside a CollapsibleGroup with a `value`, defers to group.
39
- * 2. **Controlled**: When `isOpen` and `onOpenChange` are provided in config.
39
+ * 2. **Controlled**: When `isOpen` is provided in config, the parent owns state;
40
+ * `toggle` only calls `onOpenChange` and never mutates internal state.
40
41
  * 3. **Uncontrolled**: Self-managed internal state with optional `defaultIsOpen`.
42
+ * `onOpenChange`, if supplied, is invoked in addition to the internal update —
43
+ * it is a notification callback, not a signal that the component is controlled.
41
44
  *
42
45
  * @example
43
46
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"useCollapsible.d.ts","sourceRoot":"","sources":["../../src/Collapsible/useCollapsible.ts"],"names":[],"mappings":"AA0BA;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAC5C;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,MAAM,EAAE,OAAO,CAAC;IAChB,oCAAoC;IACpC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CA6CtB"}
1
+ {"version":3,"file":"useCollapsible.d.ts","sourceRoot":"","sources":["../../src/Collapsible/useCollapsible.ts"],"names":[],"mappings":"AA0BA;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAC5C;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,MAAM,EAAE,OAAO,CAAC;IAChB,oCAAoC;IACpC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAwDtB"}
@@ -32,8 +32,11 @@ import { CollapsibleGroupContext } from "./CollapsibleGroupContext.js";
32
32
  *
33
33
  * Supports three modes:
34
34
  * 1. **Group-controlled**: When inside a CollapsibleGroup with a `value`, defers to group.
35
- * 2. **Controlled**: When `isOpen` and `onOpenChange` are provided in config.
35
+ * 2. **Controlled**: When `isOpen` is provided in config, the parent owns state;
36
+ * `toggle` only calls `onOpenChange` and never mutates internal state.
36
37
  * 3. **Uncontrolled**: Self-managed internal state with optional `defaultIsOpen`.
38
+ * `onOpenChange`, if supplied, is invoked in addition to the internal update —
39
+ * it is a notification callback, not a signal that the component is controlled.
37
40
  *
38
41
  * @example
39
42
  * ```
@@ -78,15 +81,26 @@ export function useCollapsible(options) {
78
81
  isOpen = internalIsOpen;
79
82
  }
80
83
 
81
- // Toggle handler dispatches to the appropriate controller
84
+ // Toggle handler dispatches to the appropriate controller.
85
+ //
86
+ // Controlled vs uncontrolled is decided by whether `isOpen` was provided —
87
+ // mirroring how `isOpen` is derived above. `onOpenChange` is a notification
88
+ // callback, not a signal of control: an uncontrolled component may still want
89
+ // to observe changes. So in uncontrolled mode we drive internal state AND
90
+ // fire the callback; only in controlled mode do we defer entirely to the
91
+ // parent via the callback.
82
92
  const toggle = () => {
83
93
  if (isControlledByGroup && value != null) {
84
94
  group.toggle(value);
85
- } else if (config?.onOpenChange) {
86
- config.onOpenChange(!isOpen);
87
- } else {
88
- setInternalIsOpen(prev => !prev);
95
+ return;
89
96
  }
97
+ const next = !isOpen;
98
+ // Uncontrolled: internal state is the source of truth, so update it.
99
+ if (config?.isOpen === undefined) {
100
+ setInternalIsOpen(next);
101
+ }
102
+ // Always notify — for both controlled and uncontrolled usage.
103
+ config?.onOpenChange?.(next);
90
104
  };
91
105
  return {
92
106
  isEnabled,
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPalette.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AAU/D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,mBAAmB,CAClC,CAAC,SAAS,cAAc,GAAG,cAAc,CACzC,SAAQ,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACtD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,2CAA2C;IAC3C,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0DAA0D;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAExC;;;;OAIG;IACH,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAE9B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAEzD;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAE5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAE/B,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AA6GD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EACxE,GAAG,EACH,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,MAAM,EACN,UAAU,EACV,eAA8B,EAC9B,kBAAqC,EACrC,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,KAAyB,EACzB,KAAW,EACX,SAAe,GAChB,EAAE,mBAAmB,CAAC,CAAC,CAAC,+BAkRxB;yBAlSe,cAAc"}
1
+ {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPalette.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AAU/D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,mBAAmB,CAClC,CAAC,SAAS,cAAc,GAAG,cAAc,CACzC,SAAQ,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACtD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,2CAA2C;IAC3C,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0DAA0D;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAExC;;;;OAIG;IACH,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAE9B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAEzD;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAE5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAE/B,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AA6GD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EACxE,GAAG,EACH,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,MAAM,EACN,UAAU,EACV,eAA8B,EAC9B,kBAAqC,EACrC,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,KAAyB,EACzB,KAAW,EACX,SAAe,GAChB,EAAE,mBAAmB,CAAC,CAAC,CAAC,+BAoRxB;yBApSe,cAAc"}
@@ -23,7 +23,7 @@ import { CommandPaletteGroup } from "./CommandPaletteGroup.js";
23
23
  import { CommandPaletteInput } from "./CommandPaletteInput.js";
24
24
  import { CommandPaletteFooter } from "./CommandPaletteFooter.js";
25
25
  import { CommandPaletteEmpty } from "./CommandPaletteEmpty.js";
26
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
26
+ import { jsxDEV as _jsxDEV, Fragment as _Fragment } from "react/jsx-dev-runtime";
27
27
  function getGroup(item) {
28
28
  const aux = item.auxiliaryData;
29
29
  return typeof aux?.group === 'string' ? aux.group : undefined;
@@ -86,15 +86,15 @@ function ItemRenderer({
86
86
  value,
87
87
  renderItem
88
88
  }) {
89
- const renderOne = item => /*#__PURE__*/_jsx(CommandPaletteItem, {
89
+ const renderOne = item => /*#__PURE__*/_jsxDEV(CommandPaletteItem, {
90
90
  value: item.id,
91
91
  children: renderItem ? renderItem(item, item.id === value) : item.label
92
- }, item.id);
92
+ }, item.id, false);
93
93
  const hasGroups = items.some(item => getGroup(item) != null);
94
94
  if (!hasGroups) {
95
- return /*#__PURE__*/_jsx(_Fragment, {
95
+ return /*#__PURE__*/_jsxDEV(_Fragment, {
96
96
  children: items.map(renderOne)
97
- });
97
+ }, void 0, false);
98
98
  }
99
99
  const groupOrder = [];
100
100
  const groups = new Map();
@@ -111,12 +111,12 @@ function ItemRenderer({
111
111
  ungrouped.push(item);
112
112
  }
113
113
  }
114
- return /*#__PURE__*/_jsxs(_Fragment, {
115
- children: [groupOrder.map(heading => /*#__PURE__*/_jsx(CommandPaletteGroup, {
114
+ return /*#__PURE__*/_jsxDEV(_Fragment, {
115
+ children: [groupOrder.map(heading => /*#__PURE__*/_jsxDEV(CommandPaletteGroup, {
116
116
  heading: heading,
117
117
  children: (groups.get(heading) ?? []).map(renderOne)
118
- }, heading)), ungrouped.map(renderOne)]
119
- });
118
+ }, heading, false)), ungrouped.map(renderOne)]
119
+ }, void 0, true);
120
120
  }
121
121
 
122
122
  /**
@@ -292,11 +292,13 @@ export function CommandPalette({
292
292
  }, [combobox, handleClose, selectableItems, selectItem]);
293
293
  const contextValue = useMemo(() => ({
294
294
  // Input uses optimisticSearch — reflects keystrokes immediately.
295
- // setSearch calls setOptimisticSearch for instant feedback then
296
- // triggers the async search directly (no effect indirection).
295
+ // setSearch calls setOptimisticSearch inside a transition for instant
296
+ // feedback then triggers the async search directly (no effect indirection).
297
297
  search: optimisticSearch,
298
298
  setSearch: query => {
299
- setOptimisticSearch(query);
299
+ startTransition(() => {
300
+ setOptimisticSearch(query);
301
+ });
300
302
  runSearch(query);
301
303
  },
302
304
  value,
@@ -322,21 +324,21 @@ export function CommandPalette({
322
324
  const showEmptySearch = search !== '' && optimisticResults.length === 0;
323
325
  let listContent;
324
326
  if (showEmptyBootstrap) {
325
- listContent = /*#__PURE__*/_jsx(CommandPaletteEmpty, {
327
+ listContent = /*#__PURE__*/_jsxDEV(CommandPaletteEmpty, {
326
328
  children: emptyBootstrapText
327
- });
329
+ }, void 0, false);
328
330
  } else if (showEmptySearch) {
329
- listContent = /*#__PURE__*/_jsx(CommandPaletteEmpty, {
331
+ listContent = /*#__PURE__*/_jsxDEV(CommandPaletteEmpty, {
330
332
  children: emptySearchText
331
- });
333
+ }, void 0, false);
332
334
  } else {
333
- listContent = /*#__PURE__*/_jsx(ItemRenderer, {
335
+ listContent = /*#__PURE__*/_jsxDEV(ItemRenderer, {
334
336
  items: optimisticResults,
335
337
  value: value,
336
338
  renderItem: renderItem
337
- });
339
+ }, void 0, false);
338
340
  }
339
- return /*#__PURE__*/_jsx(Dialog, {
341
+ return /*#__PURE__*/_jsxDEV(Dialog, {
340
342
  ref: ref,
341
343
  isOpen: isOpen,
342
344
  isInline: isInline,
@@ -351,28 +353,28 @@ export function CommandPalette({
351
353
  maxHeight: maxHeight,
352
354
  purpose: "info",
353
355
  "aria-label": label,
354
- children: /*#__PURE__*/_jsx(CommandPaletteContext, {
356
+ children: /*#__PURE__*/_jsxDEV(CommandPaletteContext, {
355
357
  value: contextValue,
356
- children: /*#__PURE__*/_jsx(Layout, {
358
+ children: /*#__PURE__*/_jsxDEV(Layout, {
357
359
  defaultHasDividers: true,
358
- header: /*#__PURE__*/_jsx(LayoutHeader, {
360
+ header: /*#__PURE__*/_jsxDEV(LayoutHeader, {
359
361
  hasDivider: true,
360
362
  padding: 0,
361
- children: input ?? /*#__PURE__*/_jsx(CommandPaletteInput, {})
362
- }),
363
- content: /*#__PURE__*/_jsx(LayoutContent, {
363
+ children: input ?? /*#__PURE__*/_jsxDEV(CommandPaletteInput, {}, void 0, false)
364
+ }, void 0, false),
365
+ content: /*#__PURE__*/_jsxDEV(LayoutContent, {
364
366
  padding: 0,
365
- children: /*#__PURE__*/_jsx(CommandPaletteList, {
367
+ children: /*#__PURE__*/_jsxDEV(CommandPaletteList, {
366
368
  children: listContent
367
- })
368
- }),
369
- footer: /*#__PURE__*/_jsx(LayoutFooter, {
369
+ }, void 0, false)
370
+ }, void 0, false),
371
+ footer: /*#__PURE__*/_jsxDEV(LayoutFooter, {
370
372
  hasDivider: true,
371
373
  padding: 0,
372
- children: footer ?? /*#__PURE__*/_jsx(CommandPaletteFooter, {})
373
- })
374
- })
375
- })
376
- });
374
+ children: footer ?? /*#__PURE__*/_jsxDEV(CommandPaletteFooter, {}, void 0, false)
375
+ }, void 0, false)
376
+ }, void 0, false)
377
+ }, void 0, false)
378
+ }, void 0, false);
377
379
  }
378
380
  CommandPalette.displayName = 'CommandPalette';
@@ -23,7 +23,7 @@ export interface CommandPaletteEmptyProps extends BaseProps<HTMLDivElement> {
23
23
  * />
24
24
  * ```
25
25
  */
26
- export declare function CommandPaletteEmpty({ ref, children, }: CommandPaletteEmptyProps): React.JSX.Element;
26
+ export declare function CommandPaletteEmpty({ ref, children, xstyle, className, style, ...props }: CommandPaletteEmptyProps): React.JSX.Element;
27
27
  export declare namespace CommandPaletteEmpty {
28
28
  var displayName: string;
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPaletteEmpty.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPaletteEmpty.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAQ5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAiB5C,MAAM,WAAW,wBAAyB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACzE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,yCAAyC;IACzC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,GAAG,EACH,QAAQ,GACT,EAAE,wBAAwB,qBAM1B;yBATe,mBAAmB"}
1
+ {"version":3,"file":"CommandPaletteEmpty.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPaletteEmpty.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAS5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAkB5C,MAAM,WAAW,wBAAyB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACzE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,yCAAyC;IACzC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,GAAG,EACH,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,wBAAwB,qBAc1B;yBArBe,mBAAmB"}
@@ -16,7 +16,24 @@ import React from 'react';
16
16
  import * as stylex from '@stylexjs/stylex';
17
17
  import "../theme/tokens.stylex.js";
18
18
  import { colorVars, spacingVars, typeScaleVars, typographyVars } from "../theme/tokens.stylex.js";
19
- import { jsx as _jsx } from "react/jsx-runtime";
19
+ import { mergeProps } from "../utils/index.js";
20
+ import { themeProps } from "../utils/themeProps.js";
21
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
22
+ const styles = {
23
+ empty: {
24
+ k1xSpc: "x78zum5",
25
+ kGNEyG: "x6s0dn4",
26
+ kjj79g: "xl56j7k",
27
+ k8WAf4: "xmfvnks",
28
+ kg3NbH: "x1pzlopt",
29
+ kMv6JI: "x9ynric",
30
+ kGuDYH: "x141an7d",
31
+ kLWn49: "x1ltkj2j",
32
+ kMwMTN: "xv1l7n4",
33
+ k9WMMc: "x2b8uid",
34
+ $$css: true
35
+ }
36
+ };
20
37
  /**
21
38
  * Empty state for the command palette list area.
22
39
  *
@@ -37,14 +54,17 @@ import { jsx as _jsx } from "react/jsx-runtime";
37
54
  */
38
55
  export function CommandPaletteEmpty({
39
56
  ref,
40
- children
57
+ children,
58
+ xstyle,
59
+ className,
60
+ style,
61
+ ...props
41
62
  }) {
42
- return /*#__PURE__*/_jsx("div", {
63
+ return /*#__PURE__*/_jsxDEV("div", {
43
64
  ref: ref,
44
- ...{
45
- className: "x78zum5 x6s0dn4 xl56j7k xmfvnks x1pzlopt x9ynric x141an7d x1ltkj2j xv1l7n4 x2b8uid"
46
- },
65
+ ...mergeProps(themeProps('command-palette-empty'), stylex.props(styles.empty, xstyle), className, style),
66
+ ...props,
47
67
  children: children
48
- });
68
+ }, void 0, false);
49
69
  }
50
70
  CommandPaletteEmpty.displayName = 'CommandPaletteEmpty';