Skip to contents

Menu

A list of actions in a dropdown, enhanced with keyboard navigation.

View as Markdown

Anatomy

Import the component and assemble its parts:

Anatomy

Examples

Open on hover

To create a menu that opens on hover, add the openOnHover prop to <Menu.Trigger>. You can additionally configure how quickly the menu opens on hover using the delay prop.

Checkbox items

Use the <Menu.CheckboxItem> part to create a menu item that can toggle a setting on or off.

Radio items

Use the <Menu.RadioGroup> and <Menu.RadioItem> parts to create menu items that work like radio buttons.

Close on click

Use the closeOnClick prop to change whether the menu closes when an item is clicked.

Control whether the menu closes on click

Group labels

Use the <Menu.GroupLabel> part to add a label to a <Menu.Group>

Nested menu

To create a submenu, nest another menu inside the parent menu with <Menu.SubmenuRoot>. Use the <Menu.SubmenuTrigger> part for the menu item that opens the nested menu.

Adding a submenu

Use the <Menu.LinkItem> part to create a link.

A menu item that opens a link

Open a dialog

In order to open a dialog using a menu, control the dialog state and open it imperatively using the onClick handler on the menu item.

Connecting a dialog to a menu

Detached triggers

A menu can be opened by a trigger that lives either inside or outside the <Menu.Root>. Keep the trigger inside <Menu.Root> for simple, tightly coupled layouts like the hero demo at the top of this page. When the trigger and menu content need to live in different parts of the tree (for example, in a card list that controls a menu rendered near the document root), create a handle with Menu.createHandle() and pass it to both the trigger and the root.

Note that only top-level menus can have detached triggers. Submenus must have their triggers defined within the SubmenuRoot part.

Detached triggers

Multiple triggers

One menu can be opened by several triggers. You can either render multiple <Menu.Trigger> components inside the same <Menu.Root>, or attach several detached triggers to the same handle.

Multiple triggers within the Root part
Multiple detached triggers

Menus can render different content depending on which trigger opened them. Pass a payload prop to each <Menu.Trigger> and read it via a function child on <Menu.Root>. Provide a type argument to createHandle() to strongly type the payload.

Detached triggers with payload

Controlled mode with multiple triggers

Control a menu’s open state externally with the open and onOpenChange props on <Menu.Root>. When more than one trigger can open the menu, track the active trigger with the triggerId prop on <Menu.Root> and matching id props on each <Menu.Trigger>. The onOpenChange callback receives eventDetails, which includes the DOM element that initiated the change, so you can update your triggerId state when the user activates a different trigger.

API reference

Root

Groups all parts of the menu. Doesn’t render its own HTML element.

defaultOpen
boolean
false
Description

Whether the menu is initially open.

To render a controlled menu, use the open prop instead.

Type
boolean | undefined
Default
false
open
boolean
Name
Description

Whether the menu is currently open.

Type
boolean | undefined
onOpenChange
function
Description

Event handler called when the menu is opened or closed.

Type
highlightItemOnHover
boolean
true
Description

Whether moving the pointer over items should highlight them. Disabling this prop allows CSS :hover to be differentiated from the :focus (data-highlighted) state.

Type
boolean | undefined
Default
true
actionsRef
| React.RefObject<Menu.Root.Actions
| null>
Description

A ref to imperative actions.

  • unmount: When specified, the menu will not be unmounted when closed. Instead, the unmount function must be called to unmount the menu manually. Useful when the menu’s animation is controlled by an external library.
  • close: When specified, the menu can be closed imperatively.
Type
React.RefObject<Menu.Root.Actions | null> | undefined
closeParentOnEsc
boolean
false
Description

When in a submenu, determines whether pressing the Escape key closes the entire menu, or only the current child menu.

Type
boolean | undefined
Default
false
defaultTriggerId
string | null
Description

ID of the trigger that the popover is associated with. This is useful in conjunction with the defaultOpen prop to create an initially open popover.

Type
string | null | undefined
handle
Menu.Handle<Payload>
Name
Description

A handle to associate the menu with a trigger. If specified, allows external triggers to control the menu’s open state.

Type
Menu.Handle<Payload> | undefined
loopFocus
boolean
true
Description

Whether to loop keyboard focus back to the first item when the end of the list is reached while using the arrow keys.

Type
boolean | undefined
Default
true
modal
boolean
true
Name
Description

Determines if the menu enters a modal state when open.

  • true: user interaction is limited to the menu: document page scroll is locked and pointer interactions on outside elements are disabled.
  • false: user interaction with the rest of the document is allowed.
Type
boolean | undefined
Default
true
onOpenChangeComplete
function
Description

Event handler called after any animations complete when the menu is closed.

Type
triggerId
string | null
Description

ID of the trigger that the popover is associated with. This is useful in conjunction with the open prop to create a controlled popover. There’s no need to specify this prop when the popover is uncontrolled (that is, when the open prop is not set).

Type
string | null | undefined
disabled
boolean
false
Description

Whether the component should ignore user interaction.

Type
boolean | undefined
Default
false
orientation
Menu.Root.Orientation
'vertical'
Description

The visual orientation of the menu. Controls whether roving focus uses up/down or left/right arrow keys.

Type
Default
'vertical'
children
| React.ReactNode
| PayloadChildRenderFunction<Payload>
Description

The content of the popover. This can be a regular React node or a render function that receives the payload of the active trigger.

Type

Additional Types

Menu.Root.Props

Re-Export of Root props as MenuRootProps

Menu.Root.Actions
Menu.Root.ChangeEventReason
Menu.Root.ChangeEventDetails
Menu.Root.Orientation

Trigger

A button that opens the menu. Renders a <button> element.

handle
Menu.Handle<Payload>
Name
Description

A handle to associate the trigger with a menu.

Type
Menu.Handle<Payload> | undefined
nativeButton
boolean
true
Description

Whether the component renders a native <button> element when replacing it via the render prop. Set to false if the rendered element is not a button (for example, <div>).

Type
boolean | undefined
Default
true
payload
Payload
Description

A payload to pass to the menu when it is opened.

Type
Payload | undefined
disabled
boolean
false
Description

Whether the component should ignore user interaction.

Type
boolean | undefined
Default
false
openOnHover
boolean
Description

Whether the menu should also open when the trigger is hovered.

Type
boolean | undefined
delay
number
100
Name
Description

How long to wait before the menu may be opened on hover. Specified in milliseconds.

Requires the openOnHover prop.

Type
number | undefined
Default
100
closeDelay
number
0
Description

How long to wait before closing the menu that was opened on hover. Specified in milliseconds.

Requires the openOnHover prop.

Type
number | undefined
Default
0
children
React.ReactNode
Type
React.ReactNode | undefined
className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type
data-popup-open
Present when the corresponding menu is open.
data-pressed
Present when the trigger is pressed.

Additional Types

Menu.Trigger.Props

Re-Export of Trigger props as MenuTriggerProps

Menu.Trigger.State

Portal

A portal element that moves the popup to a different part of the DOM. By default, the portal element is appended to <body>. Renders a <div> element.

container
Union
Description

A parent element to render the portal element into.

Type
className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
keepMounted
boolean
false
Description

Whether to keep the portal mounted in the DOM while the popup is hidden.

Type
boolean | undefined
Default
false
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type

Additional Types

Menu.Portal.Props

Re-Export of Portal props as MenuPortalProps

Menu.Portal.State

Backdrop

An overlay displayed beneath the menu popup. Renders a <div> element.

className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type
data-open
Present when the menu is open.
data-closed
Present when the menu is closed.
data-starting-style
Present when the menu is animating in.
data-ending-style
Present when the menu is animating out.

Additional Types

Menu.Backdrop.Props

Re-Export of Backdrop props as MenuBackdropProps

Menu.Backdrop.State

Positioner

Positions the menu popup against the trigger. Renders a <div> element.

disableAnchorTracking
boolean
false
Description

Whether to disable the popup from tracking any layout shift of its positioning anchor.

Type
boolean | undefined
Default
false
align
Align
'center'
Name
Description

How to align the popup relative to the specified side.

Type
Default
'center'
alignOffset
number | OffsetFunction
0
Description

Additional offset along the alignment axis in pixels. Also accepts a function that returns the offset to read the dimensions of the anchor and positioner elements, along with its side and alignment.

The function takes a data object parameter with the following properties:

  • data.anchor: the dimensions of the anchor element with properties width and height.
  • data.positioner: the dimensions of the positioner element with properties width and height.
  • data.side: which side of the anchor element the positioner is aligned against.
  • data.align: how the positioner is aligned relative to the specified side.
Type
Default
0
Example
side
Side
'bottom'
Name
Description

Which side of the anchor element to align the popup against. May automatically change to avoid collisions.

Type
Default
'bottom'
sideOffset
number | OffsetFunction
0
Description

Distance between the anchor and the popup in pixels. Also accepts a function that returns the distance to read the dimensions of the anchor and positioner elements, along with its side and alignment.

The function takes a data object parameter with the following properties:

  • data.anchor: the dimensions of the anchor element with properties width and height.
  • data.positioner: the dimensions of the positioner element with properties width and height.
  • data.side: which side of the anchor element the positioner is aligned against.
  • data.align: how the positioner is aligned relative to the specified side.
Type
Default
0
Example
arrowPadding
number
5
Description

Minimum distance to maintain between the arrow and the edges of the popup.

Use it to prevent the arrow element from hanging out of the rounded corners of a popup.

Type
number | undefined
Default
5
anchor
Union
Name
Description

An element to position the popup against. By default, the popup will be positioned against the trigger.

Type
collisionAvoidance
CollisionAvoidance
Description

Determines how to handle collisions when positioning the popup.

Type
CollisionAvoidance | undefined
Example
collisionBoundary
Boundary
'clipping-ancestors'
Description

An element or a rectangle that delimits the area that the popup is confined to.

Type
Boundary | undefined
Default
'clipping-ancestors'
collisionPadding
Padding
5
Description

Additional space to maintain from the edge of the collision boundary.

Type
Padding | undefined
Default
5
sticky
boolean
false
Name
Description

Whether to maintain the popup in the viewport after the anchor element was scrolled out of view.

Type
boolean | undefined
Default
false
positionMethod
'absolute' | 'fixed'
'absolute'
Description

Determines which CSS position property to use.

Type
'absolute' | 'fixed' | undefined
Default
'absolute'
className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type
data-open
Present when the menu popup is open.
data-closed
Present when the menu popup is closed.
data-anchor-hidden
Present when the anchor is hidden.
data-align
Indicates how the popup is aligned relative to specified side.
data-side
Indicates which side the popup is positioned relative to the trigger.
--anchor-height

The anchor’s height.

--anchor-width

The anchor’s width.

--available-height

The available height between the trigger and the edge of the viewport.

--available-width

The available width between the trigger and the edge of the viewport.

--transform-origin

The coordinates that this element is anchored to. Used for animations and transitions.

Additional Types

Menu.Positioner.Props

Re-Export of Positioner props as MenuPositionerProps

Menu.Positioner.State

A container for the menu items. Renders a <div> element.

finalFocus
Union
Description

Determines the element to focus when the menu is closed.

  • false: Do not move focus.
  • true: Move focus based on the default behavior (trigger or previously focused element).
  • RefObject: Move focus to the ref element.
  • function: Called with the interaction type (mouse, touch, pen, or keyboard). Return an element to focus, true to use the default behavior, or false/undefined to do nothing.
Type
children
React.ReactNode
Type
React.ReactNode | undefined
className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type
data-open
Present when the menu is open.
data-closed
Present when the menu is closed.
data-align
Indicates how the popup is aligned relative to specified side.
data-instant
Present if animations should be instant.
data-side
Indicates which side the popup is positioned relative to the trigger.
data-starting-style
Present when the menu is animating in.
data-ending-style
Present when the menu is animating out.

Additional Types

Menu.Popup.Props

Re-Export of Popup props as MenuPopupProps

Menu.Popup.State

Arrow

Displays an element positioned against the menu anchor. Renders a <div> element.

className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type
data-open
Present when the menu popup is open.
data-closed
Present when the menu popup is closed.
data-uncentered
Present when the menu arrow is uncentered.
data-align
Indicates how the popup is aligned relative to specified side.
data-side
Indicates which side the popup is positioned relative to the trigger.

