Component

A right-click triggered menu with full keyboard navigation. Supports sub-menus, separators, and portal rendering.

View component changelog
preview
React
"use client" import ContextMenu from "@radui/ui/ContextMenu" const ContextMenuExample = () => { return ( <ContextMenu.Root> <ContextMenu.Trigger> <div className="flex items-center justify-center w-[280px] h-[100px] border-2 border-dashed rounded-lg text-gray-950 cursor-context-menu select-none"> Right-click here </div> </ContextMenu.Trigger> <ContextMenu.Portal> <ContextMenu.Content> <ContextMenu.Item label="Copy">Copy</ContextMenu.Item> <ContextMenu.Item label="Paste">Paste</ContextMenu.Item> <ContextMenu.Separator /> <ContextMenu.Item label="Delete">Delete</ContextMenu.Item> </ContextMenu.Content> </ContextMenu.Portal> </ContextMenu.Root> ) } export default ContextMenuExample

Import all parts of the component and piece them together

React
import ContextMenu from "@radui/ui/ContextMenu" export default () => { return ( <ContextMenu.Root> <ContextMenu.Trigger>Right click</ContextMenu.Trigger> <ContextMenu.Portal> <ContextMenu.Content> <ContextMenu.Item>Copy</ContextMenu.Item> <ContextMenu.Separator /> <ContextMenu.Sub> <ContextMenu.SubTrigger>More</ContextMenu.SubTrigger> </ContextMenu.Sub> </ContextMenu.Content> </ContextMenu.Portal> </ContextMenu.Root> ) }

The root ContextMenu component.

PropTypeDefault
open
boolean
--
onOpenChange
function
--

A single context menu item.

PropTypeDefault
disabled
boolean
false
onSelect
function
--
className
string
""
ShortcutDescription
Enter

Activates the focused menu item.

Space

Activates the focused menu item.

ArrowDown

Moves focus to the next enabled item.

ArrowUp

Moves focus to the previous enabled item.

Escape

Closes the context menu and returns focus to the trigger context.

ReferenceWhat Rad UI follows

Uses menu semantics for contextual action lists with roving focus and item activation.