Skip to content

feat(react-headless-components-preview): add Menu component and stories#36110

Draft
mainframev wants to merge 10 commits intomicrosoft:masterfrom
mainframev:feat/headless-menu
Draft

feat(react-headless-components-preview): add Menu component and stories#36110
mainframev wants to merge 10 commits intomicrosoft:masterfrom
mainframev:feat/headless-menu

Conversation

@mainframev
Copy link
Copy Markdown
Contributor

TBA

mainframev added 10 commits May 5, 2026 14:52
…eMenuItemCheckbox, useMenuItemRadio, useMenuItemSwitch
Adds headless Menu with all v9 sub-components (Menu, MenuTrigger, MenuList,
MenuItem, MenuItemCheckbox, MenuItemRadio, MenuItemLink, MenuItemSwitch,
MenuPopover, MenuDivider, MenuGroup, MenuGroupHeader, MenuSplitGroup).

Hooks delegate to v9's useMenu*Base_unstable family from microsoft#36087 — no Griffel,
no presence-motion, minimal Tabster (only useFocusFinders for focus-on-open).
useMenuList layers a tabster-free useArrowNavigation hook on top for
ArrowDown/ArrowUp/Home/End. useMenuPopover stamps popover='auto' on the root
slot in JSX (matching microsoft#36090) and mirrors browser-driven toggle events back
to setOpen. useMenuTrigger defers setOpen on contextmenu to the trailing
pointerup so right-click context menus don't get auto-dismissed by the
popover='auto' stack.

Includes 14 stories, 39 unit-test suites (465 tests), generated API surface,
and a beachball change file.
@mainframev mainframev changed the title feat(headless): add Menu component feat(react-headless-components-preview): add Menu component and stories May 6, 2026
@mainframev mainframev self-assigned this May 6, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 6, 2026

Pull request demo site: URL

@@ -0,0 +1,7 @@
{
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🕵🏾‍♀️ visual changes to review in the Visual Change Report

vr-tests-react-components/Charts-DonutChart 2 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Charts-DonutChart.Dynamic.default.chromium.png 5581 Changed
vr-tests-react-components/Charts-DonutChart.Dynamic - Dark Mode.default.chromium.png 7530 Changed
vr-tests-react-components/Menu Converged - submenuIndicator slotted content 2 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Menu Converged - submenuIndicator slotted content.default.submenus open.chromium.png 605 Changed
vr-tests-react-components/Menu Converged - submenuIndicator slotted content.default - RTL.submenus open.chromium.png 404 Changed
vr-tests-react-components/Positioning 2 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Positioning.Positioning end.chromium.png 906 Changed
vr-tests-react-components/Positioning.Positioning end.updated 2 times.chromium.png 731 Changed
vr-tests-react-components/ProgressBar converged 3 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/ProgressBar converged.Indeterminate + thickness - High Contrast.default.chromium.png 130 Changed
vr-tests-react-components/ProgressBar converged.Indeterminate + thickness.default.chromium.png 26 Changed
vr-tests-react-components/ProgressBar converged.Indeterminate + thickness - Dark Mode.default.chromium.png 55 Changed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant