Skip to content

ContextMenu

Default

Usage

tsx
import { ContextMenu, ContextMenuTrigger, ContextMenuGroup, ContextMenuPortal, ContextMenuSub, ContextMenuRadioGroup, ContextMenuSubTrigger, ContextMenuSubContent, ContextMenuContent, ContextMenuItem, ContextMenuCheckboxItem, ContextMenuRadioItem, ContextMenuLabel, ContextMenuSeparator, ContextMenuShortcut } from '@tryvienna/ui'

<ContextMenu>
  <ContextMenuTrigger>
    <div className="flex h-36 w-72 items-center justify-center rounded-md border border-dashed text-sm text-muted-foreground">
      Right click here
    </div>
  </ContextMenuTrigger>
  <ContextMenuContent className="w-56">
    <ContextMenuItem>
      Back <ContextMenuShortcut>Cmd+[</ContextMenuShortcut>
    </ContextMenuItem>
    <ContextMenuItem>
      Forward <ContextMenuShortcut>Cmd+]</ContextMenuShortcut>
    </ContextMenuItem>
    <ContextMenuItem>
      Reload <ContextMenuShortcut>Cmd+R</ContextMenuShortcut>
    </ContextMenuItem>
    <ContextMenuSeparator />
    <ContextMenuItem>
      Save As... <ContextMenuShortcut>Cmd+S</ContextMenuShortcut>
    </ContextMenuItem>
    <ContextMenuItem>Print...</ContextMenuItem>
    <ContextMenuSeparator />
    <ContextMenuItem variant="destructive">Delete</ContextMenuItem>
  </ContextMenuContent>
</ContextMenu>

Examples

Default

Default
tsx
<ContextMenu>
  <ContextMenuTrigger>
    <div className="flex h-36 w-72 items-center justify-center rounded-md border border-dashed text-sm text-muted-foreground">
      Right click here
    </div>
  </ContextMenuTrigger>
  <ContextMenuContent className="w-56">
    <ContextMenuItem>
      Back <ContextMenuShortcut>Cmd+[</ContextMenuShortcut>
    </ContextMenuItem>
    <ContextMenuItem>
      Forward <ContextMenuShortcut>Cmd+]</ContextMenuShortcut>
    </ContextMenuItem>
    <ContextMenuItem>
      Reload <ContextMenuShortcut>Cmd+R</ContextMenuShortcut>
    </ContextMenuItem>
    <ContextMenuSeparator />
    <ContextMenuItem>
      Save As... <ContextMenuShortcut>Cmd+S</ContextMenuShortcut>
    </ContextMenuItem>
    <ContextMenuItem>Print...</ContextMenuItem>
    <ContextMenuSeparator />
    <ContextMenuItem variant="destructive">Delete</ContextMenuItem>
  </ContextMenuContent>
</ContextMenu>

With Checkbox And Radio

With Checkbox And Radio
tsx
<ContextMenu>
  <ContextMenuTrigger>
    <div className="flex h-36 w-72 items-center justify-center rounded-md border border-dashed text-sm text-muted-foreground">
      Right click here
    </div>
  </ContextMenuTrigger>
  <ContextMenuContent className="w-56">
    <ContextMenuCheckboxItem checked={showBookmarks} onCheckedChange={setShowBookmarks}>
      Show Bookmarks Bar
    </ContextMenuCheckboxItem>
    <ContextMenuCheckboxItem checked={showUrls} onCheckedChange={setShowUrls}>
      Show Full URLs
    </ContextMenuCheckboxItem>
    <ContextMenuSeparator />
    <ContextMenuLabel inset>People</ContextMenuLabel>
    <ContextMenuRadioGroup value={person} onValueChange={setPerson}>
      <ContextMenuRadioItem value="pedro">Pedro Duarte</ContextMenuRadioItem>
      <ContextMenuRadioItem value="colm">Colm Tuite</ContextMenuRadioItem>
    </ContextMenuRadioGroup>
  </ContextMenuContent>
