@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
@@ -5,13 +5,12 @@
5
5
  /**
6
6
  * @file AspectRatio.tsx
7
7
  * @input Uses React, stylex
8
- * @output Exports AspectRatio component, AspectRatioProps, AspectRatioShape, AspectRatioFit
8
+ * @output Exports AspectRatio component and AspectRatioProps
9
9
  * @position AspectRatio component; maintains a specific aspect ratio for its children
10
10
  *
11
11
  * SYNC: When modified, update these files to stay in sync:
12
12
  * - /packages/core/src/AspectRatio/AspectRatio.doc.mjs
13
13
  * - /packages/core/src/AspectRatio/AspectRatio.test.tsx
14
- * - /packages/core/src/reset.css (AspectRatio fit baseline rules)
15
14
  * - /apps/storybook/stories/AspectRatio.stories.tsx
16
15
  * - /packages/cli/templates/blocks/components/AspectRatio/ (showcase blocks)
17
16
  */
@@ -30,16 +29,6 @@ import {themeProps} from '../utils/themeProps';
30
29
  */
31
30
  export type AspectRatioShape = 'rectangle' | 'ellipse';
32
31
 
33
- /**
34
- * How the child is sized and positioned inside the ratio box.
35
- * - `cover`: the child fills the box; media is cropped to preserve its own
36
- * aspect ratio (`object-fit: cover`).
37
- * - `contain`: the child fills the box; media is letterboxed to stay fully
38
- * visible (`object-fit: contain`).
39
- * - `center`: the child keeps its natural size and sits centered in the box.
40
- */
41
- export type AspectRatioFit = 'cover' | 'contain' | 'center';
42
-
43
32
  export interface AspectRatioProps extends BaseProps<HTMLDivElement> {
44
33
  /** Ref forwarded to the root element */
45
34
  ref?: React.Ref<HTMLDivElement>;
@@ -52,45 +41,20 @@ export interface AspectRatioProps extends BaseProps<HTMLDivElement> {
52
41
  * The shape of the container. Both shapes respect the provided `ratio`.
53
42
  * - `rectangle` (default): a standard rectangular container.
54
43
  * - `ellipse`: clips the container to an ellipse — a circle when `ratio={1}`,
55
- * or an oval at other ratios. Pair with `fit="cover"` so the media fills
56
- * the clipped container.
44
+ * or an oval at other ratios. Pair with a child that fills the container
45
+ * (e.g. an image with `objectFit: 'cover'`).
57
46
  *
58
47
  * @default 'rectangle'
59
48
  *
60
49
  * @example
61
50
  * ```
62
- * <AspectRatio ratio={1} shape="ellipse" fit="cover">
63
- * <img src="avatar.jpg" alt="" />
51
+ * <AspectRatio ratio={1} shape="ellipse">
52
+ * <img src="avatar.jpg" alt="" style={{objectFit: 'cover'}} />
64
53
  * </AspectRatio>
65
54
  * ```
66
55
  */
67
56
  shape?: AspectRatioShape;
68
57
 
69
- /**
70
- * How the child is laid out inside the ratio box, so the child does not
71
- * have to declare `width`/`height`/`objectFit` itself.
72
- * - `cover`: child fills the box; media is cropped (`object-fit: cover`).
73
- * - `contain`: child fills the box; media is letterboxed
74
- * (`object-fit: contain`).
75
- * - `center`: child keeps its natural size, centered in the box.
76
- *
77
- * `cover`/`contain` child sizing ships as zero-specificity baseline rules
78
- * in `reset.css`, keyed on the `data-astryx-aspect-ratio-override`
79
- * attribute the component sets on the child's direct parent. Any styles
80
- * the child sets itself still win, so children that already size
81
- * themselves keep their behavior. When omitted, the child is left
82
- * unstyled (the pre-existing contract). `fit` is structural, not visual,
83
- * so it is not exposed on the theming surface.
84
- *
85
- * @example
86
- * ```
87
- * <AspectRatio ratio={16 / 9} fit="cover">
88
- * <img src="image.jpg" alt="Widescreen image" />
89
- * </AspectRatio>
90
- * ```
91
- */
92
- fit?: AspectRatioFit;
93
-
94
58
  /**
95
59
  * Content to render inside the aspect ratio container.
96
60
  * The child element will be positioned absolutely to fill the container.
@@ -118,16 +82,6 @@ const styles = stylex.create({
118
82
  width: '100%',
119
83
  height: '100%',
120
84
  },
121
- // fit="center" centers the child at its natural size from the wrapper —
122
- // no styles on the child itself. The `cover`/`contain` child sizing can't
123
- // live here (StyleX has no descendant selectors); it ships as baseline
124
- // rules in reset.css keyed on the `data-astryx-aspect-ratio-override`
125
- // attribute the wrapper carries (see below).
126
- childCenter: {
127
- display: 'flex',
128
- alignItems: 'center',
129
- justifyContent: 'center',
130
- },
131
85
  });
132
86
 
133
87
  /**
@@ -137,32 +91,27 @@ const styles = stylex.create({
137
91
  * is positioned absolutely to fill the container, which is useful for images,
138
92
  * videos, embeds, and placeholders.
139
93
  *
140
- * Use `fit` to let the component size the child: `cover`/`contain` stretch
141
- * the child to fill the box (cropping or letterboxing media), `center` keeps
142
- * the child at its natural size. Without `fit`, the child styles itself.
143
- *
144
94
  * Use `shape="ellipse"` to clip the container into an ellipse — a circle at
145
95
  * `ratio={1}` or an oval at other ratios. Both shapes respect the provided
146
96
  * `ratio`.
147
97
  *
148
98
  * @example
149
99
  * ```
150
- * <AspectRatio ratio={16 / 9} fit="cover">
151
- * <img src="image.jpg" alt="Widescreen image" />
100
+ * <AspectRatio ratio={16 / 9}>
101
+ * <img src="image.jpg" alt="Widescreen image" style={{objectFit: 'cover'}} />
152
102
  * </AspectRatio>
153
103
  * ```
154
104
  *
155
105
  * @example
156
106
  * ```
157
- * <AspectRatio ratio={1} shape="ellipse" fit="cover">
158
- * <img src="avatar.jpg" alt="" />
107
+ * <AspectRatio ratio={1} shape="ellipse">
108
+ * <img src="avatar.jpg" alt="" style={{objectFit: 'cover'}} />
159
109
  * </AspectRatio>
160
110
  * ```
161
111
  */
162
112
  export function AspectRatio({
163
113
  ratio,
164
114
  shape = 'rectangle',
165
- fit,
166
115
  children,
167
116
  xstyle,
168
117
  className,
@@ -184,16 +133,7 @@ export function AspectRatio({
184
133
  {...style, aspectRatio: ratio},
185
134
  )}
186
135
  {...props}>
187
- {/* The marker attribute carries the fit value so the reset.css child
188
- sizing can use direct-child selectors on this wrapper — the child's
189
- actual parent — without depending on AspectRatio's internal
190
- structure or on the theming surface (fit is structural, not
191
- themeable). The name is namespaced to avoid collisions. */}
192
- <div
193
- data-astryx-aspect-ratio-override={fit}
194
- {...stylex.props(styles.child, fit === 'center' && styles.childCenter)}>
195
- {children}
196
- </div>
136
+ <div {...stylex.props(styles.child)}>{children}</div>
197
137
  </div>
198
138
  );
199
139
  }
@@ -12,8 +12,4 @@
12
12
  */
13
13
 
14
14
  export {AspectRatio} from './AspectRatio';
15
- export type {
16
- AspectRatioProps,
17
- AspectRatioShape,
18
- AspectRatioFit,
19
- } from './AspectRatio';
15
+ export type {AspectRatioProps, AspectRatioShape} from './AspectRatio';
@@ -106,15 +106,4 @@ export const docsDense = {
106
106
  {guidance: false, description: 'Force a square or custom shape. Avatars are always circular.'},
107
107
  ],
108
108
  },
109
- propDescriptions: {
110
- src: 'primary image source URL',
111
- fallbackSrc: 'fallback image when primary fails',
112
- name: 'user name for initials and alt text',
113
- alt: 'alt text; falls back to name',
114
- size: "avatar size. Named ('tiny', 'xsmall', 'small', 'medium', 'large') or numeric px. Short names 'sm'/'md'/'lg' are NOT valid; use full words.",
115
- status: 'corner content for status indicators',
116
- },
117
- components: [
118
- {name: 'AvatarStatusDot', description: 'size-aware status indicator rendered in the Avatar corner'},
119
- ],
120
109
  };
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
3
  import {describe, it, expect} from 'vitest';
