@astryxdesign/core 0.1.4 → 0.1.5-canary.76e6697

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 (635) hide show
  1. package/CHANGELOG.md +141 -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.d.ts +0 -2
  6. package/dist/AlertDialog/useImperativeAlertDialog.d.ts.map +1 -1
  7. package/dist/AlertDialog/useImperativeAlertDialog.js +3 -5
  8. package/dist/AppShell/AppShell.d.ts +1 -1
  9. package/dist/AppShell/AppShell.d.ts.map +1 -1
  10. package/dist/AppShell/AppShell.js +55 -53
  11. package/dist/AspectRatio/AspectRatio.d.ts +48 -10
  12. package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
  13. package/dist/AspectRatio/AspectRatio.js +33 -12
  14. package/dist/AspectRatio/index.d.ts +1 -1
  15. package/dist/AspectRatio/index.d.ts.map +1 -1
  16. package/dist/Avatar/Avatar.d.ts.map +1 -1
  17. package/dist/Avatar/Avatar.js +28 -26
  18. package/dist/Avatar/AvatarStatusDot.js +6 -6
  19. package/dist/AvatarGroup/AvatarGroup.js +6 -6
  20. package/dist/AvatarGroup/AvatarGroupOverflow.js +7 -7
  21. package/dist/Badge/Badge.js +3 -3
  22. package/dist/Banner/Banner.d.ts.map +1 -1
  23. package/dist/Banner/Banner.js +32 -25
  24. package/dist/Blockquote/Blockquote.js +7 -7
  25. package/dist/Breadcrumbs/BreadcrumbItem.js +17 -17
  26. package/dist/Breadcrumbs/Breadcrumbs.js +7 -7
  27. package/dist/Button/Button.js +19 -19
  28. package/dist/ButtonGroup/ButtonGroup.js +7 -7
  29. package/dist/Calendar/Calendar.d.ts.map +1 -1
  30. package/dist/Calendar/Calendar.js +68 -48
  31. package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
  32. package/dist/Calendar/styles.d.ts +2 -2
  33. package/dist/Calendar/styles.d.ts.map +1 -1
  34. package/dist/Calendar/styles.js +2 -2
  35. package/dist/Card/Card.d.ts +4 -2
  36. package/dist/Card/Card.d.ts.map +1 -1
  37. package/dist/Card/Card.js +18 -10
  38. package/dist/Carousel/Carousel.d.ts.map +1 -1
  39. package/dist/Carousel/Carousel.js +24 -21
  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 +27 -15
  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 +13 -11
  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 +12 -10
  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 +14 -12
  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 +24 -15
  67. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  68. package/dist/Chat/ChatToolCalls.js +81 -74
  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 +25 -23
  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 +8 -6
  80. package/dist/Citation/Citation.js +10 -10
  81. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  82. package/dist/ClickableCard/ClickableCard.js +32 -9
  83. package/dist/Code/Code.js +3 -3
  84. package/dist/CodeBlock/CodeBlock.d.ts +10 -1
  85. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  86. package/dist/CodeBlock/CodeBlock.js +88 -52
  87. package/dist/Collapsible/Collapsible.d.ts +9 -3
  88. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  89. package/dist/Collapsible/Collapsible.js +109 -22
  90. package/dist/Collapsible/CollapsibleGroup.d.ts +37 -7
  91. package/dist/Collapsible/CollapsibleGroup.d.ts.map +1 -1
  92. package/dist/Collapsible/CollapsibleGroup.js +64 -12
  93. package/dist/Collapsible/CollapsibleGroupContext.d.ts +24 -0
  94. package/dist/Collapsible/CollapsibleGroupContext.d.ts.map +1 -1
  95. package/dist/Collapsible/CollapsibleGroupContext.js +26 -3
  96. package/dist/Collapsible/index.d.ts +1 -0
  97. package/dist/Collapsible/index.d.ts.map +1 -1
  98. package/dist/Collapsible/useCollapsible.d.ts +4 -1
  99. package/dist/Collapsible/useCollapsible.d.ts.map +1 -1
  100. package/dist/Collapsible/useCollapsible.js +20 -6
  101. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  102. package/dist/CommandPalette/CommandPalette.js +36 -34
  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 +7 -2
  110. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  111. package/dist/ContextMenu/ContextMenu.js +76 -43
  112. package/dist/DateInput/DateInput.js +18 -18
  113. package/dist/DateRangeInput/DateRangeInput.js +21 -21
  114. package/dist/DateTimeInput/DateTimeInput.d.ts +5 -2
  115. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  116. package/dist/DateTimeInput/DateTimeInput.js +30 -26
  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 +2 -17
  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 +4 -3
  136. package/dist/Grid/Grid.d.ts.map +1 -1
  137. package/dist/Grid/Grid.js +29 -12
  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 +5 -1
  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 +16 -12
  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 +29 -2
  155. package/dist/Layer/useLayer.d.ts.map +1 -1
  156. package/dist/Layer/useLayer.js +44 -31
  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 +55 -31
  164. package/dist/Lightbox/useLightbox.d.ts +0 -1
  165. package/dist/Lightbox/useLightbox.d.ts.map +1 -1
  166. package/dist/Lightbox/useLightbox.js +3 -4
  167. package/dist/Link/Link.d.ts +0 -2
  168. package/dist/Link/Link.d.ts.map +1 -1
  169. package/dist/Link/Link.js +15 -17
  170. package/dist/Link/LinkProvider.js +3 -3
  171. package/dist/Link/useLinkify.js +3 -3
  172. package/dist/List/List.js +11 -11
  173. package/dist/List/ListItem.js +11 -11
  174. package/dist/Markdown/Markdown.d.ts.map +1 -1
  175. package/dist/Markdown/Markdown.js +102 -102
  176. package/dist/MetadataList/MetadataList.js +10 -10
  177. package/dist/MetadataList/MetadataListItem.js +15 -15
  178. package/dist/MobileNav/MobileNav.d.ts +1 -1
  179. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  180. package/dist/MobileNav/MobileNav.js +26 -23
  181. package/dist/MobileNav/MobileNavToggle.js +5 -5
  182. package/dist/MoreMenu/MoreMenu.js +3 -3
  183. package/dist/MultiSelector/MultiSelector.js +56 -56
  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.d.ts +0 -3
  194. package/dist/Overlay/useOverlay.d.ts.map +1 -1
  195. package/dist/Overlay/useOverlay.js +3 -6
  196. package/dist/Pagination/Pagination.d.ts +1 -1
  197. package/dist/Pagination/Pagination.d.ts.map +1 -1
  198. package/dist/Pagination/Pagination.js +125 -72
  199. package/dist/Popover/Popover.js +16 -16
  200. package/dist/Popover/usePopover.js +7 -7
  201. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  202. package/dist/PowerSearch/PowerSearch.js +110 -92
  203. package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
  204. package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
  205. package/dist/PowerSearch/PowerSearchToken.js +5 -5
  206. package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
  207. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  208. package/dist/ProgressBar/ProgressBar.js +25 -18
  209. package/dist/RadioList/RadioList.js +7 -7
  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 +24 -21
  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.js +46 -46
  224. package/dist/Selector/SelectorOption.js +3 -3
  225. package/dist/SideNav/SideNav.d.ts.map +1 -1
  226. package/dist/SideNav/SideNav.js +38 -34
  227. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  228. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  229. package/dist/SideNav/SideNavCollapseButton.js +8 -6
  230. package/dist/SideNav/SideNavHeading.js +87 -87
  231. package/dist/SideNav/SideNavItem.js +42 -42
  232. package/dist/SideNav/SideNavSection.d.ts +1 -1
  233. package/dist/SideNav/SideNavSection.d.ts.map +1 -1
  234. package/dist/SideNav/SideNavSection.js +18 -16
  235. package/dist/Skeleton/Skeleton.js +3 -3
  236. package/dist/Slider/Slider.js +23 -23
  237. package/dist/Spinner/Spinner.js +9 -9
  238. package/dist/StatusDot/StatusDot.js +5 -5
  239. package/dist/Switch/Switch.d.ts +8 -4
  240. package/dist/Switch/Switch.d.ts.map +1 -1
  241. package/dist/Switch/Switch.js +34 -29
  242. package/dist/TabList/Tab.js +18 -18
  243. package/dist/TabList/TabList.js +5 -5
  244. package/dist/TabList/TabMenu.d.ts.map +1 -1
  245. package/dist/TabList/TabMenu.js +57 -30
  246. package/dist/TabList/tab.markers.stylex.d.ts +1 -1
  247. package/dist/Table/BaseTable.d.ts.map +1 -1
  248. package/dist/Table/BaseTable.js +50 -39
  249. package/dist/Table/Table.js +7 -7
  250. package/dist/Table/TableBody.d.ts +1 -1
  251. package/dist/Table/TableBody.d.ts.map +1 -1
  252. package/dist/Table/TableBody.js +9 -5
  253. package/dist/Table/TableCell.js +3 -3
  254. package/dist/Table/TableFooter.d.ts +1 -1
  255. package/dist/Table/TableFooter.d.ts.map +1 -1
  256. package/dist/Table/TableFooter.js +9 -5
  257. package/dist/Table/TableHeader.d.ts +1 -1
  258. package/dist/Table/TableHeader.d.ts.map +1 -1
  259. package/dist/Table/TableHeader.js +9 -5
  260. package/dist/Table/TableHeaderCell.js +3 -3
  261. package/dist/Table/TableRow.js +5 -5
  262. package/dist/Table/index.d.ts +2 -0
  263. package/dist/Table/index.d.ts.map +1 -1
  264. package/dist/Table/index.js +1 -0
  265. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  266. package/dist/Table/plugins/columnResize/useTableColumnResize.js +14 -11
  267. package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
  268. package/dist/Table/plugins/groupedRows/index.d.ts +3 -0
  269. package/dist/Table/plugins/groupedRows/index.d.ts.map +1 -0
  270. package/dist/Table/plugins/groupedRows/index.js +3 -0
  271. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +78 -0
  272. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -0
  273. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +250 -0
  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/useTableRowExpansion.d.ts +1 -1
  278. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +23 -23
  279. package/dist/Table/plugins/selection/useTableSelection.js +18 -18
  280. package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
  281. package/dist/Table/plugins/selection/useTableSelectionState.js +11 -1
  282. package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
  283. package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
  284. package/dist/Table/plugins/sortable/useTableSortableState.js +8 -4
  285. package/dist/Table/tableContextMenu.js +9 -9
  286. package/dist/Text/Text.js +10 -10
  287. package/dist/TextArea/TextArea.js +14 -14
  288. package/dist/TextInput/TextInput.js +15 -15
  289. package/dist/Thumbnail/Thumbnail.d.ts +3 -2
  290. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  291. package/dist/Thumbnail/Thumbnail.js +30 -29
  292. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  293. package/dist/TimeInput/TimeInput.js +26 -21
  294. package/dist/Timestamp/Timestamp.d.ts +1 -1
  295. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  296. package/dist/Timestamp/Timestamp.js +37 -26
  297. package/dist/Toast/Toast.d.ts.map +1 -1
  298. package/dist/Toast/Toast.js +25 -17
  299. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  300. package/dist/Toast/ToastViewport.js +23 -11
  301. package/dist/Toast/useToast.d.ts.map +1 -1
  302. package/dist/Toast/useToast.js +44 -4
  303. package/dist/ToggleButton/ToggleButton.js +12 -12
  304. package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
  305. package/dist/Token/Token.js +21 -21
  306. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  307. package/dist/Tokenizer/Tokenizer.js +36 -34
  308. package/dist/Toolbar/Toolbar.js +18 -18
  309. package/dist/Tooltip/Tooltip.js +11 -11
  310. package/dist/Tooltip/useTooltip.d.ts +5 -1
  311. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  312. package/dist/Tooltip/useTooltip.js +3 -3
  313. package/dist/TopNav/TopNav.js +32 -32
  314. package/dist/TopNav/TopNavHeading.js +67 -67
  315. package/dist/TopNav/TopNavItem.js +5 -5
  316. package/dist/TopNav/TopNavMegaMenu.js +30 -30
  317. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  318. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  319. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +25 -14
  320. package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
  321. package/dist/TopNav/TopNavMenu.js +32 -32
  322. package/dist/TreeList/TreeList.js +8 -8
  323. package/dist/TreeList/TreeListBranches.js +11 -11
  324. package/dist/TreeList/TreeListItem.js +30 -30
  325. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  326. package/dist/Typeahead/BaseTypeahead.js +23 -20
  327. package/dist/Typeahead/Typeahead.js +12 -12
  328. package/dist/Typeahead/TypeaheadItem.js +10 -10
  329. package/dist/VStack/VStack.js +3 -3
  330. package/dist/VisuallyHidden/VisuallyHidden.d.ts +0 -3
  331. package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
  332. package/dist/VisuallyHidden/VisuallyHidden.js +0 -3
  333. package/dist/astryx.css +7 -0
  334. package/dist/astryx.umd.js +63 -63
  335. package/dist/astryx.umd.js.map +4 -4
  336. package/dist/docs-types.d.ts +8 -2
  337. package/dist/docs-types.d.ts.map +1 -1
  338. package/dist/hooks/focusableSelector.d.ts +1 -1
  339. package/dist/hooks/focusableSelector.d.ts.map +1 -1
  340. package/dist/hooks/focusableSelector.js +1 -1
  341. package/dist/hooks/index.d.ts +2 -0
  342. package/dist/hooks/index.d.ts.map +1 -1
  343. package/dist/hooks/index.js +1 -0
  344. package/dist/hooks/useFocusTrap.d.ts +3 -0
  345. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  346. package/dist/hooks/useFocusTrap.js +38 -1
  347. package/dist/hooks/useHotkeys.d.ts +51 -0
  348. package/dist/hooks/useHotkeys.d.ts.map +1 -0
  349. package/dist/hooks/useHotkeys.js +160 -0
  350. package/dist/hooks/useInteractiveRole.d.ts +6 -2
  351. package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
  352. package/dist/hooks/useInteractiveRole.js +6 -2
  353. package/dist/hooks/useKeyboardHint.js +9 -9
  354. package/dist/hooks/useStreamingText.d.ts +3 -1
  355. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  356. package/dist/hooks/useStreamingText.js +14 -5
  357. package/dist/theme/MediaTheme.js +3 -3
  358. package/dist/theme/Theme.js +7 -7
  359. package/dist/theme/defineTheme.d.ts +1 -1
  360. package/dist/theme/defineTheme.d.ts.map +1 -1
  361. package/dist/theme/expandColorScale.d.ts.map +1 -1
  362. package/dist/theme/expandColorScale.js +10 -3
  363. package/dist/theme/hct.d.ts +0 -15
  364. package/dist/theme/hct.d.ts.map +1 -1
  365. package/dist/theme/hct.js +9 -9
  366. package/dist/theme/syntax/SyntaxTheme.js +5 -5
  367. package/dist/theme/tokens.d.ts +10 -2
  368. package/dist/theme/tokens.d.ts.map +1 -1
  369. package/dist/theme/tokens.js +220 -4
  370. package/dist/theme/useTheme.d.ts +3 -2
  371. package/dist/theme/useTheme.d.ts.map +1 -1
  372. package/dist/theme/useTheme.js +73 -6
  373. package/dist/utils/color.d.ts +42 -0
  374. package/dist/utils/color.d.ts.map +1 -0
  375. package/dist/utils/color.js +150 -0
  376. package/dist/utils/composeEventHandlers.d.ts +30 -0
  377. package/dist/utils/composeEventHandlers.d.ts.map +1 -0
  378. package/dist/utils/composeEventHandlers.js +40 -0
  379. package/dist/utils/index.d.ts +3 -0
  380. package/dist/utils/index.d.ts.map +1 -1
  381. package/dist/utils/index.js +3 -1
  382. package/dist/utils/timeParser.d.ts.map +1 -1
  383. package/dist/utils/timeParser.js +8 -5
  384. package/package.json +4 -4
  385. package/src/AlertDialog/AlertDialog.doc.mjs +4 -0
  386. package/src/AlertDialog/AlertDialog.tsx +2 -0
  387. package/src/AlertDialog/useImperativeAlertDialog.tsx +0 -2
  388. package/src/AppShell/AppShell.tsx +2 -0
  389. package/src/AspectRatio/AspectRatio.doc.mjs +28 -1
  390. package/src/AspectRatio/AspectRatio.test.tsx +142 -1
  391. package/src/AspectRatio/AspectRatio.tsx +70 -10
  392. package/src/AspectRatio/index.ts +5 -1
  393. package/src/Avatar/Avatar.doc.mjs +11 -0
  394. package/src/Avatar/Avatar.test.tsx +32 -1
  395. package/src/Avatar/Avatar.tsx +14 -22
  396. package/src/Avatar/AvatarStatusDot.tsx +2 -2
  397. package/src/AvatarGroup/AvatarGroup.doc.mjs +1 -0
  398. package/src/AvatarGroup/AvatarGroup.tsx +2 -2
  399. package/src/AvatarGroup/AvatarGroupOverflow.tsx +2 -2
  400. package/src/Banner/Banner.doc.mjs +8 -0
  401. package/src/Banner/Banner.test.tsx +38 -0
  402. package/src/Banner/Banner.tsx +8 -1
  403. package/src/Calendar/Calendar.doc.mjs +1 -1
  404. package/src/Calendar/Calendar.test.tsx +122 -17
  405. package/src/Calendar/Calendar.tsx +26 -5
  406. package/src/Calendar/dayCellUtils.ts +3 -1
  407. package/src/Calendar/styles.ts +12 -2
  408. package/src/Card/Card.doc.mjs +1 -1
  409. package/src/Card/Card.tsx +16 -6
  410. package/src/Carousel/Carousel.doc.mjs +12 -12
  411. package/src/Carousel/Carousel.test.tsx +13 -0
  412. package/src/Carousel/Carousel.tsx +4 -2
  413. package/src/Chat/Chat.doc.mjs +1 -1
  414. package/src/Chat/ChatComposerInput.test.tsx +27 -1
  415. package/src/Chat/ChatComposerInput.tsx +20 -15
  416. package/src/Chat/ChatDictationButton.test.tsx +43 -0
  417. package/src/Chat/ChatDictationButton.tsx +4 -4
  418. package/src/Chat/ChatLayoutScrollButton.test.tsx +33 -0
  419. package/src/Chat/ChatLayoutScrollButton.tsx +3 -1
  420. package/src/Chat/ChatMessageMetadata.test.tsx +32 -0
  421. package/src/Chat/ChatMessageMetadata.tsx +4 -6
  422. package/src/Chat/ChatSystemMessage.test.tsx +26 -11
  423. package/src/Chat/ChatSystemMessage.tsx +7 -7
  424. package/src/Chat/ChatTokenizedText.test.tsx +29 -16
  425. package/src/Chat/ChatTokenizedText.tsx +15 -8
  426. package/src/Chat/ChatToolCalls.test.tsx +55 -0
  427. package/src/Chat/ChatToolCalls.tsx +10 -12
  428. package/src/Chat/index.ts +1 -4
  429. package/src/Chat/useTriggerMenu.tsx +1 -4
  430. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  431. package/src/CheckboxInput/CheckboxInput.test.tsx +71 -4
  432. package/src/CheckboxInput/CheckboxInput.tsx +2 -0
  433. package/src/CheckboxList/CheckboxList.test.tsx +19 -0
  434. package/src/CheckboxList/CheckboxListItem.tsx +11 -2
  435. package/src/Citation/Citation.doc.mjs +5 -0
  436. package/src/ClickableCard/ClickableCard.tsx +45 -2
  437. package/src/CodeBlock/CodeBlock.doc.mjs +7 -2
  438. package/src/CodeBlock/CodeBlock.test.tsx +122 -3
  439. package/src/CodeBlock/CodeBlock.tsx +62 -4
  440. package/src/Collapsible/Collapsible.doc.mjs +8 -4
  441. package/src/Collapsible/Collapsible.test.tsx +403 -0
  442. package/src/Collapsible/Collapsible.tsx +85 -10
  443. package/src/Collapsible/CollapsibleGroup.doc.mjs +27 -3
  444. package/src/Collapsible/CollapsibleGroup.test.tsx +314 -0
  445. package/src/Collapsible/CollapsibleGroup.tsx +97 -9
  446. package/src/Collapsible/CollapsibleGroupContext.tsx +34 -2
  447. package/src/Collapsible/index.ts +1 -0
  448. package/src/Collapsible/useCollapsible.ts +20 -6
  449. package/src/CommandPalette/CommandPalette.doc.mjs +5 -0
  450. package/src/CommandPalette/CommandPalette.tsx +5 -3
  451. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +5 -0
  452. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +10 -0
  453. package/src/CommandPalette/CommandPaletteInput.doc.mjs +6 -0
  454. package/src/CommandPalette/CommandPaletteItem.doc.mjs +6 -0
  455. package/src/CommandPalette/CommandPaletteList.doc.mjs +9 -0
  456. package/src/ContextMenu/ContextMenu.doc.mjs +15 -0
  457. package/src/ContextMenu/ContextMenu.test.tsx +87 -0
  458. package/src/ContextMenu/ContextMenu.tsx +87 -28
  459. package/src/ContextMenu/ContextMenuItem.doc.mjs +6 -0
  460. package/src/DateInput/DateInput.test.tsx +11 -20
  461. package/src/DateRangeInput/DateRangeInput.doc.mjs +9 -6
  462. package/src/DateRangeInput/DateRangeInput.test.tsx +31 -44
  463. package/src/DateTimeInput/DateTimeInput.doc.mjs +3 -2
  464. package/src/DateTimeInput/DateTimeInput.test.tsx +118 -16
  465. package/src/DateTimeInput/DateTimeInput.tsx +8 -2
  466. package/src/DateTimeInput/index.ts +1 -0
  467. package/src/Dialog/Dialog.doc.mjs +4 -0
  468. package/src/Dialog/DialogHeader.doc.mjs +45 -0
  469. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
  470. package/src/DropdownMenu/DropdownMenu.test.tsx +22 -2
  471. package/src/DropdownMenu/DropdownMenuItem.tsx +5 -17
  472. package/src/EmptyState/EmptyState.doc.mjs +1 -1
  473. package/src/Field/Field.test.tsx +1 -4
  474. package/src/Field/FieldLabel.test.tsx +2 -2
  475. package/src/FieldStatus/FieldStatus.test.tsx +282 -0
  476. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +0 -3
  477. package/src/Grid/Grid.test.tsx +43 -18
  478. package/src/Grid/Grid.tsx +26 -9
  479. package/src/HoverCard/HoverCard.doc.mjs +6 -6
  480. package/src/HoverCard/useHoverCard.doc.mjs +5 -5
  481. package/src/HoverCard/useHoverCard.tsx +9 -2
  482. package/src/Icon/Icon.test.tsx +41 -29
  483. package/src/Icon/Icon.tsx +6 -2
  484. package/src/InputGroup/InputGroup.doc.mjs +1 -0
  485. package/src/InputGroup/InputGroup.tsx +2 -2
  486. package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +185 -0
  487. package/src/Item/Item.tsx +1 -1
  488. package/src/Layer/useLayer.doc.mjs +2 -2
  489. package/src/Layer/useLayer.test.tsx +221 -2
  490. package/src/Layer/useLayer.tsx +69 -30
  491. package/src/Layout/Layout.test.tsx +285 -0
  492. package/src/Layout/LayoutContent.doc.mjs +12 -0
  493. package/src/Layout/LayoutPanel.doc.mjs +40 -0
  494. package/src/Layout/LayoutSlots.test.tsx +364 -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/Lightbox/useLightbox.tsx +0 -1
  499. package/src/Link/Link.tsx +0 -2
  500. package/src/Markdown/Markdown.tsx +9 -7
  501. package/src/Markdown/parser.perf.test.ts +34 -12
  502. package/src/MobileNav/MobileNav.test.tsx +56 -0
  503. package/src/MobileNav/MobileNav.tsx +13 -8
  504. package/src/NavMenu/NavMenu.doc.mjs +15 -0
  505. package/src/NumberInput/NumberInput.test.tsx +48 -3
  506. package/src/NumberInput/NumberInput.tsx +32 -15
  507. package/src/Outline/Outline.doc.mjs +2 -0
  508. package/src/Outline/parseOutlineFromMarkdown.test.ts +80 -0
  509. package/src/OverflowList/OverflowList.test.tsx +416 -0
  510. package/src/Overlay/Overlay.doc.mjs +6 -0
  511. package/src/Overlay/Overlay.test.tsx +356 -0
  512. package/src/Overlay/useOverlay.tsx +0 -3
  513. package/src/Pagination/Pagination.test.tsx +162 -0
  514. package/src/Pagination/Pagination.tsx +80 -26
  515. package/src/Popover/Popover.doc.mjs +6 -6
  516. package/src/Popover/Popover.test.tsx +65 -0
  517. package/src/Popover/usePopover.doc.mjs +1 -1
  518. package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
  519. package/src/PowerSearch/PowerSearch.test.tsx +109 -1
  520. package/src/PowerSearch/PowerSearch.tsx +37 -16
  521. package/src/ProgressBar/ProgressBar.doc.mjs +2 -0
  522. package/src/ProgressBar/ProgressBar.test.tsx +30 -0
  523. package/src/ProgressBar/ProgressBar.tsx +12 -5
  524. package/src/RadioList/RadioList.test.tsx +19 -0
  525. package/src/RadioList/RadioListItem.tsx +9 -4
  526. package/src/Resizable/ResizeHandle.test.tsx +218 -0
  527. package/src/Resizable/ResizeHandle.tsx +22 -4
  528. package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
  529. package/src/SegmentedControl/SegmentedControl.test.tsx +192 -0
  530. package/src/SegmentedControl/SegmentedControl.tsx +27 -5
  531. package/src/SegmentedControl/SegmentedControlItem.tsx +9 -4
  532. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  533. package/src/Selector/Selector.test.tsx +27 -1
  534. package/src/SideNav/SideNav.doc.mjs +7 -1
  535. package/src/SideNav/SideNav.test.tsx +66 -0
  536. package/src/SideNav/SideNav.tsx +6 -2
  537. package/src/SideNav/SideNavCollapseButton.tsx +4 -3
  538. package/src/SideNav/SideNavSection.tsx +6 -4
  539. package/src/SizeContext/SizeContext.test.tsx +226 -0
  540. package/src/Switch/Switch.doc.mjs +7 -7
  541. package/src/Switch/Switch.test.tsx +102 -3
  542. package/src/Switch/Switch.tsx +20 -7
  543. package/src/TabList/TabList.test.tsx +185 -1
  544. package/src/TabList/TabMenu.tsx +45 -9
  545. package/src/Table/BaseTable.tsx +13 -2
  546. package/src/Table/Table.doc.mjs +6 -1
  547. package/src/Table/Table.test.tsx +87 -0
  548. package/src/Table/TableBody.tsx +15 -2
  549. package/src/Table/TableFooter.tsx +15 -2
  550. package/src/Table/TableHeader.tsx +15 -2
  551. package/src/Table/index.ts +5 -0
  552. package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +13 -0
  553. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +3 -1
  554. package/src/Table/plugins/groupedRows/index.ts +7 -0
  555. package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +231 -0
  556. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +349 -0
  557. package/src/Table/plugins/pagination/paginateData.ts +5 -1
  558. package/src/Table/plugins/pagination/useTablePagination.test.tsx +13 -0
  559. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +1 -1
  560. package/src/Table/plugins/selection/useTableSelectionState.test.tsx +23 -0
  561. package/src/Table/plugins/selection/useTableSelectionState.tsx +11 -6
  562. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +35 -1
  563. package/src/Table/plugins/sortable/useTableSortableState.tsx +8 -4
  564. package/src/Table/useTableGroupedRows.doc.mjs +71 -0
  565. package/src/TextArea/TextArea.test.tsx +3 -3
  566. package/src/TextInput/TextInput.test.tsx +3 -3
  567. package/src/Thumbnail/Thumbnail.test.tsx +36 -2
  568. package/src/Thumbnail/Thumbnail.tsx +4 -2
  569. package/src/TimeInput/TimeInput.test.tsx +37 -0
  570. package/src/TimeInput/TimeInput.tsx +11 -1
  571. package/src/Timestamp/Timestamp.doc.mjs +1 -1
  572. package/src/Timestamp/Timestamp.test.tsx +52 -0
  573. package/src/Timestamp/Timestamp.tsx +30 -16
  574. package/src/Toast/Toast.tsx +11 -3
  575. package/src/Toast/ToastViewport.test.tsx +64 -0
  576. package/src/Toast/ToastViewport.tsx +12 -0
  577. package/src/Toast/useToast.test.tsx +258 -0
  578. package/src/Toast/useToast.tsx +41 -0
  579. package/src/ToggleButton/ToggleButton.doc.mjs +1 -0
  580. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  581. package/src/Tokenizer/Tokenizer.test.tsx +54 -0
  582. package/src/Tokenizer/Tokenizer.tsx +5 -4
  583. package/src/Tooltip/Tooltip.doc.mjs +6 -6
  584. package/src/Tooltip/useTooltip.doc.mjs +5 -5
  585. package/src/Tooltip/useTooltip.tsx +12 -2
  586. package/src/TopNav/TopNav.doc.mjs +1 -1
  587. package/src/TopNav/TopNav.test.tsx +23 -7
  588. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +9 -2
  589. package/src/TreeList/TreeList.doc.mjs +2 -2
  590. package/src/Typeahead/BaseTypeahead.doc.mjs +19 -0
  591. package/src/Typeahead/BaseTypeahead.tsx +5 -2
  592. package/src/Typeahead/Typeahead.doc.mjs +1 -1
  593. package/src/Typeahead/Typeahead.test.tsx +45 -1
  594. package/src/VisuallyHidden/VisuallyHidden.tsx +0 -3
  595. package/src/__tests__/TestIcon.tsx +26 -0
  596. package/src/__tests__/fastRoleQueries.ts +66 -0
  597. package/src/docPropReferences.test.ts +178 -0
  598. package/src/docs-types.ts +9 -1
  599. package/src/hooks/focusableSelector.ts +1 -1
  600. package/src/hooks/index.ts +3 -0
  601. package/src/hooks/useFocusTrap.doc.mjs +4 -2
  602. package/src/hooks/useFocusTrap.test.tsx +149 -1
  603. package/src/hooks/useFocusTrap.ts +50 -1
  604. package/src/hooks/useHotkeys.doc.mjs +52 -0
  605. package/src/hooks/useHotkeys.test.ts +245 -0
  606. package/src/hooks/useHotkeys.ts +203 -0
  607. package/src/hooks/useInteractiveRole.ts +12 -4
  608. package/src/hooks/useStreamingText.test.ts +54 -19
  609. package/src/hooks/useStreamingText.ts +16 -5
  610. package/src/hooks/useTreeFocus.test.tsx +1 -3
  611. package/src/reset.css +29 -0
  612. package/src/theme/SyntaxTheme.doc.mjs +4 -4
  613. package/src/theme/defineTheme.ts +4 -13
  614. package/src/theme/derivedVarRegistry.test.ts +2 -2
  615. package/src/theme/expandColorScale.test.ts +29 -0
  616. package/src/theme/expandColorScale.ts +11 -6
  617. package/src/theme/hct.ts +9 -17
  618. package/src/theme/themingTargets.test.ts +353 -0
  619. package/src/theme/tokens.test.ts +182 -9
  620. package/src/theme/tokens.ts +239 -4
  621. package/src/theme/useTheme.test.tsx +126 -2
  622. package/src/theme/useTheme.ts +87 -6
  623. package/src/utils/color.test.ts +133 -0
  624. package/src/utils/color.ts +148 -0
  625. package/src/utils/composeEventHandlers.test.ts +71 -0
  626. package/src/utils/composeEventHandlers.ts +44 -0
  627. package/src/utils/index.ts +4 -0
  628. package/src/utils/mergeProps.test.ts +166 -0
  629. package/src/utils/sharedResizeObserver.test.ts +2 -2
  630. package/src/utils/timeParser.test.ts +13 -0
  631. package/src/utils/timeParser.ts +8 -5
  632. package/dist/Carousel/carousel.markers.stylex.d.ts +0 -7
  633. package/dist/Carousel/carousel.markers.stylex.d.ts.map +0 -1
  634. package/dist/Carousel/carousel.markers.stylex.js +0 -12
  635. package/src/Carousel/carousel.markers.stylex.ts +0 -10