Additional Types

Menu.Arrow.Props

Re-Export of Arrow props as MenuArrowProps

Menu.Arrow.State

Item

An individual interactive item in the menu. Renders a <div> element.

label
string
Name
Description

Overrides the text label to use when the item is matched during keyboard text navigation.

Type
string | undefined
onClick
function
Description

The click handler for the menu item.

Type
closeOnClick
boolean
true
Description

Whether to close the menu when the item is clicked.

Type
boolean | undefined
Default
true
nativeButton
boolean
false
Description

Whether the component renders a native <button> element when replacing it via the render prop. Set to true if the rendered element is a native button.

Type
boolean | undefined
Default
false
disabled
boolean
false
Description

Whether the component should ignore user interaction.

Type
boolean | undefined
Default
false
className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type
data-highlighted
Present when the menu item is highlighted.
data-disabled
Present when the menu item is disabled.

Additional Types

Menu.Item.Props

Re-Export of Item props as MenuItemProps

Menu.Item.State

LinkItem

A link in the menu that can be used to navigate to a different page or section. Renders an <a> element.

label
string
Name
Description

Overrides the text label to use when the item is matched during keyboard text navigation.

Type
string | undefined
closeOnClick
boolean
false
Description

Whether to close the menu when the item is clicked.

Type
boolean | undefined
Default
false
className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type
data-highlighted
Present when the link is highlighted.

Additional Types

Menu.LinkItem.Props

Re-Export of LinkItem props as MenuLinkItemProps

Menu.LinkItem.State

Groups all parts of a submenu. Doesn’t render its own HTML element.

defaultOpen
boolean
false
Description

Whether the menu is initially open.

To render a controlled menu, use the open prop instead.

Type
boolean | undefined
Default
false
open
boolean
Name
Description

Whether the menu is currently open.

Type
boolean | undefined
onOpenChange
function
Description

Event handler called when the menu is opened or closed.

Type
highlightItemOnHover
boolean
true
Description

Whether moving the pointer over items should highlight them. Disabling this prop allows CSS :hover to be differentiated from the :focus (data-highlighted) state.

Type
boolean | undefined
Default
true
actionsRef
| React.RefObject<Menu.Root.Actions
| null>
Description

A ref to imperative actions.

  • unmount: When specified, the menu will not be unmounted when closed. Instead, the unmount function must be called to unmount the menu manually. Useful when the menu’s animation is controlled by an external library.
  • close: When specified, the menu can be closed imperatively.
Type
React.RefObject<Menu.Root.Actions | null> | undefined
closeParentOnEsc
boolean
false
Description

When in a submenu, determines whether pressing the Escape key closes the entire menu, or only the current child menu.

Type
boolean | undefined
Default
false
defaultTriggerId
string | null
Description

ID of the trigger that the popover is associated with. This is useful in conjunction with the defaultOpen prop to create an initially open popover.

Type
string | null | undefined
handle
Menu.Handle<unknown>
Name
Description

A handle to associate the menu with a trigger. If specified, allows external triggers to control the menu’s open state.

Type
Menu.Handle<unknown> | undefined
loopFocus
boolean
true
Description

Whether to loop keyboard focus back to the first item when the end of the list is reached while using the arrow keys.

Type
boolean | undefined
Default
true
onOpenChangeComplete
function
Description

Event handler called after any animations complete when the menu is closed.

Type
triggerId
string | null
Description

ID of the trigger that the popover is associated with. This is useful in conjunction with the open prop to create a controlled popover. There’s no need to specify this prop when the popover is uncontrolled (that is, when the open prop is not set).

Type
string | null | undefined
disabled
boolean
false
Description

Whether the component should ignore user interaction.

Type
boolean | undefined
Default
false
orientation
Menu.Root.Orientation
'vertical'
Description

The visual orientation of the menu. Controls whether roving focus uses up/down or left/right arrow keys.

Type
Default
'vertical'
children
| React.ReactNode
| PayloadChildRenderFunction<unknown>
Description

The content of the popover. This can be a regular React node or a render function that receives the payload of the active trigger.

Type

Additional Types

Menu.SubmenuRoot.Props