4
- import {render, screen, fireEvent} from '@testing-library/react';
4
+ import {render, screen} from '@testing-library/react';
5
5
  import {Avatar} from './Avatar';
6
6
 
7
7
  describe('Avatar', () => {
@@ -34,35 +34,4 @@ describe('Avatar', () => {
34
34
  // The inner <img> carries an empty alt so it isn't announced separately.
35
35
  expect(innerImg).toHaveAttribute('alt', '');
36
36
  });
37
-
38
- it('retries a new src after a previous src failed to load', () => {
39
- const {rerender} = render(
40
- <Avatar name="Ada" src="https://example.com/broken.jpg" />,
41
- );
42
- const wrapper = screen.getByRole('img', {name: 'Ada'});
43
- fireEvent.error(wrapper.querySelector('img')!);
44
- // Broken image falls back to initials.
45
- expect(wrapper.querySelector('img')).toBeNull();
46
- expect(wrapper).toHaveTextContent('A');
47
-
48
- // A different src must get a fresh load attempt, not the stale error.
49
- rerender(<Avatar name="Ada" src="https://example.com/ada.jpg" />);
50
- const img = wrapper.querySelector('img');
51
- expect(img).not.toBeNull();
52
- expect(img).toHaveAttribute('src', 'https://example.com/ada.jpg');
53
- });
54
-
55
- it('retries a new fallbackSrc after a previous fallbackSrc failed to load', () => {
56
- const {rerender} = render(
57
- <Avatar name="Ada" fallbackSrc="https://example.com/broken.jpg" />,
58
- );
59
- const wrapper = screen.getByRole('img', {name: 'Ada'});
60
- fireEvent.error(wrapper.querySelector('img')!);
61
- expect(wrapper.querySelector('img')).toBeNull();
62
-
63
- rerender(<Avatar name="Ada" fallbackSrc="https://example.com/ada.jpg" />);
64
- const img = wrapper.querySelector('img');
65
- expect(img).not.toBeNull();
66
- expect(img).toHaveAttribute('src', 'https://example.com/ada.jpg');
67
- });
68
37
  });
