@astryxdesign/core 0.7.5-canary.563dc53 → 0.7.5-canary.577e8ca

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 (209) 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/ClickableCard/ClickableCard.d.ts.map +1 -1
  6. package/dist/ClickableCard/ClickableCard.js +10 -6
  7. package/dist/CodeBlock/CodeBlock.d.ts +9 -1
  8. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  9. package/dist/CodeBlock/CodeBlock.js +32 -11
  10. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  11. package/dist/CommandPalette/CommandPalette.js +15 -1
  12. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  13. package/dist/CommandPalette/CommandPaletteInput.js +14 -2
  14. package/dist/CommandPalette/busyStartSettle.d.ts +4 -0
  15. package/dist/CommandPalette/busyStartSettle.d.ts.map +1 -0
  16. package/dist/CommandPalette/busyStartSettle.js +23 -0
  17. package/dist/ComplexSelector/ComplexSelector.d.ts +19 -1
  18. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  19. package/dist/ComplexSelector/ComplexSelector.js +19 -4
  20. package/dist/DateInput/Wheel.d.ts.map +1 -1
  21. package/dist/DateInput/Wheel.js +1 -1
  22. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +10 -5
  23. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  24. package/dist/DropdownMenu/DropdownMenuRadioItem.js +13 -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/Field/PanelSearchInput.d.ts.map +1 -1
  32. package/dist/Field/PanelSearchInput.js +11 -14
  33. package/dist/Field/inputDisabledFocus.d.ts +14 -0
  34. package/dist/Field/inputDisabledFocus.d.ts.map +1 -0
  35. package/dist/Field/inputDisabledFocus.js +19 -0
  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/useTouchTrigger.d.ts +14 -1
  41. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  42. package/dist/Layer/useTouchTrigger.js +72 -17
  43. package/dist/Lightbox/Lightbox.d.ts +5 -2
  44. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  45. package/dist/Lightbox/Lightbox.js +19 -7
  46. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts +2 -0
  47. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts.map +1 -0
  48. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.js +77 -0
  49. package/dist/NumberInput/NumberInput.d.ts +3 -3
  50. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  51. package/dist/NumberInput/NumberInput.js +46 -20
  52. package/dist/Popover/usePopover.d.ts.map +1 -1
  53. package/dist/Popover/usePopover.js +8 -4
  54. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  55. package/dist/SelectableCard/SelectableCard.js +10 -6
  56. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  57. package/dist/SideNav/SideNavHeading.js +34 -0
  58. package/dist/Skeleton/Skeleton.d.ts.map +1 -1
  59. package/dist/Skeleton/Skeleton.js +12 -3
  60. package/dist/Slider/Slider.d.ts.map +1 -1
  61. package/dist/Slider/Slider.js +45 -12
  62. package/dist/TextArea/TextArea.d.ts +6 -4
  63. package/dist/TextArea/TextArea.d.ts.map +1 -1
  64. package/dist/TextArea/TextArea.js +14 -11
  65. package/dist/TextInput/TextInput.d.ts +6 -4
  66. package/dist/TextInput/TextInput.d.ts.map +1 -1
  67. package/dist/TextInput/TextInput.js +27 -17
  68. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  69. package/dist/Thumbnail/Thumbnail.js +10 -6
  70. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  71. package/dist/Typeahead/BaseTypeahead.js +16 -4
  72. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  73. package/dist/Typeahead/Typeahead.js +24 -11
  74. package/dist/astryx.css +14 -9
  75. package/dist/hooks/useAnnounce.d.ts +18 -1
  76. package/dist/hooks/useAnnounce.d.ts.map +1 -1
  77. package/dist/hooks/useAnnounce.js +84 -18
  78. package/dist/hooks/useBusyAnnouncement.d.ts +4 -2
  79. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  80. package/dist/hooks/useBusyAnnouncement.js +30 -4
  81. package/dist/hooks/useMenuPress.d.ts +2 -1
  82. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  83. package/dist/hooks/useMenuPress.js +12 -3
  84. package/dist/theme/index.d.ts +2 -2
  85. package/dist/theme/index.d.ts.map +1 -1
  86. package/dist/theme/index.js +1 -1
  87. package/dist/theme/themeAdaptations.d.ts +25 -1
  88. package/dist/theme/themeAdaptations.d.ts.map +1 -1
  89. package/dist/theme/themeAdaptations.js +30 -1
  90. package/package.json +3 -3
  91. package/src/AppShell/AppShell.spec.md +329 -0
  92. package/src/Badge/Badge.spec.md +207 -0
  93. package/src/Banner/Banner.spec.md +41 -30
  94. package/src/BottomSheet/BottomSheetSwitcher.spec.md +24 -20
  95. package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -0
  96. package/src/Breadcrumbs/Breadcrumbs.test.tsx +22 -0
  97. package/src/Button/Button.test.tsx +7 -0
  98. package/src/Button/Button.tsx +8 -4
  99. package/src/ClickableCard/ClickableCard.doc.mjs +1 -2
  100. package/src/ClickableCard/ClickableCard.test.tsx +14 -3
  101. package/src/ClickableCard/ClickableCard.tsx +44 -28
  102. package/src/CodeBlock/CodeBlock.doc.mjs +17 -1
  103. package/src/CodeBlock/CodeBlock.spec.md +81 -49
  104. package/src/CodeBlock/CodeBlock.test.tsx +97 -1
  105. package/src/CodeBlock/CodeBlock.tsx +67 -8
  106. package/src/CodeBlock/__tests__/CodeBlockCopyClearance.a11y.chromium.spec.ts +289 -0
  107. package/src/CommandPalette/CommandPalette.tsx +17 -1
  108. package/src/CommandPalette/CommandPaletteInput.tsx +21 -2
  109. package/src/CommandPalette/busyStartSettle.ts +26 -0
  110. package/src/ComplexSelector/ComplexSelector.doc.mjs +1 -1
  111. package/src/ComplexSelector/ComplexSelector.focusableDisabled.test.tsx +1 -1
  112. package/src/ComplexSelector/ComplexSelector.fr10.test.tsx +9 -9
  113. package/src/ComplexSelector/ComplexSelector.spec.md +161 -107
  114. package/src/ComplexSelector/ComplexSelector.test.tsx +77 -16
  115. package/src/ComplexSelector/ComplexSelector.tsx +44 -2
  116. package/src/ComplexSelector/__tests__/ComplexSelector.a11y.chromium.spec.ts +964 -0
  117. package/src/DateInput/DateInputTouch.test.tsx +9 -0
  118. package/src/DateInput/Wheel.tsx +4 -1
  119. package/src/DateInput/__tests__/WheelPinchZoom.a11y.chromium.spec.ts +158 -0
  120. package/src/DropdownMenu/DropdownMenu.test.tsx +27 -1
  121. package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +5 -2
  122. package/src/DropdownMenu/DropdownMenuRadioItem.spec.md +226 -0
  123. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +32 -16
  124. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +158 -0
  125. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +9 -0
  126. package/src/DropdownMenu/DropdownMenuSubMenu.spec.md +225 -0
  127. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +48 -0
  128. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +6 -6
  129. package/src/DropdownMenu/__tests__/DropdownMenuRadioItemAudit.a11y.chromium.spec.ts +539 -0
  130. package/src/DropdownMenu/__tests__/DropdownMenuSubMenuAudit.a11y.chromium.spec.ts +670 -0
  131. package/src/DropdownMenu/__tests__/MenuHoverFocus.a11y.chromium.spec.ts +237 -0
  132. package/src/DropdownMenu/menuItemHover.ts +13 -1
  133. package/src/Field/PanelSearchInput.tsx +12 -13
  134. package/src/Field/inputDisabledFocus.ts +28 -0
  135. package/src/HoverCard/HoverCard.test.tsx +93 -3
  136. package/src/Item/Item.test.tsx +118 -0
  137. package/src/Item/Item.tsx +5 -3
  138. package/src/Item/__tests__/ItemSwipePinchZoom.a11y.chromium.spec.ts +185 -0
  139. package/src/Item/useSwipeAction.ts +71 -5
  140. package/src/Layer/__tests__/TouchTrigger.a11y.chromium.spec.ts +199 -0
  141. package/src/Layer/useTouchTrigger.ts +95 -41
  142. package/src/Lightbox/Lightbox.test.tsx +68 -0
  143. package/src/Lightbox/Lightbox.tsx +20 -7
  144. package/src/Lightbox/LightboxKeyboard.a11y.browser.spec.ts +77 -0
  145. package/src/List/ListItem.doc.mjs +3 -3
  146. package/src/Markdown/Markdown.spec.md +15 -8
  147. package/src/MultiSelector/MultiSelector.test.tsx +22 -8
  148. package/src/NumberInput/NumberInput.doc.mjs +6 -6
  149. package/src/NumberInput/NumberInput.test.tsx +144 -14
  150. package/src/NumberInput/NumberInput.tsx +68 -21
  151. package/src/Pagination/Pagination.test.tsx +2 -2
  152. package/src/Popover/Popover.test.tsx +48 -0
  153. package/src/Popover/usePopover.tsx +8 -4
  154. package/src/PowerSearch/PowerSearch.test.tsx +45 -0
  155. package/src/SelectableCard/SelectableCard.doc.mjs +1 -2
  156. package/src/SelectableCard/SelectableCard.test.tsx +11 -1
  157. package/src/SelectableCard/SelectableCard.tsx +44 -28
  158. package/src/Selector/Selector.spec.md +9 -2
  159. package/src/Selector/Selector.test.tsx +64 -6
  160. package/src/SideNav/SideNav.test.tsx +71 -8
  161. package/src/SideNav/SideNavHeading.tsx +41 -0
  162. package/src/Skeleton/Skeleton.test.tsx +108 -1
  163. package/src/Skeleton/Skeleton.tsx +30 -2
  164. package/src/Slider/Slider.test.tsx +172 -0
  165. package/src/Slider/Slider.tsx +60 -12
  166. package/src/TabList/TabList.doc.mjs +3 -3
  167. package/src/Table/Table.spec.md +17 -13
  168. package/src/Table/__tests__/Table.a11y.chromium.spec.ts +128 -0
  169. package/src/Table/__tests__/Table.a11y.contracts.ts +35 -0
  170. package/src/Table/__tests__/Table.a11y.renders.tsx +112 -0
  171. package/src/Table/__tests__/Table.a11y.states.ts +140 -0
  172. package/src/Table/__tests__/Table.a11y.test.tsx +198 -0
  173. package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.test.tsx +174 -0
  174. package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.ts +86 -0
  175. package/src/Table/plugins/sortable/useTableSortable.test.tsx +0 -12
  176. package/src/TextArea/TextArea.doc.mjs +6 -6
  177. package/src/TextArea/TextArea.test.tsx +65 -6
  178. package/src/TextArea/TextArea.tsx +26 -14
  179. package/src/TextInput/TextInput.doc.mjs +8 -8
  180. package/src/TextInput/TextInput.test.tsx +83 -10
  181. package/src/TextInput/TextInput.tsx +38 -19
  182. package/src/Thumbnail/Thumbnail.doc.mjs +1 -2
  183. package/src/Thumbnail/Thumbnail.test.tsx +11 -1
  184. package/src/Thumbnail/Thumbnail.tsx +43 -27
  185. package/src/Token/Token.spec.md +271 -0
  186. package/src/Tooltip/Tooltip.test.tsx +148 -3
  187. package/src/Tooltip/__tests__/Tooltip.a11y.states.ts +2 -2
  188. package/src/Typeahead/BaseTypeahead.tsx +14 -2
  189. package/src/Typeahead/Typeahead.test.tsx +114 -1
  190. package/src/Typeahead/Typeahead.tsx +27 -14
  191. package/src/__tests__/BusyOwnerAnnouncement.test.tsx +59 -0
  192. package/src/__tests__/CardPress.a11y.chromium.spec.ts +352 -0
  193. package/src/__tests__/DisabledTriggerFocus.a11y.chromium.spec.ts +1 -1
  194. package/src/__tests__/pressState.ts +43 -1
  195. package/src/hooks/useAnnounce.doc.mjs +2 -2
  196. package/src/hooks/useAnnounce.test.tsx +64 -4
  197. package/src/hooks/useAnnounce.ts +91 -19
  198. package/src/hooks/useBusyAnnouncement.adopters.test.tsx +69 -0
  199. package/src/hooks/useBusyAnnouncement.test.tsx +112 -0
  200. package/src/hooks/useBusyAnnouncement.ts +36 -5
  201. package/src/hooks/useMenuPress.doc.mjs +2 -2
  202. package/src/hooks/useMenuPress.test.tsx +5 -2
  203. package/src/hooks/useMenuPress.ts +12 -3
  204. package/src/theme/derivedVarRegistry.test.ts +4 -5
  205. package/src/theme/index.ts +3 -0
  206. package/src/theme/themeAdaptations.test.ts +37 -0
  207. package/src/theme/themeAdaptations.ts +43 -1
  208. package/src/theme/tokens.test.ts +60 -0
  209. package/src/utils/customPropertyArmLayering.test.ts +131 -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":"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
@@ -1 +1 @@
1
- {"version":3,"file":"Wheel.d.ts","sourceRoot":"","sources":["../../src/DateInput/Wheel.tsx"],"names":[],"mappings":"AA2MA,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACpC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAe,GAChB,EAAE,UAAU,+BAgOZ;yBAtOe,KAAK"}
1
+ {"version":3,"file":"Wheel.d.ts","sourceRoot":"","sources":["../../src/DateInput/Wheel.tsx"],"names":[],"mappings":"AA8MA,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACpC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAe,GAChB,EAAE,UAAU,+BAgOZ;yBAtOe,KAAK"}
@@ -68,7 +68,7 @@ const styles = {
68
68
  kmaZ5I: "x1oyok0e",
69
69
  k5wCbM: "x1rohswg",
70
70
  kI3sdo: "x1a2a7pz",
71
- kFalU9: "xx69xxh",
71
+ kFalU9: "xge0x1e",
72
72
  $$css: true
73
73
  }
74
74
  };
@@ -8,7 +8,8 @@
8
8
  * (role="menuitemradio"). The row owns the role and aria-checked; there is no
9
9
  * nested native <input> (per the WAI-ARIA menuitemradio pattern). Selection
10
10
  * state + onChange come from DropdownMenuRadioGroupContext. Keyboard nav +
11
- * Enter/Space activation come from the parent DropdownMenu.
11
+ * Enter/Space activation come from the parent DropdownMenu. Caller onClick and
12
+ * onPointerMove run after the row's own selection and hover focus.
12
13
  *
13
14
  * The round radio visual is the shared radio indicator, decorative
14
15
  * (aria-hidden) — the row owns the checked state, and menu radios pick up the
@@ -39,9 +40,9 @@ export interface DropdownMenuRadioItemProps extends Omit<BaseProps, 'role' | 'ar
39
40
  */
40
41
  icon?: ReactNode | IconType;
41
42
  /**
42
- * Whether this individual radio item is disabled. Disabled items stay
43
- * focusable (via `aria-disabled`) so they remain discoverable by keyboard
44
- * and assistive technology, but selection is blocked.
43
+ * Whether this individual radio item is disabled. Disabled items expose
44
+ * `aria-disabled`, block selection, and are currently skipped by
45
+ * DropdownMenu arrow-key navigation.
45
46
  * @default false
46
47
  */
47
48
  isDisabled?: boolean;
@@ -56,6 +57,10 @@ export interface DropdownMenuRadioItemProps extends Omit<BaseProps, 'role' | 'ar
56
57
  /**
57
58
  * A single option in a DropdownMenuRadioGroup (role="menuitemradio").
58
59
  *
60
+ * Consumer click and pointer-move handlers compose after the row's own
61
+ * selection and hover-focus behavior; disabled activation stops before the
62
+ * consumer click handler.
63
+ *
59
64
  * @example
60
65
  * ```
61
66
  * <DropdownMenuRadioGroup value={sort} onChange={setSort} label="Sort by">
@@ -64,7 +69,7 @@ export interface DropdownMenuRadioItemProps extends Omit<BaseProps, 'role' | 'ar
64
69
  * </DropdownMenuRadioGroup>
65
70
  * ```
66
71
  */
