@astryxdesign/core 0.1.4-canary.ff77e1c → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (598) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +18 -20
  4. package/dist/AlertDialog/useImperativeAlertDialog.js +3 -3
  5. package/dist/AppShell/AppShell.d.ts +1 -1
  6. package/dist/AppShell/AppShell.d.ts.map +1 -1
  7. package/dist/AppShell/AppShell.js +53 -55
  8. package/dist/AspectRatio/AspectRatio.d.ts +10 -48
  9. package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
  10. package/dist/AspectRatio/AspectRatio.js +12 -33
  11. package/dist/AspectRatio/index.d.ts +1 -1
  12. package/dist/AspectRatio/index.d.ts.map +1 -1
  13. package/dist/Avatar/Avatar.d.ts.map +1 -1
  14. package/dist/Avatar/Avatar.js +25 -27
  15. package/dist/Avatar/AvatarStatusDot.js +5 -5
  16. package/dist/AvatarGroup/AvatarGroup.js +5 -5
  17. package/dist/AvatarGroup/AvatarGroupOverflow.js +5 -5
  18. package/dist/Badge/Badge.js +3 -3
  19. package/dist/Banner/Banner.d.ts.map +1 -1
  20. package/dist/Banner/Banner.js +25 -32
  21. package/dist/Blockquote/Blockquote.js +7 -7
  22. package/dist/Breadcrumbs/BreadcrumbItem.js +17 -17
  23. package/dist/Breadcrumbs/Breadcrumbs.js +7 -7
  24. package/dist/Button/Button.js +19 -19
  25. package/dist/ButtonGroup/ButtonGroup.js +7 -7
  26. package/dist/Calendar/Calendar.d.ts.map +1 -1
  27. package/dist/Calendar/Calendar.js +48 -68
  28. package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
  29. package/dist/Calendar/styles.d.ts +2 -2
  30. package/dist/Calendar/styles.d.ts.map +1 -1
  31. package/dist/Calendar/styles.js +2 -2
  32. package/dist/Card/Card.d.ts +2 -4
  33. package/dist/Card/Card.d.ts.map +1 -1
  34. package/dist/Card/Card.js +10 -18
  35. package/dist/Carousel/Carousel.d.ts.map +1 -1
  36. package/dist/Carousel/Carousel.js +21 -24
  37. package/dist/Carousel/carousel.markers.stylex.d.ts +7 -0
  38. package/dist/Carousel/carousel.markers.stylex.d.ts.map +1 -0
  39. package/dist/Carousel/carousel.markers.stylex.js +12 -0
  40. package/dist/Center/Center.js +3 -3
  41. package/dist/Chat/ChatComposer.js +23 -23
  42. package/dist/Chat/ChatComposerDrawer.js +14 -14
  43. package/dist/Chat/ChatComposerInput.d.ts +1 -1
  44. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  45. package/dist/Chat/ChatComposerInput.js +15 -27
  46. package/dist/Chat/ChatDictationButton.d.ts +1 -1
  47. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  48. package/dist/Chat/ChatDictationButton.js +11 -13
  49. package/dist/Chat/ChatLayout.js +17 -17
  50. package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
  51. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  52. package/dist/Chat/ChatLayoutScrollButton.js +10 -12
  53. package/dist/Chat/ChatMessage.js +12 -12
  54. package/dist/Chat/ChatMessageBubble.js +7 -7
  55. package/dist/Chat/ChatMessageList.js +14 -14
  56. package/dist/Chat/ChatMessageMetadata.d.ts +1 -1
  57. package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
  58. package/dist/Chat/ChatMessageMetadata.js +12 -14
  59. package/dist/Chat/ChatPastedTextToken.js +13 -13
  60. package/dist/Chat/ChatSendButton.js +3 -3
  61. package/dist/Chat/ChatSystemMessage.d.ts +1 -1
  62. package/dist/Chat/ChatSystemMessage.d.ts.map +1 -1
  63. package/dist/Chat/ChatSystemMessage.js +17 -17
  64. package/dist/Chat/ChatTokenizedText.d.ts +1 -1
  65. package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
  66. package/dist/Chat/ChatTokenizedText.js +15 -24
  67. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  68. package/dist/Chat/ChatToolCalls.js +74 -81
  69. package/dist/Chat/index.d.ts +1 -1
  70. package/dist/Chat/index.d.ts.map +1 -1
  71. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  72. package/dist/Chat/useTriggerMenu.js +15 -15
  73. package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
  74. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  75. package/dist/CheckboxInput/CheckboxInput.js +23 -25
  76. package/dist/CheckboxList/CheckboxList.js +9 -9
  77. package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
  78. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  79. package/dist/CheckboxList/CheckboxListItem.js +6 -8
  80. package/dist/Citation/Citation.js +10 -10
  81. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  82. package/dist/ClickableCard/ClickableCard.js +9 -32
  83. package/dist/Code/Code.js +3 -3
  84. package/dist/CodeBlock/CodeBlock.d.ts +1 -10
  85. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  86. package/dist/CodeBlock/CodeBlock.js +52 -88
  87. package/dist/Collapsible/Collapsible.d.ts +3 -9
  88. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  89. package/dist/Collapsible/Collapsible.js +22 -110
  90. package/dist/Collapsible/CollapsibleGroup.d.ts +7 -39
  91. package/dist/Collapsible/CollapsibleGroup.d.ts.map +1 -1
  92. package/dist/Collapsible/CollapsibleGroup.js +12 -73
  93. package/dist/Collapsible/CollapsibleGroupContext.d.ts +0 -31
  94. package/dist/Collapsible/CollapsibleGroupContext.d.ts.map +1 -1
  95. package/dist/Collapsible/CollapsibleGroupContext.js +3 -33
  96. package/dist/Collapsible/index.d.ts +0 -1
  97. package/dist/Collapsible/index.d.ts.map +1 -1
  98. package/dist/Collapsible/useCollapsible.d.ts +1 -4
  99. package/dist/Collapsible/useCollapsible.d.ts.map +1 -1
  100. package/dist/Collapsible/useCollapsible.js +6 -20
  101. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  102. package/dist/CommandPalette/CommandPalette.js +34 -36
  103. package/dist/CommandPalette/CommandPaletteEmpty.js +3 -3
  104. package/dist/CommandPalette/CommandPaletteFooter.js +16 -16
  105. package/dist/CommandPalette/CommandPaletteGroup.js +5 -5
  106. package/dist/CommandPalette/CommandPaletteInput.js +13 -13
  107. package/dist/CommandPalette/CommandPaletteItem.js +3 -3
  108. package/dist/CommandPalette/CommandPaletteList.js +3 -3
  109. package/dist/ContextMenu/ContextMenu.d.ts +2 -7
  110. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  111. package/dist/ContextMenu/ContextMenu.js +43 -76
  112. package/dist/DateInput/DateInput.js +18 -18
  113. package/dist/DateRangeInput/DateRangeInput.js +21 -21
  114. package/dist/DateTimeInput/DateTimeInput.d.ts +2 -5
  115. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  116. package/dist/DateTimeInput/DateTimeInput.js +26 -30
  117. package/dist/DateTimeInput/index.d.ts +1 -1
  118. package/dist/DateTimeInput/index.d.ts.map +1 -1
  119. package/dist/Dialog/Dialog.js +9 -9
  120. package/dist/Dialog/DialogHeader.js +16 -16
  121. package/dist/Dialog/useImperativeDialog.js +3 -3
  122. package/dist/Divider/Divider.js +7 -7
  123. package/dist/DropdownMenu/DropdownMenu.js +10 -10
  124. package/dist/DropdownMenu/DropdownMenuItem.d.ts +17 -2
  125. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  126. package/dist/DropdownMenu/DropdownMenuItem.js +3 -3
  127. package/dist/DropdownMenu/renderDropdownItems.js +10 -10
  128. package/dist/EmptyState/EmptyState.js +9 -9
  129. package/dist/Field/Field.js +17 -17
  130. package/dist/Field/FieldLabel.js +15 -15
  131. package/dist/Field/InputClearButton.js +5 -5
  132. package/dist/FieldStatus/FieldStatus.js +3 -3
  133. package/dist/FileInput/FileInput.js +29 -29
  134. package/dist/FormLayout/FormLayout.js +5 -5
  135. package/dist/Grid/Grid.d.ts +3 -4
  136. package/dist/Grid/Grid.d.ts.map +1 -1
  137. package/dist/Grid/Grid.js +12 -29
  138. package/dist/Grid/GridSpan.js +3 -3
  139. package/dist/HStack/HStack.js +3 -3
  140. package/dist/Heading/Heading.js +10 -10
  141. package/dist/HoverCard/HoverCard.js +9 -9
  142. package/dist/HoverCard/useHoverCard.d.ts +1 -5
  143. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  144. package/dist/HoverCard/useHoverCard.js +3 -3
  145. package/dist/Icon/Icon.d.ts.map +1 -1
  146. package/dist/Icon/Icon.js +12 -16
  147. package/dist/Icon/defaultIcons.js +116 -116
  148. package/dist/IconButton/IconButton.js +3 -3
  149. package/dist/InputGroup/InputGroup.js +11 -11
  150. package/dist/InputGroup/InputGroupText.js +3 -3
  151. package/dist/Item/Item.js +18 -18
  152. package/dist/Kbd/Kbd.js +5 -5
  153. package/dist/Layer/LayerProvider.js +7 -7
  154. package/dist/Layer/useLayer.d.ts +2 -29
  155. package/dist/Layer/useLayer.d.ts.map +1 -1
  156. package/dist/Layer/useLayer.js +31 -44
  157. package/dist/Layout/Layout.js +21 -21
  158. package/dist/Layout/LayoutContent.js +3 -3
  159. package/dist/Layout/LayoutFooter.js +5 -5
  160. package/dist/Layout/LayoutHeader.js +5 -5
  161. package/dist/Layout/LayoutPanel.js +3 -3
  162. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  163. package/dist/Lightbox/Lightbox.js +31 -55
  164. package/dist/Lightbox/useLightbox.js +3 -3
  165. package/dist/Link/Link.js +15 -15
  166. package/dist/Link/LinkProvider.js +3 -3
  167. package/dist/Link/useLinkify.js +3 -3
  168. package/dist/List/List.js +11 -11
  169. package/dist/List/ListItem.js +11 -11
  170. package/dist/Markdown/Markdown.d.ts.map +1 -1
  171. package/dist/Markdown/Markdown.js +102 -102
  172. package/dist/MetadataList/MetadataList.js +10 -10
  173. package/dist/MetadataList/MetadataListItem.js +15 -15
  174. package/dist/MobileNav/MobileNav.d.ts +1 -1
  175. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  176. package/dist/MobileNav/MobileNav.js +23 -26
  177. package/dist/MobileNav/MobileNavToggle.js +5 -5
  178. package/dist/MoreMenu/MoreMenu.js +3 -3
  179. package/dist/MultiSelector/MultiSelector.js +56 -56
  180. package/dist/NavIcon/NavIcon.js +3 -3
  181. package/dist/NavMenu/NavHeadingMenu.js +5 -5
  182. package/dist/NavMenu/NavHeadingMenuItem.js +8 -8
  183. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  184. package/dist/NumberInput/NumberInput.js +32 -48
  185. package/dist/Outline/Outline.js +15 -15
  186. package/dist/OverflowList/OverflowList.js +8 -8
  187. package/dist/Overlay/Overlay.js +3 -3
  188. package/dist/Overlay/OverlayScrim.js +5 -5
  189. package/dist/Overlay/useOverlay.js +3 -3
  190. package/dist/Pagination/Pagination.d.ts +1 -1
  191. package/dist/Pagination/Pagination.d.ts.map +1 -1
  192. package/dist/Pagination/Pagination.js +72 -125
  193. package/dist/Popover/Popover.js +16 -16
  194. package/dist/Popover/usePopover.js +7 -7
  195. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  196. package/dist/PowerSearch/PowerSearch.js +92 -110
  197. package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
  198. package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
  199. package/dist/PowerSearch/PowerSearchToken.js +5 -5
  200. package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
  201. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  202. package/dist/ProgressBar/ProgressBar.js +18 -25
  203. package/dist/RadioList/RadioList.js +7 -7
  204. package/dist/RadioList/RadioListItem.d.ts +1 -1
  205. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  206. package/dist/RadioList/RadioListItem.js +21 -24
  207. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  208. package/dist/Resizable/ResizeHandle.js +10 -28
  209. package/dist/Section/Section.js +5 -5
  210. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  211. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  212. package/dist/SegmentedControl/SegmentedControl.js +10 -32
  213. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  214. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  215. package/dist/SegmentedControl/SegmentedControlItem.js +12 -18
  216. package/dist/SelectableCard/SelectableCard.js +5 -5
  217. package/dist/Selector/Selector.js +46 -46
  218. package/dist/Selector/SelectorOption.js +3 -3
  219. package/dist/SideNav/SideNav.d.ts.map +1 -1
  220. package/dist/SideNav/SideNav.js +34 -38
  221. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  222. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  223. package/dist/SideNav/SideNavCollapseButton.js +6 -8
  224. package/dist/SideNav/SideNavHeading.js +87 -87
  225. package/dist/SideNav/SideNavItem.js +42 -42
  226. package/dist/SideNav/SideNavSection.d.ts +1 -1
  227. package/dist/SideNav/SideNavSection.d.ts.map +1 -1
  228. package/dist/SideNav/SideNavSection.js +16 -18
  229. package/dist/Skeleton/Skeleton.js +3 -3
  230. package/dist/Slider/Slider.js +23 -23
  231. package/dist/Spinner/Spinner.js +9 -9
  232. package/dist/StatusDot/StatusDot.js +5 -5
  233. package/dist/Switch/Switch.d.ts +4 -8
  234. package/dist/Switch/Switch.d.ts.map +1 -1
  235. package/dist/Switch/Switch.js +29 -34
  236. package/dist/TabList/Tab.js +18 -18
  237. package/dist/TabList/TabList.js +5 -5
  238. package/dist/TabList/TabMenu.d.ts.map +1 -1
  239. package/dist/TabList/TabMenu.js +30 -57
  240. package/dist/TabList/tab.markers.stylex.d.ts +1 -1
  241. package/dist/Table/BaseTable.d.ts.map +1 -1
  242. package/dist/Table/BaseTable.js +39 -50
  243. package/dist/Table/Table.js +7 -7
  244. package/dist/Table/TableBody.d.ts +1 -1
  245. package/dist/Table/TableBody.d.ts.map +1 -1
  246. package/dist/Table/TableBody.js +5 -9
  247. package/dist/Table/TableCell.js +3 -3
  248. package/dist/Table/TableFooter.d.ts +1 -1
  249. package/dist/Table/TableFooter.d.ts.map +1 -1
  250. package/dist/Table/TableFooter.js +5 -9
  251. package/dist/Table/TableHeader.d.ts +1 -1
  252. package/dist/Table/TableHeader.d.ts.map +1 -1
  253. package/dist/Table/TableHeader.js +5 -9
  254. package/dist/Table/TableHeaderCell.js +3 -3
  255. package/dist/Table/TableRow.js +5 -5
  256. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  257. package/dist/Table/plugins/columnResize/useTableColumnResize.js +11 -14
  258. package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
  259. package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
  260. package/dist/Table/plugins/pagination/paginateData.js +1 -5
  261. package/dist/Table/plugins/pagination/useTablePagination.js +7 -7
  262. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +22 -22
  263. package/dist/Table/plugins/selection/useTableSelection.js +18 -18
  264. package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
  265. package/dist/Table/plugins/selection/useTableSelectionState.js +1 -11
  266. package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
  267. package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
  268. package/dist/Table/plugins/sortable/useTableSortableState.js +4 -8
  269. package/dist/Table/tableContextMenu.js +9 -9
  270. package/dist/Text/Text.js +10 -10
  271. package/dist/TextArea/TextArea.js +14 -14
  272. package/dist/TextInput/TextInput.js +15 -15
  273. package/dist/Thumbnail/Thumbnail.d.ts +2 -3
  274. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  275. package/dist/Thumbnail/Thumbnail.js +29 -30
  276. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  277. package/dist/TimeInput/TimeInput.js +21 -26
  278. package/dist/Timestamp/Timestamp.d.ts +1 -1
  279. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  280. package/dist/Timestamp/Timestamp.js +26 -37
  281. package/dist/Toast/Toast.d.ts.map +1 -1
  282. package/dist/Toast/Toast.js +17 -25
  283. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  284. package/dist/Toast/ToastViewport.js +11 -23
  285. package/dist/Toast/useToast.d.ts.map +1 -1
  286. package/dist/Toast/useToast.js +4 -44
  287. package/dist/ToggleButton/ToggleButton.js +12 -12
  288. package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
  289. package/dist/Token/Token.js +21 -21
  290. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  291. package/dist/Tokenizer/Tokenizer.js +34 -36
  292. package/dist/Toolbar/Toolbar.js +18 -18
  293. package/dist/Tooltip/Tooltip.js +11 -11
  294. package/dist/Tooltip/useTooltip.d.ts +1 -5
  295. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  296. package/dist/Tooltip/useTooltip.js +3 -3
  297. package/dist/TopNav/TopNav.js +32 -32
  298. package/dist/TopNav/TopNavHeading.js +67 -67
  299. package/dist/TopNav/TopNavItem.js +5 -5
  300. package/dist/TopNav/TopNavMegaMenu.js +30 -30
  301. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  302. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  303. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +14 -25
  304. package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
  305. package/dist/TopNav/TopNavMenu.js +32 -32
  306. package/dist/TreeList/TreeList.js +8 -8
  307. package/dist/TreeList/TreeListBranches.js +11 -11
  308. package/dist/TreeList/TreeListItem.js +30 -30
  309. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  310. package/dist/Typeahead/BaseTypeahead.js +20 -23
  311. package/dist/Typeahead/Typeahead.js +12 -12
  312. package/dist/Typeahead/TypeaheadItem.js +10 -10
  313. package/dist/VStack/VStack.js +3 -3
  314. package/dist/astryx.css +0 -7
  315. package/dist/astryx.umd.js +59 -59
  316. package/dist/astryx.umd.js.map +4 -4
  317. package/dist/docs-types.d.ts +2 -8
  318. package/dist/docs-types.d.ts.map +1 -1
  319. package/dist/hooks/focusableSelector.d.ts +1 -1
  320. package/dist/hooks/focusableSelector.d.ts.map +1 -1
  321. package/dist/hooks/focusableSelector.js +1 -1
  322. package/dist/hooks/index.d.ts +0 -2
  323. package/dist/hooks/index.d.ts.map +1 -1
  324. package/dist/hooks/index.js +0 -1
  325. package/dist/hooks/useFocusTrap.d.ts +0 -3
  326. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  327. package/dist/hooks/useFocusTrap.js +1 -38
  328. package/dist/hooks/useInteractiveRole.d.ts +2 -6
  329. package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
  330. package/dist/hooks/useInteractiveRole.js +2 -6
  331. package/dist/hooks/useKeyboardHint.js +9 -9
  332. package/dist/hooks/useStreamingText.d.ts +1 -3
  333. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  334. package/dist/hooks/useStreamingText.js +5 -14
  335. package/dist/theme/MediaTheme.js +3 -3
  336. package/dist/theme/Theme.js +7 -7
  337. package/dist/theme/defineTheme.d.ts +1 -1
  338. package/dist/theme/defineTheme.d.ts.map +1 -1
  339. package/dist/theme/expandColorScale.d.ts.map +1 -1
  340. package/dist/theme/expandColorScale.js +3 -10
  341. package/dist/theme/hct.d.ts +15 -0
  342. package/dist/theme/hct.d.ts.map +1 -1
  343. package/dist/theme/hct.js +9 -9
  344. package/dist/theme/syntax/SyntaxTheme.js +5 -5
  345. package/dist/theme/tokens.d.ts +2 -10
  346. package/dist/theme/tokens.d.ts.map +1 -1
  347. package/dist/theme/tokens.js +4 -220
  348. package/dist/theme/useTheme.d.ts +2 -3
  349. package/dist/theme/useTheme.d.ts.map +1 -1
  350. package/dist/theme/useTheme.js +6 -73
  351. package/dist/utils/index.d.ts +0 -3
  352. package/dist/utils/index.d.ts.map +1 -1
  353. package/dist/utils/index.js +1 -3
  354. package/dist/utils/timeParser.d.ts.map +1 -1
  355. package/dist/utils/timeParser.js +5 -8
  356. package/package.json +3 -3
  357. package/src/AlertDialog/AlertDialog.doc.mjs +0 -4
  358. package/src/AlertDialog/AlertDialog.tsx +0 -2
  359. package/src/AppShell/AppShell.tsx +0 -2
  360. package/src/AspectRatio/AspectRatio.doc.mjs +1 -28
  361. package/src/AspectRatio/AspectRatio.test.tsx +1 -142
  362. package/src/AspectRatio/AspectRatio.tsx +10 -70
  363. package/src/AspectRatio/index.ts +1 -5
  364. package/src/Avatar/Avatar.doc.mjs +0 -11
  365. package/src/Avatar/Avatar.test.tsx +1 -32
  366. package/src/Avatar/Avatar.tsx +20 -12
  367. package/src/AvatarGroup/AvatarGroup.doc.mjs +0 -1
  368. package/src/Banner/Banner.doc.mjs +0 -8
  369. package/src/Banner/Banner.test.tsx +0 -38
  370. package/src/Banner/Banner.tsx +1 -8
  371. package/src/Calendar/Calendar.doc.mjs +1 -1
  372. package/src/Calendar/Calendar.test.tsx +17 -122
  373. package/src/Calendar/Calendar.tsx +5 -26
  374. package/src/Calendar/dayCellUtils.ts +1 -3
  375. package/src/Calendar/styles.ts +2 -12
  376. package/src/Card/Card.doc.mjs +1 -1
  377. package/src/Card/Card.tsx +6 -16
  378. package/src/Carousel/Carousel.doc.mjs +12 -12
  379. package/src/Carousel/Carousel.test.tsx +0 -13
  380. package/src/Carousel/Carousel.tsx +2 -4
  381. package/src/Carousel/carousel.markers.stylex.ts +10 -0
  382. package/src/Chat/Chat.doc.mjs +1 -1
  383. package/src/Chat/ChatComposerInput.test.tsx +1 -27
  384. package/src/Chat/ChatComposerInput.tsx +15 -20
  385. package/src/Chat/ChatDictationButton.tsx +4 -4
  386. package/src/Chat/ChatLayoutScrollButton.tsx +1 -3
  387. package/src/Chat/ChatMessageMetadata.tsx +6 -4
  388. package/src/Chat/ChatSystemMessage.test.tsx +11 -26
  389. package/src/Chat/ChatSystemMessage.tsx +7 -7
  390. package/src/Chat/ChatTokenizedText.test.tsx +16 -29
  391. package/src/Chat/ChatTokenizedText.tsx +8 -15
  392. package/src/Chat/ChatToolCalls.test.tsx +0 -55
  393. package/src/Chat/ChatToolCalls.tsx +12 -10
  394. package/src/Chat/index.ts +4 -1
  395. package/src/Chat/useTriggerMenu.tsx +4 -1
  396. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  397. package/src/CheckboxInput/CheckboxInput.test.tsx +4 -71
  398. package/src/CheckboxInput/CheckboxInput.tsx +0 -2
  399. package/src/CheckboxList/CheckboxList.test.tsx +0 -19
  400. package/src/CheckboxList/CheckboxListItem.tsx +2 -11
  401. package/src/Citation/Citation.doc.mjs +0 -5
  402. package/src/ClickableCard/ClickableCard.tsx +2 -45
  403. package/src/CodeBlock/CodeBlock.doc.mjs +2 -7
  404. package/src/CodeBlock/CodeBlock.test.tsx +3 -122
  405. package/src/CodeBlock/CodeBlock.tsx +4 -62
  406. package/src/Collapsible/Collapsible.doc.mjs +4 -8
  407. package/src/Collapsible/Collapsible.tsx +10 -86
  408. package/src/Collapsible/CollapsibleGroup.doc.mjs +3 -27
  409. package/src/Collapsible/CollapsibleGroup.test.tsx +0 -318
  410. package/src/Collapsible/CollapsibleGroup.tsx +9 -107
  411. package/src/Collapsible/CollapsibleGroupContext.tsx +2 -42
  412. package/src/Collapsible/index.ts +0 -4
  413. package/src/Collapsible/useCollapsible.ts +6 -20
  414. package/src/CommandPalette/CommandPalette.doc.mjs +0 -5
  415. package/src/CommandPalette/CommandPalette.tsx +3 -5
  416. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +0 -5
  417. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +0 -10
  418. package/src/CommandPalette/CommandPaletteInput.doc.mjs +0 -6
  419. package/src/CommandPalette/CommandPaletteItem.doc.mjs +0 -6
  420. package/src/CommandPalette/CommandPaletteList.doc.mjs +0 -9
  421. package/src/ContextMenu/ContextMenu.doc.mjs +0 -15
  422. package/src/ContextMenu/ContextMenu.test.tsx +0 -87
  423. package/src/ContextMenu/ContextMenu.tsx +28 -87
  424. package/src/ContextMenu/ContextMenuItem.doc.mjs +0 -6
  425. package/src/DateInput/DateInput.test.tsx +20 -11
  426. package/src/DateRangeInput/DateRangeInput.test.tsx +44 -31
  427. package/src/DateTimeInput/DateTimeInput.doc.mjs +2 -3
  428. package/src/DateTimeInput/DateTimeInput.test.tsx +16 -118
  429. package/src/DateTimeInput/DateTimeInput.tsx +2 -8
  430. package/src/DateTimeInput/index.ts +0 -1
  431. package/src/Dialog/Dialog.doc.mjs +0 -4
  432. package/src/Dialog/DialogHeader.doc.mjs +0 -45
  433. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
  434. package/src/DropdownMenu/DropdownMenu.test.tsx +2 -22
  435. package/src/DropdownMenu/DropdownMenuItem.tsx +17 -5
  436. package/src/EmptyState/EmptyState.doc.mjs +1 -1
  437. package/src/Field/Field.test.tsx +4 -1
  438. package/src/Field/FieldLabel.test.tsx +2 -2
  439. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +3 -0
  440. package/src/Grid/Grid.test.tsx +18 -43
  441. package/src/Grid/Grid.tsx +9 -26
  442. package/src/HoverCard/HoverCard.doc.mjs +6 -6
  443. package/src/HoverCard/useHoverCard.doc.mjs +5 -5
  444. package/src/HoverCard/useHoverCard.tsx +2 -9
  445. package/src/Icon/Icon.test.tsx +29 -41
  446. package/src/Icon/Icon.tsx +2 -6
  447. package/src/InputGroup/InputGroup.doc.mjs +0 -1
  448. package/src/InputGroup/InputGroup.tsx +2 -2
  449. package/src/Item/Item.tsx +1 -1
  450. package/src/Layer/useLayer.doc.mjs +2 -2
  451. package/src/Layer/useLayer.test.tsx +2 -221
  452. package/src/Layer/useLayer.tsx +30 -69
  453. package/src/Layout/LayoutContent.doc.mjs +0 -12
  454. package/src/Layout/LayoutPanel.doc.mjs +0 -40
  455. package/src/Lightbox/Lightbox.doc.mjs +0 -5
  456. package/src/Lightbox/Lightbox.test.tsx +2 -123
  457. package/src/Lightbox/Lightbox.tsx +1 -29
  458. package/src/Markdown/Markdown.tsx +7 -9
  459. package/src/Markdown/parser.perf.test.ts +12 -34
  460. package/src/MobileNav/MobileNav.test.tsx +0 -56
  461. package/src/MobileNav/MobileNav.tsx +8 -13
  462. package/src/NavMenu/NavMenu.doc.mjs +0 -15
  463. package/src/NumberInput/NumberInput.test.tsx +3 -48
  464. package/src/NumberInput/NumberInput.tsx +15 -32
  465. package/src/Outline/Outline.doc.mjs +0 -2
  466. package/src/Overlay/Overlay.doc.mjs +0 -6
  467. package/src/Pagination/Pagination.test.tsx +0 -162
  468. package/src/Pagination/Pagination.tsx +26 -80
  469. package/src/Popover/Popover.doc.mjs +6 -6
  470. package/src/Popover/Popover.test.tsx +0 -65
  471. package/src/Popover/usePopover.doc.mjs +1 -1
  472. package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
  473. package/src/PowerSearch/PowerSearch.test.tsx +1 -109
  474. package/src/PowerSearch/PowerSearch.tsx +16 -37
  475. package/src/ProgressBar/ProgressBar.doc.mjs +0 -2
  476. package/src/ProgressBar/ProgressBar.test.tsx +0 -30
  477. package/src/ProgressBar/ProgressBar.tsx +5 -12
  478. package/src/RadioList/RadioList.test.tsx +0 -19
  479. package/src/RadioList/RadioListItem.tsx +4 -9
  480. package/src/Resizable/ResizeHandle.tsx +4 -22
  481. package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
  482. package/src/SegmentedControl/SegmentedControl.test.tsx +0 -192
  483. package/src/SegmentedControl/SegmentedControl.tsx +5 -27
  484. package/src/SegmentedControl/SegmentedControlItem.tsx +4 -9
  485. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  486. package/src/Selector/Selector.test.tsx +1 -27
  487. package/src/SideNav/SideNav.doc.mjs +1 -7
  488. package/src/SideNav/SideNav.test.tsx +0 -66
  489. package/src/SideNav/SideNav.tsx +2 -6
  490. package/src/SideNav/SideNavCollapseButton.tsx +3 -4
  491. package/src/SideNav/SideNavSection.tsx +4 -6
  492. package/src/Switch/Switch.doc.mjs +7 -7
  493. package/src/Switch/Switch.test.tsx +3 -102
  494. package/src/Switch/Switch.tsx +7 -20
  495. package/src/TabList/TabList.test.tsx +1 -185
  496. package/src/TabList/TabMenu.tsx +9 -45
  497. package/src/Table/BaseTable.tsx +2 -13
  498. package/src/Table/Table.doc.mjs +0 -5
  499. package/src/Table/Table.test.tsx +0 -87
  500. package/src/Table/TableBody.tsx +2 -15
  501. package/src/Table/TableFooter.tsx +2 -15
  502. package/src/Table/TableHeader.tsx +2 -15
  503. package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +0 -13
  504. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +1 -3
  505. package/src/Table/plugins/pagination/paginateData.ts +1 -5
  506. package/src/Table/plugins/pagination/useTablePagination.test.tsx +0 -13
  507. package/src/Table/plugins/selection/useTableSelectionState.test.tsx +0 -23
  508. package/src/Table/plugins/selection/useTableSelectionState.tsx +6 -11
  509. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +1 -35
  510. package/src/Table/plugins/sortable/useTableSortableState.tsx +4 -8
  511. package/src/TextArea/TextArea.test.tsx +3 -3
  512. package/src/TextInput/TextInput.test.tsx +3 -3
  513. package/src/Thumbnail/Thumbnail.test.tsx +2 -36
  514. package/src/Thumbnail/Thumbnail.tsx +2 -4
  515. package/src/TimeInput/TimeInput.test.tsx +0 -37
  516. package/src/TimeInput/TimeInput.tsx +1 -11
  517. package/src/Timestamp/Timestamp.doc.mjs +1 -1
  518. package/src/Timestamp/Timestamp.test.tsx +0 -52
  519. package/src/Timestamp/Timestamp.tsx +16 -30
  520. package/src/Toast/Toast.tsx +3 -11
  521. package/src/Toast/ToastViewport.test.tsx +0 -64
  522. package/src/Toast/ToastViewport.tsx +0 -12
  523. package/src/Toast/useToast.tsx +0 -41
  524. package/src/ToggleButton/ToggleButton.doc.mjs +0 -1
  525. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  526. package/src/Tokenizer/Tokenizer.test.tsx +0 -54
  527. package/src/Tokenizer/Tokenizer.tsx +4 -5
  528. package/src/Tooltip/Tooltip.doc.mjs +6 -6
  529. package/src/Tooltip/useTooltip.doc.mjs +5 -5
  530. package/src/Tooltip/useTooltip.tsx +2 -12
  531. package/src/TopNav/TopNav.doc.mjs +1 -1
  532. package/src/TopNav/TopNav.test.tsx +7 -23
  533. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +2 -9
  534. package/src/TreeList/TreeList.doc.mjs +2 -2
  535. package/src/Typeahead/BaseTypeahead.doc.mjs +0 -19
  536. package/src/Typeahead/BaseTypeahead.tsx +2 -5
  537. package/src/Typeahead/Typeahead.doc.mjs +1 -1
  538. package/src/Typeahead/Typeahead.test.tsx +1 -45
  539. package/src/docs-types.ts +1 -9
  540. package/src/hooks/focusableSelector.ts +1 -1
  541. package/src/hooks/index.ts +0 -3
  542. package/src/hooks/useFocusTrap.doc.mjs +2 -4
  543. package/src/hooks/useFocusTrap.test.tsx +1 -149
  544. package/src/hooks/useFocusTrap.ts +1 -50
  545. package/src/hooks/useInteractiveRole.ts +4 -12
  546. package/src/hooks/useStreamingText.test.ts +19 -54
  547. package/src/hooks/useStreamingText.ts +5 -16
  548. package/src/hooks/useTreeFocus.test.tsx +3 -1
  549. package/src/reset.css +0 -29
  550. package/src/theme/SyntaxTheme.doc.mjs +4 -4
  551. package/src/theme/defineTheme.ts +13 -4
  552. package/src/theme/derivedVarRegistry.test.ts +2 -2
  553. package/src/theme/expandColorScale.test.ts +0 -29
  554. package/src/theme/expandColorScale.ts +6 -11
  555. package/src/theme/hct.ts +17 -9
  556. package/src/theme/tokens.test.ts +9 -182
  557. package/src/theme/tokens.ts +4 -239
  558. package/src/theme/useTheme.test.tsx +2 -126
  559. package/src/theme/useTheme.ts +6 -87
  560. package/src/utils/index.ts +0 -4
  561. package/src/utils/sharedResizeObserver.test.ts +2 -2
  562. package/src/utils/timeParser.test.ts +0 -13
  563. package/src/utils/timeParser.ts +5 -8
  564. package/dist/hooks/useHotkeys.d.ts +0 -51
  565. package/dist/hooks/useHotkeys.d.ts.map +0 -1
  566. package/dist/hooks/useHotkeys.js +0 -160
  567. package/dist/utils/color.d.ts +0 -42
  568. package/dist/utils/color.d.ts.map +0 -1
  569. package/dist/utils/color.js +0 -150
  570. package/dist/utils/composeEventHandlers.d.ts +0 -30
  571. package/dist/utils/composeEventHandlers.d.ts.map +0 -1
  572. package/dist/utils/composeEventHandlers.js +0 -40
  573. package/src/Chat/ChatDictationButton.test.tsx +0 -43
  574. package/src/Chat/ChatLayoutScrollButton.test.tsx +0 -33
  575. package/src/Chat/ChatMessageMetadata.test.tsx +0 -32
  576. package/src/Collapsible/Collapsible.test.tsx +0 -405
  577. package/src/FieldStatus/FieldStatus.test.tsx +0 -282
  578. package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +0 -185
  579. package/src/Layout/Layout.test.tsx +0 -285
  580. package/src/Layout/LayoutSlots.test.tsx +0 -364
  581. package/src/Outline/parseOutlineFromMarkdown.test.ts +0 -80
  582. package/src/OverflowList/OverflowList.test.tsx +0 -416
  583. package/src/Overlay/Overlay.test.tsx +0 -356
  584. package/src/Resizable/ResizeHandle.test.tsx +0 -218
  585. package/src/SizeContext/SizeContext.test.tsx +0 -226
  586. package/src/Toast/useToast.test.tsx +0 -258
  587. package/src/__tests__/TestIcon.tsx +0 -26
  588. package/src/__tests__/fastRoleQueries.ts +0 -66
  589. package/src/docPropReferences.test.ts +0 -178
  590. package/src/hooks/useHotkeys.doc.mjs +0 -52
  591. package/src/hooks/useHotkeys.test.ts +0 -245
  592. package/src/hooks/useHotkeys.ts +0 -203
  593. package/src/theme/themingTargets.test.ts +0 -353
  594. package/src/utils/color.test.ts +0 -133
  595. package/src/utils/color.ts +0 -148
  596. package/src/utils/composeEventHandlers.test.ts +0 -71
  597. package/src/utils/composeEventHandlers.ts +0 -44
  598. package/src/utils/mergeProps.test.ts +0 -166
@@ -16,12 +16,11 @@
16
16
  * - /packages/cli/templates/blocks/components/CheckboxList/ (showcase blocks)
17
17
  */
18
18
 
19
- import {use, type MouseEvent, type ReactNode} from 'react';
19
+ import {use, type ReactNode} from 'react';
20
20
  import * as stylex from '@stylexjs/stylex';
21
21
  import type {StyleXStyles} from '@stylexjs/stylex';
22
22
  import {colorVars} from '../theme/tokens.stylex';
23
23
  import type {BaseProps} from '../BaseProps';
24
- import {composeEventHandlers} from '../utils';
25
24
  import {CheckboxInput} from '../CheckboxInput/CheckboxInput';
26
25
  import {ListItem} from '../List/ListItem';
27
26
  import {ListContext} from '../List/ListContext';
@@ -129,7 +128,6 @@ export function CheckboxListItem({
129
128
  xstyle,
130
129
  className,
131
130
  style,
132
- onClick: onClickProp,
133
131
  ...restProps
134
132
  }: CheckboxListItemProps) {
135
133
  const ctx = use(CheckboxListContext);
@@ -202,14 +200,7 @@ export function CheckboxListItem({
202
200
  description={description}
203
201
  endContent={endContent}
204
202
  isDisabled={effectiveDisabled}
205
- onClick={
206
- isInteractive || onClickProp
207
- ? composeEventHandlers<MouseEvent>(
208
- onClickProp as ((event: MouseEvent) => void) | undefined,
209
- isInteractive ? handleToggle : undefined,
210
- )
211
- : undefined
212
- }
203
+ onClick={isInteractive ? handleToggle : undefined}
213
204
  aria-busy={isBusy || undefined}
214
205
  xstyle={
215
206
  [
@@ -88,11 +88,6 @@ export const docs = {
88
88
  default: "'label'",
89
89
  },
90
90
  ],
91
- theming: {
92
- targets: [
93
- {className: 'astryx-citation', visualProps: ['variant']},
94
- ],
95
- },
96
91
  };
97
92
 
98
93
  /** @type {import('../docs-types').TranslationDoc} */
@@ -31,12 +31,7 @@
31
31
  import {type ReactNode, type MouseEvent, useRef, type Ref} from 'react';
32
32
  import * as stylex from '@stylexjs/stylex';
33
33
  import type {StyleXStyles} from '@stylexjs/stylex';
34
- import {
35
- borderVars,
36
- colorVars,
37
- durationVars,
38
- easeVars,
39
- } from '../theme/tokens.stylex';
34
+ import {colorVars, durationVars, easeVars} from '../theme/tokens.stylex';
40
35
  import type {SizeValue, SpacingStep} from '../utils/types';
41
36
  import {mergeProps, mergeRefs} from '../utils';
42
37
  import {Card} from '../Card/Card';
@@ -71,6 +66,7 @@ const styles = stylex.create({
71
66
  content: '""',
72
67
  position: 'absolute',
73
68
  inset: 0,
69
+ borderRadius: 'inherit',
74
70
  pointerEvents: 'none',
75
71
  transitionProperty: 'background-color',
76
72
  transitionDuration: durationVars['--duration-fast'],
@@ -88,38 +84,6 @@ const styles = stylex.create({
88
84
  },
89
85
  },
90
86
  },
91
- // Borderless variants (everything except `default`): drop the transparent
92
- // 1px border Card applies. The overlay is inset to the padding box — inside
93
- // that border — so a transparent border strip stays untinted on hover and
94
- // reads as a faint ring. With no border, the overlay covers the full box
95
- // edge-to-edge and the ring disappears.
96
- borderless: {
97
- borderWidth: 0,
98
- },
99
- // Bordered variant (`default`): draw the 1px border *within* the padding by
100
- // subtracting the border width from every side. Total inset (border +
101
- // padding) then equals the borderless variants' padding, so content geometry
102
- // and outer dimensions stay identical across all variants. The border rests
103
- // at the subtle token and emphasizes on hover.
104
- bordered: {
105
- borderColor: colorVars['--color-border'],
106
- paddingInlineStart: `calc(var(--container-padding-inline-start) - ${borderVars['--border-width']})`,
107
- paddingInlineEnd: `calc(var(--container-padding-inline-end) - ${borderVars['--border-width']})`,
108
- paddingBlockStart: `calc(var(--container-padding-block-start) - ${borderVars['--border-width']})`,
109
- paddingBlockEnd: `calc(var(--container-padding-block-end) - ${borderVars['--border-width']})`,
110
- transitionProperty: 'border-color',
111
- transitionDuration: durationVars['--duration-fast'],
112
- transitionTimingFunction: easeVars['--ease-standard'],
113
- },
114
- // Emphasize the bordered variant's border on hover. Guarded by
115
- // @media (hover: hover) so touch devices don't get a stuck hover state.
116
- borderedHoverOnPointer: {
117
- '@media (hover: hover)': {
118
- ':hover': {
119
- borderColor: colorVars['--color-border-emphasized'],
120
- },
121
- },
122
- },
123
87
  disabled: {
124
88
  cursor: 'not-allowed',
125
89
  opacity: 0.5,
@@ -284,11 +248,6 @@ export function ClickableCard({
284
248
 
285
249
  const isLink = href != null;
286
250
 
287
- // Only the `default` variant has a visible border. Card draws a transparent
288
- // 1px border on every other variant purely to avoid layout jitter; we drop
289
- // it here so the hover overlay covers the full box with no untinted ring.
290
- const hasBorder = variant === 'default';
291
-
292
251
  return (
293
252
  <Card
294
253
  ref={mergeRefs(ref, containerRef)}
@@ -305,10 +264,8 @@ export function ClickableCard({
305
264
  [
306
265
  styles.interactive,
307
266
  styles.focusWithin,
308
- hasBorder ? styles.bordered : styles.borderless,
309
267
  !isDisabled && styles.overlay,
310
268
  !isDisabled && styles.hoverOnPointer,
311
- !isDisabled && hasBorder && styles.borderedHoverOnPointer,
312
269
  isDisabled && styles.disabled,
313
270
  xstyleProp,
314
271
  ] as unknown as StyleXStyles
@@ -90,11 +90,6 @@ export const docs = {
90
90
  type: '(code: string, language: string) => Array<{type: string; start: number; end: number}>',
91
91
  description: 'Custom tokenizer override for unsupported languages.',
92
92
  },
93
- {
94
- name: 'syntaxTheme',
95
- type: 'SyntaxThemeDefinition',
96
- description: 'Per-instance syntax theme override. Shorthand for wrapping the block in <SyntaxTheme theme={...}>. Accepts a preset from @astryxdesign/core/theme/syntax or a theme created with defineSyntaxTheme(). Defaults to the nearest SyntaxTheme ancestor or the theme-level syntax colors.',
97
- },
98
93
  {
99
94
  name: 'isCollapsible',
100
95
  type: 'boolean',
@@ -140,8 +135,8 @@ export const docs = {
140
135
  },
141
136
  theming: {
142
137
  targets: [
143
- {className: 'astryx-code', visualProps: ['color']},
144
- {className: 'astryx-codeblock', visualProps: ['size', 'language', 'container']},
138
+ {className: 'astryx-code'},
139
+ {className: 'astryx-codeblock', visualProps: ['size', 'language']},
145
140
  ],
146
141
  },
147
142
  usage: {
@@ -3,21 +3,15 @@
3
3
  /**
4
4
  * @file CodeBlock.test.tsx
5
5
  * @input Uses vitest, @testing-library/react, CodeBlock component
6
- * @output Unit tests for CodeBlock (copy button, collapse, scroll region a11y, syntaxTheme)
6
+ * @output Unit tests for CodeBlock (copy button, collapse, scroll region a11y)
7
7
  * @position Testing; validates CodeBlock implementation
8
8
  *
9
9
  * SYNC: When CodeBlock.tsx changes, update tests to match new behavior
10
10
  */
11
11
 
12
- import {describe, it, expect, vi, beforeEach, afterEach} from 'vitest';
13
- import {act, render, screen, fireEvent, waitFor} from '@testing-library/react';
12
+ import {describe, it, expect, vi, beforeEach} from 'vitest';
13
+ import {render, screen, fireEvent} from '@testing-library/react';
14
14
  import {CodeBlock} from './CodeBlock';
15
- import {__resetLiveRegionsForTest} from '../hooks/useAnnounce';
16
- import {dracula} from '../theme/syntax';
17
-
18
- function politeRegion(): HTMLElement | null {
19
- return document.querySelector('[data-astryx-live-region="polite"]');
20
- }
21
15
 
22
16
  // A code sample long enough to exceed the default collapsible threshold (10).
23
17
  const LONG_CODE = Array.from(
@@ -33,10 +27,6 @@ describe('CodeBlock', () => {
33
27
  });
34
28
  });
35
29
 
36
- afterEach(() => {
37
- __resetLiveRegionsForTest();
38
- });
39
-
40
30
  it('renders the code', () => {
41
31
  render(<CodeBlock code="const x = 1;" language="javascript" />);
42
32
  expect(screen.getByText(/const/)).toBeInTheDocument();
@@ -63,50 +53,6 @@ describe('CodeBlock', () => {
63
53
  expect(navigator.clipboard.writeText).toHaveBeenCalledWith('const x = 1;');
64
54
  });
65
55
 
66
- it('announces "Copied" to a polite live region after copying', async () => {
67
- render(<CodeBlock code="const x = 1;" language="javascript" />);
68
- const copyButton = screen.getByRole('button', {name: 'Copy code'});
69
- fireEvent.click(copyButton);
70
- await waitFor(() => {
71
- expect(politeRegion()).toHaveTextContent('Copied');
72
- });
73
- });
74
-
75
- it('keeps the copied indicator a full 2s after a rapid re-copy', async () => {
76
- vi.useFakeTimers();
77
- try {
78
- render(<CodeBlock code="const x = 1;" language="javascript" />);
79
- fireEvent.click(screen.getByRole('button', {name: 'Copy code'}));
80
- // Flush the async clipboard write.
81
- await act(async () => {});
82
- expect(screen.getByRole('button', {name: 'Copied'})).toBeInTheDocument();
83
-
84
- // 1.5s later the user copies again.
85
- act(() => {
86
- vi.advanceTimersByTime(1500);
87
- });
88
- fireEvent.click(screen.getByRole('button', {name: 'Copied'}));
89
- await act(async () => {});
90
-
91
- // 600ms after the second copy (2.1s after the first): the first
92
- // click's timer must not have reverted the indicator early.
93
- act(() => {
94
- vi.advanceTimersByTime(600);
95
- });
96
- expect(screen.getByRole('button', {name: 'Copied'})).toBeInTheDocument();
97
-
98
- // It resets 2s after the most recent copy.
99
- act(() => {
100
- vi.advanceTimersByTime(1400);
101
- });
102
- expect(
103
- screen.getByRole('button', {name: 'Copy code'}),
104
- ).toBeInTheDocument();
105
- } finally {
106
- vi.useRealTimers();
107
- }
108
- });
109
-
110
56
  it('does NOT collapse the block when the copy button is clicked', () => {
111
57
  render(
112
58
  <CodeBlock
@@ -166,69 +112,4 @@ describe('CodeBlock', () => {
166
112
  fireEvent.click(header);
167
113
  expect(header).toHaveAttribute('aria-expanded', 'false');
168
114
  });
169
-
170
- it('links the collapsible header to its code region via aria-controls', () => {
171
- render(
172
- <CodeBlock
173
- code={LONG_CODE}
174
- language="javascript"
175
- title="example"
176
- isCollapsible
177
- />,
178
- );
179
- const header = screen
180
- .getAllByRole('button')
181
- .find(el => el.hasAttribute('aria-expanded'))!;
182
- const controlsId = header.getAttribute('aria-controls');
183
- // aria-controls must be present and point at the real code region.
184
- expect(controlsId).toBeTruthy();
185
- const region = document.getElementById(controlsId as string);
186
- expect(region).not.toBeNull();
187
- // The region contains the scrollable code body (role="group").
188
- expect(region).toContainElement(screen.getByRole('group'));
189
- });
190
-
191
- it('keeps aria-controls resolvable when collapsed (region stays mounted)', () => {
192
- render(
193
- <CodeBlock
194
- code={LONG_CODE}
195
- language="javascript"
196
- title="example"
197
- isCollapsible
198
- />,
199
- );
200
- const header = screen
201
- .getAllByRole('button')
202
- .find(el => el.hasAttribute('aria-expanded'))!;
203
- fireEvent.click(header);
204
- expect(header).toHaveAttribute('aria-expanded', 'false');
205
- // The code region uses a CSS grid animation to collapse, so it stays in
206
- // the DOM — aria-controls stays a valid, resolvable reference (unlike a
207
- // conditionally-mounted region, which would need a conditional attribute).
208
- const controlsId = header.getAttribute('aria-controls');
209
- expect(controlsId).toBeTruthy();
210
- expect(document.getElementById(controlsId as string)).not.toBeNull();
211
- });
212
-
213
- it('applies a per-instance syntax theme via the syntaxTheme prop', () => {
214
- const {container} = render(
215
- <CodeBlock
216
- code="const x = 1;"
217
- language="javascript"
218
- syntaxTheme={dracula}
219
- />,
220
- );
221
- const wrapper = container.querySelector('[data-astryx-syntax-theme]');
222
- expect(wrapper).not.toBeNull();
223
- expect(wrapper).toHaveAttribute('data-astryx-syntax-theme', 'dracula');
224
- expect(wrapper!.querySelector('pre')).not.toBeNull();
225
- });
226
-
227
- it('renders no syntax theme wrapper when syntaxTheme is not set', () => {
228
- const {container} = render(
229
- <CodeBlock code="const x = 1;" language="javascript" />,
230
- );
231
- expect(container.querySelector('[data-astryx-syntax-theme]')).toBeNull();
232
- expect(container.firstElementChild?.tagName).toBe('PRE');
233
- });
234
115
  });
@@ -3,7 +3,7 @@
3
3
  'use client';
4
4
  /**
5
5
  * @file CodeBlock.tsx
6
- * @input Uses React, StyleX, theme tokens, CSS Custom Highlight API, SyntaxTheme provider
6
+ * @input Uses React, StyleX, theme tokens, CSS Custom Highlight API
7
7
  * @output Exports CodeBlock component and CodeBlockProps
8
8
  * @position Core implementation; read-only syntax-highlighted code display
9
9
  */
@@ -11,7 +11,6 @@
11
11
  import {
12
12
  useInsertionEffect,
13
13
  useEffect,
14
- useId,
15
14
  useRef,
16
15
  useState,
17
16
  useCallback,
@@ -33,7 +32,6 @@ import {
33
32
  easeVars,
34
33
  } from '../theme/tokens.stylex';
35
34
  import {mergeProps} from '../utils';
36
- import {useAnnounce} from '../hooks/useAnnounce';
37
35
  import {Icon} from '../Icon';
38
36
  import {
39
37
  tokenize,
@@ -45,7 +43,6 @@ import type {SyntaxToken, TokenLine} from './tokenizer';
45
43
  import {ensureHighlightStyles} from './highlightStyles';
46
44
  import {applyHighlightRangesChunked} from './highlightRanges';
47
45
  import {themeProps} from '../utils/themeProps';
48
- import {SyntaxTheme, type SyntaxThemeDefinition} from '../theme/syntax';
49
46
 
50
47
  // ---------------------------------------------------------------------------
51
48
  // Styles
@@ -176,17 +173,6 @@ const styles = stylex.create({
176
173
  headerCollapsible: {
177
174
  cursor: 'pointer',
178
175
  userSelect: 'none',
179
- // Restore a keyboard-only focus ring with the standard token/offset so this
180
- // disclosure control matches the rest of the system (Collapsible, TabMenu);
181
- // otherwise it falls back to the inconsistent UA default outline.
182
- outline: {
183
- default: null,
184
- ':focus-visible': `2px solid ${colorVars['--color-accent']}`,
185
- },
186
- outlineOffset: {
187
- default: '0',
188
- ':focus-visible': '2px',
189
- },
190
176
  },
191
177
  gutter: {
192
178
  flexShrink: 0,
@@ -396,14 +382,6 @@ export interface CodeBlockProps extends BaseProps<HTMLPreElement> {
396
382
  language: string,
397
383
  ) => {type: string; start: number; end: number}[];
398
384
  highlightMode?: 'auto' | 'ranges' | 'spans';
399
- /**
400
- * Per-instance syntax theme override. Shorthand for wrapping this block in
401
- * `<SyntaxTheme theme={...}>` — accepts a preset from
402
- * `@astryxdesign/core/theme/syntax` or a theme created with
403
- * `defineSyntaxTheme()`. Without it, the block uses the theme-level syntax
404
- * colors from the nearest SyntaxTheme ancestor or `defineTheme({ syntax })`.
405
- */
406
- syntaxTheme?: SyntaxThemeDefinition;
407
385
  }
408
386
 
409
387
  // ---------------------------------------------------------------------------
@@ -655,7 +633,6 @@ export function CodeBlock({
655
633
  container = 'card',
656
634
  tokenizer: customTokenizer,
657
635
  highlightMode = 'auto',
658
- syntaxTheme,
659
636
  xstyle,
660
637
  className,
661
638
  style,
@@ -663,17 +640,6 @@ export function CodeBlock({
663
640
  ...props
664
641
  }: CodeBlockProps) {
665
642
  const [copied, setCopied] = useState(false);
666
- const copyResetTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
667
- const announce = useAnnounce();
668
-
669
- // Clear a pending "copied" reset when the block unmounts.
670
- useEffect(() => {
671
- return () => {
672
- if (copyResetTimerRef.current != null) {
673
- clearTimeout(copyResetTimerRef.current);
674
- }
675
- };
676
- }, []);
677
643
 
678
644
  const useSpans =
679
645
  highlightMode === 'spans' ||
@@ -699,23 +665,12 @@ export function CodeBlock({
699
665
  try {
700
666
  await navigator.clipboard.writeText(code);
701
667
  setCopied(true);
702
- // Swapping the button's aria-label alone isn't reliably announced by
703
- // screen readers, so confirm the copy via a polite live region.
704
- announce('Copied');
705
668
  onCopy?.();
706
- // Restart the reset timer on every copy — otherwise a rapid re-copy
707
- // is reverted early by the previous click's timer.
708
- if (copyResetTimerRef.current != null) {
709
- clearTimeout(copyResetTimerRef.current);
710
- }
711
- copyResetTimerRef.current = setTimeout(() => {
712
- copyResetTimerRef.current = null;
713
- setCopied(false);
714
- }, 2000);
669
+ setTimeout(() => setCopied(false), 2000);
715
670
  } catch {
716
671
  // Clipboard failures leave the copied state unchanged.
717
672
  }
718
- }, [code, onCopy, announce]);
673
+ }, [code, onCopy]);
719
674
 
720
675
  const sizeStyle = size === 'sm' ? styles.sizeSm : styles.sizeMd;
721
676
  const gutterSizeStyle = size === 'sm' ? styles.gutterSm : styles.gutterMd;
@@ -725,11 +680,6 @@ export function CodeBlock({
725
680
 
726
681
  const canCollapse = isCollapsible && lines.length >= collapsibleThreshold;
727
682
  const [isCollapsed, setIsCollapsed] = useState(false);
728
- // Links the collapsible header to the code region it shows/hides so assistive
729
- // tech can move from the button to its controlled content (disclosure
730
- // pattern). The region stays mounted when collapsed (CSS grid animation), so
731
- // this is always a resolvable reference — aria-controls can be unconditional.
732
- const regionId = useId();
733
683
 
734
684
  const scrollContainerRef = useRef<HTMLDivElement>(null);
735
685
  const scrollStyle: CSSProperties | undefined = maxHeight
@@ -767,7 +717,6 @@ export function CodeBlock({
767
717
  role={canCollapse ? 'button' : undefined}
768
718
  tabIndex={canCollapse ? 0 : undefined}
769
719
  aria-expanded={canCollapse ? !isCollapsed : undefined}
770
- aria-controls={canCollapse ? regionId : undefined}
771
720
  onClick={canCollapse ? () => setIsCollapsed(prev => !prev) : undefined}
772
721
  onKeyDown={
773
722
  canCollapse
@@ -853,7 +802,7 @@ export function CodeBlock({
853
802
  </div>
854
803
  );
855
804
 
856
- const block = (
805
+ return (
857
806
  <pre
858
807
  ref={ref}
859
808
  {...mergeProps(
@@ -871,7 +820,6 @@ export function CodeBlock({
871
820
  {headerEl}
872
821
  {canCollapse ? (
873
822
  <div
874
- id={regionId}
875
823
  {...stylex.props(
876
824
  styles.collapseGrid,
877
825
  isCollapsed && styles.collapseGridCollapsed,
@@ -884,12 +832,6 @@ export function CodeBlock({
884
832
  {!showHeader && copyButtonEl}
885
833
  </pre>
886
834
  );
887
-
888
- return syntaxTheme ? (
889
- <SyntaxTheme theme={syntaxTheme}>{block}</SyntaxTheme>
890
- ) : (
891
- block
892
- );
893
835
  }
894
836
 
895
837
  CodeBlock.displayName = 'CodeBlock';
@@ -16,8 +16,7 @@ export const docs = {
16
16
  },
17
17
  theming: {
18
18
  targets: [
19
- {className: 'astryx-collapsible', visualProps: ['dividers', 'density']},
20
- {className: 'astryx-collapsible-group', visualProps: ['dividers', 'density']},
19
+ {className: 'astryx-collapsible'},
21
20
  ],
22
21
  },
23
22
  description: 'A primitive that makes any content collapsible: a trigger button toggles visibility of the content area, managing its own state or deferring to a parent CollapsibleGroup.',
@@ -70,8 +69,7 @@ export const docs = {
70
69
  usage: {
71
70
  description: 'Collapsible hides and reveals content behind a trigger button. Use it in settings panels, FAQ pages, or detail views to keep the page scannable while letting users drill into sections they care about. Wrap multiple collapsibles in CollapsibleGroup for accordion behavior. For custom collapsible components, use the `useCollapsible` hook directly (`astryx hook useCollapsible`).',
72
71
  bestPractices: [
73
- { guidance: true, description: 'Use dividers="between" on CollapsibleGroup for FAQ-style lists: built-in row hairlines with themed border tokens, no hand-rolled borders.' },
74
- { guidance: true, description: 'Wrap each Collapsible in an Card for visual separation in accordion layouts, or use CollapsibleGroup dividers for flat lists; don\'t combine both.' },
72
+ { guidance: true, description: 'Wrap each Collapsible in an Card for visual separation in accordion layouts.' },
75
73
  { guidance: true, description: 'Use CollapsibleGroup with type="single" for settings or FAQ pages where only one section should be open at a time.' },
76
74
  { guidance: true, description: 'Use type="multiple" when users need to compare content across sections, like feature lists or pricing tiers.' },
77
75
  { guidance: true, description: 'Start sections open (defaultIsOpen) when the content is likely needed on first view; don\'t make users click to see essential info.' },
@@ -92,8 +90,7 @@ export const docsZh = {
92
90
  usage: {
93
91
  description: 'Collapsible hides and reveals content behind a trigger button. Use it in settings panels, FAQ pages, or detail views to keep the page scannable while letting users drill into sections they care about. Wrap multiple collapsibles in CollapsibleGroup for accordion behavior.',
94
92
  bestPractices: [
95
- { guidance: true, description: 'Use dividers="between" on CollapsibleGroup for FAQ-style lists: built-in row hairlines with themed border tokens, no hand-rolled borders.' },
96
- { guidance: true, description: 'Wrap each Collapsible in an Card for visual separation in accordion layouts, or use CollapsibleGroup dividers for flat lists; don\'t combine both.' },
93
+ { guidance: true, description: 'Wrap each Collapsible in an Card for visual separation in accordion layouts.' },
97
94
  { guidance: true, description: 'Use CollapsibleGroup with type="single" for settings or FAQ pages where only one section should be open at a time.' },
98
95
  { guidance: true, description: 'Use type="multiple" when users need to compare content across sections, like feature lists or pricing tiers.' },
99
96
  { guidance: true, description: 'Start sections open (defaultIsOpen) when the content is likely needed on first view; don\'t make users click to see essential info.' },
@@ -110,8 +107,7 @@ export const docsDense = {
110
107
  usage: {
111
108
  description: 'Collapsible hides and reveals content behind a trigger button. Use in settings, FAQs, or detail views. Wrap in CollapsibleGroup for accordion behavior.',
112
109
  bestPractices: [
113
- { guidance: true, description: 'Use dividers="between" on CollapsibleGroup for FAQ-style lists: built-in row hairlines, no hand-rolled borders.' },
114
- { guidance: true, description: 'Wrap each Collapsible in an Card for visual separation, or use CollapsibleGroup dividers for flat lists; not both.' },
110
+ { guidance: true, description: 'Wrap each Collapsible in an Card for visual separation in accordion layouts.' },
115
111
  { guidance: true, description: 'Use CollapsibleGroup with type="single" for settings or FAQ pages where only one section should be open at a time.' },
116
112
  { guidance: true, description: 'Use type="multiple" when users need to compare across sections.' },
117
113
  { guidance: true, description: 'Start sections open (defaultIsOpen) when content is needed on first view.' },