@@ -63,7 +63,20 @@ type AvatarNamedSize = 'tiny' | 'xsmall' | 'small' | 'medium' | 'large';
63
63
  * Numeric size options (in pixels)
64
64
  */
65
65
  type AvatarNumericSize =
66
- 16 | 20 | 24 | 32 | 36 | 40 | 48 | 60 | 64 | 72 | 96 | 128 | 144 | 180;
66
+ | 16
67
+ | 20
68
+ | 24
69
+ | 32
70
+ | 36
71
+ | 40
72
+ | 48
73
+ | 60
74
+ | 64
75
+ | 72
76
+ | 96
77
+ | 128
78
+ | 144
79
+ | 180;
67
80
 
68
81
  /**
69
82
  * Avatar size - can be a named size or a specific pixel value
@@ -276,16 +289,11 @@ export function Avatar({
276
289
  ref,
277
290
  ...props
278
291
  }: AvatarProps) {
279
- // Track the exact src that failed (rather than a boolean) so a changed
280
- // src/fallbackSrc gets a fresh load attempt instead of the stale error.
281
- const [erroredSrc, setErroredSrc] = useState<string | undefined>(undefined);
282
- const [erroredFallbackSrc, setErroredFallbackSrc] = useState<
283
- string | undefined
284
- >(undefined);
292
+ const [imageError, setImageError] = useState(false);
293
+ const [fallbackError, setFallbackError] = useState(false);
285
294
 
286
- const showImage = src && erroredSrc !== src;
287
- const showFallbackImage =
288
- !showImage && fallbackSrc && erroredFallbackSrc !== fallbackSrc;
295
+ const showImage = src && !imageError;
296
+ const showFallbackImage = !showImage && fallbackSrc && !fallbackError;
289
297
  const showInitials = !showImage && !showFallbackImage && name;
290
298
  const showIcon = !showImage && !showFallbackImage && !name;
291
299
 
@@ -324,7 +332,7 @@ export function Avatar({
324
332
  <img
325
333
  src={src}
326
334
  alt=""
327
- onError={() => setErroredSrc(src)}
335
+ onError={() => setImageError(true)}
328
336
  {...stylex.props(styles.image)}
329
337
  />
330
338
  )}
@@ -332,7 +340,7 @@ export function Avatar({
332
340
  <img
333
341
  src={fallbackSrc}
334
342
  alt=""
335
- onError={() => setErroredFallbackSrc(fallbackSrc)}
343
+ onError={() => setFallbackError(true)}
336
344
  {...stylex.props(styles.image)}
337
345
  />
338
346
  )}
@@ -113,7 +113,6 @@ export const docs = {
113
113
  targets: [
114
114
  {className: 'astryx-banner', visualProps: ['container', 'status']},
115
115
  {className: 'astryx-banner-icon', visualProps: ['status']},
116
- {className: 'astryx-banner-content', visualProps: ['container', 'status']},
117
116
  ],
118
117
  vars: [
119
118
  {name: '--_banner-radius', description: 'Border radius (card container only)', default: 'var(--radius-container)', private: true},
@@ -181,13 +180,6 @@ export const docsZh = {
181
180
  'status',
182
181
  ],
183
182
  },
184
- {
185
- className: 'astryx-banner-content',
186
- visualProps: [
187
- 'container',
188
- 'status',
189
- ],
190
- },
191
183
  ],
192
184
  vars: [
193
185
  {name: '--_banner-radius', description: 'Border radius (card container only)', default: 'var(--radius-container)', private: true},
@@ -270,44 +270,6 @@ describe('Banner', () => {
270
270
  expect(expandIndex).toBeLessThan(dismissIndex);
271
271
  });
272
272
 
273
- it('links the expand toggle to its content region via aria-controls', () => {
274
- render(
275
- <Banner status="info" title="Controls Test" defaultIsExpanded>
276
- <div data-testid="region-content">Region content</div>
277
- </Banner>,
278
- );
279
-
280
- const toggle = screen.getByRole('button', {name: 'Collapse'});
281
- const controlsId = toggle.getAttribute('aria-controls');
282
- // aria-controls must be present and point at the real content region.
283
- expect(controlsId).toBeTruthy();
284
- const region = document.getElementById(controlsId as string);
285
- expect(region).not.toBeNull();
286
- expect(region).toContainElement(screen.getByTestId('region-content'));
287
- });
288
-
289
- it('sets aria-controls only while the content region is mounted', async () => {
290
- const user = userEvent.setup();
291
- render(
292
- <Banner status="info" title="Controls Toggle">
293
- <div data-testid="region-content">Region content</div>
294
- </Banner>,
295
- );
296
-
297
- // Collapsed: the region is unmounted, so no dangling aria-controls target.
298
- const collapsedToggle = screen.getByRole('button', {name: 'Expand'});
299
- expect(collapsedToggle).not.toHaveAttribute('aria-controls');
300
-
301
- // Expanded: aria-controls resolves to the mounted region with the children.
302
- await user.click(collapsedToggle);
303
- const expandedToggle = screen.getByRole('button', {name: 'Collapse'});
304
- const controlsId = expandedToggle.getAttribute('aria-controls');
305
- expect(controlsId).toBeTruthy();
306
- const region = document.getElementById(controlsId as string);
307
- expect(region).not.toBeNull();
308
- expect(region).toContainElement(screen.getByTestId('region-content'));
309
- });
310
-
311
273
  it('does not render content area when no children', () => {
312
274
  const {container} = render(<Banner status="info" title="No Children" />);
313
275
  const root = container.firstElementChild;
@@ -31,7 +31,7 @@
31
31
  * - /packages/cli/templates/blocks/components/Banner/ (showcase blocks)
32
32
  */
