v0.3.0
Note: This documentation is in active development — content may be incomplete

Menu

View as Markdown

Overview

Menus reveal a short list of contextual actions, such as editing an item. They help users make a single selection without leaving the current context.

<Menu.Root>
	<Menu.Trigger render={<Button label="Open" priority="primary" />} />
	<Menu.Content>
		<Menu.Item>Cut</Menu.Item>
		<Menu.Item>Copy</Menu.Item>
		<Menu.Item>Paste</Menu.Item>
		<Menu.Separator />
		<Menu.Item>Find</Menu.Item>
		<Menu.Submenu>
			<Menu.SubmenuTrigger>Share</Menu.SubmenuTrigger>
			<Menu.SubmenuContent>
				<Menu.Item>Editor</Menu.Item>
				<Menu.Item>Messages</Menu.Item>
				<Menu.Item>Notes</Menu.Item>
				<Menu.Item>Reminders</Menu.Item>
			</Menu.SubmenuContent>
		</Menu.Submenu>
		<Menu.Separator />
		<Menu.Item tone="danger">Delete</Menu.Item>
	</Menu.Content>
</Menu.Root>

API Reference

Menu.Root

Provides menu state and context for all nested menu parts.

PropTypeDefault
childrenReactNode-
openboolean-
defaultOpenboolean-
onOpenChange(open: boolean) => void-

Menu.Trigger

Interactive trigger element that opens the menu.

PropTypeDefault
renderReactElement-
childrenReactNode-
disabledbooleanfalse

Menu.Content

Portal-rendered popup container for menu items and sections.

PropTypeDefault
childrenReactNode-

Menu.Item

Selectable action item inside a menu.

PropTypeDefault
childrenReactNode-
tone"danger"-
disabledbooleanfalse
onSelect() => void-

Menu.Separator

Visual divider used to separate groups of related menu items.

PropTypeDefault
orientation"horizontal" | "vertical""horizontal"

Menu.RadioGroup

Manages a single selected value across nested radio items.

PropTypeDefault
valuestring-
defaultValuestring-
onValueChange(value: string) => void-
childrenReactNode-

Menu.RadioItem

Radio-style menu item that participates in Menu.RadioGroup.

PropTypeDefault
valuestring-
childrenReactNode-
disabledbooleanfalse

Menu.Submenu

Creates a nested menu scope under a parent menu.

PropTypeDefault
childrenReactNode-
openboolean-
defaultOpenboolean-
onOpenChange(open: boolean) => void-

Menu.SubmenuTrigger

Trigger row that opens a submenu from within a menu.

PropTypeDefault
childrenReactNode-
disabledbooleanfalse

Menu.SubmenuContent

Popup container for submenu items.

PropTypeDefault
childrenReactNode-

Examples

Sections

Menu items can be separated from each other by using <Menu.Separator />. Separating destructive or less-frequent actions helps reduce accidental clicks and adds a subtle layer of safety.

<Menu.Root>
	<Menu.Trigger render={<Button priority="primary" icon={<MoreVerticalIcon />} aria-label="Open menu" />} />
	<Menu.Content>
		<Menu.Item>Duplicate</Menu.Item>
		<Menu.Item>Archive</Menu.Item>
		<Menu.Separator />
		<Menu.Item tone="danger">Delete</Menu.Item>
	</Menu.Content>
</Menu.Root>

On this page

(Top)OverviewAPI ReferenceMenu.RootMenu.TriggerMenu.ContentMenu.ItemMenu.SeparatorMenu.RadioGroupMenu.RadioItemMenu.SubmenuMenu.SubmenuTriggerMenu.SubmenuContentExamplesSections
v0.3.0

Overview

AboutGetting started

Components

AvatarBadgeBannerButtonCalloutCheckboxChipCodeCode InputColor InputData TableDialogDividerDisclosureDrawerEditable TextEmbedEmphasisError BoundaryFieldFile InputFlexFormFrameGridImageInlineInputMarqueeMenuPortalRootRadio GroupRich Text EditorSelectSkeletonSlotSortableSpacerSpinnerStackStatus IconStepperSwitchTab SwitchTextText AreaToggleUrlIcon