Context Menu
A menu that appears at the pointer on right click or long press.
View as MarkdownAnatomy
Import the components and place them together:
import { ContextMenu } from '@base-ui-components/react/context-menu';
<ContextMenu.Root>
  <ContextMenu.Trigger />
  <ContextMenu.Portal>
    <ContextMenu.Backdrop />
    <ContextMenu.Positioner>
      <ContextMenu.Popup>
        <ContextMenu.Arrow />
        <ContextMenu.Item />
        <ContextMenu.Separator />
        <ContextMenu.Group>
          <ContextMenu.GroupLabel />
        </ContextMenu.Group>
        <ContextMenu.RadioGroup>
          <ContextMenu.RadioItem />
        </ContextMenu.RadioGroup>
        <ContextMenu.CheckboxItem />
        <ContextMenu.SubmenuRoot>
          <ContextMenu.SubmenuTrigger />
        </ContextMenu.SubmenuRoot>
      </ContextMenu.Popup>
    </ContextMenu.Positioner>
  </ContextMenu.Portal>
</ContextMenu.Root>API reference
Root
A component that creates a context menu activated by right clicking or long pressing. Doesn’t render its own HTML element.
defaultOpenboolean
(default: false
)
booleanfalse- Name
- Description
- Whether the menu is initially open. - To render a controlled menu, use the - openprop instead.
- Type
- boolean | undefined
- Default
- false
openboolean
boolean- Name
- Description
- Whether the menu is currently open. 
- Type
- boolean | undefined
onOpenChangefunction
function- Name
- Description
- Event handler called when the menu is opened or closed. 
- Type
- | (( open: boolean, eventDetails: ContextMenu.Root.ChangeEventDetails, ) => void) | undefined
actionsRefRefObject<Menu.Root.Actions>
RefObject<Menu.Root.Actions>- Name
- Description
- A ref to imperative actions. - unmount: When specified, the menu will not be unmounted when closed. Instead, the- unmountfunction must be called to unmount the menu manually. Useful when the menu's animation is controlled by an external library.
 