67
- export declare function DropdownMenuRadioItem({ value, label, description, icon, isDisabled, endContent, xstyle, className, style, ...rest }: DropdownMenuRadioItemProps): import("react").JSX.Element;
72
+ export declare function DropdownMenuRadioItem({ value, label, description, icon, isDisabled, endContent, xstyle, className, style, onClick, onPointerMove, ...rest }: DropdownMenuRadioItemProps): import("react").JSX.Element;
68
73
  export declare namespace DropdownMenuRadioItem {
69
74
  var displayName: string;
70
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuRadioItem.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuRadioItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAErE,OAAO,EAAiB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAOtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA4C5C,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CACtD,SAAS,EACT,MAAM,GAAG,cAAc,GAAG,UAAU,CACrC;IACC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,mFAAmF;IACnF,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,KAAK,EACL,WAAW,EACX,IAAI,EACJ,UAAkB,EAClB,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,0BAA0B,+BAmE5B;yBA9Ee,qBAAqB"}
1
+ {"version":3,"file":"DropdownMenuRadioItem.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuRadioItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAiB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAOtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA4C5C,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CACtD,SAAS,EACT,MAAM,GAAG,cAAc,GAAG,UAAU,CACrC;IACC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,mFAAmF;IACnF,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,KAAK,EACL,WAAW,EACX,IAAI,EACJ,UAAkB,EAClB,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,aAAa,EACb,GAAG,IAAI,EACR,EAAE,0BAA0B,+BAuE5B;yBApFe,qBAAqB"}
@@ -12,7 +12,8 @@
12
12
  * (role="menuitemradio"). The row owns the role and aria-checked; there is no
13
13
  * nested native <input> (per the WAI-ARIA menuitemradio pattern). Selection
14
14
  * state + onChange come from DropdownMenuRadioGroupContext. Keyboard nav +
15
- * Enter/Space activation come from the parent DropdownMenu.
15
+ * Enter/Space activation come from the parent DropdownMenu. Caller onClick and
16
+ * onPointerMove run after the row's own selection and hover focus.
16
17
  *
17
18
  * The round radio visual is the shared radio indicator, decorative
18
19
  * (aria-hidden) — the row owns the checked state, and menu radios pick up the
@@ -29,7 +30,7 @@ import { useDropdownMenuContext } from "./DropdownMenuContext.js";
29
30
  import { focusMenuItemOnHover } from "./menuItemHover.js";
30
31
  import "../theme/tokens.stylex.js";
31
32
  import { colorVars, spacingVars } from "../theme/tokens.stylex.js";
32
- import { mergeProps, themeProps } from "../utils/index.js";
33
+ import { composeEventHandlers, mergeProps, themeProps } from "../utils/index.js";
33
34
  import { useDropdownMenuRadioGroupContext } from "./DropdownMenuContext.js";
34
35
  import { jsx as _jsx } from "react/jsx-runtime";
35
36
  const styles = {
@@ -61,6 +62,10 @@ const styles = {
61
62
  /**
62
63
  * A single option in a DropdownMenuRadioGroup (role="menuitemradio").
63
64
  *
65
+ * Consumer click and pointer-move handlers compose after the row's own
66
+ * selection and hover-focus behavior; disabled activation stops before the
67
+ * consumer click handler.
68
+ *
64
69
  * @example
65
70
  * ```
66
71
  * <DropdownMenuRadioGroup value={sort} onChange={setSort} label="Sort by">
@@ -79,6 +84,8 @@ export function DropdownMenuRadioItem({
79
84
  xstyle,
80
85
  className,
81
86
  style,
87
+ onClick,
88
+ onPointerMove,
82
89
  ...rest
83
90
  }) {
84
91
  const menuCtx = useDropdownMenuContext();
@@ -90,7 +97,7 @@ export function DropdownMenuRadioItem({
90
97
  const controlSize = menuSize === 'sm' ? 'sm' : 'md';
91
98
  const isChecked = groupCtx.value === value;
92
99
  const RadioControl = useIndicator('radio');
93
- const handleClick = useCallback(() => {
100
+ const handleClick = useCallback(event => {
94
101
  if (isDisabled) {
95
102
  return;
96
103
  }
@@ -98,14 +105,15 @@ export function DropdownMenuRadioItem({
98
105
  if (groupCtx.hasCloseOnSelect) {
99
106
  menuCtx?.closeMenu();
100
107
  }
101
- }, [isDisabled, groupCtx, value, menuCtx]);
108
+ onClick?.(event);
109
+ }, [isDisabled, groupCtx, value, menuCtx, onClick]);
102
110
  const handlePointerMove = useCallback(e => focusMenuItemOnHover(e, isDisabled), [isDisabled]);
103
111
  return /*#__PURE__*/_jsx(Item, {
104
112
  ...rest,
105
113
  role: "menuitemradio",
106
114
  "aria-checked": isChecked,
107
115
  tabIndex: isDisabled ? undefined : -1,
108
- onPointerMove: handlePointerMove,
116
+ onPointerMove: composeEventHandlers(handlePointerMove, onPointerMove),
109
117
  marker:
110
118
  /*#__PURE__*/
111
119
  // No wrapper — see DropdownMenuCheckboxItem: the target belongs on the