Re-Export of SubmenuRoot props as MenuSubmenuRootProps

Menu.SubmenuRoot.State
Menu.SubmenuRoot.ChangeEventReason
Menu.SubmenuRoot.ChangeEventDetails

A menu item that opens a submenu. Renders a <div> element.

label
string
Name
Description

Overrides the text label to use when the item is matched during keyboard text navigation.

Type
string | undefined
onClick
function
Type
nativeButton
boolean
false
Description

Whether the component renders a native <button> element when replacing it via the render prop. Set to true if the rendered element is a native button.

Type
boolean | undefined
Default
false
disabled
boolean
false
Description

Whether the component should ignore user interaction.

Type
boolean | undefined
Default
false
openOnHover
boolean
Description

Whether the menu should also open when the trigger is hovered.

Type
boolean | undefined
delay
number
100
Name
Description

How long to wait before the menu may be opened on hover. Specified in milliseconds.

Requires the openOnHover prop.

Type
number | undefined
Default
100
closeDelay
number
0
Description

How long to wait before closing the menu that was opened on hover. Specified in milliseconds.

Requires the openOnHover prop.

Type
number | undefined
Default
0
className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type
data-popup-open
Present when the corresponding submenu is open.
data-highlighted
Present when the submenu trigger is highlighted.
data-disabled
Present when the submenu trigger is disabled.

Additional Types

Menu.SubmenuTrigger.Props

Re-Export of SubmenuTrigger props as MenuSubmenuTriggerProps

Menu.SubmenuTrigger.State

Group

Groups related menu items with the corresponding label. Renders a <div> element.

children
React.ReactNode
Description

The content of the component.

Type
React.ReactNode | undefined
className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type

Additional Types

Menu.Group.Props

Re-Export of Group props as MenuGroupProps

Menu.Group.State

GroupLabel

An accessible label that is automatically associated with its parent group. Renders a <div> element.

className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type

Additional Types

Menu.GroupLabel.Props

Re-Export of GroupLabel props as MenuGroupLabelProps

Menu.GroupLabel.State

RadioGroup

Groups related radio items. Renders a <div> element.

defaultValue
any
Description

The uncontrolled value of the radio item that should be initially selected.

To render a controlled radio group, use the value prop instead.

Type
any | undefined
value
any
Name
Description

The controlled value of the radio item that should be currently selected.

To render an uncontrolled radio group, use the defaultValue prop instead.

Type
any | undefined
onValueChange
function
Description

Function called when the selected value changes.

Type
disabled
boolean
false
Description

Whether the component should ignore user interaction.

Type
boolean | undefined
Default
false
children
React.ReactNode
Description

The content of the component.

Type
React.ReactNode | undefined
className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type

Additional Types

Menu.RadioGroup.Props

Re-Export of RadioGroup props as MenuRadioGroupProps

Menu.RadioGroup.State
Menu.RadioGroup.ChangeEventReason
Menu.RadioGroup.ChangeEventDetails

RadioItem

A menu item that works like a radio button in a given group. Renders a <div> element.

label
string
Name
Description

Overrides the text label to use when the item is matched during keyboard text navigation.

Type
string | undefined
value*
any
Name
Description

Value of the radio item. This is the value that will be set in the Menu.RadioGroup when the item is selected.

Type
any
onClick
function
Description

The click handler for the menu item.

Type
closeOnClick
boolean
false
Description

Whether to close the menu when the item is clicked.

Type
boolean | undefined
Default
false
nativeButton
boolean
false
Description

Whether the component renders a native <button> element when replacing it via the render prop. Set to true if the rendered element is a native button.

Type
boolean | undefined
Default
false
disabled
boolean
false
Description

Whether the component should ignore user interaction.

Type
boolean | undefined
Default
false
className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type
data-checked
Present when the menu radio item is selected.
data-unchecked
Present when the menu radio item is not selected.
data-highlighted
Present when the menu radio item is highlighted.
data-disabled
Present when the menu radio item is disabled.

Additional Types

Menu.RadioItem.Props

Re-Export of RadioItem props as MenuRadioItemProps

Menu.RadioItem.State

RadioItemIndicator

Indicates whether the radio item is selected. Renders a <span> element.