- Type
- React.RefObject<Menu.Root.Actions> | undefined
closeParentOnEscboolean
(default: true
)
booleantrue- Name
- 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
- true
onOpenChangeCompletefunction
function- Description
- Event handler called after any animations complete when the menu is closed. 
- Type
- ((open: boolean) => void) | undefined
disabledboolean
(default: false
)
booleanfalse- Name
- Description
- Whether the component should ignore user interaction. 
- Type
- boolean | undefined
- Default
- false
loopboolean
(default: true
)
booleantrue- Name
- 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
orientationMenu.Root.Orientation
(default: 'vertical'
)
Menu.Root.Orientation'vertical'- Name
- Description
- The visual orientation of the menu. Controls whether roving focus uses up/down or left/right arrow keys. 
- Type
- 'horizontal' | 'vertical' | undefined
- Default
- 'vertical'
children*ReactNode
ReactNode- Name
- Type
- React.ReactNode
Trigger
An area that opens the menu on right click or long press.
Renders a <div> element.
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- | string | ((state: ContextMenu.Trigger.State) => string)
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: ContextMenu.Trigger.State, ) => ReactElement)
Portal
A portal element that moves the popup to a different part of the DOM.
By default, the portal element is appended to <body>.
containerUnion
Union- Name
- Description
- A parent element to render the portal element into. 
- Type
- | HTMLElement | ShadowRoot | React.RefObject<HTMLElement | ShadowRoot | null> | null | undefined
childrenReactNode
ReactNode- Name
- Type
- React.ReactNode
keepMountedboolean
(default: false
)
booleanfalse- Name
- Description
- Whether to keep the portal mounted in the DOM while the popup is hidden. 
- Type
- boolean | undefined
- Default
- false
Positioner
Positions the menu popup against the trigger.
Renders a <div> element.
collisionAvoidanceCollisionAvoidance
CollisionAvoidance- Description
- Determines how to handle collisions when positioning the popup. 
- Type
- | { side?: 'none' | 'flip' align?: 'shift' | 'none' | 'flip' fallbackAxisSide?: 'none' | 'start' | 'end' } | { side?: 'shift' | 'none' align?: 'shift' | 'none' fallbackAxisSide?: 'none' | 'start' | 'end' } | undefined
- Example
- <Positioner collisionAvoidance={{ side: 'shift', align: 'shift', fallbackAxisSide: 'none', }} />
alignAlign
(default: 'center'
)
Align'center'- Name
- Description
- How to align the popup relative to the specified side. 
- Type
- 'center' | 'start' | 'end' | undefined
- Default
- 'center'
alignOffsetnumber | OffsetFunction
(default: 0
)
number | OffsetFunction0- Name
- 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 - dataobject parameter with the following properties:- data.anchor: the dimensions of the anchor element with properties- widthand- height.
- data.positioner: the dimensions of the positioner element with properties- widthand- 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
- | number | ((data: { side: Side align: Align anchor: { width: number; height: number } positioner: { width: number; height: number } }) => number) | undefined
- Default
- 0
- Example
- <Positioner alignOffset={({ side, align, anchor, positioner }) => { return side === 'top' || side === 'bottom' ? anchor.width : anchor.height; }} />
sideSide
(default: 'bottom'
)
Side'bottom'- Name
- Description
- Which side of the anchor element to align the popup against. May automatically change to avoid collisions. 
- Type
- | 'top' | 'bottom' | 'left' | 'right' | 'inline-end' | 'inline-start' | undefined
- Default
- 'bottom'
sideOffsetnumber | OffsetFunction
(default: 0
)
number | OffsetFunction0- Name
- 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 - dataobject parameter with the following properties:- data.anchor: the dimensions of the anchor element with properties- widthand- height.
- data.positioner: the dimensions of the positioner element with properties- widthand- 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
- | number | ((data: { side: Side align: Align anchor: { width: number; height: number } positioner: { width: number; height: number } }) => number) | undefined
- Default
- 0
- Example
- <Positioner sideOffset={({ side, align, anchor, positioner }) => { return side === 'top' || side === 'bottom' ? anchor.height : anchor.width; }} />
arrowPaddingnumber
(default: 5
)
number5- Name
- 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
anchorUnion
Union- Name
- Description
- An element to position the popup against. By default, the popup will be positioned against the trigger. 
- Type
- | Element | React.RefObject<Element | null> | VirtualElement | (() => Element | VirtualElement | null) | null | undefined
collisionBoundaryBoundary
(default: 'clipping-ancestors'
)
Boundary'clipping-ancestors'- Description
- An element or a rectangle that delimits the area that the popup is confined to. 
- Type
- | Element | 'clipping-ancestors' | Element[] | Rect | undefined
- Default
- 'clipping-ancestors'
collisionPaddingPadding
(default: 5
)
Padding5- Name
- Description
- Additional space to maintain from the edge of the collision boundary. 
- Type
- | { top?: number right?: number bottom?: number left?: number } | number | undefined
- Default
- 5
stickyboolean
(default: false
)
booleanfalse- 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'fixed' | 'absolute'
(default: 'absolute'
)
'fixed' | 'absolute''absolute'- Name
- Description
- Determines which CSS - positionproperty to use.
- Type
- 'fixed' | 'absolute' | undefined
- Default
- 'absolute'
trackAnchorboolean
(default: true
)
booleantrue- Name
- Description
- Whether the popup tracks any layout shift of its positioning anchor. 
- Type
- boolean | undefined
- Default
- true
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- string | ((state: Menu.Positioner.State) => string)
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Menu.Positioner.State, ) => ReactElement)
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.
Popup
A container for the menu items.
Renders a <div> element.
finalFocusUnion
Union- Name
- 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,- trueto use the default behavior, or- false/- undefinedto do nothing.
 
- Type
- | boolean | React.RefObject<HTMLElement | null> | (( closeType: InteractionType, ) => boolean | void | HTMLElement | null) | undefined
idstring
string- Name
- Type
- string | undefined
childrenReactNode
ReactNode- Name
- Type
- React.ReactNode
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- string | ((state: Menu.Popup.State) => string)
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Menu.Popup.State, ) => ReactElement)
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.
Arrow
Displays an element positioned against the menu anchor.
Renders a <div> element.
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- string | ((state: Menu.Arrow.State) => string)
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Menu.Arrow.State, ) => ReactElement)
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-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.
Item
An individual interactive item in the menu.
Renders a <div> element.
labelstring
string- Name
- Description
- Overrides the text label to use when the item is matched during keyboard text navigation. 
- Type
- string | undefined
onClickfunction
function- Name
- Description
- The click handler for the menu item. 
- Type
- React.MouseEventHandler<HTMLElement> | undefined
closeOnClickboolean
(default: true
)
booleantrue- Name
- Description
- Whether to close the menu when the item is clicked. 
- Type
- boolean | undefined
- Default
- true
nativeButtonboolean
(default: false
)
booleanfalse- Name
- Description
- Whether the component renders a native - <button>element when replacing it via the- renderprop. Set to- trueif the rendered element is a native button.
- Type
- boolean | undefined
- Default
- false
disabledboolean
(default: false
)
booleanfalse- Name
- Description
- Whether the component should ignore user interaction. 
- Type
- boolean | undefined
- Default
- false
idstring
string- Name
- Type
- string | undefined
childrenReactNode
ReactNode- Name
- Type
- React.ReactNode
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- string | ((state: Menu.Item.State) => string)
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Menu.Item.State, ) => ReactElement)
data-highlighted
Present when the menu item is highlighted.
data-disabled
Present when the menu item is disabled.
SubmenuRoot
Groups all parts of a submenu. Doesn’t render its own HTML element.
defaultOpenboolean
(default: false
)
booleanfalse- Name
- Description
- Whether the menu is initially open. - To render a controlled menu, use the - openprop instead.
- Type
- boolean | undefined
- Default
- false
openboolean
boolean- Name
- Description
- Whether the menu is currently open. 
- Type
- boolean | undefined
onOpenChangefunction
function- Name
- Description
- Event handler called when the menu is opened or closed. 
- Type
- | (( open: boolean, eventDetails: Menu.SubmenuRoot.ChangeEventDetails, ) => void) | undefined
actionsRefRefObject<Menu.Root.Actions>
RefObject<Menu.Root.Actions>- Name
- Description
- A ref to imperative actions. - unmount: When specified, the menu will not be unmounted when closed. Instead, the- unmountfunction must be called to unmount the menu manually. Useful when the menu's animation is controlled by an external library.
 
