Introducing PrimeReact v11-alpha 🎉Discover Now
styledMenu

Menu

A keyboard-navigable dropdown menu with support for items, checkbox items, radio items, and nested submenus.

preview

Usage#

import { Menu } from '@primereact/ui/menu';
<Menu.Root>
    <Menu.Trigger>Open</Menu.Trigger>
    <Menu.Portal>
        <Menu.Positioner sideOffset={4}>
            <Menu.Popup>
                <Menu.List>
                    <Menu.Group>
                        <Menu.Label>Account</Menu.Label>
                        <Menu.Item>Profile</Menu.Item>
                        <Menu.Item>Settings</Menu.Item>
                    </Menu.Group>
                    <Menu.Separator />
                    <Menu.Group>
                        <Menu.Item>Sign out</Menu.Item>
                    </Menu.Group>
                </Menu.List>
            </Menu.Popup>
        </Menu.Positioner>
    </Menu.Portal>
</Menu.Root>

Examples#

Basic#

A standard dropdown with grouped items, a label, and a separator.

basic-demo

Checkbox & Radio Items#

Use Menu.CheckboxItem for toggleable options and Menu.RadioItemGroup + Menu.RadioItem for mutually exclusive options. Menu.Indicator with match="checked" renders the icon only when the item is selected.

checkbox-radio-demo

Nest a Menu.Sub inside any Menu.List. The Menu.SubTrigger is the focusable item in the parent menu; the submenu's content lives inside its own Menu.Portal so it positions and animates independently.

submenu-demo

Inline#

Menu works without a trigger or portal — drop a Menu.List directly inside it for sidebar-style navigation menus.

inline-demo

Hover#

Pass openOnHover to make the trigger open the menu on pointer hover (in addition to click). Use openDelay and closeDelay (in ms) to fine-tune the timing. Click always activates immediately and bypasses the delays.

hover-demo

Apps#

The Menu component can be customized to create app launchers or grid-based menus. By applying custom classes to Menu.List and Menu.Item, the menu layout can be transformed into a grid structure with custom styling for icons and labels.

apps-demo

API#

Sub-Components#

See Primitive API for MenuRoot, MenuTrigger, MenuPortal, MenuPositioner, MenuPopup, MenuArrow, MenuList, MenuGroup, MenuLabel, MenuSeparator, MenuItem, MenuCheckboxItem, MenuRadioItemGroup, MenuRadioItem, MenuSub, MenuSubTrigger, MenuIndicator component documentation.

Hooks#

See Headless API for useMenu and useMenuSub hook documentation.

Accessibility#

See Menu Primitive for WAI-ARIA compliance details and keyboard support.