Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Shadcn Context Menu for React and Tailwind

A menu shown on right-click.

Installation

bunx --bun shadcn@latest add https://kit.dev/r/context-menu.json

Anatomy

ContextMenuArrow
└── ContextMenuArrowTip
ContextMenuContent
ContextMenuTrigger
ContextMenuIndicator
ContextMenuItem
├── ContextMenuItemGroup
│   └── ContextMenuItemGroupLabel
├── ContextMenuItemIndicator
└── ContextMenuItemText
ContextMenuPositioner
ContextMenuSeparator
ContextMenuTrigger
└── ContextMenuTriggerItem

Usage

import {
  Archive,
  ArchiveX,
  Bell,
  CirclePlus,
  FolderInput,
  MailX,
  Reply,
  ReplyAll,
  Send,
  SquarePen,
  Trash,
  Trash2,
} from "lucide-react";
import {
  ContextMenu,
  ContextMenuContent,
  ContextMenuGroup,
  ContextMenuItem,
  ContextMenuSeparator,
  ContextMenuShortcut,
  ContextMenuSub,
  ContextMenuSubContent,
  ContextMenuSubTrigger,
  ContextMenuTrigger,
} from "@/components/ui/context-menu";
<ContextMenu>
  <ContextMenuTrigger className="flex aspect-video items-center justify-center rounded-2xl border border-dashed p-20 text-sm">
    <span className="pointer-fine:inline-block hidden">Right click here</span>
    <span className="pointer-coarse:inline-block hidden">
      Long press here
    </span>
  </ContextMenuTrigger>
  <ContextMenuContent className="w-40">
    <ContextMenuGroup>
      <ContextMenuItem value="forward">
        <Send aria-hidden="true" /> Forward
        <ContextMenuShortcut>⌘F</ContextMenuShortcut>
      </ContextMenuItem>
      <ContextMenuItem value="reply">
        <Reply aria-hidden="true" /> Reply
        <ContextMenuShortcut>⌘R</ContextMenuShortcut>
      </ContextMenuItem>
      <ContextMenuItem value="reply-all">
        <ReplyAll aria-hidden="true" /> Reply all
        <ContextMenuShortcut>⌘A</ContextMenuShortcut>
      </ContextMenuItem>
      <ContextMenuItem value="archive">
        <Archive aria-hidden="true" /> Archive
        <ContextMenuShortcut>⌘Z</ContextMenuShortcut>
      </ContextMenuItem>
      <ContextMenuSub>
        <ContextMenuSubTrigger>
          <FolderInput aria-hidden="true" /> Move to
        </ContextMenuSubTrigger>
        <ContextMenuSubContent>
          <ContextMenuItem value="move-to-folder-1">
            <ArchiveX aria-hidden="true" /> Junk
          </ContextMenuItem>
          <ContextMenuItem value="move-to-folder-2">
            <Trash aria-hidden="true" /> Trash
          </ContextMenuItem>
          <ContextMenuItem value="move-to-folder-3">
            <Bell aria-hidden="true" /> Reminders
          </ContextMenuItem>
          <ContextMenuSub>
            <ContextMenuSubTrigger>
              <CirclePlus aria-hidden="true" />
              More
            </ContextMenuSubTrigger>
            <ContextMenuSubContent>
              <ContextMenuItem value="move-to-folder-4">
                <SquarePen aria-hidden="true" />
                Drafts
              </ContextMenuItem>
              <ContextMenuItem value="move-to-folder-6">
                <MailX aria-hidden="true" />
                Spam
              </ContextMenuItem>
            </ContextMenuSubContent>
          </ContextMenuSub>
        </ContextMenuSubContent>
      </ContextMenuSub>
      <ContextMenuSeparator />
      <ContextMenuItem value="delete" variant="destructive">
        <Trash2 aria-hidden="true" /> Delete
        <ContextMenuShortcut>⌘ ⌫</ContextMenuShortcut>
      </ContextMenuItem>
    </ContextMenuGroup>
  </ContextMenuContent>
</ContextMenu>

Accessibility

KeyDescription
Enter
Activate the focused control.
Space
Activate the focused control.
ArrowDown
Move down.
ArrowUp
Move up.
ArrowLeft
Move left.
ArrowRight
Move right.
Home
Go to the start.
End
Go to the end.

Demos

Checkboxes

Context

Controlled

Destructive

Dialog

Group Label

Icons

Nested

Quick Item

Radio Group

Root Provider

Shortcuts

With Scroll

With Separator

API Reference

ContextMenuTrigger

button

PropType

useContextMenu

ContextMenu

ContextMenuRootProvider

ContextMenuTrigger

ContextMenuContent

ContextMenuGroup

ContextMenuGroupLabel

ContextMenuSeparator

ContextMenuItem

ContextMenuQuickItem

ContextMenuCheckboxItem

ContextMenuRadioGroup

ContextMenuRadioItem

ContextMenuSub

ContextMenuSubContent

ContextMenuSubTrigger

ContextMenuShortcut

ContextMenuArrow