- Type
- React.RefObject<Menu.Root.Actions> | undefined
closeParentOnEscboolean
(default: true
)
booleantrue- Name
- 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
- true
onOpenChangeCompletefunction
function- Description
- Event handler called after any animations complete when the menu is closed. 
- Type
- ((open: boolean) => void) | undefined
disabledboolean
(default: false
)
booleanfalse- Name
- Description
- Whether the component should ignore user interaction. 
- Type
- boolean | undefined
- Default
- false
openOnHoverboolean
(default: true
)
booleantrue- Name
- Description
- Whether the submenu should open when the trigger is hovered. 
- Type
- boolean | undefined
- Default
- true
delaynumber
(default: 100
)
number100- Name
- Description
- How long to wait before the menu may be opened on hover. Specified in milliseconds. - Requires the - openOnHoverprop.
- Type
- number | undefined
- Default
- 100
closeDelaynumber
(default: 0
)
number0- Name
- Description
- How long to wait before closing the menu that was opened on hover. Specified in milliseconds. - Requires the - openOnHoverprop.
- Type
- number | undefined
- Default
- 0
loopboolean
(default: true
)
booleantrue- Name
- 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
orientationMenu.Root.Orientation
(default: 'vertical'
)
Menu.Root.Orientation'vertical'- Name
- Description
- The visual orientation of the menu. Controls whether roving focus uses up/down or left/right arrow keys. 
- Type
- 'horizontal' | 'vertical' | undefined
- Default
- 'vertical'
children*ReactNode
ReactNode- Name
- Type
- React.ReactNode
SubmenuTrigger
A menu item that opens a submenu.
Renders a <div> element.
labelstring
string- Name
- Description
- Overrides the text label to use when the item is matched during keyboard text navigation. 
- Type
- string | undefined
onClickfunction
function- Name
- Type
- React.MouseEventHandler<HTMLElement> | undefined
nativeButtonboolean
(default: false
)
booleanfalse- Name
- Description
- Whether the component renders a native - <button>element when replacing it via the- renderprop. Set to- trueif the rendered element is a native button.
- Type
- boolean | undefined
- Default
- false
idstring
string- Name
- Type
- string | undefined
childrenReactNode
ReactNode- Name
- Type
- React.ReactNode
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- | string | ((state: Menu.SubmenuTrigger.State) => string)
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Menu.SubmenuTrigger.State, ) => ReactElement)
data-popup-open
Present when the corresponding submenu is open.
Group
Groups related menu items with the corresponding label.
Renders a <div> element.
childrenReactNode
ReactNode- Name
- Description
- The content of the component. 
- Type
- React.ReactNode
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- string | ((state: Menu.Group.State) => string)
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Menu.Group.State, ) => ReactElement)
GroupLabel
An accessible label that is automatically associated with its parent group.
Renders a <div> element.
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- string | ((state: Menu.GroupLabel.State) => string)
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Menu.GroupLabel.State, ) => ReactElement)
RadioGroup
Groups related radio items.
Renders a <div> element.
defaultValueany
any- Name
- Description
- The uncontrolled value of the radio item that should be initially selected. - To render a controlled radio group, use the - valueprop instead.
- Type
- any
valueany
any- Name
- Description
- The controlled value of the radio item that should be currently selected. - To render an uncontrolled radio group, use the - defaultValueprop instead.
- Type
- any
onValueChangefunction
function- Name
- Description
- Function called when the selected value changes. 
- Type
- | (( value: any, eventDetails: Menu.RadioGroup.ChangeEventDetails, ) => void) | undefined
disabledboolean
(default: false
)
booleanfalse- Name
- Description
- Whether the component should ignore user interaction. 
- Type
- boolean | undefined
- Default
- false
childrenReactNode
ReactNode- Name
- Description
- The content of the component. 
- Type
- React.ReactNode
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- string | ((state: Menu.RadioGroup.State) => string)
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Menu.RadioGroup.State, ) => ReactElement)
RadioItem
A menu item that works like a radio button in a given group.
Renders a <div> element.
labelstring
string- Name
- Description
- Overrides the text label to use when the item is matched during keyboard text navigation. 
- Type
- string | undefined
value*any
any- Name
- Description
- Value of the radio item. This is the value that will be set in the MenuRadioGroup when the item is selected. 
- Type
- any
onClickfunction
function- Name
- Description
- The click handler for the menu item. 
- Type
- React.MouseEventHandler<HTMLElement> | undefined
closeOnClickboolean
(default: false
)
booleanfalse- Name
- Description
- Whether to close the menu when the item is clicked. 
- Type
- boolean | undefined
- Default
- false
nativeButtonboolean
(default: false
)
booleanfalse- Name
- Description
- Whether the component renders a native - <button>element when replacing it via the- renderprop. Set to- trueif the rendered element is a native button.
- Type
- boolean | undefined
- Default
- false
disabledboolean
(default: false
)
booleanfalse- Name
- Description
- Whether the component should ignore user interaction. 
- Type
- boolean | undefined
- Default
- false
idstring
string- Name
- Type
- string | undefined
childrenReactNode
ReactNode- Name
- Type
- React.ReactNode
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- string | ((state: Menu.RadioItem.State) => string)
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Menu.RadioItem.State, ) => ReactElement)
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.
RadioItemIndicator
Indicates whether the radio item is selected.
Renders a <div> element.
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- | string | ((state: Menu.RadioItemIndicator.State) => string)
keepMountedboolean
(default: false
)
booleanfalse- Name
- Description
- Whether to keep the HTML element in the DOM when the radio item is inactive. 
- Type
- boolean | undefined
- Default
- false
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Menu.RadioItemIndicator.State, ) => ReactElement)
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.
CheckboxItem
A menu item that toggles a setting on or off.
Renders a <div> element.
labelstring
string- Name
- Description
- Overrides the text label to use when the item is matched during keyboard text navigation. 
- Type
- string | undefined
defaultCheckedboolean
(default: false
)
booleanfalse- Name
- Description
- Whether the checkbox item is initially ticked. - To render a controlled checkbox item, use the - checkedprop instead.
- Type
- boolean | undefined
- Default
- false
checkedboolean
boolean- Name
- Description
- Whether the checkbox item is currently ticked. - To render an uncontrolled checkbox item, use the - defaultCheckedprop instead.
- Type
- boolean | undefined
onCheckedChangefunction
function- Name
- Description
- Event handler called when the checkbox item is ticked or unticked. 
- Type
- | (( checked: boolean, eventDetails: Menu.CheckboxItem.ChangeEventDetails, ) => void) | undefined
onClickfunction
function- Name
- Description
- The click handler for the menu item. 
- Type
- React.MouseEventHandler<HTMLElement> | undefined
closeOnClickboolean
(default: false
)
booleanfalse- Name
- Description
- Whether to close the menu when the item is clicked. 
- Type
- boolean | undefined
- Default
- false
nativeButtonboolean
(default: false
)
booleanfalse- Name
- Description
- Whether the component renders a native - <button>element when replacing it via the- renderprop. Set to- trueif the rendered element is a native button.
- Type
- boolean | undefined
- Default
- false
disabledboolean
(default: false
)
booleanfalse- Name
- Description
- Whether the component should ignore user interaction. 
- Type
- boolean | undefined
- Default
- false
idstring
string- Name
- Type
- string | undefined
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- | string | ((state: Menu.CheckboxItem.State) => string)
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Menu.CheckboxItem.State, ) => ReactElement)
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.
CheckboxItemIndicator
Indicates whether the checkbox item is ticked.
Renders a <div> element.
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- | string | ((state: Menu.CheckboxItemIndicator.State) => string)
keepMountedboolean
(default: false
)
booleanfalse- Name
- Description
- Whether to keep the HTML element in the DOM when the checkbox item is not checked. 
- Type
- boolean | undefined
- Default
- false
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Menu.CheckboxItemIndicator.State, ) => ReactElement)
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.
Separator
A separator element accessible to screen readers.
Renders a <div> element.
orientationOrientation
(default: 'horizontal'
)
Orientation'horizontal'- Name
- Description
- The orientation of the separator. 
- Type
- 'horizontal' | 'vertical' | undefined
- Default
- 'horizontal'
classNamestring | function
string | function- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- string | ((state: Separator.State) => string)
renderReactElement | function
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 - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Separator.State, ) => ReactElement)
Examples
Menu displays additional demos, many of which apply to the context menu as well.
Nested menu
To create a submenu, create a <ContextMenu.SubmenuRoot> inside the parent context menu. Use the <ContextMenu.SubmenuTrigger> part for the menu item that opens the nested menu.