@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,226 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- /**
4
- * @file SizeContext.test.tsx
5
- * @input Uses vitest, @testing-library/react, SizeContext module
6
- * @output Characterization tests for SizeContext / useSize / SizeProvider
7
- * @position Testing; validates the size-cascade resolution contract
8
- *
9
- * SYNC: When SizeContext.ts changes, update tests to match new behavior
10
- */
11
-
12
- import {describe, it, expect} from 'vitest';
13
- import {renderHook, render, screen} from '@testing-library/react';
14
- import {createElement, type ReactNode} from 'react';
15
- import {
16
- SizeContext,
17
- SizeProvider,
18
- useSize,
19
- type ElementSize,
20
- } from './SizeContext';
21
-
22
- /**
23
- * Wrap children in a SizeProvider set to `size`. Passing `null` mimics
24
- * "no container is providing a size".
25
- */
26
- function withProvider(size: ElementSize | null) {
27
- return function Wrapper({children}: {children: ReactNode}) {
28
- return <SizeProvider value={size}>{children}</SizeProvider>;
29
- };
30
- }
31
-
32
- describe('SizeContext', () => {
33
- describe('context identity', () => {
34
- it('defaults to null when read outside any provider', () => {
35
- const {result} = renderHook(() => useSize());
36
- // No provider + no prop + no explicit default → the 'md' fallback.
37
- expect(result.current).toBe('md');
38
- });
39
-
40
- it('exposes a displayName for devtools', () => {
41
- expect(SizeContext.displayName).toBe('SizeContext');
42
- });
43
-
44
- it('SizeProvider is the context Provider itself', () => {
45
- expect(SizeProvider).toBe(SizeContext.Provider);
46
- });
47
- });
48
-
49
- describe('useSize — resolution priority', () => {
50
- it('returns the default "md" with no prop and no provider', () => {
51
- const {result} = renderHook(() => useSize());
52
- expect(result.current).toBe('md');
53
- });
54
-
55
- it('honors an explicit defaultSize when neither prop nor context is set', () => {
56
- const {result} = renderHook(() => useSize(undefined, 'lg'));
57
- expect(result.current).toBe('lg');
58
- });
59
-
60
- it('returns the explicit size prop when provided', () => {
61
- const {result} = renderHook(() => useSize('sm'));
62
- expect(result.current).toBe('sm');
63
- });
64
-
65
- it('prop wins over the explicit default', () => {
66
- const {result} = renderHook(() => useSize('sm', 'lg'));
67
- expect(result.current).toBe('sm');
68
- });
69
-
70
- it('inherits the size from an enclosing provider when no prop is passed', () => {
71
- const {result} = renderHook(() => useSize(), {
72
- wrapper: withProvider('lg'),
73
- });
74
- expect(result.current).toBe('lg');
75
- });
76
-
77
- it('prop wins over the inherited provider size', () => {
78
- const {result} = renderHook(() => useSize('sm'), {
79
- wrapper: withProvider('lg'),
80
- });
81
- expect(result.current).toBe('sm');
82
- });
83
-
84
- it('inherited context wins over the explicit default fallback', () => {
85
- const {result} = renderHook(() => useSize(undefined, 'sm'), {
86
- wrapper: withProvider('lg'),
87
- });
88
- expect(result.current).toBe('lg');
89
- });
90
-
91
- it('falls back to default when the provider value is explicitly null', () => {
92
- const {result} = renderHook(() => useSize(undefined, 'sm'), {
93
- wrapper: withProvider(null),
94
- });
95
- expect(result.current).toBe('sm');
96
- });
97
-
98
- it('falls back to "md" when provider is null and no default is given', () => {
99
- const {result} = renderHook(() => useSize(), {
100
- wrapper: withProvider(null),
101
- });
102
- expect(result.current).toBe('md');
103
- });
104
- });
105
-
106
- describe('useSize — every standard ElementSize resolves', () => {
107
- const sizes: ElementSize[] = ['sm', 'md', 'lg'];
108
-
109
- it.each(sizes)('resolves explicit prop "%s"', size => {
110
- const {result} = renderHook(() => useSize(size));
111
- expect(result.current).toBe(size);
112
- });
113
-
114
- it.each(sizes)('resolves inherited provider "%s"', size => {
115
- const {result} = renderHook(() => useSize(), {
116
- wrapper: withProvider(size),
117
- });
118
- expect(result.current).toBe(size);
119
- });
120
- });
121
-
122
- describe('useSize — nested providers', () => {
123
- it('resolves to the nearest provider', () => {
124
- function Nested({children}: {children: ReactNode}) {
125
- return (
126
- <SizeProvider value="sm">
127
- <SizeProvider value="lg">{children}</SizeProvider>
128
- </SizeProvider>
129
- );
130
- }
131
- const {result} = renderHook(() => useSize(), {wrapper: Nested});
132
- expect(result.current).toBe('lg');
133
- });
134
-
135
- it('a prop still overrides the nearest provider', () => {
136
- function Nested({children}: {children: ReactNode}) {
137
- return (
138
- <SizeProvider value="sm">
139
- <SizeProvider value="lg">{children}</SizeProvider>
140
- </SizeProvider>
141
- );
142
- }
143
- const {result} = renderHook(() => useSize('md'), {wrapper: Nested});
144
- expect(result.current).toBe('md');
145
- });
146
- });
147
-
148
- describe('useSize — generic (non-ElementSize) values', () => {
149
- it('supports a custom string union via the type parameter', () => {
150
- type Custom = 'compact' | 'comfortable';
151
- const {result} = renderHook(() =>
152
- useSize<Custom>('compact', 'comfortable'),
153
- );
154
- expect(result.current).toBe('compact');
155
- });
156
-
157
- it('returns the custom default when no prop is given', () => {
158
- type Custom = 'compact' | 'comfortable';
159
- const {result} = renderHook(() =>
160
- useSize<Custom>(undefined, 'comfortable'),
161
- );
162
- expect(result.current).toBe('comfortable');
163
- });
164
-
165
- it('empty-string prop is a real value and does NOT fall through to default', () => {
166
- // '' ?? x === '' because nullish coalescing only catches null/undefined.
167
- const {result} = renderHook(() => useSize('' as ElementSize, 'lg'));
168
- expect(result.current).toBe('');
169
- });
170
- });
171
-
172
- describe('integration — components consuming the cascade', () => {
173
- function SizedProbe({size}: {size?: ElementSize}) {
174
- const resolved = useSize(size);
175
- return <span data-testid="probe">{resolved}</span>;
176
- }
177
-
178
- it('a child with no size prop reads the container size', () => {
179
- render(
180
- <SizeProvider value="lg">
181
- <SizedProbe />
182
- </SizeProvider>,
183
- );
184
- expect(screen.getByTestId('probe')).toHaveTextContent('lg');
185
- });
186
-
187
- it('sibling children resolve independently against the same provider', () => {
188
- render(
189
- <SizeProvider value="lg">
190
- <span data-testid="a">
191
- <SizedProbe />
192
- </span>
193
- <span data-testid="b">
194
- <SizedProbe size="sm" />
195
- </span>
196
- </SizeProvider>,
197
- );
198
- expect(screen.getByTestId('a')).toHaveTextContent('lg');
199
- expect(screen.getByTestId('b')).toHaveTextContent('sm');
200
- });
201
-
202
- it('re-renders with the new size when the provider value changes', () => {
203
- const {rerender} = render(
204
- <SizeProvider value="sm">
205
- <SizedProbe />
206
- </SizeProvider>,
207
- );
208
- expect(screen.getByTestId('probe')).toHaveTextContent('sm');
209
-
210
- rerender(
211
- <SizeProvider value="lg">
212
- <SizedProbe />
213
- </SizeProvider>,
214
- );
215
- expect(screen.getByTestId('probe')).toHaveTextContent('lg');
216
- });
217
-
218
- it('works with createElement (no JSX) call form', () => {
219
- const {result} = renderHook(() => useSize(), {
220
- wrapper: ({children}: {children: ReactNode}) =>
221
- createElement(SizeProvider, {value: 'sm'}, children),
222
- });
223
- expect(result.current).toBe('sm');
224
- });
225
- });
226
- });
@@ -1,258 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- /**
4
- * @file useToast.test.tsx
5
- * @input Uses vitest, @testing-library/react, useToast/ToastViewport/Theme
6
- * @output Unit tests for the fallback viewport's theme mode resolution
7
- * @position Testing; validates useToast.tsx's attribute mirroring onto the
8
- * fallback container, plus useTheme.ts's <html data-theme> fallback (which
9
- * is what actually resolves Toast's JS-computed mode; see useTheme.test.tsx
10
- * for direct coverage of that half)
11
- *
12
- * SYNC: When useToast.tsx's fallback container setup changes, update these tests
13
- *
14
- * The fallback viewport root is a module-level singleton, so it's mounted
15
- * once (by whichever test runs first) and persists across every test in the
16
- * file below — mirroring a real app whose root <Theme> mode changes over
17
- * time. Each test dismisses its own toast in afterEach (see
18
- * dismissAllFallbackToasts) so none linger as a useTheme subscriber into the
19
- * next test.
20
- */
21
-
22
- import {describe, it, expect, vi, afterEach} from 'vitest';
23
- import {render, screen, fireEvent, act, waitFor} from '@testing-library/react';
24
- import React from 'react';
25
- import {Theme} from '../theme/Theme';
26
- import {defineTheme} from '../theme/defineTheme';
27
- import {ToastViewport} from './ToastViewport';
28
- import {useToast} from './useToast';
29
- import type {ToastOptions} from './types';
30
-
31
- const testTheme = defineTheme({name: 'test', tokens: {}});
32
- const NO_AUTO_HIDE: ToastOptions = {body: 'hello', isAutoHide: false};
33
-
34
- function mockMatchMedia(prefersDark: boolean) {
35
- window.matchMedia = vi.fn().mockImplementation((query: string) => ({
36
- matches: query.includes('dark') ? prefersDark : false,
37
- media: query,
38
- onchange: null,
39
- addEventListener: vi.fn(),
40
- removeEventListener: vi.fn(),
41
- dispatchEvent: vi.fn(),
42
- }));
43
- }
44
-
45
- function ShowToastButton({label = 'Trigger'}: {label?: string}) {
46
- const toast = useToast();
47
- return (
48
- <button type="button" onClick={() => toast(NO_AUTO_HIDE)}>
49
- {label}
50
- </button>
51
- );
52
- }
53
-
54
- // The fallback's toasts accumulate in one persistent viewport across tests
55
- // (see file header) — take the most recently added one.
56
- function newestMediaAttr(scope: ParentNode): string | null {
57
- const nodes = scope.querySelectorAll('[data-astryx-media]');
58
- const last = nodes[nodes.length - 1];
59
- return last ? last.getAttribute('data-astryx-media') : null;
60
- }
61
-
62
- // Fire the transition-end that ToastViewport listens for to unmount an
63
- // exiting toast (jsdom does not run CSS transitions) — mirrors
64
- // ToastViewport.test.tsx's completeExit helper.
65
- function completeExit(toastId: string) {
66
- const node = document.querySelector<HTMLElement>(
67
- `[data-toast-id="${toastId}"]`,
68
- );
69
- if (node) {
70
- fireEvent.transitionEnd(node, {propertyName: 'grid-template-rows'});
71
- }
72
- }
73
-
74
- // Dismisses every toast still mounted in the fallback viewport so none of
75
- // them remain subscribed to useTheme's shared MutationObserver by the time
76
- // RTL's own cleanup unmounts this test's <Theme> — that unmount would
77
- // otherwise notify a lingering subscriber outside any act scope.
78
- async function dismissAllFallbackToasts(): Promise<void> {
79
- const fallback = document.querySelector('[data-astryx-toast-fallback]');
80
- const ids = Array.from(
81
- fallback?.querySelectorAll<HTMLElement>('[data-toast-id]') ?? [],
82
- ).map(node => node.getAttribute('data-toast-id')!);
83
-
84
- await act(async () => {
85
- for (const id of ids) {
86
- fallback
87
- ?.querySelector<HTMLElement>(
88
- `[data-toast-id="${id}"] button[aria-label="Dismiss notification"]`,
89
- )
90
- ?.click();
91
- }
92
- });
93
-
94
- await act(async () => {
95
- for (const id of ids) {
96
- completeExit(id);
97
- }
98
- });
99
- }
100
-
101
- describe('useToast fallback viewport theme mode', () => {
102
- afterEach(async () => {
103
- mockMatchMedia(false);
104
- await dismissAllFallbackToasts();
105
- });
106
-
107
- it('resolves the app mode (light) instead of OS preference (dark) with no LayerProvider', async () => {
108
- mockMatchMedia(true); // OS prefers dark
109
-
110
- render(
111
- <Theme theme={testTheme} mode="light">
112
- <ShowToastButton />
113
- </Theme>,
114
- );
115
-
116
- // This is the very first click in the whole file, so it's the one that
117
- // finds the fallback proxy still pending: addToast queues the entry and
118
- // kicks off the ctxReady.then(...) microtask that later delivers it to
119
- // the real context. Awaiting an async act() here flushes that chain
120
- // instead of letting it resolve outside any act scope.
121
- await act(async () => {
122
- fireEvent.click(screen.getByText('Trigger'));
123
- });
124
-
125
- await waitFor(() => {
126
- expect(
127
- document.querySelector(
128
- '[data-astryx-toast-fallback] [data-astryx-media]',
129
- ),
130
- ).not.toBeNull();
131
- });
132
-
133
- // App mode is light, so the toast's inverted surface must be dark — if
134
- // the fallback fell back to OS preference (dark) instead, this would be
135
- // 'light' and the toast's text/icon would compute the same color as its
136
- // own background (the invisible-toast bug).
137
- expect(
138
- newestMediaAttr(document.querySelector('[data-astryx-toast-fallback]')!),
139
- ).toBe('dark');
140
- });
141
-
142
- it('keeps the OS-preference fallback for mode="system" with no LayerProvider', async () => {
143
- mockMatchMedia(true); // OS prefers dark
144
-
145
- render(
146
- <Theme theme={testTheme} mode="system">
147
- <ShowToastButton label="Trigger System" />
148
- </Theme>,
149
- );
150
-
151
- // The fallback viewport is a persistent module singleton (see file
152
- // header), so earlier tests may have already added toasts to it — count
153
- // beforehand instead of assuming a fixed prior count, so this test
154
- // survives running alone (.only, -t, shuffle) as well as in sequence.
155
- const countBefore = document.querySelectorAll(
156
- '[data-astryx-toast-fallback] [data-astryx-media]',
157
- ).length;
158
-
159
- act(() => {
160
- fireEvent.click(screen.getByText('Trigger System'));
161
- });
162
-
163
- await waitFor(() => {
164
- const nodes = document.querySelectorAll(
165
- '[data-astryx-toast-fallback] [data-astryx-media]',
166
- );
167
- expect(nodes.length).toBeGreaterThan(countBefore);
168
- });
169
-
170
- // mode="system" means #1587 removes data-theme from <html> — useTheme's
171
- // <html data-theme> fallback then has nothing to read, leaving its own
172
- // OS-preference resolution (dark here) in place, same as before this fix.
173
- expect(
174
- newestMediaAttr(document.querySelector('[data-astryx-toast-fallback]')!),
175
- ).toBe('light');
176
- });
177
-
178
- it('mirrors <html data-theme> and data-astryx-theme onto the fallback container', async () => {
179
- mockMatchMedia(false);
180
-
181
- const {rerender} = render(
182
- <Theme theme={testTheme} mode="dark">
183
- <ShowToastButton label="Trigger Mirror" />
184
- </Theme>,
185
- );
186
-
187
- act(() => {
188
- fireEvent.click(screen.getByText('Trigger Mirror'));
189
- });
190
-
191
- await waitFor(() => {
192
- const fallback = document.querySelector(
193
- '[data-astryx-toast-fallback]',
194
- ) as HTMLElement;
195
- expect(fallback.getAttribute('data-theme')).toBe('dark');
196
- expect(fallback.getAttribute('data-astryx-theme')).toBe('test');
197
- // Inline color-scheme must follow the mirrored mode, not <html>'s own
198
- // (possibly #3658-pinned) theme CSS — see useToast.tsx's syncRootThemeAttrs.
199
- expect(fallback.style.colorScheme).toBe('dark');
200
- });
201
-
202
- // Flip the app mode: the shared MutationObserver re-syncs the container,
203
- // so the inline color-scheme must follow it live.
204
- rerender(
205
- <Theme theme={testTheme} mode="light">
206
- <ShowToastButton label="Trigger Mirror" />
207
- </Theme>,
208
- );
209
-
210
- await waitFor(() => {
211
- const fallback = document.querySelector(
212
- '[data-astryx-toast-fallback]',
213
- ) as HTMLElement;
214
- expect(fallback.getAttribute('data-theme')).toBe('light');
215
- expect(fallback.style.colorScheme).toBe('light');
216
- });
217
-
218
- // mode="system" removes <html data-theme> entirely — the inline property
219
- // must be removed too, reverting to whatever the CSS otherwise resolves.
220
- rerender(
221
- <Theme theme={testTheme} mode="system">
222
- <ShowToastButton label="Trigger Mirror" />
223
- </Theme>,
224
- );
225
-
226
- await waitFor(() => {
227
- const fallback = document.querySelector(
228
- '[data-astryx-toast-fallback]',
229
- ) as HTMLElement;
230
- expect(fallback.getAttribute('data-theme')).toBeNull();
231
- expect(fallback.style.colorScheme).toBe('');
232
- });
233
- });
234
- });
235
-
236
- describe('useToast LayerProvider path', () => {
237
- afterEach(() => {
238
- mockMatchMedia(false);
239
- });
240
-
241
- it('resolves mode via real context, unaffected by the fallback provider', () => {
242
- mockMatchMedia(true); // OS prefers dark; should be irrelevant here
243
-
244
- const {container} = render(
245
- <Theme theme={testTheme} mode="light">
246
- <ToastViewport isTopLayer={false}>
247
- <ShowToastButton label="Trigger Provider" />
248
- </ToastViewport>
249
- </Theme>,
250
- );
251
-
252
- act(() => {
253
- fireEvent.click(screen.getByText('Trigger Provider'));
254
- });
255
-
256
- expect(newestMediaAttr(container)).toBe('dark');
257
- });
258
- });
@@ -1,26 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- /**
4
- * @file TestIcon.tsx
5
- * @input Standard SVG props
6
- * @output A minimal SVG React component for tests
7
- * @position Test fixture; a stand-in external SVG icon for Icon component-mode tests
8
- *
9
- * A trivial SVG component used by tests that need to pass a custom SVG icon to
10
- * `Icon` (component mode) or component `*Icon` props. It forwards all standard
11
- * SVG props and its ref so tests exercising prop/ref forwarding behave the same
12
- * as a real third-party icon component.
13
- */
14
-
15
- import React, {type SVGProps} from 'react';
16
-
17
- export function TestIcon({
18
- ref,
19
- ...props
20
- }: SVGProps<SVGSVGElement> & {ref?: React.Ref<SVGSVGElement>}) {
21
- return (
22
- <svg ref={ref} viewBox="0 0 24 24" {...props}>
23
- <path d="M4 4h16v16H4z" />
24
- </svg>
25
- );
26
- }
@@ -1,66 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- /**
4
- * @file fastRoleQueries.ts
5
- * @input Uses @testing-library/react screen, dom-accessibility-api
6
- * @output getButton/queryButton — role+name lookups that stay O(match) in jsdom
7
- * @position Shared test helper; imported by component tests that render large
8
- * always-mounted button collections (Calendar month grids)
9
- *
10
- * RTL's getByRole('button', {name}) computes the accessible name of EVERY
11
- * role candidate before filtering, and each computation consults jsdom's slow
12
- * getComputedStyle (~5ms per node). The date components keep a month grid of
13
- * ~35–85 role=button nodes mounted — visible in Calendar's case, inside the
14
- * closed popover for the *Input components — so a single trigger lookup cost
15
- * ~450ms and dominated those suites' runtime (DateRangeInput: 34s for 34
16
- * tests before this helper existed).
17
- *
18
- * These helpers keep RTL's exact name algorithm (dom-accessibility-api is the
19
- * library RTL uses internally) but:
20
- * - collect candidates with {hidden: true}, skipping the per-node
21
- * getComputedStyle visibility checks, and
22
- * - inject a constant "visible" style stub into the name computation —
23
- * names only consult display/visibility, and under {hidden: true}
24
- * semantics visibility must not exclude candidates anyway.
25
- *
26
- * Trade-off vs getByRole: first match wins — no tree-wide uniqueness check.
27
- *
28
- * SYNC: When modified, update this header.
29
- */
30
-
31
- import {screen} from '@testing-library/react';
32
- import {computeAccessibleName} from 'dom-accessibility-api';
33
-
34
- // The name algorithm only reads getPropertyValue (for display/visibility/
35
- // content), so a Pick is all we need to type honestly — no object-literal
36
- // cast. The widening to CSSStyleDeclaration happens at the call site, where
37
- // getComputedStyle's signature demands the full type.
38
- const visibleStyleStub: Pick<CSSStyleDeclaration, 'getPropertyValue'> = {
39
- getPropertyValue: prop =>
40
- prop === 'display' ? 'block' : prop === 'visibility' ? 'visible' : '',
41
- };
42
-
43
- function matchesName(el: Element, name: string | RegExp): boolean {
44
- const accessibleName = computeAccessibleName(el, {
45
- getComputedStyle: () => visibleStyleStub as CSSStyleDeclaration,
46
- });
47
- return typeof name === 'string'
48
- ? accessibleName === name
49
- : name.test(accessibleName);
50
- }
51
-
52
- export function queryButton(name: string | RegExp): HTMLElement | null {
53
- return (
54
- screen
55
- .queryAllByRole('button', {hidden: true})
56
- .find(el => matchesName(el, name)) ?? null
57
- );
58
- }
59
-
60
- export function getButton(name: string | RegExp): HTMLElement {
61
- const el = queryButton(name);
62
- if (!el) {
63
- throw new Error(`Unable to find a role=button named ${String(name)}`);
64
- }
65
- return el;
66
- }