Skip to content

Context Menu

A custom context menu triggered by right-clicking or long-pressing an element.

Usage

import { ContextMenu } from "@rhinolabs/ui"
export default function ContextMenuDemo() {
return (
<ContextMenu>
<ContextMenu.Trigger className="flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm">
Right click here
</ContextMenu.Trigger>
<ContextMenu.Content>
<ContextMenu.Item>
Profile
<ContextMenu.Shortcut>⌘P</ContextMenu.Shortcut>
</ContextMenu.Item>
<ContextMenu.Item>Settings</ContextMenu.Item>
<ContextMenu.Item>Logout</ContextMenu.Item>
</ContextMenu.Content>
</ContextMenu>
)
}

Examples

With Submenus

Context menu with nested options.

<ContextMenu>
<ContextMenu.Trigger className="flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm">
Right click here
</ContextMenu.Trigger>
<ContextMenu.Content>
<ContextMenu.Item>Back</ContextMenu.Item>
<ContextMenu.Item>Forward</ContextMenu.Item>
<ContextMenu.Item>Reload</ContextMenu.Item>
<ContextMenu.Sub>
<ContextMenu.SubTrigger>More Tools</ContextMenu.SubTrigger>
<ContextMenu.SubContent>
<ContextMenu.Item>Save Page As...</ContextMenu.Item>
<ContextMenu.Item>Create Shortcut...</ContextMenu.Item>
<ContextMenu.Item>Name Window...</ContextMenu.Item>
</ContextMenu.SubContent>
</ContextMenu.Sub>
</ContextMenu.Content>
</ContextMenu>

With Checkbox and Radio Items

Context menu with selectable options.

<ContextMenu>
<ContextMenu.Trigger className="flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm">
Right click here
</ContextMenu.Trigger>
<ContextMenu.Content>
<ContextMenu.CheckboxItem checked>Show Toolbar</ContextMenu.CheckboxItem>
<ContextMenu.CheckboxItem>Show Bookmarks</ContextMenu.CheckboxItem>
<ContextMenu.Separator />
<ContextMenu.RadioGroup value="pedro">
<ContextMenu.Label>People</ContextMenu.Label>
<ContextMenu.RadioItem value="pedro">Pedro</ContextMenu.RadioItem>
<ContextMenu.RadioItem value="colm">Colm</ContextMenu.RadioItem>
</ContextMenu.RadioGroup>
</ContextMenu.Content>
</ContextMenu>

Props

ContextMenu

The root component that accepts all standard div attributes.

ContextMenuItem

PropTypeDescription
insetbooleanWhether to inset the item content
disabledbooleanWhether the item is disabled
onSelect(event: Event) => voidSelection callback

ContextMenuCheckboxItem

PropTypeDescription
checkedbooleanThe checked state
onCheckedChange(checked: boolean) => voidChecked state change callback

Design Considerations

  • Keep menu items organized logically
  • Use separators to group related items
  • Include keyboard shortcuts when applicable
  • Maintain consistent styling
  • Consider touch device interactions

Accessibility

  • Supports keyboard navigation
  • Provides ARIA labels
  • Maintains focus management
  • Handles screen reader announcements
  • Supports keyboard shortcuts