@astryxdesign/core 0.1.4-canary.fd7ab46 → 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 (579) 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.js +15 -15
  175. package/dist/MobileNav/MobileNavToggle.js +5 -5
  176. package/dist/MoreMenu/MoreMenu.js +3 -3
  177. package/dist/MultiSelector/MultiSelector.js +56 -56
  178. package/dist/NavIcon/NavIcon.js +3 -3
  179. package/dist/NavMenu/NavHeadingMenu.js +5 -5
  180. package/dist/NavMenu/NavHeadingMenuItem.js +8 -8
  181. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  182. package/dist/NumberInput/NumberInput.js +32 -48
  183. package/dist/Outline/Outline.js +15 -15
  184. package/dist/OverflowList/OverflowList.js +8 -8
  185. package/dist/Overlay/Overlay.js +3 -3
  186. package/dist/Overlay/OverlayScrim.js +5 -5
  187. package/dist/Overlay/useOverlay.js +3 -3
  188. package/dist/Pagination/Pagination.d.ts +1 -1
  189. package/dist/Pagination/Pagination.d.ts.map +1 -1
  190. package/dist/Pagination/Pagination.js +72 -125
  191. package/dist/Popover/Popover.js +16 -16
  192. package/dist/Popover/usePopover.js +7 -7
  193. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  194. package/dist/PowerSearch/PowerSearch.js +92 -110
  195. package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
  196. package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
  197. package/dist/PowerSearch/PowerSearchToken.js +5 -5
  198. package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
  199. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  200. package/dist/ProgressBar/ProgressBar.js +18 -25
  201. package/dist/RadioList/RadioList.js +7 -7
  202. package/dist/RadioList/RadioListItem.d.ts +1 -1
  203. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  204. package/dist/RadioList/RadioListItem.js +21 -24
  205. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  206. package/dist/Resizable/ResizeHandle.js +10 -28
  207. package/dist/Section/Section.js +5 -5
  208. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  209. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  210. package/dist/SegmentedControl/SegmentedControl.js +10 -32
  211. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  212. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  213. package/dist/SegmentedControl/SegmentedControlItem.js +12 -18
  214. package/dist/SelectableCard/SelectableCard.js +5 -5
  215. package/dist/Selector/Selector.js +46 -46
  216. package/dist/Selector/SelectorOption.js +3 -3
  217. package/dist/SideNav/SideNav.d.ts.map +1 -1
  218. package/dist/SideNav/SideNav.js +34 -38
  219. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  220. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  221. package/dist/SideNav/SideNavCollapseButton.js +6 -8
  222. package/dist/SideNav/SideNavHeading.js +87 -87
  223. package/dist/SideNav/SideNavItem.js +42 -42
  224. package/dist/SideNav/SideNavSection.d.ts +1 -1
  225. package/dist/SideNav/SideNavSection.d.ts.map +1 -1
  226. package/dist/SideNav/SideNavSection.js +16 -18
  227. package/dist/Skeleton/Skeleton.js +3 -3
  228. package/dist/Slider/Slider.js +23 -23
  229. package/dist/Spinner/Spinner.js +9 -9
  230. package/dist/StatusDot/StatusDot.js +5 -5
  231. package/dist/Switch/Switch.d.ts +4 -8
  232. package/dist/Switch/Switch.d.ts.map +1 -1
  233. package/dist/Switch/Switch.js +29 -34
  234. package/dist/TabList/Tab.js +18 -18
  235. package/dist/TabList/TabList.js +5 -5
  236. package/dist/TabList/TabMenu.d.ts.map +1 -1
  237. package/dist/TabList/TabMenu.js +30 -57
  238. package/dist/TabList/tab.markers.stylex.d.ts +1 -1
  239. package/dist/Table/BaseTable.d.ts.map +1 -1
  240. package/dist/Table/BaseTable.js +39 -50
  241. package/dist/Table/Table.js +7 -7
  242. package/dist/Table/TableBody.d.ts +1 -1
  243. package/dist/Table/TableBody.d.ts.map +1 -1
  244. package/dist/Table/TableBody.js +5 -9
  245. package/dist/Table/TableCell.js +3 -3
  246. package/dist/Table/TableFooter.d.ts +1 -1
  247. package/dist/Table/TableFooter.d.ts.map +1 -1
  248. package/dist/Table/TableFooter.js +5 -9
  249. package/dist/Table/TableHeader.d.ts +1 -1
  250. package/dist/Table/TableHeader.d.ts.map +1 -1
  251. package/dist/Table/TableHeader.js +5 -9
  252. package/dist/Table/TableHeaderCell.js +3 -3
  253. package/dist/Table/TableRow.js +5 -5
  254. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  255. package/dist/Table/plugins/columnResize/useTableColumnResize.js +11 -14
  256. package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
  257. package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
  258. package/dist/Table/plugins/pagination/paginateData.js +1 -5
  259. package/dist/Table/plugins/pagination/useTablePagination.js +7 -7
  260. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +22 -22
  261. package/dist/Table/plugins/selection/useTableSelection.js +18 -18
  262. package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
  263. package/dist/Table/plugins/selection/useTableSelectionState.js +1 -11
  264. package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
  265. package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
  266. package/dist/Table/plugins/sortable/useTableSortableState.js +4 -8
  267. package/dist/Table/tableContextMenu.js +9 -9
  268. package/dist/Text/Text.js +10 -10
  269. package/dist/TextArea/TextArea.js +14 -14
  270. package/dist/TextInput/TextInput.js +15 -15
  271. package/dist/Thumbnail/Thumbnail.d.ts +2 -3
  272. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  273. package/dist/Thumbnail/Thumbnail.js +29 -30
  274. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  275. package/dist/TimeInput/TimeInput.js +21 -26
  276. package/dist/Timestamp/Timestamp.d.ts +1 -1
  277. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  278. package/dist/Timestamp/Timestamp.js +26 -37
  279. package/dist/Toast/Toast.d.ts.map +1 -1
  280. package/dist/Toast/Toast.js +17 -25
  281. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  282. package/dist/Toast/ToastViewport.js +11 -23
  283. package/dist/Toast/useToast.js +4 -4
  284. package/dist/ToggleButton/ToggleButton.js +12 -12
  285. package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
  286. package/dist/Token/Token.js +21 -21
  287. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  288. package/dist/Tokenizer/Tokenizer.js +34 -36
  289. package/dist/Toolbar/Toolbar.js +18 -18
  290. package/dist/Tooltip/Tooltip.js +11 -11
  291. package/dist/Tooltip/useTooltip.d.ts +1 -5
  292. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  293. package/dist/Tooltip/useTooltip.js +3 -3
  294. package/dist/TopNav/TopNav.js +32 -32
  295. package/dist/TopNav/TopNavHeading.js +67 -67
  296. package/dist/TopNav/TopNavItem.js +5 -5
  297. package/dist/TopNav/TopNavMegaMenu.js +30 -30
  298. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  299. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  300. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +14 -25
  301. package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
  302. package/dist/TopNav/TopNavMenu.js +32 -32
  303. package/dist/TreeList/TreeList.js +8 -8
  304. package/dist/TreeList/TreeListBranches.js +11 -11
  305. package/dist/TreeList/TreeListItem.js +30 -30
  306. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  307. package/dist/Typeahead/BaseTypeahead.js +20 -23
  308. package/dist/Typeahead/Typeahead.js +12 -12
  309. package/dist/Typeahead/TypeaheadItem.js +10 -10
  310. package/dist/VStack/VStack.js +3 -3
  311. package/dist/astryx.css +0 -7
  312. package/dist/astryx.umd.js +60 -60
  313. package/dist/astryx.umd.js.map +4 -4
  314. package/dist/docs-types.d.ts +2 -8
  315. package/dist/docs-types.d.ts.map +1 -1
  316. package/dist/hooks/focusableSelector.d.ts +1 -1
  317. package/dist/hooks/focusableSelector.d.ts.map +1 -1
  318. package/dist/hooks/focusableSelector.js +1 -1
  319. package/dist/hooks/index.d.ts +0 -2
  320. package/dist/hooks/index.d.ts.map +1 -1
  321. package/dist/hooks/index.js +0 -1
  322. package/dist/hooks/useFocusTrap.d.ts +0 -3
  323. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  324. package/dist/hooks/useFocusTrap.js +1 -38
  325. package/dist/hooks/useInteractiveRole.d.ts +2 -6
  326. package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
  327. package/dist/hooks/useInteractiveRole.js +2 -6
  328. package/dist/hooks/useKeyboardHint.js +9 -9
  329. package/dist/hooks/useStreamingText.d.ts +1 -3
  330. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  331. package/dist/hooks/useStreamingText.js +5 -14
  332. package/dist/theme/MediaTheme.js +3 -3
  333. package/dist/theme/Theme.js +7 -7
  334. package/dist/theme/defineTheme.d.ts +1 -1
  335. package/dist/theme/defineTheme.d.ts.map +1 -1
  336. package/dist/theme/expandColorScale.d.ts.map +1 -1
  337. package/dist/theme/expandColorScale.js +3 -10
  338. package/dist/theme/hct.d.ts +15 -0
  339. package/dist/theme/hct.d.ts.map +1 -1
  340. package/dist/theme/hct.js +9 -9
  341. package/dist/theme/syntax/SyntaxTheme.js +5 -5
  342. package/dist/theme/tokens.d.ts +2 -10
  343. package/dist/theme/tokens.d.ts.map +1 -1
  344. package/dist/theme/tokens.js +4 -220
  345. package/dist/utils/index.d.ts +0 -3
  346. package/dist/utils/index.d.ts.map +1 -1
  347. package/dist/utils/index.js +1 -3
  348. package/dist/utils/timeParser.d.ts.map +1 -1
  349. package/dist/utils/timeParser.js +5 -8
  350. package/package.json +3 -3
  351. package/src/AlertDialog/AlertDialog.doc.mjs +0 -4
  352. package/src/AlertDialog/AlertDialog.tsx +0 -2
  353. package/src/AppShell/AppShell.tsx +0 -2
  354. package/src/AspectRatio/AspectRatio.doc.mjs +1 -28
  355. package/src/AspectRatio/AspectRatio.test.tsx +1 -142
  356. package/src/AspectRatio/AspectRatio.tsx +10 -70
  357. package/src/AspectRatio/index.ts +1 -5
  358. package/src/Avatar/Avatar.doc.mjs +0 -11
  359. package/src/Avatar/Avatar.test.tsx +1 -32
  360. package/src/Avatar/Avatar.tsx +20 -12
  361. package/src/Banner/Banner.doc.mjs +0 -8
  362. package/src/Banner/Banner.test.tsx +0 -38
  363. package/src/Banner/Banner.tsx +1 -8
  364. package/src/Calendar/Calendar.doc.mjs +1 -1
  365. package/src/Calendar/Calendar.test.tsx +17 -122
  366. package/src/Calendar/Calendar.tsx +5 -26
  367. package/src/Calendar/dayCellUtils.ts +1 -3
  368. package/src/Calendar/styles.ts +2 -12
  369. package/src/Card/Card.tsx +6 -16
  370. package/src/Carousel/Carousel.doc.mjs +12 -12
  371. package/src/Carousel/Carousel.test.tsx +0 -13
  372. package/src/Carousel/Carousel.tsx +2 -4
  373. package/src/Carousel/carousel.markers.stylex.ts +10 -0
  374. package/src/Chat/Chat.doc.mjs +1 -1
  375. package/src/Chat/ChatComposerInput.test.tsx +1 -27
  376. package/src/Chat/ChatComposerInput.tsx +15 -20
  377. package/src/Chat/ChatDictationButton.tsx +4 -4
  378. package/src/Chat/ChatLayoutScrollButton.tsx +1 -3
  379. package/src/Chat/ChatMessageMetadata.tsx +6 -4
  380. package/src/Chat/ChatSystemMessage.test.tsx +11 -26
  381. package/src/Chat/ChatSystemMessage.tsx +7 -7
  382. package/src/Chat/ChatTokenizedText.test.tsx +16 -29
  383. package/src/Chat/ChatTokenizedText.tsx +8 -15
  384. package/src/Chat/ChatToolCalls.test.tsx +0 -55
  385. package/src/Chat/ChatToolCalls.tsx +12 -10
  386. package/src/Chat/index.ts +4 -1
  387. package/src/Chat/useTriggerMenu.tsx +4 -1
  388. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  389. package/src/CheckboxInput/CheckboxInput.test.tsx +4 -71
  390. package/src/CheckboxInput/CheckboxInput.tsx +0 -2
  391. package/src/CheckboxList/CheckboxList.test.tsx +0 -19
  392. package/src/CheckboxList/CheckboxListItem.tsx +2 -11
  393. package/src/Citation/Citation.doc.mjs +0 -5
  394. package/src/ClickableCard/ClickableCard.tsx +2 -45
  395. package/src/CodeBlock/CodeBlock.doc.mjs +2 -7
  396. package/src/CodeBlock/CodeBlock.test.tsx +3 -122
  397. package/src/CodeBlock/CodeBlock.tsx +4 -62
  398. package/src/Collapsible/Collapsible.doc.mjs +4 -8
  399. package/src/Collapsible/Collapsible.tsx +10 -86
  400. package/src/Collapsible/CollapsibleGroup.doc.mjs +3 -27
  401. package/src/Collapsible/CollapsibleGroup.test.tsx +0 -318
  402. package/src/Collapsible/CollapsibleGroup.tsx +9 -107
  403. package/src/Collapsible/CollapsibleGroupContext.tsx +2 -42
  404. package/src/Collapsible/index.ts +0 -4
  405. package/src/Collapsible/useCollapsible.ts +6 -20
  406. package/src/CommandPalette/CommandPalette.doc.mjs +0 -4
  407. package/src/CommandPalette/CommandPalette.tsx +3 -5
  408. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +0 -5
  409. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +0 -10
  410. package/src/CommandPalette/CommandPaletteInput.doc.mjs +0 -6
  411. package/src/CommandPalette/CommandPaletteItem.doc.mjs +0 -6
  412. package/src/CommandPalette/CommandPaletteList.doc.mjs +0 -9
  413. package/src/ContextMenu/ContextMenu.doc.mjs +0 -15
  414. package/src/ContextMenu/ContextMenu.test.tsx +0 -87
  415. package/src/ContextMenu/ContextMenu.tsx +28 -87
  416. package/src/ContextMenu/ContextMenuItem.doc.mjs +0 -6
  417. package/src/DateInput/DateInput.test.tsx +20 -11
  418. package/src/DateRangeInput/DateRangeInput.test.tsx +44 -31
  419. package/src/DateTimeInput/DateTimeInput.doc.mjs +2 -3
  420. package/src/DateTimeInput/DateTimeInput.test.tsx +16 -118
  421. package/src/DateTimeInput/DateTimeInput.tsx +2 -8
  422. package/src/DateTimeInput/index.ts +0 -1
  423. package/src/Dialog/Dialog.doc.mjs +0 -4
  424. package/src/Dialog/DialogHeader.doc.mjs +0 -45
  425. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
  426. package/src/DropdownMenu/DropdownMenu.test.tsx +2 -22
  427. package/src/DropdownMenu/DropdownMenuItem.tsx +17 -5
  428. package/src/Field/Field.test.tsx +4 -1
  429. package/src/Field/FieldLabel.test.tsx +2 -2
  430. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +3 -0
  431. package/src/Grid/Grid.test.tsx +18 -43
  432. package/src/Grid/Grid.tsx +9 -26
  433. package/src/HoverCard/HoverCard.doc.mjs +6 -6
  434. package/src/HoverCard/useHoverCard.doc.mjs +5 -5
  435. package/src/HoverCard/useHoverCard.tsx +2 -9
  436. package/src/Icon/Icon.test.tsx +29 -41
  437. package/src/Icon/Icon.tsx +2 -6
  438. package/src/InputGroup/InputGroup.tsx +2 -2
  439. package/src/Item/Item.tsx +1 -1
  440. package/src/Layer/useLayer.doc.mjs +2 -2
  441. package/src/Layer/useLayer.test.tsx +2 -221
  442. package/src/Layer/useLayer.tsx +30 -69
  443. package/src/Layout/LayoutContent.doc.mjs +0 -12
  444. package/src/Layout/LayoutPanel.doc.mjs +0 -40
  445. package/src/Lightbox/Lightbox.doc.mjs +0 -5
  446. package/src/Lightbox/Lightbox.test.tsx +2 -123
  447. package/src/Lightbox/Lightbox.tsx +1 -29
  448. package/src/Markdown/Markdown.tsx +7 -9
  449. package/src/Markdown/parser.perf.test.ts +12 -34
  450. package/src/NavMenu/NavMenu.doc.mjs +0 -15
  451. package/src/NumberInput/NumberInput.test.tsx +3 -48
  452. package/src/NumberInput/NumberInput.tsx +15 -32
  453. package/src/Overlay/Overlay.doc.mjs +0 -6
  454. package/src/Pagination/Pagination.test.tsx +0 -162
  455. package/src/Pagination/Pagination.tsx +26 -80
  456. package/src/Popover/Popover.doc.mjs +6 -6
  457. package/src/Popover/Popover.test.tsx +0 -65
  458. package/src/Popover/usePopover.doc.mjs +1 -1
  459. package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
  460. package/src/PowerSearch/PowerSearch.test.tsx +1 -109
  461. package/src/PowerSearch/PowerSearch.tsx +16 -37
  462. package/src/ProgressBar/ProgressBar.test.tsx +0 -30
  463. package/src/ProgressBar/ProgressBar.tsx +5 -12
  464. package/src/RadioList/RadioList.test.tsx +0 -19
  465. package/src/RadioList/RadioListItem.tsx +4 -9
  466. package/src/Resizable/ResizeHandle.tsx +4 -22
  467. package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
  468. package/src/SegmentedControl/SegmentedControl.test.tsx +0 -192
  469. package/src/SegmentedControl/SegmentedControl.tsx +5 -27
  470. package/src/SegmentedControl/SegmentedControlItem.tsx +4 -9
  471. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  472. package/src/Selector/Selector.test.tsx +1 -27
  473. package/src/SideNav/SideNav.doc.mjs +1 -7
  474. package/src/SideNav/SideNav.test.tsx +0 -66
  475. package/src/SideNav/SideNav.tsx +2 -6
  476. package/src/SideNav/SideNavCollapseButton.tsx +3 -4
  477. package/src/SideNav/SideNavSection.tsx +4 -6
  478. package/src/Switch/Switch.doc.mjs +7 -7
  479. package/src/Switch/Switch.test.tsx +3 -102
  480. package/src/Switch/Switch.tsx +7 -20
  481. package/src/TabList/TabList.test.tsx +1 -185
  482. package/src/TabList/TabMenu.tsx +9 -45
  483. package/src/Table/BaseTable.tsx +2 -13
  484. package/src/Table/Table.test.tsx +0 -87
  485. package/src/Table/TableBody.tsx +2 -15
  486. package/src/Table/TableFooter.tsx +2 -15
  487. package/src/Table/TableHeader.tsx +2 -15
  488. package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +0 -13
  489. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +1 -3
  490. package/src/Table/plugins/pagination/paginateData.ts +1 -5
  491. package/src/Table/plugins/pagination/useTablePagination.test.tsx +0 -13
  492. package/src/Table/plugins/selection/useTableSelectionState.test.tsx +0 -23
  493. package/src/Table/plugins/selection/useTableSelectionState.tsx +6 -11
  494. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +1 -35
  495. package/src/Table/plugins/sortable/useTableSortableState.tsx +4 -8
  496. package/src/TextArea/TextArea.test.tsx +3 -3
  497. package/src/TextInput/TextInput.test.tsx +3 -3
  498. package/src/Thumbnail/Thumbnail.test.tsx +2 -36
  499. package/src/Thumbnail/Thumbnail.tsx +2 -4
  500. package/src/TimeInput/TimeInput.test.tsx +0 -37
  501. package/src/TimeInput/TimeInput.tsx +1 -11
  502. package/src/Timestamp/Timestamp.doc.mjs +1 -1
  503. package/src/Timestamp/Timestamp.test.tsx +0 -52
  504. package/src/Timestamp/Timestamp.tsx +16 -30
  505. package/src/Toast/Toast.tsx +3 -11
  506. package/src/Toast/ToastViewport.test.tsx +0 -64
  507. package/src/Toast/ToastViewport.tsx +0 -12
  508. package/src/ToggleButton/ToggleButton.doc.mjs +0 -1
  509. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  510. package/src/Tokenizer/Tokenizer.test.tsx +0 -54
  511. package/src/Tokenizer/Tokenizer.tsx +4 -5
  512. package/src/Tooltip/Tooltip.doc.mjs +6 -6
  513. package/src/Tooltip/useTooltip.doc.mjs +5 -5
  514. package/src/Tooltip/useTooltip.tsx +2 -12
  515. package/src/TopNav/TopNav.doc.mjs +1 -1
  516. package/src/TopNav/TopNav.test.tsx +7 -23
  517. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +2 -9
  518. package/src/TreeList/TreeList.doc.mjs +2 -2
  519. package/src/Typeahead/BaseTypeahead.doc.mjs +0 -19
  520. package/src/Typeahead/BaseTypeahead.tsx +2 -5
  521. package/src/Typeahead/Typeahead.doc.mjs +1 -1
  522. package/src/Typeahead/Typeahead.test.tsx +1 -45
  523. package/src/docs-types.ts +1 -9
  524. package/src/hooks/focusableSelector.ts +1 -1
  525. package/src/hooks/index.ts +0 -3
  526. package/src/hooks/useFocusTrap.doc.mjs +2 -4
  527. package/src/hooks/useFocusTrap.test.tsx +1 -149
  528. package/src/hooks/useFocusTrap.ts +1 -50
  529. package/src/hooks/useInteractiveRole.ts +4 -12
  530. package/src/hooks/useStreamingText.test.ts +19 -54
  531. package/src/hooks/useStreamingText.ts +5 -16
  532. package/src/hooks/useTreeFocus.test.tsx +3 -1
  533. package/src/reset.css +0 -29
  534. package/src/theme/SyntaxTheme.doc.mjs +4 -4
  535. package/src/theme/defineTheme.ts +13 -4
  536. package/src/theme/derivedVarRegistry.test.ts +2 -2
  537. package/src/theme/expandColorScale.test.ts +0 -29
  538. package/src/theme/expandColorScale.ts +6 -11
  539. package/src/theme/hct.ts +17 -9
  540. package/src/theme/tokens.test.ts +9 -182
  541. package/src/theme/tokens.ts +4 -239
  542. package/src/theme/useTheme.test.tsx +0 -20
  543. package/src/utils/index.ts +0 -4
  544. package/src/utils/sharedResizeObserver.test.ts +2 -2
  545. package/src/utils/timeParser.test.ts +0 -13
  546. package/src/utils/timeParser.ts +5 -8
  547. package/dist/hooks/useHotkeys.d.ts +0 -51
  548. package/dist/hooks/useHotkeys.d.ts.map +0 -1
  549. package/dist/hooks/useHotkeys.js +0 -160
  550. package/dist/utils/color.d.ts +0 -42
  551. package/dist/utils/color.d.ts.map +0 -1
  552. package/dist/utils/color.js +0 -150
  553. package/dist/utils/composeEventHandlers.d.ts +0 -30
  554. package/dist/utils/composeEventHandlers.d.ts.map +0 -1
  555. package/dist/utils/composeEventHandlers.js +0 -40
  556. package/src/Chat/ChatDictationButton.test.tsx +0 -43
  557. package/src/Chat/ChatLayoutScrollButton.test.tsx +0 -33
  558. package/src/Chat/ChatMessageMetadata.test.tsx +0 -32
  559. package/src/Collapsible/Collapsible.test.tsx +0 -405
  560. package/src/FieldStatus/FieldStatus.test.tsx +0 -282
  561. package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +0 -185
  562. package/src/Layout/Layout.test.tsx +0 -285
  563. package/src/Layout/LayoutSlots.test.tsx +0 -364
  564. package/src/Outline/parseOutlineFromMarkdown.test.ts +0 -80
  565. package/src/OverflowList/OverflowList.test.tsx +0 -416
  566. package/src/Overlay/Overlay.test.tsx +0 -356
  567. package/src/Resizable/ResizeHandle.test.tsx +0 -218
  568. package/src/SizeContext/SizeContext.test.tsx +0 -226
  569. package/src/__tests__/TestIcon.tsx +0 -26
  570. package/src/__tests__/fastRoleQueries.ts +0 -66
  571. package/src/docPropReferences.test.ts +0 -178
  572. package/src/hooks/useHotkeys.doc.mjs +0 -52
  573. package/src/hooks/useHotkeys.test.ts +0 -245
  574. package/src/hooks/useHotkeys.ts +0 -203
  575. package/src/utils/color.test.ts +0 -133
  576. package/src/utils/color.ts +0 -148
  577. package/src/utils/composeEventHandlers.test.ts +0 -71
  578. package/src/utils/composeEventHandlers.ts +0 -44
  579. 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,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
