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

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 (401) 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 +8 -4
  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 +19 -1
  20. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  21. package/dist/ComplexSelector/ComplexSelector.js +19 -4
  22. package/dist/Dialog/Dialog.d.ts +4 -0
  23. package/dist/Dialog/Dialog.d.ts.map +1 -1
  24. package/dist/Dialog/Dialog.js +12 -5
  25. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +6 -6
  26. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  27. package/dist/DropdownMenu/DropdownMenuSubMenu.js +0 -3
  28. package/dist/DropdownMenu/menuItemHover.d.ts +3 -0
  29. package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
  30. package/dist/DropdownMenu/menuItemHover.js +14 -1
  31. package/dist/EmptyState/EmptyState.d.ts +4 -2
  32. package/dist/EmptyState/EmptyState.d.ts.map +1 -1
  33. package/dist/EmptyState/EmptyState.js +6 -4
  34. package/dist/Field/PanelSearchInput.d.ts.map +1 -1
  35. package/dist/Field/PanelSearchInput.js +11 -14
  36. package/dist/Item/Item.d.ts.map +1 -1
  37. package/dist/Item/Item.js +1 -1
  38. package/dist/Item/useSwipeAction.d.ts.map +1 -1
  39. package/dist/Item/useSwipeAction.js +60 -5
  40. package/dist/Layer/layerAnimations.stylex.d.ts +9 -5
  41. package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
  42. package/dist/Layer/layerAnimations.stylex.js +23 -10
  43. package/dist/Layer/layerSlideRules.d.ts +62 -2
  44. package/dist/Layer/layerSlideRules.d.ts.map +1 -1
  45. package/dist/Layer/layerSlideRules.js +124 -3
  46. package/dist/Layer/layerStack.d.ts +12 -9
  47. package/dist/Layer/layerStack.d.ts.map +1 -1
  48. package/dist/Layer/layerStack.js +116 -53
  49. package/dist/Layer/preserveAnimations.d.ts +11 -0
  50. package/dist/Layer/preserveAnimations.d.ts.map +1 -0
  51. package/dist/Layer/preserveAnimations.js +245 -0
  52. package/dist/Layer/useLayer.d.ts +19 -2
  53. package/dist/Layer/useLayer.d.ts.map +1 -1
  54. package/dist/Layer/useLayer.js +408 -10
  55. package/dist/Layer/useLayerDismissal.d.ts +10 -7
  56. package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
  57. package/dist/Layer/useLayerDismissal.js +8 -8
  58. package/dist/Layout/Layout.d.ts.map +1 -1
  59. package/dist/Layout/Layout.js +4 -0
  60. package/dist/Layout/LayoutContent.d.ts.map +1 -1
  61. package/dist/Layout/LayoutContent.js +2 -2
  62. package/dist/Layout/LayoutFooter.d.ts.map +1 -1
  63. package/dist/Layout/LayoutFooter.js +2 -1
  64. package/dist/Layout/LayoutHeader.d.ts.map +1 -1
  65. package/dist/Layout/LayoutHeader.js +2 -1
  66. package/dist/Layout/layoutEdges.stylex.d.ts +20 -0
  67. package/dist/Layout/layoutEdges.stylex.d.ts.map +1 -0
  68. package/dist/Layout/layoutEdges.stylex.js +28 -0
  69. package/dist/Lightbox/Lightbox.d.ts +5 -2
  70. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  71. package/dist/Lightbox/Lightbox.js +23 -8
  72. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts +2 -0
  73. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts.map +1 -0
  74. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.js +78 -0
  75. package/dist/Markdown/Markdown.fr23.bench.js +3 -1
  76. package/dist/Markdown/Markdown.fr23.sampling.d.ts +16 -0
  77. package/dist/Markdown/Markdown.fr23.sampling.d.ts.map +1 -1
  78. package/dist/Markdown/Markdown.fr23.sampling.js +13 -4
  79. package/dist/Markdown/MarkdownTable.a11y.chromium.spec.js +1 -0
  80. package/dist/MobileNav/MobileNav.d.ts +2 -1
  81. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  82. package/dist/MobileNav/MobileNav.js +9 -5
  83. package/dist/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.js +1 -0
  84. package/dist/MultiSelector/CreateRow.a11y.chromium.spec.js +1 -0
  85. package/dist/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.js +1 -0
  86. package/dist/MultiSelector/OptionActions.a11y.chromium.spec.js +1 -0
  87. package/dist/Popover/usePopover.d.ts.map +1 -1
  88. package/dist/Popover/usePopover.js +11 -5
  89. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  90. package/dist/RadioList/RadioListItem.js +10 -2
  91. package/dist/ScrollableArea/ScrollableArea.d.ts.map +1 -1
  92. package/dist/ScrollableArea/ScrollableArea.js +1 -1
  93. package/dist/SelectableCard/SelectableCard.d.ts +5 -5
  94. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  95. package/dist/SelectableCard/SelectableCard.js +15 -11
  96. package/dist/Slider/Slider.d.ts.map +1 -1
  97. package/dist/Slider/Slider.js +45 -12
  98. package/dist/Switch/Switch.d.ts.map +1 -1
  99. package/dist/Switch/Switch.js +5 -5
  100. package/dist/Switch/switch.markers.stylex.d.ts +7 -2
  101. package/dist/Switch/switch.markers.stylex.d.ts.map +1 -1
  102. package/dist/Switch/switch.markers.stylex.js +8 -3
  103. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  104. package/dist/Thumbnail/Thumbnail.js +10 -6
  105. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  106. package/dist/Tokenizer/Tokenizer.js +13 -14
  107. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  108. package/dist/Tooltip/useTooltip.js +9 -3
  109. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  110. package/dist/Typeahead/BaseTypeahead.js +16 -4
  111. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  112. package/dist/Typeahead/Typeahead.js +24 -11
  113. package/dist/astryx.css +30 -12
  114. package/dist/hooks/AnnounceRenderedText.d.ts +17 -0
  115. package/dist/hooks/AnnounceRenderedText.d.ts.map +1 -0
  116. package/dist/hooks/AnnounceRenderedText.js +32 -0
  117. package/dist/hooks/useAnnounce.d.ts +18 -1
  118. package/dist/hooks/useAnnounce.d.ts.map +1 -1
  119. package/dist/hooks/useAnnounce.js +84 -18
  120. package/dist/hooks/useAnnounceRenderedText.d.ts +19 -2
  121. package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
  122. package/dist/hooks/useAnnounceRenderedText.js +52 -11
  123. package/dist/hooks/useBusyAnnouncement.d.ts +4 -2
  124. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  125. package/dist/hooks/useBusyAnnouncement.js +30 -4
  126. package/dist/hooks/useFocusTrap.d.ts +1 -1
  127. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  128. package/dist/hooks/useFocusTrap.js +44 -20
  129. package/dist/hooks/useMenuPress.d.ts +4 -2
  130. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  131. package/dist/hooks/useMenuPress.js +58 -33
  132. package/dist/hooks/useScrollableArea.d.ts.map +1 -1
  133. package/dist/hooks/useScrollableArea.js +37 -5
  134. package/dist/reset.a11y.chromium.spec.js +1 -0
  135. package/dist/reset.until-found.a11y.browser.spec.js +1 -0
  136. package/dist/theme/index.d.ts +2 -2
  137. package/dist/theme/index.d.ts.map +1 -1
  138. package/dist/theme/index.js +1 -1
  139. package/dist/theme/themeAdaptations.d.ts +25 -1
  140. package/dist/theme/themeAdaptations.d.ts.map +1 -1
  141. package/dist/theme/themeAdaptations.js +30 -1
  142. package/dist/utils/edgeAutoscroll.d.ts +53 -0
  143. package/dist/utils/edgeAutoscroll.d.ts.map +1 -0
  144. package/dist/utils/edgeAutoscroll.js +81 -0
  145. package/package.json +4 -4
  146. package/src/AlertDialog/__tests__/AlertDialog.a11y.chromium.spec.ts +1 -0
  147. package/src/AppShell/AppShell.spec.md +329 -0
  148. package/src/AspectRatio/__tests__/AspectRatioFitLayers.a11y.browser.spec.ts +1 -0
  149. package/src/Badge/Badge.spec.md +207 -0
  150. package/src/Banner/Banner.spec.md +41 -30
  151. package/src/BottomSheet/BottomSheet.spec.md +4 -3
  152. package/src/BottomSheet/BottomSheetSwitcher.spec.md +24 -20
  153. package/src/BottomSheet/__tests__/BottomSheetDrag.a11y.chromium.spec.ts +1 -0
  154. package/src/BottomSheet/__tests__/BottomSheetFocusReturn.a11y.browser.spec.ts +1 -0
  155. package/src/BottomSheet/__tests__/BottomSheetKeyboard.a11y.browser.spec.ts +1 -0
  156. package/src/BottomSheet/__tests__/BottomSheetNativeModal.a11y.browser.spec.ts +1 -0
  157. package/src/BottomSheet/__tests__/BottomSheetPinchZoom.a11y.chromium.spec.ts +1 -0
  158. package/src/BottomSheet/__tests__/BottomSheetToastOutlet.a11y.chromium.spec.ts +1 -0
  159. package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -0
  160. package/src/Breadcrumbs/Breadcrumbs.test.tsx +22 -0
  161. package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.chromium.spec.ts +1 -0
  162. package/src/Button/Button.spec.md +320 -0
  163. package/src/Button/Button.test.tsx +7 -0
  164. package/src/Button/Button.tsx +8 -4
  165. package/src/Button/__tests__/Button.a11y.chromium.spec.ts +1 -0
  166. package/src/Calendar/__tests__/Calendar.a11y.chromium.spec.ts +1 -0
  167. package/src/Carousel/__tests__/Carousel.a11y.chromium.spec.ts +1 -0
  168. package/src/Chat/ChatComposer.test.tsx +22 -0
  169. package/src/Chat/ChatComposer.tsx +17 -23
  170. package/src/Chat/__tests__/ChatLayoutScrollButton.a11y.chromium.spec.ts +1 -0
  171. package/src/Chat/__tests__/ChatLayoutScrollButtonSurface.a11y.chromium.spec.ts +1 -0
  172. package/src/Chat/__tests__/ChatMessageList.a11y.chromium.spec.ts +1 -0
  173. package/src/Chat/__tests__/ChatMessageMetadata.a11y.chromium.spec.ts +1 -0
  174. package/src/Chat/__tests__/ChatSendButton.a11y.chromium.spec.ts +1 -0
  175. package/src/Chat/__tests__/ChatSystemMessage.a11y.chromium.spec.ts +1 -0
  176. package/src/Chat/__tests__/ChatTokenizedText.a11y.chromium.spec.ts +1 -0
  177. package/src/Chat/__tests__/useChatStreamScroll.a11y.chromium.spec.ts +1 -0
  178. package/src/CheckboxInput/__tests__/Checkbox.a11y.chromium.spec.ts +1 -0
  179. package/src/CheckboxList/__tests__/CheckboxList.a11y.chromium.spec.ts +1 -0
  180. package/src/ClickableCard/ClickableCard.doc.mjs +1 -2
  181. package/src/ClickableCard/ClickableCard.test.tsx +14 -3
  182. package/src/ClickableCard/ClickableCard.tsx +44 -28
  183. package/src/CodeBlock/CodeBlock.doc.mjs +17 -1
  184. package/src/CodeBlock/CodeBlock.spec.md +81 -49
  185. package/src/CodeBlock/CodeBlock.test.tsx +97 -1
  186. package/src/CodeBlock/CodeBlock.tsx +67 -8
  187. package/src/CodeBlock/__tests__/CodeBlockCopyClearance.a11y.chromium.spec.ts +290 -0
  188. package/src/CodeBlock/__tests__/CodeBlockOverflowStop.a11y.chromium.spec.ts +1 -0
  189. package/src/CodeBlock/__tests__/DiffRowPaint.a11y.chromium.spec.ts +1 -0
  190. package/src/Collapsible/__tests__/Collapsible.a11y.chromium.spec.ts +1 -0
  191. package/src/Collapsible/__tests__/CollapsibleGroup.a11y.chromium.spec.ts +1 -0
  192. package/src/Collapsible/__tests__/CollapsibleGroupAccordion.a11y.chromium.spec.ts +1 -0
  193. package/src/CommandPalette/CommandPalette.tsx +17 -1
  194. package/src/CommandPalette/CommandPaletteInput.tsx +21 -2
  195. package/src/CommandPalette/__tests__/CommandPalette.a11y.chromium.spec.ts +1 -0
  196. package/src/CommandPalette/__tests__/CommandPaletteFooter.a11y.chromium.spec.ts +1 -0
  197. package/src/CommandPalette/__tests__/CommandPaletteInputAudit.a11y.chromium.spec.ts +1 -0
  198. package/src/CommandPalette/__tests__/CommandPaletteItemAudit.a11y.chromium.spec.ts +1 -0
  199. package/src/CommandPalette/busyStartSettle.ts +26 -0
  200. package/src/ComplexSelector/ComplexSelector.doc.mjs +1 -1
  201. package/src/ComplexSelector/ComplexSelector.focusableDisabled.test.tsx +1 -1
  202. package/src/ComplexSelector/ComplexSelector.fr10.test.tsx +9 -9
  203. package/src/ComplexSelector/ComplexSelector.spec.md +161 -107
  204. package/src/ComplexSelector/ComplexSelector.test.tsx +77 -16
  205. package/src/ComplexSelector/ComplexSelector.tsx +44 -2
  206. package/src/ComplexSelector/__tests__/ComplexSelector.a11y.chromium.spec.ts +965 -0
  207. package/src/ContextMenu/__tests__/ContextMenuAudit.a11y.chromium.spec.ts +1 -0
  208. package/src/ContextMenu/__tests__/ContextMenuCursorAnchor.a11y.browser.spec.ts +1 -0
  209. package/src/DateInput/__tests__/DateInputAudit.a11y.chromium.spec.ts +1 -0
  210. package/src/DateInput/__tests__/WheelPinchZoom.a11y.chromium.spec.ts +18 -5
  211. package/src/Dialog/Dialog.doc.mjs +201 -47
  212. package/src/Dialog/Dialog.tsx +31 -7
  213. package/src/Dialog/__tests__/Dialog.a11y.browser.spec.ts +1 -0
  214. package/src/Dialog/__tests__/Dialog.a11y.chromium.spec.ts +1 -0
  215. package/src/Dialog/__tests__/Dialog.reduced-motion.a11y.browser.spec.ts +191 -0
  216. package/src/Drawer/__tests__/DrawerAudit.a11y.chromium.spec.ts +1 -0
  217. package/src/Drawer/__tests__/DrawerHeaderAudit.a11y.chromium.spec.ts +1 -0
  218. package/src/DropdownMenu/DropdownMenu.test.tsx +27 -1
  219. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +9 -0
  220. package/src/DropdownMenu/DropdownMenuSubMenu.spec.md +225 -0
  221. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +48 -0
  222. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +6 -6
  223. package/src/DropdownMenu/__tests__/DropdownMenuDividerAudit.a11y.chromium.spec.ts +1 -0
  224. package/src/DropdownMenu/__tests__/DropdownMenuDrillIn.a11y.chromium.spec.ts +1 -0
  225. package/src/DropdownMenu/__tests__/DropdownMenuFocusReturn.a11y.browser.spec.ts +1 -0
  226. package/src/DropdownMenu/__tests__/DropdownMenuGroupAudit.a11y.chromium.spec.ts +1 -0
  227. package/src/DropdownMenu/__tests__/DropdownMenuItemAudit.a11y.chromium.spec.ts +1 -0
  228. package/src/DropdownMenu/__tests__/DropdownMenuRadioGroupAudit.a11y.chromium.spec.ts +1 -0
  229. package/src/DropdownMenu/__tests__/DropdownMenuRadioItemAudit.a11y.chromium.spec.ts +1 -0
  230. package/src/DropdownMenu/__tests__/DropdownMenuSubMenuAudit.a11y.chromium.spec.ts +671 -0
  231. package/src/DropdownMenu/__tests__/Menu.a11y.chromium.spec.ts +1 -0
  232. package/src/DropdownMenu/__tests__/MenuButton.a11y.chromium.spec.ts +1 -0
  233. package/src/DropdownMenu/__tests__/MenuHeaderFooter.a11y.chromium.spec.ts +1 -0
  234. package/src/DropdownMenu/__tests__/MenuHoverFocus.a11y.chromium.spec.ts +238 -0
  235. package/src/DropdownMenu/__tests__/MenuPinchZoom.a11y.chromium.spec.ts +1 -0
  236. package/src/DropdownMenu/__tests__/MenuPress.a11y.chromium.spec.ts +1 -0
  237. package/src/DropdownMenu/__tests__/SubMenuHeaderFooter.a11y.chromium.spec.ts +1 -0
  238. package/src/DropdownMenu/menuItemHover.ts +13 -1
  239. package/src/EmptyState/EmptyState.announce.test.tsx +227 -0
  240. package/src/EmptyState/EmptyState.doc.mjs +1 -1
  241. package/src/EmptyState/EmptyState.spec.md +22 -14
  242. package/src/EmptyState/EmptyState.test.tsx +8 -8
  243. package/src/EmptyState/EmptyState.tsx +7 -5
  244. package/src/Field/PanelSearchInput.tsx +12 -13
  245. package/src/Field/__tests__/FieldLabelAudit.a11y.chromium.spec.ts +1 -0
  246. package/src/FieldStatus/__tests__/StatusMessage.a11y.chromium.spec.ts +1 -0
  247. package/src/IconButton/IconButton.spec.md +197 -0
  248. package/src/Item/Item.test.tsx +118 -0
  249. package/src/Item/Item.tsx +5 -3
  250. package/src/Item/__tests__/ItemSwipeActions.a11y.chromium.spec.ts +1 -0
  251. package/src/Item/__tests__/ItemSwipePinchZoom.a11y.chromium.spec.ts +186 -0
  252. package/src/Item/useSwipeAction.ts +71 -5
  253. package/src/Layer/__tests__/LayerReducedMotion.a11y.chromium.spec.ts +176 -0
  254. package/src/Layer/__tests__/TouchTrigger.a11y.chromium.spec.ts +1 -0
  255. package/src/Layer/layerAnimations.stylex.ts +22 -2
  256. package/src/Layer/layerSlideRules.ts +141 -8
  257. package/src/Layer/layerStack.ts +129 -62
  258. package/src/Layer/preserveAnimations.ts +304 -0
  259. package/src/Layer/useLayer.test.tsx +635 -0
  260. package/src/Layer/useLayer.tsx +485 -15
  261. package/src/Layer/useLayerDismissal.test.tsx +85 -2
  262. package/src/Layer/useLayerDismissal.ts +12 -9
  263. package/src/Layout/Layout.tsx +18 -0
  264. package/src/Layout/LayoutContent.tsx +5 -14
  265. package/src/Layout/LayoutFooter.tsx +2 -0
  266. package/src/Layout/LayoutHeader.tsx +2 -0
  267. package/src/Layout/__tests__/Layout.a11y.chromium.spec.ts +1 -0
  268. package/src/Layout/layoutEdges.stylex.ts +25 -0
  269. package/src/Lightbox/Lightbox.test.tsx +68 -0
  270. package/src/Lightbox/Lightbox.tsx +23 -7
  271. package/src/Lightbox/LightboxKeyboard.a11y.browser.spec.ts +78 -0
  272. package/src/Link/__tests__/Link.a11y.chromium.spec.ts +1 -0
  273. package/src/Link/__tests__/Link.navigation.a11y.chromium.spec.ts +1 -0
  274. package/src/List/ListItem.doc.mjs +3 -3
  275. package/src/Markdown/Markdown.fr23.bench.ts +3 -1
  276. package/src/Markdown/Markdown.fr23.perf.test.ts +45 -3
  277. package/src/Markdown/Markdown.fr23.sampling.ts +13 -4
  278. package/src/Markdown/Markdown.spec.md +15 -8
  279. package/src/Markdown/MarkdownTable.a11y.chromium.spec.ts +1 -0
  280. package/src/Markdown/__tests__/MarkdownNesting.a11y.chromium.spec.ts +1 -0
  281. package/src/MobileNav/MobileNav.test.tsx +27 -10
  282. package/src/MobileNav/MobileNav.tsx +10 -3
  283. package/src/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.ts +1 -0
  284. package/src/MobileNav/__tests__/MobileNavWidth.a11y.chromium.spec.ts +103 -0
  285. package/src/MultiSelector/CreateRow.a11y.chromium.spec.ts +1 -0
  286. package/src/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.ts +1 -0
  287. package/src/MultiSelector/MultiSelector.test.tsx +22 -8
  288. package/src/MultiSelector/OptionActions.a11y.chromium.spec.ts +1 -0
  289. package/src/MultiSelector/__tests__/MultiSelector.a11y.chromium.spec.ts +1 -0
  290. package/src/NumberInput/__tests__/NumberInput.a11y.chromium.spec.ts +1 -0
  291. package/src/Popover/Popover.test.tsx +245 -2
  292. package/src/Popover/__tests__/PopoverSecondDocument.a11y.chromium.spec.ts +205 -0
  293. package/src/Popover/usePopover.tsx +11 -5
  294. package/src/PowerSearch/PowerSearch.test.tsx +45 -0
  295. package/src/ProgressBar/__tests__/ProgressBar.a11y.chromium.spec.ts +1 -0
  296. package/src/RadioList/RadioList.test.tsx +34 -7
  297. package/src/RadioList/RadioListItem.press.source-build.test.mjs +80 -0
  298. package/src/RadioList/RadioListItem.tsx +26 -12
  299. package/src/RadioList/__tests__/RadioGroup.a11y.chromium.spec.ts +1 -0
  300. package/src/Resizable/__tests__/ResizeHandle.a11y.chromium.spec.ts +1 -0
  301. package/src/ScrollableArea/ScrollableArea.spec.md +6 -5
  302. package/src/ScrollableArea/ScrollableArea.test.tsx +5 -0
  303. package/src/ScrollableArea/ScrollableArea.tsx +4 -0
  304. package/src/SelectableCard/SelectableCard.doc.mjs +7 -6
  305. package/src/SelectableCard/SelectableCard.test.tsx +11 -1
  306. package/src/SelectableCard/SelectableCard.tsx +49 -33
  307. package/src/Selector/Selector.spec.md +9 -2
  308. package/src/Selector/Selector.test.tsx +64 -6
  309. package/src/Selector/__tests__/EmptyStateAnnouncement.a11y.chromium.spec.ts +1 -0
  310. package/src/Selector/__tests__/Listbox.a11y.chromium.spec.ts +1 -0
  311. package/src/Selector/__tests__/Selector.a11y.chromium.spec.ts +1 -0
  312. package/src/Selector/__tests__/Selector.combobox.a11y.chromium.spec.ts +1 -0
  313. package/src/SideNav/SideNav.test.tsx +56 -2
  314. package/src/Skeleton/Skeleton.spec.md +99 -42
  315. package/src/Slider/Slider.test.tsx +172 -0
  316. package/src/Slider/Slider.tsx +60 -12
  317. package/src/Slider/__tests__/Slider.a11y.chromium.spec.ts +1 -0
  318. package/src/Spinner/Spinner.spec.md +231 -0
  319. package/src/StatusDot/StatusDot.spec.md +143 -51
  320. package/src/Switch/Switch.focusRing.source-build.test.mjs +81 -0
  321. package/src/Switch/Switch.tsx +11 -9
  322. package/src/Switch/__tests__/Switch.a11y.chromium.spec.ts +1 -0
  323. package/src/Switch/switch.markers.stylex.ts +7 -2
  324. package/src/TabList/TabList.doc.mjs +3 -3
  325. package/src/TabList/__tests__/Tabs.a11y.chromium.spec.ts +1 -0
  326. package/src/Table/Table.spec.md +17 -13
  327. package/src/Table/__tests__/Table.a11y.chromium.spec.ts +129 -0
  328. package/src/Table/__tests__/Table.a11y.contracts.ts +35 -0
  329. package/src/Table/__tests__/Table.a11y.renders.tsx +112 -0
  330. package/src/Table/__tests__/Table.a11y.states.ts +140 -0
  331. package/src/Table/__tests__/Table.a11y.test.tsx +198 -0
  332. package/src/Table/__tests__/TableMinWidth.a11y.chromium.spec.ts +1 -0
  333. package/src/Table/__tests__/TableScroll.a11y.chromium.spec.ts +1 -0
  334. package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.test.tsx +174 -0
  335. package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.ts +86 -0
  336. package/src/Table/plugins/sortable/useTableSortable.test.tsx +0 -12
  337. package/src/TextInput/__tests__/TextInput.a11y.chromium.spec.ts +1 -0
  338. package/src/Thumbnail/Thumbnail.doc.mjs +1 -2
  339. package/src/Thumbnail/Thumbnail.test.tsx +11 -1
  340. package/src/Thumbnail/Thumbnail.tsx +43 -27
  341. package/src/ToggleButton/__tests__/ToggleButton.a11y.chromium.spec.ts +1 -0
  342. package/src/Token/Token.spec.md +271 -0
  343. package/src/Token/__tests__/TokenRemoveTarget.a11y.chromium.spec.ts +1 -0
  344. package/src/Tokenizer/Tokenizer.test.tsx +44 -8
  345. package/src/Tokenizer/Tokenizer.tsx +14 -17
  346. package/src/Tokenizer/__tests__/TokenizerEndLane.a11y.chromium.spec.ts +1 -0
  347. package/src/Toolbar/__tests__/Toolbar.a11y.chromium.spec.ts +1 -0
  348. package/src/Tooltip/Tooltip.test.tsx +23 -0
  349. package/src/Tooltip/__tests__/Tooltip.a11y.chromium.spec.ts +1 -0
  350. package/src/Tooltip/__tests__/TooltipFocusReturn.a11y.chromium.spec.ts +1 -0
  351. package/src/Tooltip/__tests__/TooltipHoverBridge.a11y.chromium.spec.ts +1 -0
  352. package/src/Tooltip/__tests__/TooltipTallContent.a11y.browser.spec.ts +646 -0
  353. package/src/Tooltip/__tests__/TooltipTallContentTracking.a11y.browser.spec.ts +1162 -0
  354. package/src/Tooltip/useTooltip.tsx +7 -2
  355. package/src/TopNav/TopNav.spec.md +190 -0
  356. package/src/TopNav/TopNavHeading.spec.md +204 -0
  357. package/src/TopNav/TopNavItem.spec.md +181 -0
  358. package/src/TopNav/TopNavMegaMenu.spec.md +190 -0
  359. package/src/TopNav/TopNavMegaMenuFeaturedCard.spec.md +150 -0
  360. package/src/TopNav/TopNavMegaMenuItem.spec.md +155 -0
  361. package/src/TopNav/TopNavMenu.spec.md +195 -0
  362. package/src/TopNav/__tests__/TopNavMobileLongHeading.a11y.chromium.spec.ts +1 -0
  363. package/src/TreeList/__tests__/TreeList.a11y.chromium.spec.ts +1 -0
  364. package/src/TreeList/__tests__/TreeListRowNames.a11y.chromium.spec.ts +1 -0
  365. package/src/Typeahead/BaseTypeahead.tsx +14 -2
  366. package/src/Typeahead/Typeahead.test.tsx +114 -1
  367. package/src/Typeahead/Typeahead.tsx +27 -14
  368. package/src/__tests__/BusyOwnerAnnouncement.test.tsx +59 -0
  369. package/src/__tests__/CardPress.a11y.chromium.spec.ts +353 -0
  370. package/src/__tests__/DisabledTriggerFocus.a11y.chromium.spec.ts +2 -1
  371. package/src/__tests__/PressedState.a11y.chromium.spec.ts +1 -0
  372. package/src/__tests__/pressState.ts +43 -1
  373. package/src/hooks/AnnounceRenderedText.tsx +27 -0
  374. package/src/hooks/__tests__/MenuPressShadowRoot.a11y.chromium.spec.ts +1 -0
  375. package/src/hooks/useAnnounce.doc.mjs +2 -2
  376. package/src/hooks/useAnnounce.test.tsx +64 -4
  377. package/src/hooks/useAnnounce.ts +91 -19
  378. package/src/hooks/useAnnounceRenderedText.adopters.test.tsx +204 -0
  379. package/src/hooks/useAnnounceRenderedText.ts +81 -11
  380. package/src/hooks/useBusyAnnouncement.adopters.test.tsx +69 -0
  381. package/src/hooks/useBusyAnnouncement.test.tsx +112 -0
  382. package/src/hooks/useBusyAnnouncement.ts +36 -5
  383. package/src/hooks/useFocusTrap.test.tsx +71 -2
  384. package/src/hooks/useFocusTrap.ts +46 -21
  385. package/src/hooks/useMenuPress.doc.mjs +2 -2
  386. package/src/hooks/useMenuPress.test.tsx +5 -2
  387. package/src/hooks/useMenuPress.ts +72 -37
  388. package/src/hooks/useScrollableArea.test.tsx +159 -0
  389. package/src/hooks/useScrollableArea.ts +39 -5
  390. package/src/reset.a11y.chromium.spec.ts +1 -0
  391. package/src/reset.until-found.a11y.browser.spec.ts +1 -0
  392. package/src/serverSafeComponents.test.ts +10 -0
  393. package/src/theme/__tests__/SpacingRootFontSize.a11y.chromium.spec.ts +1 -0
  394. package/src/theme/derivedVarRegistry.test.ts +9 -5
  395. package/src/theme/index.ts +3 -0
  396. package/src/theme/themeAdaptations.test.ts +37 -0
  397. package/src/theme/themeAdaptations.ts +43 -1
  398. package/src/theme/tokens.test.ts +60 -0
  399. package/src/utils/customPropertyArmLayering.test.ts +131 -0
  400. package/src/utils/edgeAutoscroll.test.ts +192 -0
  401. package/src/utils/edgeAutoscroll.ts +111 -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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"}
