{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "context-menu",
  "title": "Context Menu",
  "dependencies": [
    "@base-ui/react",
    "lucide-react"
  ],
  "files": [
    {
      "path": "registry/default/ui/context-menu.tsx",
      "content": "'use client';\n\nimport { ContextMenu as ContextMenuPrimitive } from '@base-ui/react/context-menu';\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nconst ContextMenu = ContextMenuPrimitive.Root;\n\nfunction ContextMenuTrigger({\n  className,\n  ...props\n}: ContextMenuPrimitive.Trigger.Props) {\n  return (\n    <ContextMenuPrimitive.Trigger\n      data-slot='context-menu-trigger'\n      className={cn(\n        \"flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction ContextMenuPopup({\n  align = 'start',\n  sideOffset = 4,\n  alignOffset = 0,\n  className,\n  ...props\n}: ContextMenuPrimitive.Popup.Props & {\n  align?: ContextMenuPrimitive.Positioner.Props['align'];\n  sideOffset?: ContextMenuPrimitive.Positioner.Props['sideOffset'];\n  alignOffset?: ContextMenuPrimitive.Positioner.Props['alignOffset'];\n}) {\n  return (\n    <ContextMenuPrimitive.Portal>\n      <ContextMenuPrimitive.Positioner\n        data-slot='context-menu-positioner'\n        className='outline-none'\n        alignOffset={alignOffset}\n        align={align}\n        sideOffset={sideOffset}\n      >\n        <ContextMenuPrimitive.Popup\n          data-slot='context-menu-popup'\n          className={cn(\n            'origin-(--transform-origin) rounded-md bg-popover py-1 text-popover-foreground shadow-sm transition-[transform,scale,opacity] duration-100 outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0 dark:shadow-none',\n            className\n          )}\n          {...props}\n        />\n      </ContextMenuPrimitive.Positioner>\n    </ContextMenuPrimitive.Portal>\n  );\n}\n\nfunction ContextMenuGroup({ ...props }: ContextMenuPrimitive.Group.Props) {\n  return (\n    <ContextMenuPrimitive.Group data-slot='context-menu-group' {...props} />\n  );\n}\n\nfunction ContextMenuItem({\n  className,\n  ...props\n}: ContextMenuPrimitive.Item.Props) {\n  return (\n    <ContextMenuPrimitive.Item\n      data-slot='context-menu-item'\n      className={cn(\n        'flex cursor-pointer px-4 py-2 text-sm leading-4 outline-none select-none data-highlighted:relative data-highlighted:z-0 data-highlighted:before:absolute data-highlighted:before:inset-x-1 data-highlighted:before:inset-y-0 data-highlighted:before:z-[-1] data-highlighted:before:rounded-sm data-highlighted:before:bg-accent',\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction ContextMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  ...props\n}: ContextMenuPrimitive.CheckboxItem.Props) {\n  return (\n    <ContextMenuPrimitive.CheckboxItem\n      data-slot='context-menu-checkbox-item'\n      className={cn(\n        'grid cursor-pointer grid-cols-[0.75rem_1fr] items-center gap-2 py-2 pr-8 pl-2.5 text-sm leading-4 outline-none select-none data-highlighted:relative data-highlighted:z-0 data-highlighted:before:absolute data-highlighted:before:inset-x-1 data-highlighted:before:inset-y-0 data-highlighted:before:z-[-1] data-highlighted:before:rounded-sm data-highlighted:before:bg-accent',\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <ContextMenuPrimitive.CheckboxItemIndicator className=\"col-start-1 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\">\n        <CheckIcon />\n      </ContextMenuPrimitive.CheckboxItemIndicator>\n      <span className='col-start-2'>{children}</span>\n    </ContextMenuPrimitive.CheckboxItem>\n  );\n}\n\nfunction ContextMenuRadioGroup({\n  ...props\n}: ContextMenuPrimitive.RadioGroup.Props) {\n  return (\n    <ContextMenuPrimitive.RadioGroup\n      data-slot='context-menu-radio-group'\n      {...props}\n    />\n  );\n}\n\nfunction ContextMenuRadioItem({\n  className,\n  children,\n  ...props\n}: ContextMenuPrimitive.RadioItem.Props) {\n  return (\n    <ContextMenuPrimitive.RadioItem\n      data-slot='context-menu-radio-item'\n      className={cn(\n        'grid cursor-pointer grid-cols-[0.75rem_1fr] items-center gap-2 py-2 pr-8 pl-2.5 text-sm leading-4 outline-none select-none data-highlighted:relative data-highlighted:z-0 data-highlighted:before:absolute data-highlighted:before:inset-x-1 data-highlighted:before:inset-y-0 data-highlighted:before:z-[-1] data-highlighted:before:rounded-sm data-highlighted:before:bg-accent',\n        className\n      )}\n      {...props}\n    >\n      <ContextMenuPrimitive.RadioItemIndicator className=\"col-start-1 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-2.5\">\n        <CircleIcon className='fill-current' />\n      </ContextMenuPrimitive.RadioItemIndicator>\n      <span className='col-start-2'>{children}</span>\n    </ContextMenuPrimitive.RadioItem>\n  );\n}\n\nfunction ContextMenuGroupLabel({\n  className,\n  ...props\n}: ContextMenuPrimitive.GroupLabel.Props) {\n  return (\n    <ContextMenuPrimitive.GroupLabel\n      data-slot='context-menu-label'\n      className={cn(\n        'px-2 py-2 pr-8 pl-7.5 text-sm leading-4 font-medium text-muted-foreground select-none',\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction ContextMenuSeparator({\n  className,\n  ...props\n}: ContextMenuPrimitive.Separator.Props) {\n  return (\n    <ContextMenuPrimitive.Separator\n      data-slot='context-menu-separator'\n      className={cn('mx-2 my-1 h-px bg-border', className)}\n      {...props}\n    />\n  );\n}\n\nfunction ContextMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<'span'>) {\n  return (\n    <span\n      data-slot='context-menu-shortcut'\n      className={cn(\n        'ms-auto text-xs tracking-widest text-muted-foreground/60',\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction ContextMenuSub({ ...props }: ContextMenuPrimitive.SubmenuRoot.Props) {\n  return (\n    <ContextMenuPrimitive.SubmenuRoot data-slot='context-menu-sub' {...props} />\n  );\n}\n\nfunction ContextMenuSubTrigger({\n  className,\n  children,\n  ...props\n}: ContextMenuPrimitive.SubmenuTrigger.Props) {\n  return (\n    <ContextMenuPrimitive.SubmenuTrigger\n      data-slot='context-menu-sub-trigger'\n      className={cn(\n        \"flex cursor-default py-2 pr-2 pl-4 text-sm leading-4 outline-none select-none data-highlighted:relative data-highlighted:z-0 data-highlighted:before:absolute data-highlighted:before:inset-x-1 data-highlighted:before:inset-y-0 data-highlighted:before:z-[-1] data-highlighted:before:rounded-sm data-highlighted:before:bg-accent [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className='ms-auto' />\n    </ContextMenuPrimitive.SubmenuTrigger>\n  );\n}\n\nfunction ContextMenuSubPopup({\n  align = 'start',\n  sideOffset = 1,\n  alignOffset = -4,\n  className,\n  ...props\n}: ContextMenuPrimitive.Popup.Props & {\n  align?: ContextMenuPrimitive.Positioner.Props['align'];\n  sideOffset?: ContextMenuPrimitive.Positioner.Props['sideOffset'];\n  alignOffset?: ContextMenuPrimitive.Positioner.Props['alignOffset'];\n}) {\n  return (\n    <ContextMenuPopup\n      className={className}\n      data-slot='context-menu-sub-content'\n      align={align}\n      sideOffset={sideOffset}\n      alignOffset={alignOffset}\n      {...props}\n    />\n  );\n}\n\nexport {\n  ContextMenu,\n  ContextMenuTrigger,\n  ContextMenuPopup,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuCheckboxItem,\n  ContextMenuRadioGroup,\n  ContextMenuRadioItem,\n  ContextMenuGroupLabel,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuSub,\n  ContextMenuSubTrigger,\n  ContextMenuSubPopup,\n};\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}