</ContextMenu>

With Submenu

With Submenu
tsx
<ContextMenu>
  <ContextMenuTrigger>
    <div className="flex h-36 w-72 items-center justify-center rounded-md border border-dashed text-sm text-muted-foreground">
      Right click here
    </div>
  </ContextMenuTrigger>
  <ContextMenuContent className="w-56">
    <ContextMenuItem inset>
      Back <ContextMenuShortcut>Cmd+[</ContextMenuShortcut>
    </ContextMenuItem>
    <ContextMenuItem inset>
      Forward <ContextMenuShortcut>Cmd+]</ContextMenuShortcut>
    </ContextMenuItem>
    <ContextMenuSeparator />
    <ContextMenuSub>
      <ContextMenuSubTrigger inset>More Tools</ContextMenuSubTrigger>
      <ContextMenuSubContent className="w-48">
        <ContextMenuItem>Save Page As...</ContextMenuItem>
        <ContextMenuItem>Create Shortcut...</ContextMenuItem>
        <ContextMenuItem>Name Window...</ContextMenuItem>
        <ContextMenuSeparator />
        <ContextMenuItem>Developer Tools</ContextMenuItem>
      </ContextMenuSubContent>
    </ContextMenuSub>
    <ContextMenuSeparator />
    <ContextMenuItem inset>
      Inspect <ContextMenuShortcut>Cmd+Shift+I</ContextMenuShortcut>
    </ContextMenuItem>
  </ContextMenuContent>
</ContextMenu>

API Reference

ContextMenu

Also accepts all props from ContextMenuPrimitive.Root.

ContextMenuTrigger

Also accepts all props from ContextMenuPrimitive.Trigger.

ContextMenuGroup

Also accepts all props from ContextMenuPrimitive.Group.

ContextMenuPortal

Also accepts all props from ContextMenuPrimitive.Portal.

ContextMenuSub

Also accepts all props from ContextMenuPrimitive.Sub.

ContextMenuRadioGroup

Also accepts all props from ContextMenuPrimitive.RadioGroup.

ContextMenuSubTrigger

PropTypeDefaultDescription
insetboolean | undefined-

Also accepts all props from ContextMenuPrimitive.SubTrigger.

ContextMenuSubContent

Also accepts all props from ContextMenuPrimitive.SubContent.

ContextMenuContent

Also accepts all props from ContextMenuPrimitive.Content.

ContextMenuItem

PropTypeDefaultDescription
insetboolean | undefined-
variant"default" | "destructive"default

Also accepts all props from ContextMenuPrimitive.Item.

ContextMenuCheckboxItem

PropTypeDefaultDescription
checkedCheckedState | undefined-

Also accepts all props from ContextMenuPrimitive.CheckboxItem.

ContextMenuRadioItem

Also accepts all props from ContextMenuPrimitive.RadioItem.

ContextMenuLabel

PropTypeDefaultDescription
insetboolean | undefined-

Also accepts all props from ContextMenuPrimitive.Label.

ContextMenuSeparator

Also accepts all props from ContextMenuPrimitive.Separator.

ContextMenuShortcut

Also accepts all props from span.

Data Attributes

Componentdata-slot
ContextMenu"context-menu"
ContextMenuTrigger"context-menu-trigger"
ContextMenuGroup"context-menu-group"
ContextMenuPortal"context-menu-portal"
ContextMenuSub"context-menu-sub"
ContextMenuRadioGroup"context-menu-radio-group"
ContextMenuSubTrigger"context-menu-sub-trigger"
ContextMenuSubContent"context-menu-sub-content"
ContextMenuContent"context-menu-content"
ContextMenuItem"context-menu-item"
ContextMenuCheckboxItem"context-menu-checkbox-item"
ContextMenuRadioItem"context-menu-radio-item"
ContextMenuLabel"context-menu-label"
ContextMenuSeparator"context-menu-separator"
ContextMenuShortcut"context-menu-shortcut"