Context Menu

A menu that appears when right-clicking on an element, providing contextual actions and options.

Overview

The Context Menu component displays a menu triggered by right-clicking on an element, providing contextual actions and options. It supports keyboard shortcuts, checkboxes, radio groups, submenus, and separators. Built on Base UI primitives, it offers full keyboard navigation and accessibility features.

Usage

import {
  ContextMenu,
  ContextMenuTrigger,
  ContextMenuContent,
  ContextMenuItem,
  ContextMenuCheckboxItem,
  ContextMenuRadioItem,
  ContextMenuRadioGroup,
  ContextMenuGroupLabel,
  ContextMenuSeparator,
  ContextMenuShortcut,
  ContextMenuSub,
  ContextMenuSubContent,
  ContextMenuSubTrigger,
} from "@tilt-legal/cubitt-components/primitives";
<ContextMenu>
  <ContextMenuTrigger>Right click here</ContextMenuTrigger>
  <ContextMenuContent>
    <ContextMenuItem>Item 1</ContextMenuItem>
    <ContextMenuItem>Item 2</ContextMenuItem>
    <ContextMenuSeparator />
    <ContextMenuItem>Item 3</ContextMenuItem>
  </ContextMenuContent>
</ContextMenu>

Examples

With Shortcuts

Display keyboard shortcuts alongside menu items for quick reference.

With Checkboxes

Use checkboxes for toggleable options in the context menu.

With Radio Group

Use radio groups for mutually exclusive options.

With Submenu

Create nested menus for organizing related actions.

With Inset

Use the inset prop to add left padding for consistent alignment with checkboxes and radio items.

API Reference

ContextMenu

The root component that manages context menu state.

PropTypeDefaultDescription
openboolean-Controlled open state
defaultOpenbooleanfalseInitial open state
onOpenChange(open: boolean) => void-Callback when open state changes

ContextMenuTrigger

The element that triggers the context menu on right-click.

PropTypeDefaultDescription
renderReact.ReactElement-Custom element to render as trigger

ContextMenuContent

The container for menu items.

PropTypeDefaultDescription
align"start" | "center" | "end""start"Alignment relative to trigger
side"top" | "right" | "bottom" | "left""bottom"Side to render on
sideOffsetnumber4Distance from trigger
alignOffsetnumber0Offset from alignment axis

ContextMenuItem

A menu item that can be clicked.

PropTypeDefaultDescription
disabledbooleanfalseDisable the item
insetbooleanfalseAdd left padding
variant"default" | "destructive""default"Visual variant

ContextMenuCheckboxItem

A menu item with a checkbox.

PropTypeDefaultDescription
checkedboolean-Controlled checked state
defaultCheckedbooleanfalseInitial checked state
onCheckedChange(checked: boolean) => void-Callback when checked changes

ContextMenuRadioGroup

A container for radio items.

PropTypeDefaultDescription
valuestring-Controlled value
defaultValuestring-Initial value
onValueChange(value: string) => void-Callback when value changes

ContextMenuRadioItem

A menu item with a radio button.

PropTypeDefaultDescription
valuestring-The value of the item
disabledbooleanfalseDisable the item

ContextMenuSub

Container for submenu.

ContextMenuSubTrigger

Trigger for opening a submenu.

PropTypeDefaultDescription
disabledbooleanfalseDisable the trigger
insetbooleanfalseAdd left padding

ContextMenuSubContent

Content for a submenu.

PropTypeDefaultDescription
align"start" | "center" | "end"-Alignment relative to trigger
side"top" | "right" | "bottom" | "left"-Side to render on
sideOffsetnumber4Distance from trigger
alignOffsetnumber0Offset from alignment axis

ContextMenuGroup

Container for grouping related menu items with a label.

ContextMenuGroupLabel

Label for a group of items.

PropTypeDefaultDescription
insetbooleanfalseAdd left padding

ContextMenuSeparator

Visual separator between items.

ContextMenuShortcut

Display keyboard shortcuts.

On this page