Overlay

Context Menu

Right-click (or long-press) menu wearing the dropdown-menu skin, anchored to the pointer.

Right-click (or long-press) this card
Show code
"use client";

import { useState } from "react";

import {
  ContextMenu,
  ContextMenuCheckboxItem,
  ContextMenuContent,
  ContextMenuItem,
  ContextMenuSeparator,
  ContextMenuTrigger,
} from "@/registry/lilt/ui/context-menu";

export default function ContextMenuDemo() {
  const [pinned, setPinned] = useState(false);
  return (
    <ContextMenu>
      <ContextMenuTrigger className="flex h-40 w-full max-w-sm items-center justify-center rounded-[var(--radius-card)] border border-dashed border-[var(--lilt-border-strong)] px-6 text-center text-sm text-[var(--lilt-text-muted)]">
        Right-click (or long-press) this card
      </ContextMenuTrigger>
      <ContextMenuContent>
        <ContextMenuItem>Rename</ContextMenuItem>
        <ContextMenuItem>Duplicate</ContextMenuItem>
        <ContextMenuSeparator />
        <ContextMenuCheckboxItem checked={pinned} onCheckedChange={setPinned}>
          Pin to top
        </ContextMenuCheckboxItem>
        <ContextMenuSeparator />
        <ContextMenuItem variant="danger">Delete</ContextMenuItem>
      </ContextMenuContent>
    </ContextMenu>
  );
}

Installation

npx shadcn@latest add @lilt/context-menu

Accessibility

  • Long-press opens it on touch; arrow keys and type-ahead navigate once open.
  • Context menus are a shortcut, not the only path — mirror actions somewhere clickable.