Skip to content

[experiment] Menu RFC playground#48823

Draft
LukasTy wants to merge 9 commits into
mui:masterfrom
LukasTy:menu-rfc-playground
Draft

[experiment] Menu RFC playground#48823
LukasTy wants to merge 9 commits into
mui:masterfrom
LukasTy:menu-rfc-playground

Conversation

@LukasTy

@LukasTy LukasTy commented Jul 16, 2026

Copy link
Copy Markdown
Member

Companion experiment for the upcoming "Menu: Base UI-based successor" RFC. Draft, not intended to merge as-is.

This branch:

  • Merges the MenuPreview proof of concept from [experiment] Popups on menu items #48663 (by @mj12albert) onto current master, with @base-ui/react aligned to ^1.6.0 (docs catalog + direct dependency of @mui/material).
  • Adds a non-public experiments page at /experiments/menu-rfc with use-case demos and knobs for the RFC's open questions.

Playground knobs

  • Root behavior: modal, loopFocus, highlightItemOnHover
  • Submenus: openOnHover, delay, closeDelay, closeParentOnEsc
  • Positioning: side, align, sideOffset, alignOffset, keepMounted
  • Appearance / RFC open questions: elevation, default animation candidate (CSS approximation of Grow via data-starting-style/data-ending-style), dense items, item dividers, RTL direction

Sections

  • Kitchen sink: three-level submenus, groups with labels, checkbox/radio items, a disabled item, a visual-only selected item, a link item, plus an onOpenChange reason log
  • Classic vs successor: the same item set on both menus for visual parity checks (note the classic top-level elevation prop vs slotProps.paper.elevation)
  • Classic-style controlled usage: external anchor + open/onOpenChange, no Trigger part
  • Typeahead and scrolling: long menu constrained via slotProps.paper

See also /experiments/menu-preview from #48663 for the Tooltip, PreviewCard, and ContextMenu recipes.

RFC: link to be added once the RFC issue is posted.

Verified locally against the dev server: keyboard submenu navigation (ArrowRight/ArrowLeft, RTL-flipped via the RTL knob), Escape close ordering (closeParentOnEsc), menuitemradio/menuitemcheckbox roles with aria-checked, onOpenChange reasons (list-navigation, escape-key, outside-press), and the animation/elevation knobs applying live.

Generated with Claude Code

mj12albert and others added 9 commits June 29, 2026 18:47
Brings in mj12albert's MenuPreview proof of concept from
mui#48663, rebased context onto
current master: @base-ui/react aligned to ^1.6.0 (catalog + direct
dependency of @mui/material), lockfile regenerated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Non-public experiments page accompanying the Menu successor RFC:
kitchen-sink demo with three-level submenus, groups, checkbox/radio
items, link items, and an onOpenChange reason log; knobs for root
behavior, submenu hover/delays, positioning, and the RFC open
questions (elevation, default animation candidate, dense, dividers,
RTL); classic-vs-successor parity section; classic-style controlled
anchor usage; typeahead + scrolling demo.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@code-infra-dashboard

Copy link
Copy Markdown

Deploy preview

Bundle size

Bundle Parsed size Gzip size
@mui/material 🔺+160B(+0.03%) 🔺+89B(+0.06%)
@mui/lab 0B(0.00%) 0B(0.00%)
@mui/private-theming 0B(0.00%) 0B(0.00%)
@mui/system 0B(0.00%) 0B(0.00%)
@mui/utils 0B(0.00%) 0B(0.00%)

Details of bundle changes


Check out the code infra dashboard for more information about this PR.

@github-actions github-actions Bot added the PR: out-of-date The pull request has merge conflicts and can't be merged. label Jul 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR: out-of-date The pull request has merge conflicts and can't be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants