@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
@@ -1,356 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- /**
4
- * @file Overlay.test.tsx
5
- * @input Uses vitest, @testing-library/react, Overlay + useOverlay
6
- * @output Characterization tests for the Overlay component and useOverlay hook
7
- * @position Testing; validates the overlay/scrim rendering + touch-toggle contract
8
- *
9
- * SYNC: When Overlay.tsx / useOverlay.tsx / OverlayScrim.tsx change,
10
- * update tests to match new behavior
11
- */
12
-
13
- import {describe, it, expect, beforeEach, afterEach} from 'vitest';
14
- import {render, screen, renderHook} from '@testing-library/react';
15
- import {createRef} from 'react';
16
- import {Overlay} from './Overlay';
17
- import {useOverlay} from './useOverlay';
18
-
19
- /** The scrim is the div carrying data-position (from themeProps). */
20
- function getScrim(container: HTMLElement): HTMLElement {
21
- const el = container.querySelector<HTMLElement>('[data-position]');
22
- if (!el) {
23
- throw new Error('scrim element not found');
24
- }
25
- return el;
26
- }
27
-
28
- /**
29
- * Force window.matchMedia('(hover: none)') to report a given value so we can
30
- * exercise the touch vs. pointer branches of useOverlay. Returns a restore fn.
31
- */
32
- function mockHoverNone(matches: boolean): () => void {
33
- const original = window.matchMedia;
34
- window.matchMedia = ((query: string) => ({
35
- matches: query.includes('hover: none') ? matches : false,
36
- media: query,
37
- onchange: null,
38
- addListener: () => {},
39
- removeListener: () => {},
40
- addEventListener: () => {},
41
- removeEventListener: () => {},
42
- dispatchEvent: () => false,
43
- }));
44
- return () => {
45
- window.matchMedia = original;
46
- };
47
- }
48
-
49
- describe('Overlay', () => {
50
- describe('rendering & structure', () => {
51
- it('renders the base children', () => {
52
- render(
53
- <Overlay content={<span>badge</span>}>
54
- <img alt="hero" src="x.jpg" />
55
- </Overlay>,
56
- );
57
- expect(screen.getByAltText('hero')).toBeInTheDocument();
58
- });
59
-
60
- it('renders the overlay content inside the scrim', () => {
61
- render(
62
- <Overlay content={<button type="button">Quick view</button>}>
63
- <div>base</div>
64
- </Overlay>,
65
- );
66
- expect(
67
- screen.getByRole('button', {name: 'Quick view'}),
68
- ).toBeInTheDocument();
69
- });
70
-
71
- it('renders a root div carrying the astryx-overlay class', () => {
72
- const {container} = render(
73
- <Overlay content={<span>c</span>}>
74
- <div>base</div>
75
- </Overlay>,
76
- );
77
- const root = container.firstElementChild as HTMLElement;
78
- expect(root.tagName).toBe('DIV');
79
- expect(root.className).toContain('astryx-overlay');
80
- });
81
-
82
- it('places the scrim after the base children in DOM order', () => {
83
- const {container} = render(
84
- <Overlay content={<span data-testid="ovl">c</span>}>
85
- <div data-testid="base">base</div>
86
- </Overlay>,
87
- );
88
- const root = container.firstElementChild as HTMLElement;
89
- const base = screen.getByTestId('base');
90
- const scrim = getScrim(container);
91
- // base comes before scrim
92
- expect(
93
- base.compareDocumentPosition(scrim) & Node.DOCUMENT_POSITION_FOLLOWING,
94
- ).toBeTruthy();
95
- expect(root).toContainElement(scrim);
96
- });
97
-
98
- it('applies the astryx-overlay-scrim class to the scrim', () => {
99
- const {container} = render(
100
- <Overlay content={<span>c</span>}>
101
- <div>b</div>
102
- </Overlay>,
103
- );
104
- expect(getScrim(container).className).toContain('astryx-overlay-scrim');
105
- });
106
- });
107
-
108
- describe('position', () => {
109
- it('defaults data-position to "fill"', () => {
110
- const {container} = render(
111
- <Overlay content={<span>c</span>}>
112
- <div>b</div>
113
- </Overlay>,
114
- );
115
- expect(getScrim(container).getAttribute('data-position')).toBe('fill');
116
- });
117
-
118
- it.each(['fill', 'bottom', 'top'] as const)(
119
- 'reflects position="%s" as data-position',
120
- position => {
121
- const {container} = render(
122
- <Overlay position={position} content={<span>c</span>}>
123
- <div>b</div>
124
- </Overlay>,
125
- );
126
- expect(getScrim(container).getAttribute('data-position')).toBe(
127
- position,
128
- );
129
- },
130
- );
131
- });
132
-
133
- describe('scrim mode → media theme inversion', () => {
134
- it('dark scrim (default) wraps content in a dark MediaTheme', () => {
135
- const {container} = render(
136
- <Overlay content={<span>c</span>}>
137
- <div>b</div>
138
- </Overlay>,
139
- );
140
- expect(
141
- container.querySelector('[data-astryx-media="dark"]'),
142
- ).toBeInTheDocument();
143
- });
144
-
145
- it('light scrim wraps content in a light MediaTheme', () => {
146
- const {container} = render(
147
- <Overlay scrim="light" content={<span>c</span>}>
148
- <div>b</div>
149
- </Overlay>,
150
- );
151
- expect(
152
- container.querySelector('[data-astryx-media="light"]'),
153
- ).toBeInTheDocument();
154
- expect(
155
- container.querySelector('[data-astryx-media="dark"]'),
156
- ).not.toBeInTheDocument();
157
- });
158
-
159
- it('scrim={false} renders no MediaTheme wrapper', () => {
160
- const {container} = render(
161
- <Overlay scrim={false} content={<span>c</span>}>
162
- <div>b</div>
163
- </Overlay>,
164
- );
165
- expect(
166
- container.querySelector('[data-astryx-media]'),
167
- ).not.toBeInTheDocument();
168
- });
169
- });
170
-
171
- describe('controlled visibility (isOpen)', () => {
172
- it('marks the scrim inert when isOpen is false', () => {
173
- const {container} = render(
174
- <Overlay isOpen={false} content={<span>c</span>}>
175
- <div>b</div>
176
- </Overlay>,
177
- );
178
- expect(getScrim(container).hasAttribute('inert')).toBe(true);
179
- });
180
-
181
- it('does not mark the scrim inert when isOpen is true', () => {
182
- const {container} = render(
183
- <Overlay isOpen content={<span>c</span>}>
184
- <div>b</div>
185
- </Overlay>,
186
- );
187
- expect(getScrim(container).hasAttribute('inert')).toBe(false);
188
- });
189
-
190
- it('is never inert in uncontrolled (CSS-driven) mode', () => {
191
- const {container} = render(
192
- <Overlay showOn="hover" content={<span>c</span>}>
193
- <div>b</div>
194
- </Overlay>,
195
- );
196
- expect(getScrim(container).hasAttribute('inert')).toBe(false);
197
- });
198
-
199
- it('toggles inert when the isOpen prop flips', () => {
200
- const {container, rerender} = render(
201
- <Overlay isOpen={false} content={<span>c</span>}>
202
- <div>b</div>
203
- </Overlay>,
204
- );
205
- expect(getScrim(container).hasAttribute('inert')).toBe(true);
206
- rerender(
207
- <Overlay isOpen content={<span>c</span>}>
208
- <div>b</div>
209
- </Overlay>,
210
- );
211
- expect(getScrim(container).hasAttribute('inert')).toBe(false);
212
- });
213
- });
214
-
215
- describe('styling & ref', () => {
216
- it('forwards ref to the root div element', () => {
217
- const ref = createRef<HTMLDivElement>();
218
- render(
219
- <Overlay ref={ref} content={<span>c</span>}>
220
- <div>b</div>
221
- </Overlay>,
222
- );
223
- expect(ref.current).toBeInstanceOf(HTMLDivElement);
224
- expect(ref.current?.className).toContain('astryx-overlay');
225
- });
226
-
227
- it('merges a caller className onto the root', () => {
228
- const {container} = render(
229
- <Overlay className="custom-cls" content={<span>c</span>}>
230
- <div>b</div>
231
- </Overlay>,
232
- );
233
- const root = container.firstElementChild as HTMLElement;
234
- expect(root.className).toContain('custom-cls');
235
- expect(root.className).toContain('astryx-overlay');
236
- });
237
-
238
- it('merges a caller inline style onto the root', () => {
239
- const {container} = render(
240
- <Overlay style={{opacity: 0.5}} content={<span>c</span>}>
241
- <div>b</div>
242
- </Overlay>,
243
- );
244
- const root = container.firstElementChild as HTMLElement;
245
- expect(root.style.opacity).toBe('0.5');
246
- });
247
- });
248
- });
249
-
250
- describe('useOverlay', () => {
251
- describe('return shape', () => {
252
- it('exposes containerRef, containerProps, element and renderOverlay', () => {
253
- const {result} = renderHook(() => useOverlay());
254
- expect(result.current.containerRef).toHaveProperty('current');
255
- expect(result.current.containerProps).toBeDefined();
256
- expect(typeof result.current.renderOverlay).toBe('function');
257
- });
258
-
259
- it('containerProps.className is a non-empty marker string', () => {
260
- const {result} = renderHook(() => useOverlay());
261
- expect(typeof result.current.containerProps.className).toBe('string');
262
- expect(result.current.containerProps.className?.length).toBeGreaterThan(
263
- 0,
264
- );
265
- });
266
-
267
- it('returns element=null when no content is provided', () => {
268
- const {result} = renderHook(() => useOverlay({showOn: 'hover'}));
269
- expect(result.current.element).toBeNull();
270
- });
271
-
272
- it('returns a scrim element when content is provided', () => {
273
- const {result} = renderHook(() => useOverlay({content: <span>c</span>}));
274
- expect(result.current.element).not.toBeNull();
275
- });
276
-
277
- it('renderOverlay(children) produces a renderable scrim', () => {
278
- const {result} = renderHook(() => useOverlay({showOn: 'hover'}));
279
- const el = result.current.renderOverlay(<span>on demand</span>);
280
- const {container} = render(el);
281
- expect(screen.getByText('on demand')).toBeInTheDocument();
282
- expect(getScrim(container)).toBeInTheDocument();
283
- });
284
- });
285
-
286
- describe('pointer (non-touch) device', () => {
287
- let restore: () => void;
288
- beforeEach(() => {
289
- restore = mockHoverNone(false);
290
- });
291
- afterEach(() => restore());
292
-
293
- it('does not attach touch toggle handlers in hover mode', () => {
294
- const {result} = renderHook(() => useOverlay({showOn: 'hover'}));
295
- expect(result.current.containerProps.onClick).toBeUndefined();
296
- expect(result.current.containerProps.onMouseUp).toBeUndefined();
297
- });
298
- });
299
-
300
- describe('touch device', () => {
301
- let restore: () => void;
302
- beforeEach(() => {
303
- restore = mockHoverNone(true);
304
- });
305
- afterEach(() => restore());
306
-
307
- it('attaches tap-to-toggle handlers in hover mode', () => {
308
- const {result} = renderHook(() => useOverlay({showOn: 'hover'}));
309
- expect(typeof result.current.containerProps.onClick).toBe('function');
310
- expect(typeof result.current.containerProps.onMouseUp).toBe('function');
311
- });
312
-
313
- it('does NOT attach toggle handlers when showOn="always" (no toggle needed)', () => {
314
- const {result} = renderHook(() => useOverlay({showOn: 'always'}));
315
- expect(result.current.containerProps.onClick).toBeUndefined();
316
- expect(result.current.containerProps.onMouseUp).toBeUndefined();
317
- });
318
-
319
- it('does NOT attach toggle handlers when showOn="focus"', () => {
320
- const {result} = renderHook(() => useOverlay({showOn: 'focus'}));
321
- expect(result.current.containerProps.onClick).toBeUndefined();
322
- });
323
-
324
- it('a consumer prop isOpen overrides the touch toggle (scrim reflects it)', () => {
325
- // With isOpen provided, the scrim is controlled regardless of touch.
326
- const {container} = render(
327
- <Overlay showOn="hover" isOpen={false} content={<span>c</span>}>
328
- <div>b</div>
329
- </Overlay>,
330
- );
331
- expect(getScrim(container).hasAttribute('inert')).toBe(true);
332
- });
333
- });
334
-
335
- describe('memoization', () => {
336
- it('returns a stable renderOverlay across re-renders with same options', () => {
337
- const {result, rerender} = renderHook(
338
- (props: {showOn: 'hover' | 'always'}) => useOverlay(props),
339
- {initialProps: {showOn: 'hover'}},
340
- );
341
- const first = result.current.renderOverlay;
342
- rerender({showOn: 'hover'});
343
- expect(result.current.renderOverlay).toBe(first);
344
- });
345
-
346
- it('returns a new renderOverlay when options change', () => {
347
- const {result, rerender} = renderHook(
348
- (props: {showOn: 'hover' | 'always'}) => useOverlay(props),
349
- {initialProps: {showOn: 'hover'}},
350
- );
351
- const first = result.current.renderOverlay;
352
- rerender({showOn: 'always'});
353
- expect(result.current.renderOverlay).not.toBe(first);
354
- });
355
- });
356
- });
@@ -1,218 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- /**
4
- * @file ResizeHandle.test.tsx
5
- * @input Uses vitest, @testing-library/react, useResizable, ResizeHandle
6
- * @output Unit tests for ResizeHandle keyboard operability and ARIA state
7
- * @position Testing; validates ResizeHandle.tsx implementation
8
- *
9
- * SYNC: When ResizeHandle.tsx changes, update tests to match new behavior
10
- *
11
- * These tests guard the WAI-ARIA window-splitter keyboard contract: the
12
- * keydown handler must live on the focusable `role="separator"` element.
13
- * Keyboard resizing is pure state math in useResizable (no layout
14
- * measurement), so the observable effect asserted here is aria-valuenow,
15
- * which is bound to the region's `_size`.
16
- */
17
-
18
- import {describe, it, expect, vi} from 'vitest';
19
- import {render, screen, fireEvent, act} from '@testing-library/react';
20
- import {ResizeHandle} from './ResizeHandle';
21
- import type {ResizeHandleProps} from './ResizeHandle';
22
- import {useResizable} from './useResizable';
23
- import type {ResizableProps, UseResizableSingleConfig} from './useResizable';
24
-
25
- const KEYBOARD_STEP = 10;
26
- const KEYBOARD_LARGE_STEP = 50;
27
-
28
- function Harness({
29
- config,
30
- handleProps,
31
- }: {
32
- config?: UseResizableSingleConfig;
33
- handleProps?: Partial<ResizeHandleProps>;
34
- }) {
35
- const region = useResizable(
36
- config ?? {defaultSize: 200, minSizePx: 100, maxSizePx: 400},
37
- );
38
- return (
39
- <ResizeHandle resizable={region.props} label="Resize" {...handleProps} />
40
- );
41
- }
42
-
43
- function getSeparator(): HTMLElement {
44
- return screen.getByRole('separator');
45
- }
46
-
47
- describe('ResizeHandle', () => {
48
- // --- ARIA wiring ---
49
-
50
- it('exposes the region size and bounds via ARIA', () => {
51
- render(<Harness />);
52
- const separator = getSeparator();
53
- expect(separator).toHaveAttribute('aria-valuenow', '200');
54
- expect(separator).toHaveAttribute('aria-valuemin', '100');
55
- expect(separator).toHaveAttribute('aria-valuemax', '400');
56
- // Horizontal layout splits along the vertical axis.
57
- expect(separator).toHaveAttribute('aria-orientation', 'vertical');
58
- expect(separator).toHaveAttribute('aria-label', 'Resize');
59
- });
60
-
61
- it('makes the separator focusable', () => {
62
- render(<Harness />);
63
- const separator = getSeparator();
64
- expect(separator).toHaveAttribute('tabindex', '0');
65
- act(() => separator.focus());
66
- expect(separator).toHaveFocus();
67
- });
68
-
69
- // --- Keyboard resizing (the fix: handler lives on the focused separator) ---
70
-
71
- it('grows the panel by a step on ArrowRight', () => {
72
- render(<Harness />);
73
- const separator = getSeparator();
74
- act(() => separator.focus());
75
- fireEvent.keyDown(separator, {key: 'ArrowRight'});
76
- expect(separator).toHaveAttribute(
77
- 'aria-valuenow',
78
- String(200 + KEYBOARD_STEP),
79
- );
80
- });
81
-
82
- it('shrinks the panel by a step on ArrowLeft', () => {
83
- render(<Harness />);
84
- const separator = getSeparator();
85
- act(() => separator.focus());
86
- fireEvent.keyDown(separator, {key: 'ArrowLeft'});
87
- expect(separator).toHaveAttribute(
88
- 'aria-valuenow',
89
- String(200 - KEYBOARD_STEP),
90
- );
91
- });
92
-
93
- it('uses the large step when Shift is held', () => {
94
- render(<Harness />);
95
- const separator = getSeparator();
96
- act(() => separator.focus());
97
- fireEvent.keyDown(separator, {key: 'ArrowRight', shiftKey: true});
98
- expect(separator).toHaveAttribute(
99
- 'aria-valuenow',
100
- String(200 + KEYBOARD_LARGE_STEP),
101
- );
102
- });
103
-
104
- it('jumps to the minimum on Home', () => {
105
- render(<Harness />);
106
- const separator = getSeparator();
107
- act(() => separator.focus());
108
- fireEvent.keyDown(separator, {key: 'Home'});
109
- expect(separator).toHaveAttribute('aria-valuenow', '100');
110
- });
111
-
112
- it('jumps to the maximum on End', () => {
113
- render(<Harness />);
114
- const separator = getSeparator();
115
- act(() => separator.focus());
116
- fireEvent.keyDown(separator, {key: 'End'});
117
- expect(separator).toHaveAttribute('aria-valuenow', '400');
118
- });
119
-
120
- it('resizes along the block axis for a vertical handle', () => {
121
- render(
122
- <Harness
123
- config={{defaultSize: 200, minSizePx: 100, maxSizePx: 400}}
124
- handleProps={{direction: 'vertical'}}
125
- />,
126
- );
127
- const separator = getSeparator();
128
- expect(separator).toHaveAttribute('aria-orientation', 'horizontal');
129
- act(() => separator.focus());
130
- fireEvent.keyDown(separator, {key: 'ArrowDown'});
131
- expect(separator).toHaveAttribute(
132
- 'aria-valuenow',
133
- String(200 + KEYBOARD_STEP),
134
- );
135
- fireEvent.keyDown(separator, {key: 'ArrowUp'});
136
- expect(separator).toHaveAttribute('aria-valuenow', '200');
137
- });
138
-
139
- it('collapses on Enter when the region is collapsible', () => {
140
- render(
141
- <Harness
142
- config={{
143
- defaultSize: 200,
144
- minSizePx: 100,
145
- maxSizePx: 400,
146
- collapsible: true,
147
- }}
148
- />,
149
- );
150
- const separator = getSeparator();
151
- act(() => separator.focus());
152
- fireEvent.keyDown(separator, {key: 'Enter'});
153
- expect(separator).toHaveAttribute('aria-valuenow', '0');
154
- });
155
-
156
- // --- Disabled guard ---
157
-
158
- it('ignores keyboard input when disabled', () => {
159
- render(<Harness handleProps={{isDisabled: true}} />);
160
- const separator = getSeparator();
161
- expect(separator).toHaveAttribute('tabindex', '-1');
162
- fireEvent.keyDown(separator, {key: 'ArrowRight'});
163
- expect(separator).toHaveAttribute('aria-valuenow', '200');
164
- });
165
-
166
- // --- Drag listener lifecycle ---
167
-
168
- it('stops driving the region and releases window listeners when unmounted mid-drag', () => {
169
- const resizable: ResizableProps = {
170
- _size: 200,
171
- _isCollapsed: false,
172
- _onResizeStart: vi.fn(),
173
- _onResizeMove: vi.fn(),
174
- _onResizeEnd: vi.fn(),
175
- _minSizePx: 100,
176
- _maxSizePx: 400,
177
- _snaps: [],
178
- _collapsedSize: 40,
179
- _collapsible: false,
180
- _isResizableProps: true,
181
- };
182
- const {unmount} = render(
183
- <ResizeHandle resizable={resizable} label="Resize" />,
184
- );
185
- const separator = screen.getByRole('separator');
186
- const hitArea = separator.firstElementChild as HTMLElement;
187
-
188
- // Start a drag and confirm moves reach the region.
189
- fireEvent.pointerDown(hitArea, {clientX: 0, clientY: 0});
190
- expect(resizable._onResizeStart).toHaveBeenCalledTimes(1);
191
- fireEvent.pointerMove(window, {clientX: 10, clientY: 0});
192
- expect(resizable._onResizeMove).toHaveBeenCalledTimes(1);
193
-
194
- // Unmount mid-drag: the window listeners must be torn down, so further
195
- // pointer moves no longer resize the (still-mounted) region, and the
196
- // body cursor/user-select overrides are released.
197
- unmount();
198
- fireEvent.pointerMove(window, {clientX: 50, clientY: 0});
199
- expect(resizable._onResizeMove).toHaveBeenCalledTimes(1);
200
- expect(document.body.style.cursor).toBe('');
201
- expect(document.body.style.userSelect).toBe('');
202
- });
203
-
204
- // --- Prop composition (ordering choice: handler sits after {...props}) ---
205
-
206
- it('runs a consumer onKeyDown alongside keyboard resizing', () => {
207
- const onKeyDown = vi.fn();
208
- render(<Harness handleProps={{onKeyDown}} />);
209
- const separator = getSeparator();
210
- act(() => separator.focus());
211
- fireEvent.keyDown(separator, {key: 'ArrowRight'});
212
- expect(onKeyDown).toHaveBeenCalledTimes(1);
213
- expect(separator).toHaveAttribute(
214
- 'aria-valuenow',
215
- String(200 + KEYBOARD_STEP),
216
- );
217
- });
218
- });