@astryxdesign/core 0.7.5-canary.cd53c2d → 0.7.5-canary.d26cdf3

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 (456) hide show
  1. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  2. package/dist/Breadcrumbs/BreadcrumbItem.js +5 -0
  3. package/dist/Button/Button.d.ts.map +1 -1
  4. package/dist/Button/Button.js +12 -6
  5. package/dist/Chat/ChatComposer.d.ts.map +1 -1
  6. package/dist/Chat/ChatComposer.js +13 -23
  7. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  8. package/dist/ClickableCard/ClickableCard.js +10 -6
  9. package/dist/CodeBlock/CodeBlock.d.ts +9 -1
  10. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  11. package/dist/CodeBlock/CodeBlock.js +32 -11
  12. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  13. package/dist/CommandPalette/CommandPalette.js +15 -1
  14. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  15. package/dist/CommandPalette/CommandPaletteInput.js +14 -2
  16. package/dist/CommandPalette/busyStartSettle.d.ts +4 -0
  17. package/dist/CommandPalette/busyStartSettle.d.ts.map +1 -0
  18. package/dist/CommandPalette/busyStartSettle.js +23 -0
  19. package/dist/ComplexSelector/ComplexSelector.d.ts +20 -2
  20. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  21. package/dist/ComplexSelector/ComplexSelector.js +36 -5
  22. package/dist/DateInput/DateInput.d.ts.map +1 -1
  23. package/dist/DateInput/DateInput.js +10 -4
  24. package/dist/Dialog/Dialog.d.ts +4 -0
  25. package/dist/Dialog/Dialog.d.ts.map +1 -1
  26. package/dist/Dialog/Dialog.js +12 -5
  27. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +6 -6
  28. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  29. package/dist/DropdownMenu/DropdownMenuSubMenu.js +0 -3
  30. package/dist/DropdownMenu/menuItemHover.d.ts +3 -0
  31. package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
  32. package/dist/DropdownMenu/menuItemHover.js +14 -1
  33. package/dist/DropdownMenu/useMenuDrillIn.d.ts.map +1 -1
  34. package/dist/DropdownMenu/useMenuDrillIn.js +7 -5
  35. package/dist/EmptyState/EmptyState.d.ts +4 -2
  36. package/dist/EmptyState/EmptyState.d.ts.map +1 -1
  37. package/dist/EmptyState/EmptyState.js +6 -4
  38. package/dist/Field/PanelSearchInput.d.ts.map +1 -1
  39. package/dist/Field/PanelSearchInput.js +11 -14
  40. package/dist/InputGroup/InputGroup.d.ts +1 -1
  41. package/dist/InputGroup/InputGroup.d.ts.map +1 -1
  42. package/dist/InputGroup/InputGroup.js +46 -36
  43. package/dist/InputGroup/InputGroupInternalContext.d.ts +4 -0
  44. package/dist/InputGroup/InputGroupInternalContext.d.ts.map +1 -0
  45. package/dist/InputGroup/InputGroupInternalContext.js +15 -0
  46. package/dist/Item/Item.d.ts.map +1 -1
  47. package/dist/Item/Item.js +1 -1
  48. package/dist/Item/useSwipeAction.d.ts.map +1 -1
  49. package/dist/Item/useSwipeAction.js +60 -5
  50. package/dist/Layer/layerAnimations.stylex.d.ts +9 -5
  51. package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
  52. package/dist/Layer/layerAnimations.stylex.js +23 -10
  53. package/dist/Layer/layerSlideRules.d.ts +62 -2
  54. package/dist/Layer/layerSlideRules.d.ts.map +1 -1
  55. package/dist/Layer/layerSlideRules.js +124 -3
  56. package/dist/Layer/layerStack.d.ts +12 -9
  57. package/dist/Layer/layerStack.d.ts.map +1 -1
  58. package/dist/Layer/layerStack.js +116 -53
  59. package/dist/Layer/preserveAnimations.d.ts +11 -0
  60. package/dist/Layer/preserveAnimations.d.ts.map +1 -0
  61. package/dist/Layer/preserveAnimations.js +245 -0
  62. package/dist/Layer/useLayer.d.ts +19 -2
  63. package/dist/Layer/useLayer.d.ts.map +1 -1
  64. package/dist/Layer/useLayer.js +408 -10
  65. package/dist/Layer/useLayerDismissal.d.ts +10 -7
  66. package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
  67. package/dist/Layer/useLayerDismissal.js +8 -8
  68. package/dist/Layout/Layout.d.ts.map +1 -1
  69. package/dist/Layout/Layout.js +4 -0
  70. package/dist/Layout/LayoutContent.d.ts.map +1 -1
  71. package/dist/Layout/LayoutContent.js +2 -2
  72. package/dist/Layout/LayoutFooter.d.ts.map +1 -1
  73. package/dist/Layout/LayoutFooter.js +2 -1
  74. package/dist/Layout/LayoutHeader.d.ts.map +1 -1
  75. package/dist/Layout/LayoutHeader.js +2 -1
  76. package/dist/Layout/layoutEdges.stylex.d.ts +20 -0
  77. package/dist/Layout/layoutEdges.stylex.d.ts.map +1 -0
  78. package/dist/Layout/layoutEdges.stylex.js +28 -0
  79. package/dist/Lightbox/Lightbox.d.ts +5 -2
  80. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  81. package/dist/Lightbox/Lightbox.js +23 -8
  82. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts +2 -0
  83. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts.map +1 -0
  84. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.js +78 -0
  85. package/dist/Markdown/Markdown.fr23.bench.js +3 -1
  86. package/dist/Markdown/Markdown.fr23.sampling.d.ts +16 -0
  87. package/dist/Markdown/Markdown.fr23.sampling.d.ts.map +1 -1
  88. package/dist/Markdown/Markdown.fr23.sampling.js +13 -4
  89. package/dist/Markdown/MarkdownTable.a11y.chromium.spec.js +1 -0
  90. package/dist/MobileNav/MobileNav.d.ts +2 -1
  91. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  92. package/dist/MobileNav/MobileNav.js +9 -5
  93. package/dist/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.js +1 -0
  94. package/dist/MultiSelector/CreateRow.a11y.chromium.spec.js +1 -0
  95. package/dist/MultiSelector/MultiSelector.d.ts +1 -1
  96. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  97. package/dist/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.js +1 -0
  98. package/dist/MultiSelector/MultiSelector.js +6 -3
  99. package/dist/MultiSelector/OptionActions.a11y.chromium.spec.js +1 -0
  100. package/dist/NumberInput/NumberInput.d.ts +1 -1
  101. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  102. package/dist/NumberInput/NumberInput.js +5 -2
  103. package/dist/Popover/usePopover.d.ts.map +1 -1
  104. package/dist/Popover/usePopover.js +11 -5
  105. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  106. package/dist/RadioList/RadioListItem.js +10 -2
  107. package/dist/ScrollableArea/ScrollableArea.d.ts.map +1 -1
  108. package/dist/ScrollableArea/ScrollableArea.js +1 -1
  109. package/dist/SelectableCard/SelectableCard.d.ts +5 -5
  110. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  111. package/dist/SelectableCard/SelectableCard.js +15 -11
  112. package/dist/Selector/Selector.d.ts.map +1 -1
  113. package/dist/Selector/Selector.js +6 -3
  114. package/dist/Slider/Slider.d.ts.map +1 -1
  115. package/dist/Slider/Slider.js +45 -12
  116. package/dist/Switch/Switch.d.ts.map +1 -1
  117. package/dist/Switch/Switch.js +5 -5
  118. package/dist/Switch/switch.markers.stylex.d.ts +7 -2
  119. package/dist/Switch/switch.markers.stylex.d.ts.map +1 -1
  120. package/dist/Switch/switch.markers.stylex.js +8 -3
  121. package/dist/TextInput/TextInput.d.ts +1 -1
  122. package/dist/TextInput/TextInput.d.ts.map +1 -1
  123. package/dist/TextInput/TextInput.js +6 -3
  124. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  125. package/dist/Thumbnail/Thumbnail.js +10 -6
  126. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  127. package/dist/TimeInput/TimeInput.js +10 -3
  128. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  129. package/dist/Tokenizer/Tokenizer.js +13 -14
  130. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  131. package/dist/Tooltip/useTooltip.js +9 -3
  132. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  133. package/dist/Typeahead/BaseTypeahead.js +16 -4
  134. package/dist/Typeahead/Typeahead.d.ts +1 -1
  135. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  136. package/dist/Typeahead/Typeahead.js +29 -13
  137. package/dist/astryx.css +30 -12
  138. package/dist/hooks/AnnounceRenderedText.d.ts +17 -0
  139. package/dist/hooks/AnnounceRenderedText.d.ts.map +1 -0
  140. package/dist/hooks/AnnounceRenderedText.js +32 -0
  141. package/dist/hooks/useAdaptivePresentation.d.ts +1 -1
  142. package/dist/hooks/useAdaptivePresentation.d.ts.map +1 -1
  143. package/dist/hooks/useAdaptivePresentation.js +9 -6
  144. package/dist/hooks/useAnnounce.d.ts +18 -1
  145. package/dist/hooks/useAnnounce.d.ts.map +1 -1
  146. package/dist/hooks/useAnnounce.js +84 -18
  147. package/dist/hooks/useAnnounceRenderedText.d.ts +19 -2
  148. package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
  149. package/dist/hooks/useAnnounceRenderedText.js +52 -11
  150. package/dist/hooks/useBusyAnnouncement.d.ts +4 -2
  151. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  152. package/dist/hooks/useBusyAnnouncement.js +30 -4
  153. package/dist/hooks/useFocusTrap.d.ts +1 -1
  154. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  155. package/dist/hooks/useFocusTrap.js +44 -20
  156. package/dist/hooks/useMenuPress.d.ts +4 -2
  157. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  158. package/dist/hooks/useMenuPress.js +58 -33
  159. package/dist/hooks/useScrollableArea.d.ts.map +1 -1
  160. package/dist/hooks/useScrollableArea.js +37 -5
  161. package/dist/reset.a11y.chromium.spec.js +1 -0
  162. package/dist/reset.until-found.a11y.browser.spec.js +1 -0
  163. package/dist/theme/index.d.ts +2 -2
  164. package/dist/theme/index.d.ts.map +1 -1
  165. package/dist/theme/index.js +1 -1
  166. package/dist/theme/themeAdaptations.d.ts +25 -1
  167. package/dist/theme/themeAdaptations.d.ts.map +1 -1
  168. package/dist/theme/themeAdaptations.js +30 -1
  169. package/dist/utils/edgeAutoscroll.d.ts +53 -0
  170. package/dist/utils/edgeAutoscroll.d.ts.map +1 -0
  171. package/dist/utils/edgeAutoscroll.js +81 -0
  172. package/dist/utils/touchPresentation.d.ts +48 -0
  173. package/dist/utils/touchPresentation.d.ts.map +1 -0
  174. package/dist/utils/touchPresentation.js +133 -0
  175. package/package.json +4 -4
  176. package/src/AlertDialog/__tests__/AlertDialog.a11y.chromium.spec.ts +1 -0
  177. package/src/AppShell/AppShell.spec.md +329 -0
  178. package/src/AspectRatio/__tests__/AspectRatioFitLayers.a11y.browser.spec.ts +1 -0
  179. package/src/Avatar/Avatar.spec.md +253 -0
  180. package/src/Avatar/AvatarStatusDot.spec.md +96 -79
  181. package/src/Badge/Badge.spec.md +207 -0
  182. package/src/Banner/Banner.spec.md +41 -30
  183. package/src/BottomSheet/BottomSheet.spec.md +21 -4
  184. package/src/BottomSheet/BottomSheetSwitcher.spec.md +24 -20
  185. package/src/BottomSheet/__tests__/BottomSheetDrag.a11y.chromium.spec.ts +1 -0
  186. package/src/BottomSheet/__tests__/BottomSheetFocusReturn.a11y.browser.spec.ts +1 -0
  187. package/src/BottomSheet/__tests__/BottomSheetKeyboard.a11y.browser.spec.ts +1 -0
  188. package/src/BottomSheet/__tests__/BottomSheetNativeModal.a11y.browser.spec.ts +1 -0
  189. package/src/BottomSheet/__tests__/BottomSheetPinchZoom.a11y.chromium.spec.ts +1 -0
  190. package/src/BottomSheet/__tests__/BottomSheetToastOutlet.a11y.chromium.spec.ts +1 -0
  191. package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -0
  192. package/src/Breadcrumbs/Breadcrumbs.test.tsx +22 -0
  193. package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.chromium.spec.ts +1 -0
  194. package/src/Button/Button.spec.md +320 -0
  195. package/src/Button/Button.test.tsx +7 -0
  196. package/src/Button/Button.tsx +13 -5
  197. package/src/Button/__tests__/Button.a11y.chromium.spec.ts +1 -0
  198. package/src/ButtonGroup/ButtonGroup.spec.md +218 -0
  199. package/src/Calendar/__tests__/Calendar.a11y.chromium.spec.ts +1 -0
  200. package/src/Carousel/__tests__/Carousel.a11y.chromium.spec.ts +1 -0
  201. package/src/Chat/ChatComposer.test.tsx +22 -0
  202. package/src/Chat/ChatComposer.tsx +17 -23
  203. package/src/Chat/__tests__/ChatLayoutScrollButton.a11y.chromium.spec.ts +1 -0
  204. package/src/Chat/__tests__/ChatLayoutScrollButtonSurface.a11y.chromium.spec.ts +1 -0
  205. package/src/Chat/__tests__/ChatMessageList.a11y.chromium.spec.ts +1 -0
  206. package/src/Chat/__tests__/ChatMessageMetadata.a11y.chromium.spec.ts +1 -0
  207. package/src/Chat/__tests__/ChatSendButton.a11y.chromium.spec.ts +1 -0
  208. package/src/Chat/__tests__/ChatSystemMessage.a11y.chromium.spec.ts +1 -0
  209. package/src/Chat/__tests__/ChatTokenizedText.a11y.chromium.spec.ts +1 -0
  210. package/src/Chat/__tests__/useChatStreamScroll.a11y.chromium.spec.ts +1 -0
  211. package/src/CheckboxInput/__tests__/Checkbox.a11y.chromium.spec.ts +1 -0
  212. package/src/CheckboxList/__tests__/CheckboxList.a11y.chromium.spec.ts +1 -0
  213. package/src/ClickableCard/ClickableCard.doc.mjs +1 -2
  214. package/src/ClickableCard/ClickableCard.test.tsx +14 -3
  215. package/src/ClickableCard/ClickableCard.tsx +44 -28
  216. package/src/CodeBlock/CodeBlock.doc.mjs +17 -1
  217. package/src/CodeBlock/CodeBlock.spec.md +81 -49
  218. package/src/CodeBlock/CodeBlock.test.tsx +97 -1
  219. package/src/CodeBlock/CodeBlock.tsx +67 -8
  220. package/src/CodeBlock/__tests__/CodeBlockCopyClearance.a11y.chromium.spec.ts +290 -0
  221. package/src/CodeBlock/__tests__/CodeBlockOverflowStop.a11y.chromium.spec.ts +1 -0
  222. package/src/CodeBlock/__tests__/DiffRowPaint.a11y.chromium.spec.ts +1 -0
  223. package/src/Collapsible/__tests__/Collapsible.a11y.chromium.spec.ts +1 -0
  224. package/src/Collapsible/__tests__/CollapsibleGroup.a11y.chromium.spec.ts +1 -0
  225. package/src/Collapsible/__tests__/CollapsibleGroupAccordion.a11y.chromium.spec.ts +1 -0
  226. package/src/CommandPalette/CommandPalette.tsx +17 -1
  227. package/src/CommandPalette/CommandPaletteInput.tsx +21 -2
  228. package/src/CommandPalette/__tests__/CommandPalette.a11y.chromium.spec.ts +1 -0
  229. package/src/CommandPalette/__tests__/CommandPaletteFooter.a11y.chromium.spec.ts +1 -0
  230. package/src/CommandPalette/__tests__/CommandPaletteInputAudit.a11y.chromium.spec.ts +1 -0
  231. package/src/CommandPalette/__tests__/CommandPaletteItemAudit.a11y.chromium.spec.ts +1 -0
  232. package/src/CommandPalette/busyStartSettle.ts +26 -0
  233. package/src/ComplexSelector/ComplexSelector.doc.mjs +1 -1
  234. package/src/ComplexSelector/ComplexSelector.focusableDisabled.test.tsx +1 -1
  235. package/src/ComplexSelector/ComplexSelector.fr10.test.tsx +9 -9
  236. package/src/ComplexSelector/ComplexSelector.spec.md +161 -107
  237. package/src/ComplexSelector/ComplexSelector.test.tsx +193 -17
  238. package/src/ComplexSelector/ComplexSelector.tsx +62 -3
  239. package/src/ComplexSelector/__tests__/ComplexSelector.a11y.chromium.spec.ts +965 -0
  240. package/src/ContextMenu/ContextMenu.doc.mjs +1 -1
  241. package/src/ContextMenu/ContextMenu.spec.md +19 -15
  242. package/src/ContextMenu/ContextMenu.test.tsx +2 -1
  243. package/src/ContextMenu/__tests__/ContextMenuAudit.a11y.chromium.spec.ts +1 -0
  244. package/src/ContextMenu/__tests__/ContextMenuCursorAnchor.a11y.browser.spec.ts +1 -0
  245. package/src/DateInput/DateInput.tsx +7 -3
  246. package/src/DateInput/__tests__/DateInputAudit.a11y.chromium.spec.ts +1 -0
  247. package/src/DateInput/__tests__/WheelPinchZoom.a11y.chromium.spec.ts +18 -5
  248. package/src/Dialog/Dialog.doc.mjs +201 -47
  249. package/src/Dialog/Dialog.tsx +31 -7
  250. package/src/Dialog/__tests__/Dialog.a11y.browser.spec.ts +1 -0
  251. package/src/Dialog/__tests__/Dialog.a11y.chromium.spec.ts +1 -0
  252. package/src/Dialog/__tests__/Dialog.reduced-motion.a11y.browser.spec.ts +191 -0
  253. package/src/Drawer/__tests__/DrawerAudit.a11y.chromium.spec.ts +1 -0
  254. package/src/Drawer/__tests__/DrawerHeaderAudit.a11y.chromium.spec.ts +1 -0
  255. package/src/DropdownMenu/DropdownMenu.spec.md +12 -6
  256. package/src/DropdownMenu/DropdownMenu.test.tsx +29 -2
  257. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +9 -0
  258. package/src/DropdownMenu/DropdownMenuSubMenu.spec.md +225 -0
  259. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +105 -0
  260. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +6 -6
  261. package/src/DropdownMenu/__tests__/DropdownMenuDividerAudit.a11y.chromium.spec.ts +1 -0
  262. package/src/DropdownMenu/__tests__/DropdownMenuDrillIn.a11y.chromium.spec.ts +1 -0
  263. package/src/DropdownMenu/__tests__/DropdownMenuFocusReturn.a11y.browser.spec.ts +1 -0
  264. package/src/DropdownMenu/__tests__/DropdownMenuGroupAudit.a11y.chromium.spec.ts +1 -0
  265. package/src/DropdownMenu/__tests__/DropdownMenuItemAudit.a11y.chromium.spec.ts +1 -0
  266. package/src/DropdownMenu/__tests__/DropdownMenuRadioGroupAudit.a11y.chromium.spec.ts +1 -0
  267. package/src/DropdownMenu/__tests__/DropdownMenuRadioItemAudit.a11y.chromium.spec.ts +1 -0
  268. package/src/DropdownMenu/__tests__/DropdownMenuSubMenuAudit.a11y.chromium.spec.ts +671 -0
  269. package/src/DropdownMenu/__tests__/Menu.a11y.chromium.spec.ts +1 -0
  270. package/src/DropdownMenu/__tests__/MenuButton.a11y.chromium.spec.ts +1 -0
  271. package/src/DropdownMenu/__tests__/MenuHeaderFooter.a11y.chromium.spec.ts +1 -0
  272. package/src/DropdownMenu/__tests__/MenuHoverFocus.a11y.chromium.spec.ts +238 -0
  273. package/src/DropdownMenu/__tests__/MenuPinchZoom.a11y.chromium.spec.ts +1 -0
  274. package/src/DropdownMenu/__tests__/MenuPress.a11y.chromium.spec.ts +1 -0
  275. package/src/DropdownMenu/__tests__/SubMenuHeaderFooter.a11y.chromium.spec.ts +1 -0
  276. package/src/DropdownMenu/menuItemHover.ts +13 -1
  277. package/src/DropdownMenu/modules/useMenuPress.spec.md +62 -57
  278. package/src/DropdownMenu/useMenuDrillIn.tsx +7 -5
  279. package/src/EmptyState/EmptyState.announce.test.tsx +227 -0
  280. package/src/EmptyState/EmptyState.doc.mjs +1 -1
  281. package/src/EmptyState/EmptyState.spec.md +22 -14
  282. package/src/EmptyState/EmptyState.test.tsx +8 -8
  283. package/src/EmptyState/EmptyState.tsx +7 -5
  284. package/src/Field/PanelSearchInput.tsx +12 -13
  285. package/src/Field/__tests__/FieldLabelAudit.a11y.chromium.spec.ts +1 -0
  286. package/src/FieldStatus/__tests__/StatusMessage.a11y.chromium.spec.ts +1 -0
  287. package/src/IconButton/IconButton.spec.md +197 -0
  288. package/src/InputGroup/InputGroup.test.tsx +120 -0
  289. package/src/InputGroup/InputGroup.tsx +59 -52
  290. package/src/InputGroup/InputGroupInternalContext.ts +15 -0
  291. package/src/Item/Item.test.tsx +118 -0
  292. package/src/Item/Item.tsx +5 -3
  293. package/src/Item/__tests__/ItemSwipeActions.a11y.chromium.spec.ts +1 -0
  294. package/src/Item/__tests__/ItemSwipePinchZoom.a11y.chromium.spec.ts +186 -0
  295. package/src/Item/useSwipeAction.ts +71 -5
  296. package/src/Layer/__tests__/LayerReducedMotion.a11y.chromium.spec.ts +176 -0
  297. package/src/Layer/__tests__/TouchTrigger.a11y.chromium.spec.ts +1 -0
  298. package/src/Layer/layerAnimations.stylex.ts +22 -2
  299. package/src/Layer/layerSlideRules.ts +141 -8
  300. package/src/Layer/layerStack.ts +129 -62
  301. package/src/Layer/preserveAnimations.ts +304 -0
  302. package/src/Layer/useLayer.test.tsx +635 -0
  303. package/src/Layer/useLayer.tsx +485 -15
  304. package/src/Layer/useLayerDismissal.test.tsx +85 -2
  305. package/src/Layer/useLayerDismissal.ts +12 -9
  306. package/src/Layout/Layout.tsx +18 -0
  307. package/src/Layout/LayoutContent.tsx +5 -14
  308. package/src/Layout/LayoutFooter.tsx +2 -0
  309. package/src/Layout/LayoutHeader.tsx +2 -0
  310. package/src/Layout/__tests__/Layout.a11y.chromium.spec.ts +1 -0
  311. package/src/Layout/layoutEdges.stylex.ts +25 -0
  312. package/src/Lightbox/Lightbox.test.tsx +68 -0
  313. package/src/Lightbox/Lightbox.tsx +23 -7
  314. package/src/Lightbox/LightboxKeyboard.a11y.browser.spec.ts +78 -0
  315. package/src/Link/__tests__/Link.a11y.chromium.spec.ts +1 -0
  316. package/src/Link/__tests__/Link.navigation.a11y.chromium.spec.ts +1 -0
  317. package/src/List/ListItem.doc.mjs +3 -3
  318. package/src/Markdown/Markdown.fr23.bench.ts +3 -1
  319. package/src/Markdown/Markdown.fr23.perf.test.ts +45 -3
  320. package/src/Markdown/Markdown.fr23.sampling.ts +13 -4
  321. package/src/Markdown/Markdown.spec.md +15 -8
  322. package/src/Markdown/MarkdownTable.a11y.chromium.spec.ts +1 -0
  323. package/src/Markdown/__tests__/MarkdownNesting.a11y.chromium.spec.ts +1 -0
  324. package/src/MobileNav/MobileNav.test.tsx +27 -10
  325. package/src/MobileNav/MobileNav.tsx +10 -3
  326. package/src/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.ts +1 -0
  327. package/src/MobileNav/__tests__/MobileNavWidth.a11y.chromium.spec.ts +103 -0
  328. package/src/MoreMenu/MoreMenu.doc.mjs +2 -2
  329. package/src/MultiSelector/CreateRow.a11y.chromium.spec.ts +1 -0
  330. package/src/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.ts +1 -0
  331. package/src/MultiSelector/MultiSelector.test.tsx +25 -10
  332. package/src/MultiSelector/MultiSelector.tsx +6 -2
  333. package/src/MultiSelector/OptionActions.a11y.chromium.spec.ts +1 -0
  334. package/src/MultiSelector/__tests__/MultiSelector.a11y.chromium.spec.ts +1 -0
  335. package/src/NumberInput/NumberInput.tsx +5 -1
  336. package/src/NumberInput/__tests__/NumberInput.a11y.chromium.spec.ts +1 -0
  337. package/src/Popover/Popover.spec.md +19 -0
  338. package/src/Popover/Popover.test.tsx +245 -2
  339. package/src/Popover/__tests__/PopoverSecondDocument.a11y.chromium.spec.ts +205 -0
  340. package/src/Popover/usePopover.tsx +11 -5
  341. package/src/PowerSearch/PowerSearch.test.tsx +45 -0
  342. package/src/ProgressBar/__tests__/ProgressBar.a11y.chromium.spec.ts +1 -0
  343. package/src/RadioList/RadioList.test.tsx +34 -7
  344. package/src/RadioList/RadioListItem.press.source-build.test.mjs +80 -0
  345. package/src/RadioList/RadioListItem.tsx +26 -12
  346. package/src/RadioList/__tests__/RadioGroup.a11y.chromium.spec.ts +1 -0
  347. package/src/Resizable/__tests__/ResizeHandle.a11y.chromium.spec.ts +1 -0
  348. package/src/ScrollableArea/ScrollableArea.spec.md +6 -5
  349. package/src/ScrollableArea/ScrollableArea.test.tsx +5 -0
  350. package/src/ScrollableArea/ScrollableArea.tsx +4 -0
  351. package/src/SelectableCard/SelectableCard.doc.mjs +7 -6
  352. package/src/SelectableCard/SelectableCard.test.tsx +11 -1
  353. package/src/SelectableCard/SelectableCard.tsx +49 -33
  354. package/src/Selector/Selector.spec.md +12 -4
  355. package/src/Selector/Selector.test.tsx +67 -8
  356. package/src/Selector/Selector.tsx +6 -2
  357. package/src/Selector/__tests__/EmptyStateAnnouncement.a11y.chromium.spec.ts +1 -0
  358. package/src/Selector/__tests__/Listbox.a11y.chromium.spec.ts +1 -0
  359. package/src/Selector/__tests__/Selector.a11y.chromium.spec.ts +1 -0
  360. package/src/Selector/__tests__/Selector.combobox.a11y.chromium.spec.ts +1 -0
  361. package/src/SideNav/SideNav.test.tsx +56 -2
  362. package/src/Skeleton/Skeleton.spec.md +99 -42
  363. package/src/Slider/Slider.test.tsx +172 -0
  364. package/src/Slider/Slider.tsx +60 -12
  365. package/src/Slider/__tests__/Slider.a11y.chromium.spec.ts +1 -0
  366. package/src/Spinner/Spinner.spec.md +231 -0
  367. package/src/StatusDot/StatusDot.spec.md +143 -51
  368. package/src/Switch/Switch.focusRing.source-build.test.mjs +81 -0
  369. package/src/Switch/Switch.tsx +11 -9
  370. package/src/Switch/__tests__/Switch.a11y.chromium.spec.ts +1 -0
  371. package/src/Switch/switch.markers.stylex.ts +7 -2
  372. package/src/TabList/TabList.doc.mjs +3 -3
  373. package/src/TabList/__tests__/Tabs.a11y.chromium.spec.ts +1 -0
  374. package/src/Table/Table.spec.md +17 -13
  375. package/src/Table/__tests__/Table.a11y.chromium.spec.ts +129 -0
  376. package/src/Table/__tests__/Table.a11y.contracts.ts +35 -0
  377. package/src/Table/__tests__/Table.a11y.renders.tsx +112 -0
  378. package/src/Table/__tests__/Table.a11y.states.ts +140 -0
  379. package/src/Table/__tests__/Table.a11y.test.tsx +198 -0
  380. package/src/Table/__tests__/TableMinWidth.a11y.chromium.spec.ts +1 -0
  381. package/src/Table/__tests__/TableScroll.a11y.chromium.spec.ts +1 -0
  382. package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.test.tsx +174 -0
  383. package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.ts +86 -0
  384. package/src/Table/plugins/sortable/useTableSortable.test.tsx +0 -12
  385. package/src/TextInput/TextInput.tsx +6 -2
  386. package/src/TextInput/__tests__/TextInput.a11y.chromium.spec.ts +1 -0
  387. package/src/Thumbnail/Thumbnail.doc.mjs +1 -2
  388. package/src/Thumbnail/Thumbnail.test.tsx +11 -1
  389. package/src/Thumbnail/Thumbnail.tsx +43 -27
  390. package/src/TimeInput/TimeInput.tsx +10 -3
  391. package/src/ToggleButton/ToggleButton.spec.md +256 -0
  392. package/src/ToggleButton/ToggleButtonGroup.spec.md +194 -0
  393. package/src/ToggleButton/__tests__/ToggleButton.a11y.chromium.spec.ts +1 -0
  394. package/src/Token/Token.spec.md +271 -0
  395. package/src/Token/__tests__/TokenRemoveTarget.a11y.chromium.spec.ts +1 -0
  396. package/src/Tokenizer/Tokenizer.test.tsx +44 -8
  397. package/src/Tokenizer/Tokenizer.tsx +14 -17
  398. package/src/Tokenizer/__tests__/TokenizerEndLane.a11y.chromium.spec.ts +1 -0
  399. package/src/Toolbar/__tests__/Toolbar.a11y.chromium.spec.ts +1 -0
  400. package/src/Tooltip/Tooltip.test.tsx +23 -0
  401. package/src/Tooltip/__tests__/Tooltip.a11y.chromium.spec.ts +1 -0
  402. package/src/Tooltip/__tests__/TooltipFocusReturn.a11y.chromium.spec.ts +1 -0
  403. package/src/Tooltip/__tests__/TooltipHoverBridge.a11y.chromium.spec.ts +1 -0
  404. package/src/Tooltip/__tests__/TooltipTallContent.a11y.browser.spec.ts +646 -0
  405. package/src/Tooltip/__tests__/TooltipTallContentTracking.a11y.browser.spec.ts +1162 -0
  406. package/src/Tooltip/useTooltip.tsx +7 -2
  407. package/src/TopNav/TopNav.spec.md +190 -0
  408. package/src/TopNav/TopNavHeading.spec.md +204 -0
  409. package/src/TopNav/TopNavItem.spec.md +181 -0
  410. package/src/TopNav/TopNavMegaMenu.spec.md +190 -0
  411. package/src/TopNav/TopNavMegaMenuFeaturedCard.spec.md +150 -0
  412. package/src/TopNav/TopNavMegaMenuItem.spec.md +155 -0
  413. package/src/TopNav/TopNavMenu.spec.md +195 -0
  414. package/src/TopNav/__tests__/TopNavMobileLongHeading.a11y.chromium.spec.ts +1 -0
  415. package/src/TreeList/__tests__/TreeList.a11y.chromium.spec.ts +1 -0
  416. package/src/TreeList/__tests__/TreeListRowNames.a11y.chromium.spec.ts +1 -0
  417. package/src/Typeahead/BaseTypeahead.tsx +14 -2
  418. package/src/Typeahead/Typeahead.test.tsx +114 -1
  419. package/src/Typeahead/Typeahead.tsx +32 -15
  420. package/src/__tests__/BusyOwnerAnnouncement.test.tsx +59 -0
  421. package/src/__tests__/CardPress.a11y.chromium.spec.ts +353 -0
  422. package/src/__tests__/DisabledTriggerFocus.a11y.chromium.spec.ts +2 -1
  423. package/src/__tests__/PressedState.a11y.chromium.spec.ts +1 -0
  424. package/src/__tests__/pressState.ts +43 -1
  425. package/src/hooks/AnnounceRenderedText.tsx +27 -0
  426. package/src/hooks/__tests__/MenuPressShadowRoot.a11y.chromium.spec.ts +1 -0
  427. package/src/hooks/useAdaptivePresentation.ts +14 -7
  428. package/src/hooks/useAnnounce.doc.mjs +2 -2
  429. package/src/hooks/useAnnounce.test.tsx +64 -4
  430. package/src/hooks/useAnnounce.ts +91 -19
  431. package/src/hooks/useAnnounceRenderedText.adopters.test.tsx +204 -0
  432. package/src/hooks/useAnnounceRenderedText.ts +81 -11
  433. package/src/hooks/useBusyAnnouncement.adopters.test.tsx +69 -0
  434. package/src/hooks/useBusyAnnouncement.test.tsx +112 -0
  435. package/src/hooks/useBusyAnnouncement.ts +36 -5
  436. package/src/hooks/useFocusTrap.test.tsx +71 -2
  437. package/src/hooks/useFocusTrap.ts +46 -21
  438. package/src/hooks/useMenuPress.doc.mjs +2 -2
  439. package/src/hooks/useMenuPress.test.tsx +5 -2
  440. package/src/hooks/useMenuPress.ts +72 -37
  441. package/src/hooks/useScrollableArea.test.tsx +159 -0
  442. package/src/hooks/useScrollableArea.ts +39 -5
  443. package/src/reset.a11y.chromium.spec.ts +1 -0
  444. package/src/reset.until-found.a11y.browser.spec.ts +1 -0
  445. package/src/serverSafeComponents.test.ts +10 -0
  446. package/src/theme/__tests__/SpacingRootFontSize.a11y.chromium.spec.ts +1 -0
  447. package/src/theme/derivedVarRegistry.test.ts +9 -5
  448. package/src/theme/index.ts +3 -0
  449. package/src/theme/themeAdaptations.test.ts +37 -0
  450. package/src/theme/themeAdaptations.ts +43 -1
  451. package/src/theme/tokens.test.ts +60 -0
  452. package/src/utils/customPropertyArmLayering.test.ts +131 -0
  453. package/src/utils/edgeAutoscroll.test.ts +192 -0
  454. package/src/utils/edgeAutoscroll.ts +111 -0
  455. package/src/utils/touchPresentation.test.ts +323 -0
  456. package/src/utils/touchPresentation.ts +153 -0
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/BreadcrumbItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,qCAAqC,CAAC;AAM7C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAOrE,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,CAAC,aAAa,CAAC,EACxB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAsID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,SAAS,EAAE,aAAa,EACxB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,mBAAmB,qBAgMrB;yBA/Me,cAAc"}
1
+ {"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/BreadcrumbItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,qCAAqC,CAAC;AAM7C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAQrE,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,CAAC,aAAa,CAAC,EACxB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAsID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,SAAS,EAAE,aAAa,EACxB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,mBAAmB,qBAgMrB;yBA/Me,cAAc"}
@@ -40,6 +40,7 @@ import { renderDropdownItems } from "../DropdownMenu/renderDropdownItems.js";
40
40
  import { DropdownMenuContext, DropdownMenuRootOpenContext } from "../DropdownMenu/DropdownMenuContext.js";