className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
keepMounted
boolean
false
Description

Whether to keep the HTML element in the DOM when the radio item is inactive.

Type
boolean | undefined
Default
false
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type
data-checked
Present when the menu radio item is selected.
data-unchecked
Present when the menu radio item is not selected.
data-disabled
Present when the menu radio item is disabled.
data-starting-style
Present when the radio indicator is animating in.
data-ending-style
Present when the radio indicator is animating out.

Additional Types

Menu.RadioItemIndicator.Props

Re-Export of RadioItemIndicator props as MenuRadioItemIndicatorProps

Menu.RadioItemIndicator.State

CheckboxItem

A menu item that toggles a setting on or off. Renders a <div> element.

label
string
Name
Description

Overrides the text label to use when the item is matched during keyboard text navigation.

Type
string | undefined
defaultChecked
boolean
false
Description

Whether the checkbox item is initially ticked.

To render a controlled checkbox item, use the checked prop instead.

Type
boolean | undefined
Default
false
checked
boolean
Description

Whether the checkbox item is currently ticked.

To render an uncontrolled checkbox item, use the defaultChecked prop instead.

Type
boolean | undefined
onCheckedChange
function
Description

Event handler called when the checkbox item is ticked or unticked.

Type
onClick
function
Description

The click handler for the menu item.

Type
closeOnClick
boolean
false
Description

Whether to close the menu when the item is clicked.

Type
boolean | undefined
Default
false
nativeButton
boolean
false
Description

Whether the component renders a native <button> element when replacing it via the render prop. Set to true if the rendered element is a native button.

Type
boolean | undefined
Default
false
disabled
boolean
false
Description

Whether the component should ignore user interaction.

Type
boolean | undefined
Default
false
className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type
data-checked
Present when the menu checkbox item is checked.
data-unchecked
Present when the menu checkbox item is not checked.
data-highlighted
Present when the menu checkbox item is highlighted.
data-disabled
Present when the menu checkbox item is disabled.

Additional Types

Menu.CheckboxItem.Props

Re-Export of CheckboxItem props as MenuCheckboxItemProps

Menu.CheckboxItem.State
Menu.CheckboxItem.ChangeEventReason
Menu.CheckboxItem.ChangeEventDetails

CheckboxItemIndicator

Indicates whether the checkbox item is ticked. Renders a <span> element.

className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
keepMounted
boolean
false
Description

Whether to keep the HTML element in the DOM when the checkbox item is not checked.

Type
boolean | undefined
Default
false
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type
data-checked
Present when the menu checkbox item is checked.
data-unchecked
Present when the menu checkbox item is not checked.
data-disabled
Present when the menu checkbox item is disabled.
data-starting-style
Present when the indicator is animating in.
data-ending-style
Present when the indicator is animating out.

Additional Types

Menu.CheckboxItemIndicator.Props

Re-Export of CheckboxItemIndicator props as MenuCheckboxItemIndicatorProps

Menu.CheckboxItemIndicator.State

Separator

A separator element accessible to screen readers. Renders a <div> element.

orientation
Orientation
'horizontal'
Description

The orientation of the separator.

Type
Default
'horizontal'
className
string | function
Description

CSS class applied to the element, or a function that returns a class based on the component’s state.

Type
style
React.CSSProperties | function
Name
Type
render
ReactElement | function
Name
Description

Allows you to replace the component’s HTML element with a different tag, or compose it with another component.

Accepts a ReactElement or a function that returns the element to render.

Type

Additional Types

Menu.Separator.Props

Re-Export of Separator props as MenuSeparatorProps

Menu.Separator.State

createHandle

Creates a new handle to connect a Menu.Root with detached Menu.Trigger components.

Return value

Menu.Handle<Payload>

Handle

Properties

isOpen
boolean
readonly
Name
Description

Indicates whether the menu is currently open.

Type
boolean
Modifiers
readonly

Methods

open(triggerId)void
Name
Description

Opens the menu and associates it with the trigger with the given id. The trigger must be a Menu.Trigger component with this handle passed as a prop.

Parameters
  • triggerIdstring

    ID of the trigger to associate with the menu.

Returns
void
close()void
Name
Description

Closes the menu.

Returns
void