registry:component

Context Menu

v1.0.0ga

Right-click action menu primitive with nested and selectable items.

Registry Endpoint
Open JSON

https://registry.aavya.com/r/ui-context-menu.json

npx shadcn@latest add https://registry.aavya.com/r/ui-context-menu.json

Live Preview
Right-click here
Usage Snippet
import ContextMenu from '@/components/ui/context-menu.tsx'

export default function Example() {
  return (
    <div className="p-6">
      <ContextMenu />
    </div>
  )
}
Source Preview
'use client'

import * as React from 'react'

import * as ContextMenuPrimitive from '@radix-ui/react-context-menu'
import { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react'

import { cn } from '@/lib/utils'

function ContextMenu({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {
  return <ContextMenuPrimitive.Root data-slot='context-menu' {...props} />
}

function ContextMenuTrigger({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {
  return <ContextMenuPrimitive.Trigger data-slot='context-menu-trigger' {...props} />
}

function ContextMenuGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {
  return <ContextMenuPrimitive.Group data-slot='context-menu-group' {...props} />
}

function ContextMenuPortal({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {
  return <ContextMenuPrimitive.Portal data-slot='context-menu-portal' {...props} />
}

function ContextMenuSub({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {
  return <ContextMenuPrimitive.Sub data-slot='context-menu-sub' {...props} />
}

function ContextMenuRadioGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {
  return <ContextMenuPrimitive.RadioGroup data-slot='context-menu-radio-group' {...props} />
}

function ContextMenuSubTrigger({
  className,
  inset,
  childr