Getting Started
Components52
- Accordion
- Alert
- Alert Dialog
- Attachment
- Badge
- Breadcrumb
- Bubble
- Button
- Button Group
- Calendar
- Card
- Checkbox
- Collapsible
- Command
- Context Menu
- Data Table
- Dialog
- Drawer
- Dropdown Menu
- Empty
- Field
- Hover Card
- Input
- Input Group
- Item
- Kbd
- Label
- Marker
- Menubar
- Message
- Message Scroller
- Pagination
- Popover
- Progress
- Questionnaire
- Radio Group
- Scroll Area
- Select
- Separator
- Sheet
- Sidebar
- Skeleton
- Slider
- Sonner
- Spinner
- Switch
- Table
- Tabs
- Textarea
- Toggle
- Toggle Group
- Tooltip
Displays a menu to the user, such as a set of actions or functions, triggered by a right click.
Right-click here
"use client"
import * as React from "react"
import {
ArrowLeftIcon,
ArrowRightIcon,
RotateCwIcon,
Trash2Icon,
} from "lucide-react"
import {
ContextMenu,
ContextMenuCheckboxItem,
ContextMenuContent,
ContextMenuGroup,
ContextMenuItem,
ContextMenuLabel,
ContextMenuRadioGroup,
ContextMenuRadioItem,
ContextMenuSeparator,
ContextMenuShortcut,
ContextMenuSub,
ContextMenuSubContent,
ContextMenuSubTrigger,
ContextMenuTrigger,
} from "@/components/ui/context-menu"
export function ContextMenuDemo() {
const [bookmarks, setBookmarks] = React.useState(true)
const [urls, setUrls] = React.useState(false)
const [person, setPerson] = React.useState("pedro")
return (
<ContextMenu>
<ContextMenuTrigger className="flex h-36 w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm text-muted-foreground">
Right-click here
</ContextMenuTrigger>
<ContextMenuContent className="w-56">
<ContextMenuGroup>
<ContextMenuItem>
<ArrowLeftIcon />
Back
<ContextMenuShortcut>⌘[</ContextMenuShortcut>
</ContextMenuItem>
<ContextMenuItem disabled>
<ArrowRightIcon />
Forward
<ContextMenuShortcut>⌘]</ContextMenuShortcut>
</ContextMenuItem>
<ContextMenuItem>
<RotateCwIcon />
Reload
<ContextMenuShortcut>⌘R</ContextMenuShortcut>
</ContextMenuItem>
<ContextMenuSub>
<ContextMenuSubTrigger inset>More tools</ContextMenuSubTrigger>
<ContextMenuSubContent className="w-44">
<ContextMenuItem>Save page…</ContextMenuItem>
<ContextMenuItem>Create shortcut…</ContextMenuItem>
<ContextMenuItem>Name window…</ContextMenuItem>
<ContextMenuSeparator />
<ContextMenuItem>Developer tools</ContextMenuItem>
</ContextMenuSubContent>
</ContextMenuSub>
</ContextMenuGroup>
<ContextMenuSeparator />
<ContextMenuGroup>
<ContextMenuCheckboxItem
inset
checked={bookmarks}
onCheckedChange={setBookmarks}
>
Show bookmarks
</ContextMenuCheckboxItem>
<ContextMenuCheckboxItem
inset
checked={urls}
onCheckedChange={setUrls}
>
Show full URLs
</ContextMenuCheckboxItem>
</ContextMenuGroup>
<ContextMenuSeparator />
<ContextMenuGroup>
<ContextMenuLabel inset>People</ContextMenuLabel>
<ContextMenuRadioGroup value={person} onValueChange={setPerson}>
<ContextMenuRadioItem inset value="pedro">
Pedro Duarte
</ContextMenuRadioItem>
<ContextMenuRadioItem inset value="colm">
Colm Tuite
</ContextMenuRadioItem>
</ContextMenuRadioGroup>
</ContextMenuGroup>
<ContextMenuSeparator />
<ContextMenuItem variant="destructive">
<Trash2Icon />
Delete
<ContextMenuShortcut>⌫</ContextMenuShortcut>
</ContextMenuItem>
</ContextMenuContent>
</ContextMenu>
)
}Installation#
pnpm dlx shadcn@latest add https://ui.ikramhasan.com/r/context-menu.json
Usage#
import {
ContextMenu,
ContextMenuContent,
ContextMenuItem,
ContextMenuTrigger,
} from "@/components/ui/context-menu"<ContextMenu>
<ContextMenuTrigger>Right click here</ContextMenuTrigger>
<ContextMenuContent>
<ContextMenuItem>Profile</ContextMenuItem>
<ContextMenuItem>Billing</ContextMenuItem>
<ContextMenuItem>Team</ContextMenuItem>
<ContextMenuItem>Subscription</ContextMenuItem>
</ContextMenuContent>
</ContextMenu>API Reference#
Context Menu is built on the Base UI Context Menu primitive. See the Base UI documentation for every prop.