41
41
  import { MENU_ITEM_ROLES, MENU_ITEM_SELECTOR, MENU_BOUNDARY_SELECTOR } from "../DropdownMenu/menuItemRoles.js";
42
42
  import { useMergedRefs } from "../hooks/useMergedRefs.js";
43
+ import { useInteractionModalityTracking } from "../utils/interactionModality.js";
43
44
  // =============================================================================
44
45
  // Props
45
46
  // =============================================================================
@@ -334,6 +335,10 @@ function BreadcrumbMenuTrigger({
334
335
  const triggerId = useId();
335
336
  const buttonRef = useRef(null);
336
337
  const isSupporting = variant === 'supporting';
338
+ // The menu's rows move focus with the last input
339
+ // (`architecture:interaction-modality` INV1); this menu has no press model
340
+ // to activate the tracking they read, so it activates it itself.
341
+ useInteractionModalityTracking();
337
342
  const popover = usePopover({
338
343
  hasLightDismiss: true,
339
344
  hasCloseButton: false,
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@
17
17
  *
18
18
  * Last synced props: label, variant, size, isDisabled, isLoading, isInterruptible, clickAction, icon, isIconOnly, width, children, tooltip, endContent, href, as, target, rel
19
19
  */
20
- import { useEffect, useRef, useState, useTransition } from 'react';
20
+ import { use, useEffect, useRef, useState, useTransition } from 'react';
21
21
  import * as stylex from '@stylexjs/stylex';
22
22
  import { useTooltip } from "../Tooltip/useTooltip.js";
23
23
  import "../theme/tokens.stylex.js";
@@ -30,6 +30,7 @@ import { EDGE_COMP_ATTR } from "../Layout/edgeCompensation.stylex.js";
30
30
  import { useSize } from "../SizeContext/SizeContext.js";
31
31
  import { useButtonGroup } from "../ButtonGroup/ButtonGroupContext.js";
32
32
  import { useInputGroup } from "../InputGroup/InputGroupContext.js";
33
+ import { InputGroupInternalContext } from "../InputGroup/InputGroupInternalContext.js";
33
34
  import { groupStyles as inputGroupStyles } from "../InputGroup/groupStyles.js";
34
35
  import { mergeProps } from "../utils/index.js";
35
36
  import { useMergedRefs } from "../hooks/useMergedRefs.js";
@@ -377,7 +378,8 @@ export function Button({
377
378
  // the consumer is deliberately showing it.
378
379
  const delaySpinner = isPending || isInterruptible;
379
380
  const groupDisabled = buttonGroup?.isDisabled ?? false;
380
- const isTrueDisabled = isDisabled || groupDisabled;
381
+ const inputGroupState = use(InputGroupInternalContext);
382
+ const isTrueDisabled = isDisabled || groupDisabled || inputGroupState.isDisabled;
381
383
  // Busy-only: the button can't fire again purely because an action is in
382
384
  // flight, not because it's genuinely isDisabled/group-disabled. Per the API
383
385
  // Conventions "Disabled vs Busy" rule, busy is visual-only (aria-busy +
@@ -555,8 +557,10 @@ export function Button({
555
557
  ...ariaLabelProp,
556
558
  ...describedByProp,
557
559
  ...edgeCompAttr,
558
- "aria-busy": isLoadingState || undefined,
559
- "aria-disabled": useAriaDisabled || undefined,
560
+ // A caller's own busy or disabled state is kept, so a component that
561
+ // hands these props to a Button (a caller-rendered trigger) is heard.
562
+ "aria-busy": isLoadingState || props['aria-busy'] || undefined,
563
+ "aria-disabled": useAriaDisabled || props['aria-disabled'] || undefined,
560
564
  onClick: handleClick,
561
565
  ...(handleKeyDown ? {
562
566
  onKeyDown: handleKeyDown
@@ -574,8 +578,10 @@ export function Button({
574
578
  ...ariaLabelProp,
575
579
  ...describedByProp,
576
580
  ...edgeCompAttr,
577
- "aria-busy": isLoadingState || undefined,
578
- "aria-disabled": useAriaDisabled || undefined,
581
+ // A caller's own busy or disabled state is kept, so a component that
582
+ // hands these props to a Button (a caller-rendered trigger) is heard.
583
+ "aria-busy": isLoadingState || props['aria-busy'] || undefined,
584
+ "aria-disabled": useAriaDisabled || props['aria-disabled'] || undefined,
579
585
  onClick: handleClick,
580
586
  ...(handleKeyDown ? {
581
587
  onKeyDown: handleKeyDown
@@ -1 +1 @@
1
- {"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatComposer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,EAMZ,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgC5C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,UAAU,CACxB;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,+CAA+C;IAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAI3B,6GAA6G;IAC7G,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,yHAAyH;IACzH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,yGAAyG;IACzG,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gHAAgH;IAChH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,gHAAgH;IAChH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gDAAgD;IAChD,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,iEAAiE;IACjE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,oDAAoD;IACpD,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CACnC;AAkND;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBAwOpD;yBAxOe,YAAY"}
1
+ {"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatComposer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,EAKZ,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgC5C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,UAAU,CACxB;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,+CAA+C;IAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAI3B,6GAA6G;IAC7G,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,yHAAyH;IACzH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,yGAAyG;IACzG,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gHAAgH;IAChH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,gHAAgH;IAChH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gDAAgD;IAChD,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,iEAAiE;IACjE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,oDAAoD;IACpD,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CACnC;AAkND;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBAmOpD;yBAnOe,YAAY"}
@@ -22,7 +22,7 @@
22
22
  * - /apps/storybook/stories/ChatComposer.stories.tsx
23
23
  * - /packages/cli/assets/templates/blocks/components/ChatComposer/ (block examples)
24
24
  */
25
- import React, { useState, useCallback, useEffect, useRef, useMemo } from 'react';
25
+ import React, { useState, useCallback, useRef, useMemo } from 'react';
26
26
  import * as stylex from '@stylexjs/stylex';
27
27
  import "../theme/tokens.stylex.js";
28
28
  import { colorVars, spacingVars, radiusVars, shadowVars, durationVars, easeVars, borderVars, typeScaleVars, typographyVars } from "../theme/tokens.stylex.js";
@@ -33,7 +33,7 @@ import { ChatComposerContext } from "./ChatContext.js";
33
33
  import { ChatSendButton } from "./ChatSendButton.js";
34
34
  import { themeProps } from "../utils/themeProps.js";
35
35
  import { useTranslator } from "../i18n/index.js";
36
- import { useAnnounce } from "../hooks/useAnnounce.js";
36
+ import { useAnnounceRenderedText } from "../hooks/useAnnounceRenderedText.js";
37
37
  import { focusOutlineStyles } from "../utils/focusOutline.stylex.js";
38
38
  import { getInteractionModality, useInteractionModalityTracking } from "../utils/interactionModality.js";
39
39
 
@@ -194,28 +194,18 @@ export function ChatComposer(props) {
194
194
  }, []);
195
195
 
196
196
  // The status bar mounts together with its message, and a live region born
197
- // holding its text is not reliably announced, so the message goes through
198
- // the shared channel instead: errors assertively, warnings politely
199
- // (spec:AST-086 FR2, FR5). The ref keeps a rerender or a StrictMode effect
200
- // replay from repeating it; clearing the status re-arms it, so the same
201
- // message shown again is a new occasion (FR6).
202
- const announce = useAnnounce();
203
- const statusType = status?.type;
204
- const statusMessage = status?.message;
205
- const announcedStatusRef = useRef(null);
206
- useEffect(() => {
207
- if (!statusMessage) {
208
- announcedStatusRef.current = null;
209
- return;
210
- }
211
- const occasion = `${statusType}\u0000${statusMessage}`;
212
- if (announcedStatusRef.current === occasion) {
213
- return;
214
- }
215
- announcedStatusRef.current = occasion;
216
- announce(statusMessage, statusType === 'error' ? 'assertive' : 'polite');
217
- }, [announce, statusType, statusMessage]);
197
+ // holding its text is not reliably announced, so the shared own-content
198
+ // module announces what the bar renders: errors assertively, warnings
199
+ // politely, once per occasion, silent for a status already shown when the
200
+ // page loads (spec:AST-086 FR2, FR5, FR6, FR11; react-component-runtime
201
+ // INV10). Changing the status type is a new occasion; clearing it re-arms.
202
+ const statusRef = useRef(null);
203
+ useAnnounceRenderedText(statusRef, Boolean(status?.message), status?.type ?? '', {
204
+ skipFirstRender: true,
205
+ politeness: status?.type === 'error' ? 'assertive' : 'polite'
206
+ });
218
207
  const statusEl = status ? /*#__PURE__*/_jsxs("div", {
208
+ ref: statusRef,
219
209
  ...{
220
210
  0: {
221
211
  className: "x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x1htvmrp xvpcij2 xckg3cf xkvxy4d x6k0y1c"
@@ -1 +1 @@
1
- {"version":3,"file":"ClickableCard.d.ts","sourceRoot":"","sources":["../../src/ClickableCard/ClickableCard.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAE,KAAK,UAAU,EAAU,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AASxE,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAGtE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAwI5C,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,yCAAyC;IACzC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAE1B;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEnD;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,yBAAyB;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,IAAI,EACJ,MAAM,EACN,UAAkB,EAClB,QAAQ,EACR,OAAO,EACP,OAAmB,EACnB,SAAkB,EAClB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,GAAG,EACH,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,aAAa,EACxB,KAAK,EACL,GAAG,KAAK,EACT,EAAE,kBAAkB,+BAyFpB;yBA5Ge,aAAa"}
1
+ {"version":3,"file":"ClickableCard.d.ts","sourceRoot":"","sources":["../../src/ClickableCard/ClickableCard.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAE,KAAK,UAAU,EAAU,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AASxE,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAGtE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAwJ5C,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,yCAAyC;IACzC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAE1B;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEnD;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,yBAAyB;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,IAAI,EACJ,MAAM,EACN,UAAkB,EAClB,QAAQ,EACR,OAAO,EACP,OAAmB,EACnB,SAAkB,EAClB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,GAAG,EACH,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,aAAa,EACxB,KAAK,EACL,GAAG,KAAK,EACT,EAAE,kBAAkB,+BAyFpB;yBA5Ge,aAAa"}
@@ -51,7 +51,11 @@ import { disabledInteractionProps } from "../utils/disabledInteraction.js";
51
51
  // 1 while on and 1 → 0 over the release, and inherited resolved by the
52
52
  // `::after` that paints it. See interactionOverlay.stylex.ts.
53
53
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
54
- const pressedOverlayColor = 'var(--_press-paint)';
54
+ const pressedOverlayImage = 'var(--_press-paint-image)';
55
+ /** Written by the press controller while it paints a press. */
56
+ const PRESSED_ON = '[data-astryx-press="on"]';
57
+ /** Written by the press controller for the press's release. */
58
+ const PRESSED_FADING = '[data-astryx-press="fading"]';
55
59
  const styles = {
56
60
  interactive: {
57
61
  kVAEAm: "x1n2onr6",
@@ -61,16 +65,16 @@ const styles = {
61
65
  $$css: true
62
66
  },
63
67
  overlay: {
64
- "--_press-overlay": "x1s9pv7w xb8awce x1a5qima x1sad4of x1s2lk0z xmfmiv1 x1hn5ov8",
65
- "--_press-overlay-transition": "x1wkyqe6 xbb2ue6 x1wphrdb",
68
+ "--_press-overlay": "x1s9pv7w xb8awce x1a5qima xmfmiv1 x1hn5ov8",
66
69
  k5JduY: "x1s928wv",
67
70
  kwXMNM: "x1j6awrg",
68
71
  kv0HGH: "xarstr8",
69
72
  kloYau: "x2q1x1w",
70
- kRicXK: "x1ywzrc5",
71
- kPNhGg: "x18w5vxb",
73
+ kRicXK: "x1ywzrc5 x1xg7wox x15tr235",
74
+ kPNhGg: "x97pup0",
72
75
  kA8PQs: "x1dlmc9c",
73
- ks3ayO: "x1l0fnur",
76
+ ks3ayO: "x1l0fnur x1l0866b x7bosnz",
77
+ kNctxI: "x1rd1oi2 xlif165",
74
78
  $$css: true
75
79
  },
76
80
  borderless: {
@@ -20,6 +20,14 @@ export interface CodeBlockProps extends BaseProps<HTMLPreElement> {
20
20
  isDiff?: boolean;
21
21
  hasCopyButton?: boolean;
22
22
  onCopy?: () => void;
23
+ /**
24
+ * Your own controls, shown just before Copy: in the header when the block
25
+ * has one, otherwise beside the code in the top inline-end corner, never
26
+ * over it. It never creates a header, and activating it never collapses the
27
+ * block. You own each control's label, state, and action; ghost `sm`
28
+ * IconButtons match Copy.
29
+ */
30
+ endContent?: React.ReactNode;
23
31
  isWrapped?: boolean;
24
32
  maxHeight?: number | string;
25
33
  isCollapsible?: boolean;
@@ -67,7 +75,7 @@ export interface CodeBlockProps extends BaseProps<HTMLPreElement> {
67
75
  * <CodeBlock code="const x = 42;" language="javascript" />
68
76
  * ```
69
77
  */
70
- export declare function CodeBlock({ code, language, title, hasLanguageLabel, hasLineNumbers, highlightLines, isDiff, hasCopyButton, onCopy, isWrapped, maxHeight, isCollapsible, collapsibleThreshold, size, width: widthProp, container, tokenizer: customTokenizer, highlightMode, syntaxTheme, xstyle, className, style, ref, ...props }: CodeBlockProps): React.JSX.Element;
78
+ export declare function CodeBlock({ code, language, title, hasLanguageLabel, hasLineNumbers, highlightLines, isDiff, hasCopyButton, onCopy, endContent, isWrapped, maxHeight, isCollapsible, collapsibleThreshold, size, width: widthProp, container, tokenizer: customTokenizer, highlightMode, syntaxTheme, xstyle, className, style, ref, ...props }: CodeBlockProps): React.JSX.Element;
71
79
  export declare namespace CodeBlock {
72
80
  var displayName: string;
73
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgC5C,OAAO,EAAc,KAAK,qBAAqB,EAAC,MAAM,iBAAiB,CAAC;AAwcxE,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,KACb;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAClD,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC;AA0SD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,QAAsB,EACtB,KAAK,EACL,gBAAuB,EACvB,cAAsB,EACtB,cAAc,EACd,MAAc,EACd,aAAoB,EACpB,MAAM,EACN,SAAiB,EACjB,SAAS,EACT,aAAqB,EACrB,oBAAyB,EACzB,IAAW,EACX,KAAK,EAAE,SAAyB,EAChC,SAAkB,EAClB,SAAS,EAAE,eAAe,EAC1B,aAAsB,EACtB,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,qBAmRhB;yBA5Se,SAAS"}
1
+ {"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgC5C,OAAO,EAAc,KAAK,qBAAqB,EAAC,MAAM,iBAAiB,CAAC;AAuexE,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,KACb;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAClD,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC;AA0SD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,QAAsB,EACtB,KAAK,EACL,gBAAuB,EACvB,cAAsB,EACtB,cAAc,EACd,MAAc,EACd,aAAoB,EACpB,MAAM,EACN,UAAU,EACV,SAAiB,EACjB,SAAS,EACT,aAAqB,EACrB,oBAAyB,EACzB,IAAW,EACX,KAAK,EAAE,SAAyB,EAChC,SAAkB,EAClB,SAAS,EAAE,eAAe,EAC1B,aAAsB,EACtB,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,qBAsShB;yBAhUe,SAAS"}
@@ -13,7 +13,7 @@ import * as React from 'react';
13
13
  import * as stylex from '@stylexjs/stylex';
14
14
  import "../theme/tokens.stylex.js";
15
15
  import { colorVars, spacingVars, radiusVars, typographyVars, fontWeightVars, typeScaleVars, borderVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
16
- import { mergeProps } from "../utils/index.js";
16
+ import { isRenderable, mergeProps } from "../utils/index.js";
17
17
  import { useClipboard } from "../hooks/useClipboard.js";
18
18
  import { useScrollableArea } from "../hooks/useScrollableArea.js";
19
19
  import { Icon } from "../Icon/index.js";
@@ -83,6 +83,12 @@ const styles = {
83
83
  kVQacm: "xb3r6kr",
84
84
  $$css: true
85
85
  },
86
+ rootCorner: {
87
+ k1xSpc: "xrvj5dj",
88
+ kumcoG: "xju1xpo",
89
+ k9llMU: "x5o4joa",
90
+ $$css: true
91
+ },
86
92
  header: {
87
93
  k1xSpc: "x78zum5",
88
94
  kGNEyG: "x6s0dn4",
@@ -213,12 +219,6 @@ const styles = {
213
219
  copyButton: {
214
220
  kMwMTN: "x1mjzq1q",
215
221
  $$css: true
216
- },
217
- copyButtonAbsolute: {
218
- kVAEAm: "x10l6tqk",
219
- k87sOh: "xctzyg",
220
- kt4wiu: "x72tfeb",
221
- $$css: true
222
222
  }
223
223
  };
224
224
 
@@ -543,6 +543,7 @@ export function CodeBlock({
543
543
  isDiff = false,
544
544
  hasCopyButton = true,
545
545
  onCopy,
546
+ endContent,
546
547
  isWrapped = false,
547
548
  maxHeight,
548
549
  isCollapsible = false,
@@ -633,6 +634,11 @@ export function CodeBlock({
633
634
  const scrollStyle = maxHeight != null ? {
634
635
  maxHeight: typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight
635
636
  } : undefined;
637
+
638
+ // Caller controls render before Copy; together they are the block's controls,
639
+ // in the header when there is one and in the corner cluster otherwise.
640
+ const hasEndContent = isRenderable(endContent);
641
+ const hasControls = hasCopyButton || hasEndContent;
636
642
  const copyButtonEl = hasCopyButton ? /*#__PURE__*/_jsx(IconButton, {
637
643
  variant: "ghost",
638
644
  size: "sm",
@@ -653,7 +659,7 @@ export function CodeBlock({
653
659
  e.stopPropagation();
654
660
  void handleCopy();
655
661
  },
656
- xstyle: [styles.copyButton, !showHeader && styles.copyButtonAbsolute],
662
+ xstyle: styles.copyButton,
657
663
  ...themeProps('code-block-copy-button')
658
664
  }) : null;
659
665
  const headerEl = showHeader ? /*#__PURE__*/_jsxs("div", {
@@ -702,7 +708,12 @@ export function CodeBlock({
702
708
  })
703
709
  }), title, title && languageLabel ? ' — ' : '', languageLabel]
704
710
  })
705
- }), copyButtonEl]
711
+ }), hasControls ? /*#__PURE__*/_jsxs("div", {
712
+ ...{
713
+ className: "x78zum5 x6s0dn4 xzye2dw x2lah0s"
714
+ },
715
+ children: [hasEndContent ? endContent : null, copyButtonEl]
716
+ }) : null]
706
717
  }) : null;
707
718
  const codeBody = /*#__PURE__*/_jsx("div", {
708
719
  ...getViewportProps({
@@ -748,7 +759,7 @@ export function CodeBlock({
748
759
  size,
749
760
  language,
750
761
  container
751
- }), stylex.props(styles.root, dynamicStyles.width(widthProp), containerStyles[container], xstyle), className, style),
762
+ }), stylex.props(styles.root, hasControls && !showHeader && styles.rootCorner, dynamicStyles.width(widthProp), containerStyles[container], xstyle), className, style),
752
763
  ...props,
753
764
  children: [headerEl, canCollapse ? /*#__PURE__*/_jsx("div", {
754
765
  id: regionId
@@ -773,7 +784,17 @@ export function CodeBlock({
773
784
  },
774
785
  children: codeBody
775
786
  })
776
- }) : codeBody, !showHeader && copyButtonEl]
787
+ }) : codeBody, hasControls && !showHeader ? /*#__PURE__*/_jsxs("div", {
788
+ ...{
789
+ 0: {
790
+ className: "x78zum5 x6s0dn4 xzye2dw x1y8v6su x16j26i2 xlgwz2i"
791
+ },
792
+ 1: {
793
+ className: "x78zum5 x6s0dn4 xzye2dw x1y8v6su x16j26i2 x166xdbf"
794
+ }
795
+ }[!!(size === 'sm') << 0],
796
+ children: [hasEndContent ? endContent : null, copyButtonEl]
797
+ }) : null]
777
798
  });
778
799
  return syntaxTheme ? /*#__PURE__*/_jsx(SyntaxTheme, {
779
800
  theme: syntaxTheme,
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPalette.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AAU/D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,MAAM,WAAW,mBAAmB,CAClC,CAAC,SAAS,cAAc,GAAG,cAAc,CACzC,SAAQ,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACtD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,2CAA2C;IAC3C,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0DAA0D;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAExC;;;;OAIG;IACH,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAE9B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAEzD;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAE5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAE/B,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAiID;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EACxE,GAAG,EACH,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,MAAM,EACN,UAAU,EACV,eAAe,EAAE,wBAAwB,EACzC,kBAAkB,EAAE,2BAA2B,EAC/C,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,KAAK,EAAE,cAAc,EACrB,KAAW,EACX,SAAe,EACf,GAAG,IAAI,EACR,EAAE,mBAAmB,CAAC,CAAC,CAAC,+BAsYxB;yBAvZe,cAAc"}
1
+ {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPalette.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AAW/D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,MAAM,WAAW,mBAAmB,CAClC,CAAC,SAAS,cAAc,GAAG,cAAc,CACzC,SAAQ,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACtD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,2CAA2C;IAC3C,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0DAA0D;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAExC;;;;OAIG;IACH,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAE9B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAEzD;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAE5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAE/B,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAiID;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EACxE,GAAG,EACH,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,MAAM,EACN,UAAU,EACV,eAAe,EAAE,wBAAwB,EACzC,kBAAkB,EAAE,2BAA2B,EAC/C,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,KAAK,EAAE,cAAc,EACrB,KAAW,EACX,SAAe,EACf,GAAG,IAAI,EACR,EAAE,mBAAmB,CAAC,CAAC,CAAC,+BAqZxB;yBAtae,cAAc"}
@@ -18,6 +18,7 @@ import { Dialog } from "../Dialog/index.js";
18
18
  import { Layout, LayoutHeader, LayoutContent, LayoutFooter } from "../Layout/index.js";
19
19
  import { useCombobox } from "../Selector/index.js";
20
20
  import { CommandPaletteContext } from "./CommandPaletteContext.js";
21
+ import { BusyStartSettleContext } from "./busyStartSettle.js";
21
22
  import { CommandPaletteList } from "./CommandPaletteList.js";
22
23
  import { CommandPaletteItem } from "./CommandPaletteItem.js";
23
24
  import { CommandPaletteGroup } from "./CommandPaletteGroup.js";
@@ -204,6 +205,10 @@ export function CommandPalette({
204
205
  const isBusy = isPending;
205
206
  const searchVersionRef = useRef(0);
206
207
  const emptyStateRef = useRef(null);
208
+ const settleBusyAnnouncementRef = useRef(null);
209
+ const registerBusyAnnouncementSettle = useCallback(settle => {
210
+ settleBusyAnnouncementRef.current = settle;
211
+ }, []);
207
212
 
208
213
  // Announce search results to screen readers through the shared polite live
209
214
  // region (comboboxes-7 announce path, mirroring Selector / BaseTypeahead).
@@ -289,6 +294,12 @@ export function CommandPalette({
289
294
  const result = isBootstrap ? searchSource.bootstrap() : searchSource.search(query);
290
295
  const items = await Promise.resolve(result);
291
296
  if (searchVersionRef.current === version) {
297
+ if (!isBootstrap) {
298
+ // This query's outcome is announced below (a count) or from the
299
+ // rendered empty state; a busy start not yet announced would
300
+ // follow it, so the input drops it (spec:AST-086 FR8).
301
+ settleBusyAnnouncementRef.current?.();
302
+ }
292
303
  // Commit query and results together
293
304
  setSearch(query);
294
305
  setOptimisticResults(items);
@@ -479,7 +490,10 @@ export function CommandPalette({
479
490
  header: /*#__PURE__*/_jsx(LayoutHeader, {
480
491
  hasDivider: true,
481
492
  padding: 0,
482
- children: input ?? /*#__PURE__*/_jsx(CommandPaletteInput, {})
493
+ children: /*#__PURE__*/_jsx(BusyStartSettleContext, {
494
+ value: registerBusyAnnouncementSettle,
495
+ children: input ?? /*#__PURE__*/_jsx(CommandPaletteInput, {})
496
+ })
483
497
  }),
484
498
  content: /*#__PURE__*/_jsx(LayoutContent, {
485
499
  padding: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPaletteInput.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPaletteInput.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EAA2C,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAa/E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAuE5C,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CACpD,SAAS,CAAC,gBAAgB,CAAC,EAC3B,UAAU,CACX;IACC,iEAAiE;IACjE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAElC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;CACvD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,WAAW,EAAE,oBAAoB,EACjC,KAAK,EACL,YAAmB,EACnB,UAAU,EACV,QAAQ,EACR,SAAS,EACT,OAAO,EACP,MAAM,EACN,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,wBAAwB,+BA2K1B;yBA3Le,mBAAmB"}
1
+ {"version":3,"file":"CommandPaletteInput.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPaletteInput.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAcf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAuE5C,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CACpD,SAAS,CAAC,gBAAgB,CAAC,EAC3B,UAAU,CACX;IACC,iEAAiE;IACjE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAElC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;CACvD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,WAAW,EAAE,oBAAoB,EACjC,KAAK,EACL,YAAmB,EACnB,UAAU,EACV,QAAQ,EACR,SAAS,EACT,OAAO,EACP,MAAM,EACN,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,wBAAwB,+BAsL1B;yBAtMe,mBAAmB"}
@@ -13,7 +13,7 @@
13
13
  * - /apps/storybook/stories/CommandPaletteInput.stories.tsx
14
14
  * - /packages/cli/assets/templates/blocks/components/CommandPalette/ (showcase blocks)
15
15
  */
16
- import { useCallback, useEffect, useRef, useState } from 'react';
16
+ import { use, useCallback, useEffect, useRef, useState } from 'react';
17
17
  import * as stylex from '@stylexjs/stylex';
18
18
  import { Icon } from "../Icon/index.js";
19
19
  import { Spinner } from "../Spinner/index.js";
@@ -21,6 +21,7 @@ import { isImeKeyEvent, isRenderable, mergeProps } from "../utils/index.js";
21
21
  import "../theme/tokens.stylex.js";
22
22
  import { colorVars, typeScaleVars, spacingVars, typographyVars } from "../theme/tokens.stylex.js";
23
23
  import { useCommandPaletteContext } from "./CommandPaletteContext.js";
24
+ import { BusyStartSettleContext } from "./busyStartSettle.js";
24
25
  import { useDialogContext } from "../Dialog/DialogContext.js";
25
26
  import { themeProps } from "../utils/themeProps.js";
26
27
  import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
@@ -101,7 +102,18 @@ export function CommandPaletteInput({
101
102
  // The search Spinner is decorative; the input announces each busy start,
102
103
  // including the load on opening or clearing the query. Inside the palette's
103
104
  // native modal it does so from a region in the dialog (spec:AST-086 FR8, FR3).
104
- useBusyAnnouncement(ctx?.isBusy === true, t('@astryx.commandPalette.loading'), inputRef);
105
+ const settleBusyAnnouncement = useBusyAnnouncement(ctx?.isBusy === true, t('@astryx.commandPalette.loading'), inputRef);
106
+ // Keeps the palette holding this input's settle function, so the palette can
107
+ // drop a busy start not yet announced when a search's outcome is about to be
108
+ // announced (spec:AST-086 FR8).
109
+ const registerSettle = use(BusyStartSettleContext);
110
+ useEffect(() => {
111
+ if (registerSettle == null) {
112
+ return;
113
+ }
114
+ registerSettle(settleBusyAnnouncement);
115
+ return () => registerSettle(null);
116
+ }, [registerSettle, settleBusyAnnouncement]);
105
117
  const [isKeyboardFocus, setIsKeyboardFocus] = useState(false);
106
118
 
107
119
  // Text-entry controls match :focus-visible after pointer focus in Chromium.
@@ -0,0 +1,4 @@
1
+ /** Registers the input's settle function, or `null` when the input goes away. */
2
+ export type RegisterBusyStartSettle = (settle: (() => void) | null) => void;
3
+ export declare const BusyStartSettleContext: import("react").Context<RegisterBusyStartSettle | null>;
4
+ //# sourceMappingURL=busyStartSettle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"busyStartSettle.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/busyStartSettle.ts"],"names":[],"mappings":"AAoBA,iFAAiF;AACjF,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;AAE5E,eAAO,MAAM,sBAAsB,yDACkB,CAAC"}
@@ -0,0 +1,23 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file busyStartSettle.ts
7
+ * @input The palette's registration for its input's busy-start settle function
8
+ * @output Context the input uses to register that function
9
+ * @position Package-internal; not exported from the package entry point
10
+ *
11
+ * The input owns the search's busy start; the palette is the only thing that
12
+ * knows when a search's outcome is about to be announced, and so when a busy
13
+ * start not yet announced has to be dropped (`spec:AST-086` FR8). A context
14
+ * rather than a member of `CommandPaletteContextValue`, which is exported:
15
+ * this module is not exported from `index.ts`, so the seam stays closed by
16
+ * module boundary.
17
+ */
18
+ import { createContext } from 'react';
19
+
20
+ /** Registers the input's settle function, or `null` when the input goes away. */
21
+
22
+ export const BusyStartSettleContext = /*#__PURE__*/createContext(null);
23
+ BusyStartSettleContext.displayName = 'BusyStartSettleContext';
@@ -26,7 +26,7 @@ export type ComplexSelectorSize = 'sm' | 'md' | 'lg';
26
26
  * Spread them onto that control: it becomes the popup's anchor, the element
27
27
  * focus returns to, and the control that announces the popup's state.
28
28
  */
29
- export interface ComplexSelectorRenderTriggerProps extends Omit<FieldInputBaseProps, keyof FieldPartStyleProps | 'id' | 'onClick' | 'onKeyDown' | 'aria-haspopup' | 'aria-expanded' | 'aria-controls' | 'aria-busy'> {
29
+ export interface ComplexSelectorRenderTriggerProps extends Omit<FieldInputBaseProps, keyof FieldPartStyleProps | 'id' | 'onClick' | 'onKeyDown' | 'role' | 'aria-label' | 'aria-haspopup' | 'aria-expanded' | 'aria-controls' | 'aria-busy' | 'aria-required' | 'aria-disabled'> {
30
30
  /**
31
31
  * Attaches the control as the popup's anchor and focus-return target, and
32
32
  * forwards it to the selector's own `ref`.
@@ -41,6 +41,24 @@ export interface ComplexSelectorRenderTriggerProps extends Omit<FieldInputBasePr
41
41
  'aria-expanded': boolean;
42
42
  'aria-controls': string;
43
43
  'aria-busy': boolean | undefined;
44
+ /**
45
+ * The control is the selector's field: a combobox whose popup is a dialog,
46
+ * as on the built-in trigger.
47
+ */
48
+ role: 'combobox';
49
+ /**
50
+ * The field's `label`, unless the selector was given `aria-label` or
51
+ * `aria-labelledby`: a combobox takes no name from its content, so the
52
+ * label names the control as it names the built-in trigger.
53
+ */
54
+ 'aria-label': string | undefined;
55
+ /** `'true'` when the field is required. */
56
+ 'aria-required': 'true' | undefined;
57
+ /**
58
+ * `'true'` when the selector is disabled. The control keeps its tab stop
59
+ * and the popup does not open (`spec:AST-085`).
60
+ */
61
+ 'aria-disabled': 'true' | undefined;
44
62
  }
45
63
  export interface ComplexSelectorRenderState {
46
64
  /** Whether the selector surface is open. */
@@ -118,7 +136,7 @@ export interface ComplexSelectorProps<Value> extends Omit<FieldInputBaseProps, '
118
136
  isOptional?: boolean;
119
137
  /** Marks the field required. */
120
138
  isRequired?: boolean;
121
- /** Disables the selector. */
139
+ /** Blocks opening and value commits, including from an already-open popup. */
122
140
  isDisabled?: boolean;
123
141
  /** Shows loading state on the trigger. */
124
142
  isLoading?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ComplexSelector.d.ts","sourceRoot":"","sources":["../../src/ComplexSelector/ComplexSelector.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ComplexSelector.d.ts","sourceRoot":"","sources":["../../src/ComplexSelector/ComplexSelector.tsx"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  * - /apps/storybook/stories/ComplexSelector.stories.tsx
16
16
  * - /packages/cli/assets/templates/blocks/components/ComplexSelector/ (showcase blocks)
17
17
  */
18
- import React, { useCallback, useId, useImperativeHandle, useOptimistic, useRef, useTransition } from 'react';
18
+ import React, { useCallback, useId, useImperativeHandle, useInsertionEffect, useOptimistic, useRef, useTransition } from 'react';
19
19
  import * as stylex from '@stylexjs/stylex';
20
20
  import { useFieldInputStyling } from "../Field/fieldParts.js";
21
21
  import { useDevWarning } from "../hooks/useDevWarning.js";
@@ -367,7 +367,23 @@ export function ComplexSelector({
367
367
  },
368
368
  isOpen: () => popover.isOpen
369
369
  }), [isDisabled, popover]);
370
+
371
+ // The helper reads the selector's availability when it runs, not the
372
+ // render it came from: content may keep a helper from an earlier render
373
+ // (after an await, say) across a change either way. The insertion effect
374
+ // runs before any layout effect of the content, so a commit from the
375
+ // content's own layout effect in the render that changes it sees the new
376
+ // availability too.
377
+ const isDisabledRef = useRef(isDisabled);
378
+ useInsertionEffect(() => {
379
+ isDisabledRef.current = isDisabled;
380
+ }, [isDisabled]);
370
381
  const commitValue = useCallback(nextValue => {
382
+ // Caller-owned popup controls may remain mounted after disablement.
383
+ // Guard the supplied commit boundary, not just the trigger.
384
+ if (isDisabledRef.current) {
385
+ return;
386
+ }
371
387
  onChange?.(nextValue);
372
388
  if (changeAction) {
373
389
  startTransition(async () => {
@@ -413,12 +429,23 @@ export function ComplexSelector({
413
429
  id: triggerId,
414
430
  // This path never forwarded caller handlers before, so the newly
415
431
  // forwarded ones compose component first and cannot cancel opening.
416
- onClick: composeEventHandlers(handleTriggerClick, onClickProp),
417
- onKeyDown: composeEventHandlers(handleTriggerKeyDown, onKeyDownProp),
432
+ // A disabled control keeps its tab stop but invokes no callback
433
+ // (`spec:AST-085` FR2), as on the built-in trigger.
434
+ onClick: isDisabled ? swallowDisabledPress : composeEventHandlers(handleTriggerClick, onClickProp),
435
+ onKeyDown: isDisabled ? handleTriggerKeyDown : composeEventHandlers(handleTriggerKeyDown, onKeyDownProp),
436
+ // The caller's control is the field, so it carries the field's role
437
+ // and state as the built-in trigger does.
438
+ role: 'combobox',
439
+ // A combobox takes no name from its content, so the field's label
440
+ // names the control, as it names the built-in trigger and the popup.
441
+ // A name passed to the selector wins.
442
+ 'aria-label': rest['aria-label'] ?? (rest['aria-labelledby'] != null ? undefined : label),
418
443
  'aria-haspopup': 'dialog',
419
444
  'aria-expanded': isOpen,
420
445
  'aria-controls': contentId,
421
- 'aria-busy': isBusy || undefined
446
+ 'aria-busy': isBusy || undefined,
447
+ 'aria-required': isEffectivelyRequired ? 'true' : undefined,
448
+ 'aria-disabled': isDisabled ? 'true' : undefined
422
449
  };
423
450
  return /*#__PURE__*/_jsxs(_Fragment, {
424
451
  children: [renderTrigger(triggerProps), popup]
@@ -443,7 +470,11 @@ export function ComplexSelector({
443
470
  ...rest,
444
471
  ref: triggerButtonRef,
445
472
  id: triggerId,
446
- type: "button",
473
+ type: "button"
474
+ // The trigger is the field's control: a combobox whose popup is a
475
+ // dialog, so required and disabled state are valid on it.
476
+ ,
477
+ role: "combobox",
447
478
  "aria-haspopup": "dialog",
448
479
  "aria-expanded": isOpen,
449
480
  "aria-controls": contentId