@@ -4,26 +4,28 @@
4
4
 
5
5
  /**
6
6
  * @file CodeBlock.tsx
7
- * @input Uses React, StyleX, theme tokens, CSS Custom Highlight API
7
+ * @input Uses React, StyleX, theme tokens, CSS Custom Highlight API, SyntaxTheme provider
8
8
  * @output Exports CodeBlock component and CodeBlockProps
9
9
  * @position Core implementation; read-only syntax-highlighted code display
10
10
  */
11
- import { useInsertionEffect, useEffect, useRef, useState, useCallback, useMemo } from 'react';
11
+ import { useInsertionEffect, useEffect, useId, useRef, useState, useCallback, useMemo } from 'react';
12
12
  import * as React from 'react';
13
13
  import * as stylex from '@stylexjs/stylex';
14
14
  import "../theme/tokens.stylex.js";
15
15
  import { colorVars, spacingVars, radiusVars, typographyVars, fontWeightVars, typeScaleVars, borderVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
16
16
  import { mergeProps } from "../utils/index.js";
17
+ import { useAnnounce } from "../hooks/useAnnounce.js";
17
18
  import { Icon } from "../Icon/index.js";
18
19
  import { tokenize, tokenizeAsync, flatTokensToLines, SYNC_TOKENIZE_THRESHOLD } from "./tokenizer.js";
19
20
  import { ensureHighlightStyles } from "./highlightStyles.js";
20
21
  import { applyHighlightRangesChunked } from "./highlightRanges.js";
21
22
  import { themeProps } from "../utils/themeProps.js";
23
+ import { SyntaxTheme } from "../theme/syntax/index.js";
22
24
 
23
25
  // ---------------------------------------------------------------------------
24
26
  // Styles
25
27
  // ---------------------------------------------------------------------------
26
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
28
+ import { jsxDEV as _jsxDEV, Fragment as _Fragment } from "react/jsx-dev-runtime";
27
29
  const containerStyles = {
28
30
  card: {
29
31
  kaIpWk: "xh6dtrn",
@@ -131,10 +133,10 @@ const CodeChunk = /*#__PURE__*/React.memo(function CodeChunk({
131
133
  highlightSet,
132
134
  renderLineContent
133
135
  }) {
134
- return /*#__PURE__*/_jsx(_Fragment, {
136
+ return /*#__PURE__*/_jsxDEV(_Fragment, {
135
137
  children: lines.map((line, j) => {
136
138
  const i = startIndex + j;
137
- return /*#__PURE__*/_jsx("div", {
139
+ return /*#__PURE__*/_jsxDEV("div", {
138
140
  "data-line": i + 1,
139
141
  ...{
140
142
  0: {
@@ -145,26 +147,26 @@ const CodeChunk = /*#__PURE__*/React.memo(function CodeChunk({
145
147
  }
146
148
  }[!!(highlightSet?.has(i + 1) ?? false) << 0],
147
149
  children: renderLineContent(line, i)
148
- }, i);
150
+ }, i, false);
149
151
  })
150
- });
152
+ }, void 0, false);
151
153
  });
152
154
  function renderLines(lines, highlightSet, renderLineContent, chunkSize = LINE_CHUNK_SIZE) {
153
155
  chunkSize = Math.max(1, Math.floor(chunkSize));
154
156
  if (lines.length < LINE_CHUNK_THRESHOLD) {
155
- return /*#__PURE__*/_jsx(CodeChunk, {
157
+ return /*#__PURE__*/_jsxDEV(CodeChunk, {
156
158
  lines: lines,
157
159
  startIndex: 0,
158
160
  highlightSet: highlightSet,
159
161
  renderLineContent: renderLineContent
160
- });
162
+ }, void 0, false);
161
163
  }
162
164
  const chunks = [];
163
165
  for (let start = 0; start < lines.length; start += chunkSize) {
164
166
  const end = Math.min(start + chunkSize, lines.length);
165
167
  const chunkLines = lines.slice(start, end);
166
168
  const estimatedHeight = `${chunkLines.length}lh`;
167
- chunks.push(/*#__PURE__*/_jsx("div", {
169
+ chunks.push(/*#__PURE__*/_jsxDEV("div", {
168
170
  ...mergeProps({
169
171
  className: "xb5mbof"
170
172
  }, {
@@ -172,13 +174,13 @@ function renderLines(lines, highlightSet, renderLineContent, chunkSize = LINE_CH
172
174
  containIntrinsicBlockSize: `auto ${estimatedHeight}`
173
175
  }
174
176
  }),
175
- children: /*#__PURE__*/_jsx(CodeChunk, {
177
+ children: /*#__PURE__*/_jsxDEV(CodeChunk, {
176
178
  lines: chunkLines,
177
179
  startIndex: start,
178
180
  highlightSet: highlightSet,
179
181
  renderLineContent: renderLineContent
180
- })
181
- }, start));
182
+ }, void 0, false)
183
+ }, start, false));
182
184
  }
183
185
  return chunks;
184
186
  }
@@ -276,10 +278,10 @@ function buildSpanLine(lineText, tokens) {
276
278
  parts.push(lineText.slice(cursor, token.start));
277
279
  }
278
280
  const end = Math.min(token.end, lineText.length);
279
- parts.push(/*#__PURE__*/_jsx("span", {
281
+ parts.push(/*#__PURE__*/_jsxDEV("span", {
280
282
  className: `astryx-token-${token.type} xds-token-${token.type}`,
281
283
  children: lineText.slice(token.start, end)
282
- }, `${token.start}-${token.type}`));
284
+ }, `${token.start}-${token.type}`, false));
283
285
  cursor = end;
284
286
  }
285
287
  if (cursor < lineText.length) {
@@ -301,10 +303,10 @@ function SpanCodeContent({
301
303
  const tokens = tokenLines[lineIndex] ?? [];
302
304
  return buildSpanLine(line, tokens);
303
305
  }, [tokenLines]);
304
- return /*#__PURE__*/_jsx("code", {
306
+ return /*#__PURE__*/_jsxDEV("code", {
305
307
  ...stylex.props(styles.code, sizeStyle, isWrapped && styles.codeWrapped),
306
308
  children: renderLines(lines, highlightSet, renderLineContent)
307
- });
309
+ }, void 0, false);
308
310
  }
309
311
 
310
312
  // ---------------------------------------------------------------------------
@@ -331,11 +333,11 @@ function RangeCodeContent({
331
333
  return applyHighlightRangesChunked(codeEl, tokenLines);
332
334
  }, [tokenLines]);
333
335
  const renderLineContent = useCallback(line => line || '\u200b', []);
334
- return /*#__PURE__*/_jsx("code", {
336
+ return /*#__PURE__*/_jsxDEV("code", {
335
337
  ref: codeRef,
336
338
  ...stylex.props(styles.code, sizeStyle, isWrapped && styles.codeWrapped),
337
339
  children: renderLines(lines, highlightSet, renderLineContent)
338
- });
340
+ }, void 0, false);
339
341
  }
340
342
 
341
343
  // ---------------------------------------------------------------------------
@@ -369,6 +371,7 @@ export function CodeBlock({
369
371
  container = 'card',
370
372
  tokenizer: customTokenizer,
371
373
  highlightMode = 'auto',
374
+ syntaxTheme,
372
375
  xstyle,
373
376
  className,
374
377
  style,
@@ -376,6 +379,17 @@ export function CodeBlock({
376
379
  ...props
377
380
  }) {
378
381
  const [copied, setCopied] = useState(false);
382
+ const copyResetTimerRef = useRef(null);
383
+ const announce = useAnnounce();
384
+
385
+ // Clear a pending "copied" reset when the block unmounts.
386
+ useEffect(() => {
387
+ return () => {
388
+ if (copyResetTimerRef.current != null) {
389
+ clearTimeout(copyResetTimerRef.current);
390
+ }
391
+ };
392
+ }, []);
379
393
  const useSpans = highlightMode === 'spans' || highlightMode === 'auto' && !hasHighlightAPI() || highlightMode === 'auto' && isSafari();
380
394
  const lines = useMemo(() => {
381
395
  const l = code.split('\n');
@@ -390,28 +404,44 @@ export function CodeBlock({
390
404
  try {
391
405
  await navigator.clipboard.writeText(code);
392
406
  setCopied(true);
407
+ // Swapping the button's aria-label alone isn't reliably announced by
408
+ // screen readers, so confirm the copy via a polite live region.
409
+ announce('Copied');
393
410
  onCopy?.();
394
- setTimeout(() => setCopied(false), 2000);
411
+ // Restart the reset timer on every copy — otherwise a rapid re-copy
412
+ // is reverted early by the previous click's timer.
413
+ if (copyResetTimerRef.current != null) {
414
+ clearTimeout(copyResetTimerRef.current);
415
+ }
416
+ copyResetTimerRef.current = setTimeout(() => {
417
+ copyResetTimerRef.current = null;
418
+ setCopied(false);
419
+ }, 2000);
395
420
  } catch {
396
421
  // Clipboard failures leave the copied state unchanged.
397
422
  }
398
- }, [code, onCopy]);
423
+ }, [code, onCopy, announce]);
399
424
  const sizeStyle = size === 'sm' ? styles.sizeSm : styles.sizeMd;
400
425
  const gutterSizeStyle = size === 'sm' ? styles.gutterSm : styles.gutterMd;
401
426
  const languageLabel = hasLanguageLabel && language !== 'plaintext' ? language : null;
402
427
  const showHeader = title != null || languageLabel != null;
403
428
  const canCollapse = isCollapsible && lines.length >= collapsibleThreshold;
404
429
  const [isCollapsed, setIsCollapsed] = useState(false);
430
+ // Links the collapsible header to the code region it shows/hides so assistive
431
+ // tech can move from the button to its controlled content (disclosure
432
+ // pattern). The region stays mounted when collapsed (CSS grid animation), so
433
+ // this is always a resolvable reference — aria-controls can be unconditional.
434
+ const regionId = useId();
405
435
  const scrollContainerRef = useRef(null);
406
436
  const scrollStyle = maxHeight ? {
407
437
  maxHeight: typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight
408
438
  } : undefined;
409
- const copyIcon = /*#__PURE__*/_jsx(Icon, {
439
+ const copyIcon = /*#__PURE__*/_jsxDEV(Icon, {
410
440
  icon: copied ? 'check' : 'copy',
411
441
  size: "sm",
412
442
  color: "inherit"
413
- });
414
- const copyButtonEl = hasCopyButton ? /*#__PURE__*/_jsx("button", {
443
+ }, void 0, false);
444
+ const copyButtonEl = hasCopyButton ? /*#__PURE__*/_jsxDEV("button", {
415
445
  type: "button",
416
446
  onClick: e => {
417
447
  // Stop propagation so copying does not toggle the collapsible header.
@@ -428,8 +458,8 @@ export function CodeBlock({
428
458
  }
429
459
  }[!!!showHeader << 0],
430
460
  children: copyIcon
431
- }) : null;
432
- const headerEl = showHeader ? /*#__PURE__*/_jsxs("div", {
461
+ }, void 0, false) : null;
462
+ const headerEl = showHeader ? /*#__PURE__*/_jsxDEV("div", {
433
463
  ...{
434
464
  0: {
435
465
  className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1"
@@ -438,10 +468,11 @@ export function CodeBlock({
438
468
  className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1 x92x3c3 x1q0q8m5 xw8gpjh"
439
469
  }
440
470
  }[!!hasLineNumbers << 0],
441
- children: [/*#__PURE__*/_jsx("div", {
471
+ children: [/*#__PURE__*/_jsxDEV("div", {
442
472
  role: canCollapse ? 'button' : undefined,
443
473
  tabIndex: canCollapse ? 0 : undefined,
444
474
  "aria-expanded": canCollapse ? !isCollapsed : undefined,
475
+ "aria-controls": canCollapse ? regionId : undefined,
445
476
  onClick: canCollapse ? () => setIsCollapsed(prev => !prev) : undefined,
446
477
  onKeyDown: canCollapse ? e => {
447
478
  if (e.key === 'Enter' || e.key === ' ') {
@@ -454,14 +485,14 @@ export function CodeBlock({
454
485
  className: "x78zum5 x6s0dn4 x98rzlu xeuugli x1717udv xjbqb8w x1heor9g xln7xf2 x1yc453h"
455
486
  },
456
487
  1: {
457
- className: "x78zum5 x6s0dn4 x98rzlu xeuugli x1717udv xjbqb8w x1heor9g xln7xf2 x1yc453h x1ypdohk x87ps6o"
488
+ className: "x78zum5 x6s0dn4 x98rzlu xeuugli x1717udv xjbqb8w x1heor9g xln7xf2 x1yc453h x1ypdohk x87ps6o x17nn4n9 x1wfwxd8 x7s97pk"
458
489
  }
459
490
  }[!!canCollapse << 0],
460
- children: /*#__PURE__*/_jsxs("span", {
491
+ children: /*#__PURE__*/_jsxDEV("span", {
461
492
  ...{
462
493
  className: "x78zum5 x6s0dn4 xzye2dw x141an7d x9m5x89 x1e4wzip x1mjzq1q x1ghz6dp x1ltkj2j"
463
494
  },
464
- children: [title, title && languageLabel ? ' — ' : '', languageLabel, canCollapse && /*#__PURE__*/_jsx("span", {
495
+ children: [title, title && languageLabel ? ' — ' : '', languageLabel, canCollapse && /*#__PURE__*/_jsxDEV("span", {
465
496
  ...{
466
497
  0: {
467
498
  className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg x1mjzq1q x11xpdln xuedmi6 xlr8y92"
@@ -470,16 +501,16 @@ export function CodeBlock({
470
501
  className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg x1mjzq1q x11xpdln xuedmi6 xlr8y92 x19jd1h0"
471
502
  }
472
503
  }[!!isCollapsed << 0],
473
- children: /*#__PURE__*/_jsx(Icon, {
504
+ children: /*#__PURE__*/_jsxDEV(Icon, {
474
505
  icon: "chevronDown",
475
506
  size: "xsm",
476
507
  color: "inherit"
477
- })
478
- })]
479
- })
480
- }), copyButtonEl]
481
- }) : null;
482
- const codeBody = /*#__PURE__*/_jsx("div", {
508
+ }, void 0, false)
509
+ }, void 0, false)]
510
+ }, void 0, true)
511
+ }, void 0, false), copyButtonEl]
512
+ }, void 0, true) : null;
513
+ const codeBody = /*#__PURE__*/_jsxDEV("div", {
483
514
  ref: scrollContainerRef
484
515
  // The scroll container is keyboard-focusable so keyboard users can
485
516
  // scroll long or wide code that overflows the viewport. Uses
@@ -494,7 +525,7 @@ export function CodeBlock({
494
525
  }, {
495
526
  style: scrollStyle
496
527
  }),
497
- children: /*#__PURE__*/_jsxs("div", {
528
+ children: /*#__PURE__*/_jsxDEV("div", {
498
529
  ...{
499
530
  0: {
500
531
  className: "x78zum5 x1pshirs"
@@ -503,34 +534,34 @@ export function CodeBlock({
503
534
  className: "x78zum5 x1pshirs x1ajqlyv"
504
535
  }
505
536
  }[!!(showHeader && !hasLineNumbers) << 0],
506
- children: [hasLineNumbers && /*#__PURE__*/_jsx("div", {
537
+ children: [hasLineNumbers && /*#__PURE__*/_jsxDEV("div", {
507
538
  ...stylex.props(styles.gutter, gutterSizeStyle),
508
539
  "aria-hidden": "true",
509
540
  children: lines.map((_, i) =>
510
541
  /*#__PURE__*/
511
542
  // eslint-disable-next-line @eslint-react/no-array-index-key -- gutter line numbers are positional by definition
512
- _jsx("div", {
543
+ _jsxDEV("div", {
513
544
  ...{
514
545
  className: "x9m5x89 x17iicif"
515
546
  },
516
547
  children: i + 1
517
- }, i))
518
- }), useSpans ? /*#__PURE__*/_jsx(SpanCodeContent, {
548
+ }, i, false))
549
+ }, void 0, false), useSpans ? /*#__PURE__*/_jsxDEV(SpanCodeContent, {
519
550
  lines: lines,
520
551
  tokenLines: tokenLines,
521
552
  highlightSet: highlightSet,
522
553
  isWrapped: isWrapped,
523
554
  sizeStyle: sizeStyle
524
- }) : /*#__PURE__*/_jsx(RangeCodeContent, {
555
+ }, void 0, false) : /*#__PURE__*/_jsxDEV(RangeCodeContent, {
525
556
  lines: lines,
526
557
  tokenLines: tokenLines,
527
558
  highlightSet: highlightSet,
528
559
  isWrapped: isWrapped,
529
560
  sizeStyle: sizeStyle
530
- })]
531
- })
532
- });
533
- return /*#__PURE__*/_jsxs("pre", {
561
+ }, void 0, false)]
562
+ }, void 0, true)
563
+ }, void 0, false);
564
+ const block = /*#__PURE__*/_jsxDEV("pre", {
534
565
  ref: ref,
535
566
  ...mergeProps(themeProps('codeblock', {
536
567
  size,
@@ -538,7 +569,8 @@ export function CodeBlock({
538
569
  container
539
570
  }), stylex.props(styles.root, dynamicStyles.width(widthProp), containerStyles[container], xstyle), className, style),
540
571
  ...props,
541
- children: [headerEl, canCollapse ? /*#__PURE__*/_jsx("div", {
572
+ children: [headerEl, canCollapse ? /*#__PURE__*/_jsxDEV("div", {
573
+ id: regionId,
542
574
  ...{
543
575
  0: {
544
576
  className: "xrvj5dj x1tu4anv x1qn9uv2 x80gvsz xlr8y92"
@@ -547,13 +579,17 @@ export function CodeBlock({
547
579
  className: "xrvj5dj x1qn9uv2 x80gvsz xlr8y92 xihq33y"
548
580
  }
549
581
  }[!!isCollapsed << 0],
550
- children: /*#__PURE__*/_jsx("div", {
582
+ children: /*#__PURE__*/_jsxDEV("div", {
551
583
  ...{
552
584
  className: "xb3r6kr x2lwn1j"
553
585
  },
554
586
  children: codeBody
555
- })
556
- }) : codeBody, !showHeader && copyButtonEl]
557
- });
587
+ }, void 0, false)
588
+ }, void 0, false) : codeBody, !showHeader && copyButtonEl]
589
+ }, void 0, true);
590
+ return syntaxTheme ? /*#__PURE__*/_jsxDEV(SyntaxTheme, {
591
+ theme: syntaxTheme,
592
+ children: block
593
+ }, void 0, false) : block;
558
594
  }
559
595
  CodeBlock.displayName = 'CodeBlock';
@@ -1,14 +1,20 @@
1
1
  /**
2
2
  * @file Collapsible.tsx
3
- * @input Uses React, StyleX, useCollapsible hook, getIcon, theme tokens
3
+ * @input Uses React, StyleX, useCollapsible hook, CollapsibleGroupPresentationContext, getIcon, theme tokens
4
4
  * @output Exports Collapsible component and CollapsibleProps
5
5
  * @position Collapsible content primitive — trigger toggles visibility of children
6
6
  *
7
7
  * Collapsible is a standalone primitive that makes any content collapsible.
8
8
  * It renders a trigger area (always visible) and a content area that toggles.
9
- * Handles state management, accessibility (aria-expanded), and chevron indicator.
9
+ * Handles state management, accessibility (aria-expanded + aria-controls linking
10
+ * the trigger to its content region), and chevron indicator.
10
11
  *
11
12
  * Works standalone or coordinated by CollapsibleGroup via the `value` prop.
13
+ * When the surrounding CollapsibleGroup sets `hasDividers`, each Collapsible
14
+ * draws its own row chrome (borderBlockStart suppressed on :first-child, plus
15
+ * density padding) from CollapsibleGroupPresentationContext — StyleX has no
16
+ * child selectors, so the group cannot draw it from outside. The presentation
17
+ * context is reset around children so nested collapsibles stay chrome-free.
12
18
  *
13
19
  * SYNC: When modified, update these files to stay in sync:
14
20
  * - /packages/core/src/Collapsible/index.ts (exports)
@@ -16,7 +22,7 @@
16
22
  * - /apps/storybook/stories/Collapsible.stories.tsx
17
23
  * - /packages/cli/templates/blocks/components/Collapsible/ (showcase blocks)
18
24
  */
19
- import type { ReactNode } from 'react';
25
+ import { type ReactNode } from 'react';
20
26
  import type { BaseProps } from '../BaseProps';
21
27
  export interface CollapsibleProps extends BaseProps {
22
28
  /** Ref forwarded to the root element */
@@ -1 +1 @@
1
- {"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../src/Collapsible/Collapsible.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAcrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsD5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,OAAO,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,aAAa,EACb,MAAM,EAAE,gBAAgB,EACxB,YAAY,EACZ,KAAK,EACL,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,+BA8ClB;yBA1De,WAAW"}
1
+ {"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../src/Collapsible/Collapsible.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAa,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAgBjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAkG5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,OAAO,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,aAAa,EACb,MAAM,EAAE,gBAAgB,EACxB,YAAY,EACZ,KAAK,EACL,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAqElB;yBAjFe,WAAW"}
@@ -4,15 +4,21 @@
4
4
 
5
5
  /**
6
6
  * @file Collapsible.tsx
7
- * @input Uses React, StyleX, useCollapsible hook, getIcon, theme tokens
7
+ * @input Uses React, StyleX, useCollapsible hook, CollapsibleGroupPresentationContext, getIcon, theme tokens
8
8
  * @output Exports Collapsible component and CollapsibleProps
9
9
  * @position Collapsible content primitive — trigger toggles visibility of children
10
10
  *
11
11
  * Collapsible is a standalone primitive that makes any content collapsible.
12
12
  * It renders a trigger area (always visible) and a content area that toggles.
13
- * Handles state management, accessibility (aria-expanded), and chevron indicator.
13
+ * Handles state management, accessibility (aria-expanded + aria-controls linking
14
+ * the trigger to its content region), and chevron indicator.
14
15
  *
15
16
  * Works standalone or coordinated by CollapsibleGroup via the `value` prop.
17
+ * When the surrounding CollapsibleGroup sets `hasDividers`, each Collapsible
18
+ * draws its own row chrome (borderBlockStart suppressed on :first-child, plus
19
+ * density padding) from CollapsibleGroupPresentationContext — StyleX has no
20
+ * child selectors, so the group cannot draw it from outside. The presentation
21
+ * context is reset around children so nested collapsibles stay chrome-free.
16
22
  *
17
23
  * SYNC: When modified, update these files to stay in sync:
18
24
  * - /packages/core/src/Collapsible/index.ts (exports)
@@ -20,20 +26,93 @@
20
26
  * - /apps/storybook/stories/Collapsible.stories.tsx
21
27
  * - /packages/cli/templates/blocks/components/Collapsible/ (showcase blocks)
22
28
  */
29
+ import { use, useId } from 'react';
23
30
  import * as stylex from '@stylexjs/stylex';
24
31
  import "../theme/tokens.stylex.js";
25
- import { colorVars, typographyVars, fontWeightVars, spacingVars, typeScaleVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
32
+ import { borderVars, colorVars, typographyVars, fontWeightVars, spacingVars, typeScaleVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
26
33
  import { useCollapsible } from "./useCollapsible.js";
34
+ import { CollapsibleGroupPresentationContext } from "./CollapsibleGroupContext.js";
27
35
  import { getIcon } from "../Icon/globalIconRegistry.js";
28
36
  import { mergeProps } from "../utils/index.js";
29
37
  import { themeProps } from "../utils/themeProps.js";
30
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
38
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
31
39
  const styles = {
32
40
  root: {
33
41
  kzqmXN: "xh8yej3",
34
42
  $$css: true
43
+ },
44
+ trigger: {
45
+ kB7OPa: "x9f619",
46
+ k1xSpc: "x78zum5",
47
+ kGNEyG: "x6s0dn4",
48
+ kjj79g: "x1qughib",
49
+ kzqmXN: "xh8yej3",
50
+ kkrTdU: "x1ypdohk",
51
+ kMv6JI: "x9ynric",
52
+ kGuDYH: "x18juvz8",
53
+ k63SB2: "x2mo6ok",
54
+ kMwMTN: "x1tgivj0",
55
+ k9WMMc: "x1yc453h",
56
+ k8WAf4: "xt970qd",
57
+ kI3sdo: "x17nn4n9",
58
+ kInvED: "x1wfwxd8 x7s97pk",
59
+ $$css: true
60
+ },
61
+ contentHidden: {
62
+ k1xSpc: "x1s85apg",
63
+ $$css: true
64
+ },
65
+ content: {
66
+ kLKAdn: "xfsso4q",
67
+ $$css: true
68
+ },
69
+ divided: {
70
+ kEafiO: "x11xkdxz x1g31smg",
71
+ kPef9Z: "x13fuv20",
72
+ kLZC3w: "x1pc3f07",
73
+ $$css: true
74
+ }
75
+ };
76
+
77
+ // Density padding for divided/padded accordion rows. paddingBlock mapping
78
+ // follows Table's density scale (spacing-1/2/3); content only pads its end
79
+ // so text doesn't sit on the divider below (block-start stays spacing-1).
80
+ const densityStyles = {
81
+ triggerCompact: {
82
+ k8WAf4: "xu0wf1k",
83
+ $$css: true
84
+ },
85
+ triggerBalanced: {
86
+ k8WAf4: "xce4md1",
87
+ $$css: true
88
+ },
89
+ triggerSpacious: {
90
+ k8WAf4: "x8o8v82",
91
+ $$css: true
92
+ },
93
+ contentCompact: {
94
+ kGO01o: "xy143xn",
95
+ $$css: true
96
+ },
97
+ contentBalanced: {
98
+ kGO01o: "x1wesfrj",
99
+ $$css: true
100
+ },
101
+ contentSpacious: {
102
+ kGO01o: "xvmdzux",
103
+ $$css: true
35
104
  }
36
105
  };
106
+ const triggerDensity = {
107
+ compact: densityStyles.triggerCompact,
108
+ balanced: densityStyles.triggerBalanced,
109
+ spacious: densityStyles.triggerSpacious
110
+ };
111
+ const contentDensity = {
112
+ compact: densityStyles.contentCompact,
113
+ balanced: densityStyles.contentBalanced,
114
+ spacious: densityStyles.contentSpacious
115
+ };
37
116
  /**
38
117
  * A primitive that makes any content collapsible.
39
118
  *
@@ -99,24 +178,32 @@ export function Collapsible({
99
178
  isCollapsible: collapsibleConfig,
100
179
  value
101
180
  });
181
+ const presentation = use(CollapsibleGroupPresentationContext);
182
+ const isDivided = presentation?.hasDividers ?? false;
183
+ const density = presentation?.density ?? null;
102
184
  const chevronIcon = getIcon('chevronDown');
103
- return /*#__PURE__*/_jsxs("div", {
185
+
186
+ // Links the trigger to the region it shows/hides so assistive tech can move
187
+ // from the button to its controlled content (disclosure pattern).
188
+ const contentId = useId();
189
+ return /*#__PURE__*/_jsxDEV("div", {
104
190
  ref: ref,
105
- ...mergeProps(themeProps('collapsible'), stylex.props(styles.root, xstyle), className, style),
191
+ ...mergeProps(themeProps('collapsible', {
192
+ density: density ?? undefined
193
+ }), stylex.props(styles.root, isDivided && styles.divided, xstyle), className, style),
106
194
  ...props,
107
- children: [/*#__PURE__*/_jsxs("button", {
195
+ children: [/*#__PURE__*/_jsxDEV("button", {
108
196
  type: "button",
109
197
  onClick: toggle,
110
198
  "aria-expanded": isOpen,
111
- ...{
112
- className: "x9f619 x78zum5 x6s0dn4 x1qughib xh8yej3 x1ypdohk x9ynric x18juvz8 x2mo6ok x1tgivj0 x1yc453h xt970qd"
113
- },
114
- children: [/*#__PURE__*/_jsx("span", {
199
+ "aria-controls": contentId,
200
+ ...stylex.props(styles.trigger, density != null && triggerDensity[density]),
201
+ children: [/*#__PURE__*/_jsxDEV("span", {
115
202
  ...{
116
203
  className: "x1b2iylo xwgcxoh"
117
204
  },
118
205
  children: trigger
119
- }), /*#__PURE__*/_jsx("span", {
206
+ }, void 0, false), /*#__PURE__*/_jsxDEV("span", {
120
207
  ...{
121
208
  0: {
122
209
  className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x11xpdln xuedmi6 xlr8y92 xv9yike x7p49u4"
@@ -126,15 +213,15 @@ export function Collapsible({
126
213
  }
127
214
  }[!!isOpen << 0],
128
215
  children: chevronIcon
129
- })]
130
- }), /*#__PURE__*/_jsx("div", {
131
- ...(isOpen ? {
132
- className: "xfsso4q"
133
- } : {
134
- className: "xfsso4q x1s85apg"
135
- }),
136
- children: children
137
- })]
138
- });
216
+ }, void 0, false)]
217
+ }, void 0, true), /*#__PURE__*/_jsxDEV("div", {
218
+ id: contentId,
219
+ ...stylex.props(styles.content, density != null && contentDensity[density], !isOpen && styles.contentHidden),
220
+ children: presentation != null ? /*#__PURE__*/_jsxDEV(CollapsibleGroupPresentationContext, {
221
+ value: null,
222
+ children: children
223
+ }, void 0, false) : children
224
+ }, void 0, false)]
225
+ }, void 0, true);
139
226
  }
140
227
  Collapsible.displayName = 'Collapsible';
@@ -1,12 +1,16 @@
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 `hasDividers` is set
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 `hasDividers` is set it renders a wrapper div
11
+ * that anchors reliable :first-child divider suppression and provides
12
+ * hasDividers/density to items via CollapsibleGroupPresentationContext — each
13
+ * Collapsible draws its own borders since StyleX has no child selectors.
10
14
  *
11
15
  * In "single" mode (default), only one item can be open at a time.
12
16
  * In "multiple" mode, any number of items can be open simultaneously.
@@ -19,6 +23,7 @@
19
23
  * - /packages/cli/templates/blocks/components/Collapsible/ (showcase blocks)
20
24
  */
21
25
  import React, { type ReactNode } from 'react';
26
+ import type { CollapsibleGroupDensity } from './CollapsibleGroupContext';
22
27
  import type { BaseProps } from '../BaseProps';
23
28
  export interface CollapsibleGroupProps extends Omit<BaseProps<HTMLElement>, 'onChange'> {
24
29
  ref?: React.Ref<HTMLElement>;
@@ -41,6 +46,21 @@ export interface CollapsibleGroupProps extends Omit<BaseProps<HTMLElement>, 'onC
41
46
  * Callback when the open item(s) change.
42
47
  */
43
48
  onChange?: (value: string | string[]) => void;
49
+ /**
50
+ * Whether to draw hairline dividers between the group's items — the
51
+ * accordion row chrome. When set, the group renders a wrapper div (it
52
+ * otherwise renders no DOM) and items get 'balanced' density unless
53
+ * `density` says otherwise. Pair with bare Collapsible children; Card-wrapped
54
+ * items provide their own separation.
55
+ * @default false
56
+ */
57
+ hasDividers?: boolean;
58
+ /**
59
+ * Row density controlling trigger and content block padding on the group's
60
+ * items. Defaults to 'balanced' when dividers are shown; otherwise items
61
+ * keep their default unpadded look.
62
+ */
63
+ density?: CollapsibleGroupDensity;
44
64
  /**
45
65
  * Children — any components that support isCollapsible + value.
46
66
  *
@@ -69,16 +89,26 @@ export interface CollapsibleGroupProps extends Omit<BaseProps<HTMLElement>, 'onC
69
89
  }
70
90
  /**
71
91
  * Groups collapsible components with coordinated open/close behavior.
72
- * Renders no wrapper DOM.
92
+ * Renders no wrapper DOM unless `hasDividers` is set.
73
93
  *
74
94
  * In "single" mode (default), opening one item closes the others.
75
95
  * In "multiple" mode, items toggle independently.
76
96
  *
77
97
  * @compositionHint Wrap Collapsible instances to coordinate their open/close state.
78
- * Each Collapsible needs a `value` prop to participate.
98
+ * Each Collapsible needs a `value` prop to participate. For FAQ-style lists,
99
+ * use `hasDividers` with bare Collapsible children instead of wrapping each
100
+ * item in Card.
79
101
  *
80
102
  * @example
81
103
  * ```
104
+ * <CollapsibleGroup type="single" hasDividers defaultValue="faq1">
105
+ * <Collapsible trigger="What is Astryx?" value="faq1">
106
+ * Astryx is a design system for building internal tools.
107
+ * </Collapsible>
108
+ * <Collapsible trigger="How do I start?" value="faq2">
109
+ * Install the package and import components.
110
+ * </Collapsible>
111
+ * </CollapsibleGroup>
82
112
  * <CollapsibleGroup type="single" defaultValue="faq1">
83
113
  * <VStack gap={2}>
84
114
  * <Card>
@@ -95,7 +125,7 @@ export interface CollapsibleGroupProps extends Omit<BaseProps<HTMLElement>, 'onC
95
125
  * </CollapsibleGroup>
96
126
  * ```
97
127
  */
98
- export declare function CollapsibleGroup({ type, defaultValue, value: controlledValue, onChange, children, }: CollapsibleGroupProps): React.JSX.Element;
128
+ export declare function CollapsibleGroup({ type, defaultValue, value: controlledValue, onChange, hasDividers, density, children, ref, xstyle, className, style, ...props }: CollapsibleGroupProps): React.JSX.Element;
99
129
  export declare namespace CollapsibleGroup {
100
130
  var displayName: string;
101
131
  }