- }
@@ -1,178 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- /* eslint-disable @typescript-eslint/no-require-imports */
4
- /**
5
- * @file Guards doc prose against docs/source prop mismatches (#3360).
6
- *
7
- * Scans every {Name}.doc.mjs for prose phrases like "the foo prop on Bar"
8
- * and verifies the referenced prop is documented on the referenced
9
- * component. Doc prose is LLM training signal: a reference to a prop that
10
- * doesn't exist steers codegen toward hallucinated APIs (#3360 shipped a
11
- * bullet pointing at a nonexistent CodeBlock syntaxTheme prop).
12
- *
13
- * A reference to a missing prop is allowed only when the same string
14
- * explicitly negates it ("no such prop exists" / "does not exist"), the
15
- * corrective-bullet pattern used to counter known hallucinations.
16
- */
17
-
18
- import {describe, it, expect} from 'vitest';
19
- import {readdirSync} from 'node:fs';
20
- import {join, relative} from 'node:path';
21
-
22
- const SRC_DIR = __dirname;
23
-
24
- type DocModule = {
25
- docs?: {
26
- name?: string;
27
- props?: {name: string}[];
28
- components?: {name?: string; props?: {name: string}[]}[];
29
- };
30
- };
31
-
32
- /**
33
- * Props intentionally omitted from doc props[]: PropDoc in docs-types.ts
34
- * says to skip internal/styling props, so prose may reference them even
35
- * though no doc lists them.
36
- */
37
- const UNIVERSAL_PROPS = new Set([
38
- 'xstyle',
39
- 'className',
40
- 'style',
41
- 'ref',
42
- 'data-testid',
43
- ]);
44
-
45
- /**
46
- * Matches prose like "the foo prop on Bar", "foo prop of Bar", and
47
- * conjunction targets: "foo prop on Bar or Baz". Group 1 is the prop
48
- * (camelCase, lowercase first letter), group 2 the component name list.
49
- */
50
- const PROP_REF_PATTERN =
51
- /\b([a-z][A-Za-z0-9]*) prop (?:on|of) (?:the )?([A-Z][A-Za-z0-9]*(?:(?:,(?: and| or)?| and| or) [A-Z][A-Za-z0-9]*)*)/g;
52
-
53
- /** A same-string negation marks the reference as a deliberate counter-signal. */
54
- const NEGATION_PATTERN = /no such prop|does not exist|doesn't exist/i;
55
-
56
- function findDocFiles(dir: string): string[] {
57
- const files: string[] = [];
58
- for (const entry of readdirSync(dir, {withFileTypes: true})) {
59
- const full = join(dir, entry.name);
60
- if (entry.isDirectory()) {
61
- files.push(...findDocFiles(full));
62
- } else if (entry.name.endsWith('.doc.mjs')) {
63
- files.push(full);
64
- }
65
- }
66
- return files;
67
- }
68
-
69
- /** Collect every string value reachable from a doc module export. */
70
- function collectStrings(value: unknown, out: string[]): void {
71
- if (typeof value === 'string') {
72
- out.push(value);
73
- } else if (Array.isArray(value)) {
74
- for (const item of value) {
75
- collectStrings(item, out);
76
- }
77
- } else if (value && typeof value === 'object') {
78
- for (const item of Object.values(value)) {
79
- collectStrings(item, out);
80
- }
81
- }
82
- }
83
-
84
- const docFiles = findDocFiles(SRC_DIR);
85
-
86
- // Component name → documented prop names, from every doc file's props[]
87
- // (single and sub-component docs) and inline components[] entries.
88
- const documentedProps = new Map<string, Set<string>>();
89
- for (const file of docFiles) {
90
- const mod = require(file) as DocModule;
91
- const docs = mod.docs;
92
- if (!docs) {
93
- continue;
94
- }
95
- const entries = [
96
- {name: docs.name, props: docs.props},
97
- ...(docs.components || []),
98
- ];
99
- for (const {name, props} of entries) {
100
- if (!name || !Array.isArray(props)) {
101
- continue;
102
- }
103
- const set = documentedProps.get(name) || new Set<string>();
104
- for (const prop of props) {
105
- set.add(prop.name);
106
- }
107
- documentedProps.set(name, set);
108
- }
109
- }
110
-
111
- interface Violation {
112
- file: string;
113
- component: string;
114
- prop: string;
115
- excerpt: string;
116
- }
117
-
118
- function findViolations(): Violation[] {
119
- const violations: Violation[] = [];
120
- for (const file of docFiles) {
121
- const strings: string[] = [];
122
- collectStrings(require(file), strings);
123
- for (const text of strings) {
124
- let match;
125
- while ((match = PROP_REF_PATTERN.exec(text)) !== null) {
126
- const [, prop, componentList] = match;
127
- if (UNIVERSAL_PROPS.has(prop) || NEGATION_PATTERN.test(text)) {
128
- continue;
129
- }
130
- for (const component of componentList.split(
131
- /,(?: and| or)?| and | or /,
132
- )) {
133
- const name = component.trim();
134
- if (!name) {
135
- continue;
136
- }
137
- const known = documentedProps.get(name);
138
- if (known && !known.has(prop)) {
139
- violations.push({
140
- file: relative(SRC_DIR, file),
141
- component: name,
142
- prop,
143
- excerpt: text.slice(
144
- Math.max(0, match.index - 40),
145
- match.index + match[0].length + 20,
146
- ),
147
- });
148
- }
149
- }
150
- }
151
- }
152
- }
153
- return violations;
154
- }
155
-
156
- describe('doc prose prop references', () => {
157
- it('sanity: discovers doc files and documented components', () => {
158
- expect(docFiles.length).toBeGreaterThan(0);
159
- expect(documentedProps.size).toBeGreaterThan(0);
160
- });
161
-
162
- it('every "X prop on Y" reference names a documented prop of Y', () => {
163
- const violations = findViolations();
164
- expect(
165
- violations,
166
- violations
167
- .map(
168
- v =>
169
- `${v.file} references prop "${v.prop}" on ${v.component}, ` +
170
- `which does not document it (…${v.excerpt}…). Either the prop ` +
171
- `doesn't exist (fix the prose; negate with "no such prop ` +
172
- `exists" if countering a known hallucination) or it exists in ` +
173
- `source but is missing from the component's doc props[] (add it).`,
174
- )
175
- .join('\n'),
176
- ).toEqual([]);
177
- });
178
- });
@@ -1,52 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- /** @type {import('../docs-types').HookDoc} */
4
- export const docs = {
5
- name: 'useHotkeys',
6
- displayName: 'useHotkeys',
7
- keywords: ['hotkey', 'shortcut', 'keyboard', 'keydown', 'command', 'palette', 'mod', 'cmd', 'ctrl', 'kbd'],
8
- params: [
9
- {
10
- name: 'hotkeys',
11
- type: 'Hotkey[]',
12
- description:
13
- 'Shortcut registrations. Each entry: `{ keys, onPress, allowInInputs?, isDisabled? }`. `keys` is a "+"-separated combo like "mod+k", "shift+/", "escape" — "mod" is ⌘ on macOS and Ctrl elsewhere. `onPress` receives the KeyboardEvent after preventDefault(). `allowInInputs` (default false) lets the hotkey fire while typing in inputs/textareas/selects/contenteditable. `isDisabled` temporarily disables the entry.',
14
- required: true,
15
- },
16
- ],
17
- returns: [],
18
- usage: {
19
- description:
20
- 'Registers global keyboard shortcuts with a single window keydown listener per hook instance. Handlers live in a ref, so re-renders never re-subscribe. Skips events from typing targets (input, textarea, select, contenteditable) unless allowInInputs, skips defaultPrevented events, and calls preventDefault() on match. SSR-safe.',
21
- bestPractices: [
22
- { guidance: true, description: 'Use for app-level shortcuts like command palettes (mod+k), help overlays (shift+/), and navigation keys.' },
23
- { guidance: true, description: 'Pair with the Kbd component to display the same combo you register — both resolve "mod" per platform identically.' },
24
- { guidance: true, description: 'Use isDisabled to suspend shortcuts while a modal or wizard owns the keyboard, instead of unmounting the hook.' },
25
- { guidance: false, description: 'Use for focus-scoped keyboard navigation inside a widget; use useListFocus or useGridFocus instead.' },
26
- ],
27
- },
28
- relatedComponents: ['Kbd'],
29
- relatedHooks: ['useListFocus', 'useGridFocus'],
30
- importPath: '@astryxdesign/core/hooks',
31
- category: 'interaction',
32
- };
33
-
34
- /** @type {import('../docs-types').HookTranslationDoc} */
35
- export const docsDense = {
36
- description:
37
- 'Global keyboard shortcuts w/ one window keydown listener per hook instance. Handlers kept in ref — re-renders never re-subscribe. Skips typing targets (input/textarea/select/contenteditable) unless allowInInputs, skips defaultPrevented, preventDefault() on match. "mod" = ⌘ on macOS, Ctrl elsewhere. SSR-safe.',
38
- paramDescriptions: {
39
- hotkeys:
40
- 'array of { keys, onPress, allowInInputs?, isDisabled? }. keys = "+"-separated combo ("mod+k", "shift+/", "escape").',
41
- },
42
- usage: {
43
- description:
44
- 'Global keyboard shortcuts w/ one window keydown listener per hook instance. Handlers kept in ref — re-renders never re-subscribe. Skips typing targets unless allowInInputs, skips defaultPrevented, preventDefault() on match. SSR-safe.',
45
- bestPractices: [
46
- { guidance: true, description: 'Use for app-level shortcuts: command palettes (mod+k), help overlays (shift+/), navigation keys.' },
47
- { guidance: true, description: 'Pair w/ Kbd component to display same combo registered — both resolve "mod" per platform identically.' },
48
- { guidance: true, description: 'Use isDisabled to suspend shortcuts while modal/wizard owns keyboard, instead of unmounting hook.' },
49
- { guidance: false, description: 'Use for focus-scoped keyboard nav inside widget; use useListFocus / useGridFocus instead.' },
50
- ],
51
- },
52
- };