33
33
 
34
- import {useId, useState, type ReactNode} from 'react';
34
+ import {useState, type ReactNode} from 'react';
35
35
  import * as stylex from '@stylexjs/stylex';
36
36
  import type {BaseProps} from '../BaseProps';
37
37
  import {Button} from '../Button';
@@ -387,11 +387,6 @@ export function Banner({
387
387
  }: BannerProps) {
388
388
  const [isDismissed, setIsDismissed] = useState(false);
389
389
  const [isExpanded, setIsExpanded] = useState(defaultIsExpanded);
390
- // Links the expand/collapse toggle to the content region it shows/hides so
391
- // assistive tech can move from the button to its controlled content
392
- // (disclosure pattern). The region is conditionally rendered, so aria-controls
393
- // below is set only while it's mounted to avoid a dangling reference.
394
- const contentId = useId();
395
390
  const defaultIconName = defaultIconNames[status];
396
391
  const role = statusRole[status];
397
392
  const iconColor = statusIconColor[status];
@@ -482,7 +477,6 @@ export function Banner({
482
477
  }
483
478
  onClick={handleToggleExpand}
484
479
  aria-expanded={isExpanded}
485
- aria-controls={showContent ? contentId : undefined}
486
480
  isIconOnly
487
481
  />
488
482
  )}