@@ -555,8 +555,10 @@ export function Button({
555
555
  ...ariaLabelProp,
556
556
  ...describedByProp,
557
557
  ...edgeCompAttr,
558
- "aria-busy": isLoadingState || undefined,
559
- "aria-disabled": useAriaDisabled || undefined,
558
+ // A caller's own busy or disabled state is kept, so a component that
559
+ // hands these props to a Button (a caller-rendered trigger) is heard.
560
+ "aria-busy": isLoadingState || props['aria-busy'] || undefined,
561
+ "aria-disabled": useAriaDisabled || props['aria-disabled'] || undefined,
560
562
  onClick: handleClick,
561
563
  ...(handleKeyDown ? {
562
564
  onKeyDown: handleKeyDown
@@ -574,8 +576,10 @@ export function Button({
574
576
  ...ariaLabelProp,
575
577
  ...describedByProp,
576
578
  ...edgeCompAttr,
577
- "aria-busy": isLoadingState || undefined,
578
- "aria-disabled": useAriaDisabled || undefined,
579
+ // A caller's own busy or disabled state is kept, so a component that
580
+ // hands these props to a Button (a caller-rendered trigger) is heard.
581
+ "aria-busy": isLoadingState || props['aria-busy'] || undefined,
582
+ "aria-disabled": useAriaDisabled || props['aria-disabled'] || undefined,
579
583
  onClick: handleClick,
580
584
  ...(handleKeyDown ? {
581
585
  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. */
@@ -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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"}
@@ -413,12 +413,23 @@ export function ComplexSelector({
413
413
  id: triggerId,
414
414
  // This path never forwarded caller handlers before, so the newly
415
415
  // forwarded ones compose component first and cannot cancel opening.
416
- onClick: composeEventHandlers(handleTriggerClick, onClickProp),
417
- onKeyDown: composeEventHandlers(handleTriggerKeyDown, onKeyDownProp),
416
+ // A disabled control keeps its tab stop but invokes no callback
417
+ // (`spec:AST-085` FR2), as on the built-in trigger.
418
+ onClick: isDisabled ? swallowDisabledPress : composeEventHandlers(handleTriggerClick, onClickProp),
419
+ onKeyDown: isDisabled ? handleTriggerKeyDown : composeEventHandlers(handleTriggerKeyDown, onKeyDownProp),
420
+ // The caller's control is the field, so it carries the field's role
421
+ // and state as the built-in trigger does.
422
+ role: 'combobox',
423
+ // A combobox takes no name from its content, so the field's label
424
+ // names the control, as it names the built-in trigger and the popup.
425
+ // A name passed to the selector wins.
426
+ 'aria-label': rest['aria-label'] ?? (rest['aria-labelledby'] != null ? undefined : label),
418
427
  'aria-haspopup': 'dialog',
419
428
  'aria-expanded': isOpen,
420
429
  'aria-controls': contentId,
421
- 'aria-busy': isBusy || undefined
430
+ 'aria-busy': isBusy || undefined,
431
+ 'aria-required': isEffectivelyRequired ? 'true' : undefined,
432
+ 'aria-disabled': isDisabled ? 'true' : undefined
422
433
  };
423
434
  return /*#__PURE__*/_jsxs(_Fragment, {
424
435
  children: [renderTrigger(triggerProps), popup]
@@ -443,7 +454,11 @@ export function ComplexSelector({
443
454
  ...rest,
444
455
  ref: triggerButtonRef,
445
456
  id: triggerId,
446
- type: "button",
457
+ type: "button"
458
+ // The trigger is the field's control: a combobox whose popup is a
459
+ // dialog, so required and disabled state are valid on it.
460
+ ,
461
+ role: "combobox",
447
462
  "aria-haspopup": "dialog",
448
463
  "aria-expanded": isOpen,
449
464
  "aria-controls": contentId
@@ -12,6 +12,10 @@
12
12
  * while preserving explicit prop/theme padding overrides, and fade in without
13
13
  * the centered-dialog translate/scale motion.
14
14
  *
15
+ * Under reduced motion the entrance never travels or scales
16
+ * (docs/design/reduced-motion.md): on a touch screen the dialog fades in
17
+ * where it lands, in 200 ms or less; with a mouse it appears at once.
18
+ *
15
19
  * Initial focus and the focus returned on close follow the last input
16
20
  * (docs/architecture/interaction-modality.md INV1): the shared focus indicator
17
21
  * is hidden after a pointer press and shown after a key press.
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../src/Dialog/Dialog.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA2B5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAMhD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAyB9C;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,4EAA4E;AAC5E,UAAU,mBAAmB;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAuBD,2FAA2F;AAC3F,eAAO,MAAM,uCAAuC;;;;;;;;;;;CAW1C,CAAC;AAoJX;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,cAAc;;;;;EAUpE;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC/D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;OAOG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE3C;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,QAAgB,EAChB,YAAY,EACZ,KAAW,EACX,SAAmB,EACnB,QAAQ,EACR,OAAoB,EACpB,OAAgB,EAChB,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,sCA4Vb;yBA5We,MAAM"}
1
+ {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../src/Dialog/Dialog.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA2B5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAMhD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAyB9C;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,4EAA4E;AAC5E,UAAU,mBAAmB;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAuBD,2FAA2F;AAC3F,eAAO,MAAM,uCAAuC;;;;;;;;;;;CAW1C,CAAC;AAqKX;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,cAAc;;;;;EAUpE;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC/D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;OAOG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE3C;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,QAAgB,EAChB,YAAY,EACZ,KAAW,EACX,SAAmB,EACnB,QAAQ,EACR,OAAoB,EACpB,OAAgB,EAChB,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,sCA+Vb;yBA/We,MAAM"}