@@ -503,7 +497,6 @@ export function Banner({
503
497
  {/* Content area: collapsible card background — theme target ('banner-content') */}
504
498
  {showContent && (
505
499
  <div
506
- id={contentId}
507
500
  {...mergeProps(
508
501
  themeProps('banner-content', {container, status}),
509
502
  stylex.props(styles.contentArea, isCard && styles.contentAreaCard),
@@ -19,7 +19,7 @@ export const docs = {
19
19
  {guidance: false, description: 'Disable large blocks of dates without context. The user should understand why dates are unavailable.'},
20
20
  ],
21
21
  anatomy: [
22
- {name: 'Month header', required: true, description: 'The month name and year with navigation arrows to move between months. The arrows mirror automatically under dir="rtl".'},
22
+ {name: 'Month header', required: true, description: 'The month name and year with navigation arrows to move between months.'},
23
23
  {name: 'Day grid', required: true, description: 'A 7-column grid of days with column headers for the day names.'},
24
24
  {name: 'Selected day', required: false, description: 'The currently selected date, highlighted. In range mode, the start and end dates plus the days between them.'},
25
25
  {name: 'Today marker', required: false, description: 'A subtle indicator on the current date for orientation.'},
@@ -12,11 +12,8 @@
12
12
  import {describe, it, expect, vi} from 'vitest';
13
13
  import {act, render, screen, within} from '@testing-library/react';
14
14
  import userEvent from '@testing-library/user-event';
15
- import {getButton} from '../__tests__/fastRoleQueries';
16
- import * as stylex from '@stylexjs/stylex';
17
15
  import {Calendar} from './Calendar';
18
16
  import type {CalendarHandle} from './Calendar';
19
- import {calendarStyles} from './styles';
20
17
 
21
18
  /**
22
19
  * Helper to find a day button by its day number.
@@ -27,7 +24,7 @@ import {calendarStyles} from './styles';
27
24
  function getDayButton(day: number, month = 'January', year = 2026) {
28
25
  // Match the full date pattern with the day number
29
26
  const pattern = new RegExp(`${month}\\s+${day},\\s+${year}`);
30
- return getButton(pattern);
27
+ return screen.getByRole('button', {name: pattern});
31
28
  }
32
29
 
33
30
  describe('Calendar', () => {
@@ -74,24 +71,6 @@ describe('Calendar', () => {
74
71
  expect(screen.getByText(expectedLabel)).toBeInTheDocument();
75
72
  });
76
73
 
77
- it("marks today's cell with aria-current='date'", () => {
78
- render(<Calendar />);
79
-
80
- const now = new Date();
81
- const iso = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}`;
82
-
83
- const todayCell = document.querySelector(`button[data-date="${iso}"]`);
84
- expect(todayCell).not.toBeNull();
85
- expect(todayCell).toHaveAttribute('aria-current', 'date');
86
-
87
- // Only today's cell is marked current.
88
- const others = Array.from(
89
- document.querySelectorAll('button[data-date]'),
90
- ).filter(el => el.getAttribute('data-date') !== iso);
91
- expect(others.length).toBeGreaterThan(0);
92
- others.forEach(el => expect(el).not.toHaveAttribute('aria-current'));
93
- });
94
-
95
74
  it('displays day names', () => {
96
75
  render(<Calendar />);
97
76
 
@@ -118,11 +97,7 @@ describe('Calendar', () => {
118
97
  render(<Calendar value="2026-01-15" focusDate="2026-01-01" />);
119
98
 
120
99
  const day15 = getDayButton(15);
121
- // In an ARIA grid, selection state lives on the gridcell, not the button
122
- // (a plain button role does not permit aria-selected).
123
- const gridcell15 = day15.closest('[role="gridcell"]');
124
- expect(gridcell15).toHaveAttribute('aria-selected', 'true');
125
- expect(day15).not.toHaveAttribute('aria-selected');
100
+ expect(day15).toHaveAttribute('aria-selected', 'true');
126
101
  });
127
102
 
128
103
  it('calls onChange when date is selected', async () => {
@@ -148,7 +123,7 @@ describe('Calendar', () => {
148
123
  // Verify we start on February
149
124
  expect(screen.getByText('February 2026')).toBeInTheDocument();
150
125
 
151
- const prevButton = getButton('Previous month');
126
+ const prevButton = screen.getByRole('button', {name: 'Previous month'});
152
127
  await user.click(prevButton);
153
128
 
154
129
  expect(screen.getByText('January 2026')).toBeInTheDocument();
@@ -162,7 +137,7 @@ describe('Calendar', () => {
162
137
  // Verify we start on January
163
138
  expect(screen.getByText('January 2026')).toBeInTheDocument();
164
139
 
165
- const nextButton = getButton('Next month');
140
+ const nextButton = screen.getByRole('button', {name: 'Next month'});
166
141
  await user.click(nextButton);
167
142
 
168
143
  expect(screen.getByText('February 2026')).toBeInTheDocument();
@@ -176,7 +151,7 @@ describe('Calendar', () => {
176
151
  <Calendar focusDate="2026-01-01" onFocusDateChange={handleFocusChange} />,
177
152
  );
178
153
 
179
- const nextButton = getButton('Next month');
154
+ const nextButton = screen.getByRole('button', {name: 'Next month'});
180
155
  await user.click(nextButton);
181
156
 
182
157
  expect(handleFocusChange).toHaveBeenCalledWith('2026-02-01');
@@ -234,39 +209,12 @@ describe('Calendar', () => {
234
209
 
235
210
  render(<Calendar numberOfMonths={2} focusDate="2026-01-01" />);
236
211
 
237
- const nextButton = getButton('Next month');
212
+ const nextButton = screen.getByRole('button', {name: 'Next month'});
238
213
  await user.click(nextButton);
239
214
 
240
215
  expect(screen.getByText(/February 2026.*March 2026/)).toBeInTheDocument();
241
216
  });
242
217
 
243
- it('clamps out-of-range numberOfMonths to a single month', () => {
244
- // 1000 would otherwise try to render 1000 month grids and lock the page up.
245
- render(
246
- <Calendar
247
- numberOfMonths={1000 as unknown as 1 | 2}
248
- focusDate="2026-01-01"
249
- />,
250
- );
251
-
252
- // Only the focused month renders — no second month, no range separator.
253
- expect(screen.getByText('January 2026')).toBeInTheDocument();
254
- expect(screen.queryByText(/February 2026/)).not.toBeInTheDocument();
255
- });
256
-
257
- it('clamps numberOfMonths={0} to a single month', () => {
258
- render(
259
- <Calendar
260
- numberOfMonths={0 as unknown as 1 | 2}
261
- focusDate="2026-01-01"
262
- />,
263
- );
264
-
265
- // 0 previously rendered no months at all; now falls back to one.
266
- expect(screen.getByText('January 2026')).toBeInTheDocument();
267
- expect(screen.getAllByRole('gridcell').length).toBeGreaterThan(0);
268
- });
269
-
270
218
  // ─── Display Options ─────────────────────────────────────────
271
219
 
272
220
  it('shows week numbers when hasWeekNumbers is true', () => {
@@ -362,22 +310,9 @@ describe('Calendar', () => {
362
310
  const day12 = getDayButton(12);
363
311
  const day15 = getDayButton(15);
364
312
 
365
- // Selection state lives on the gridcell wrapper, not the day button.
366
- expect(day10.closest('[role="gridcell"]')).toHaveAttribute(
367
- 'aria-selected',
368
- 'true',
369
- );
370
- expect(day12.closest('[role="gridcell"]')).toHaveAttribute(
371
- 'aria-selected',
372
- 'true',
373
- );
374
- expect(day15.closest('[role="gridcell"]')).toHaveAttribute(
375
- 'aria-selected',
376
- 'true',
377
- );
378
- expect(day10).not.toHaveAttribute('aria-selected');
379
- expect(day12).not.toHaveAttribute('aria-selected');
380
- expect(day15).not.toHaveAttribute('aria-selected');
313
+ expect(day10).toHaveAttribute('aria-selected', 'true');
314
+ expect(day12).toHaveAttribute('aria-selected', 'true');
315
+ expect(day15).toHaveAttribute('aria-selected', 'true');
381
316
  });
382
317
 
383
318
  it('caps the range highlight next to a disabled mid-range day (#2715)', () => {
@@ -541,8 +476,12 @@ describe('Calendar', () => {
541
476
  it('has navigation buttons with accessible labels', () => {
542
477
  render(<Calendar />);
543
478
 
544
- expect(getButton('Previous month')).toBeInTheDocument();
545
- expect(getButton('Next month')).toBeInTheDocument();
479
+ expect(
480
+ screen.getByRole('button', {name: 'Previous month'}),
481
+ ).toBeInTheDocument();
482
+ expect(
483
+ screen.getByRole('button', {name: 'Next month'}),
484
+ ).toBeInTheDocument();
546
485
  });
547
486
 
548
487
  // ─── Bug Regression Tests ───────────────────────────────────
@@ -650,14 +589,14 @@ describe('Calendar', () => {
650
589
  it('prev button is disabled when focusDate month contains min', () => {
651
590
  render(<Calendar focusDate="2026-01-01" min="2026-01-15" />);
652
591
 
653
- const prevButton = getButton('Previous month');
592
+ const prevButton = screen.getByRole('button', {name: 'Previous month'});
654
593
  expect(prevButton).toBeDisabled();
655
594
  });
656
595
 
657
596
  it('next button is disabled when focusDate month contains max', () => {
658
597
  render(<Calendar focusDate="2026-01-01" max="2026-01-15" />);
659
598
 
660
- const nextButton = getButton('Next month');
599
+ const nextButton = screen.getByRole('button', {name: 'Next month'});
661
600
  expect(nextButton).toBeDisabled();
662
601
  });
663
602
 
@@ -736,48 +675,4 @@ describe('Calendar', () => {
736
675
  }
737
676
  }
738
677
  });
739
-
740
- // ─── RTL (#3388) ─────────────────────────────────────────────
741
-
742
- describe('RTL month navigation', () => {
743
- // jsdom does not apply compiled StyleX CSS, so the scaleX(-1) mirror
744
- // itself is only observable in a browser (see the dir="rtl" Storybook
745
- // story). These tests pin the structure the fix depends on: both nav
746
- // chevrons render inside the navIcon wrapper that carries the
747
- // ':is([dir="rtl"] *)' conditional transform.
748
- it('wraps both nav chevrons in the RTL-mirroring navIcon wrapper', () => {
749
- render(<Calendar focusDate="2026-01-01" />);
750
-
751
- const {className: navIconClass} = stylex.props(calendarStyles.navIcon);
752
- expect(navIconClass).toBeTruthy();
753
-
754
- for (const name of ['Previous month', 'Next month']) {
755
- const button = getButton(name);
756
- const wrappers = Array.from(button.querySelectorAll('span')).filter(
757
- span => span.className === navIconClass,
758
- );
759
- expect(wrappers.length).toBe(1);
760
- }
761
- });
762
-
763
- it('keeps navigation semantics unchanged under dir="rtl"', async () => {
764
- const user = userEvent.setup();
765
-
766
- render(
767
- <div dir="rtl">
768
- <Calendar focusDate="2026-02-01" />
769
- </div>,
770
- );
771
-
772
- expect(screen.getByText('February 2026')).toBeInTheDocument();
773
-
774
- // DOM order and handlers must not change in RTL: flexbox already
775
- // places "Previous month" at the visual right; only the glyph mirrors.
776
- await user.click(getButton('Previous month'));
777
- expect(screen.getByText('January 2026')).toBeInTheDocument();
778
-
779
- await user.click(getButton('Next month'));
780
- expect(screen.getByText('February 2026')).toBeInTheDocument();
781
- });
782
- });
783
678
  });