{
	"$schema": "https://ui.shadcn.com/schema/registry-item.json",
	"name": "context-menu",
	"dependencies": [],
	"registryDependencies": [],
	"files": [
		{
			"path": "ui/context-menu.tsx",
			"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ContextMenu as BaseContextMenu } from \"@base-ui/react/context-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ContextMenu({\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.Root>) {\n\treturn <BaseContextMenu.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.Trigger>) {\n\treturn <BaseContextMenu.Trigger data-slot=\"context-menu-trigger\" {...props} />\n}\n\nfunction ContextMenuGroup({\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.Group>) {\n\treturn <BaseContextMenu.Group data-slot=\"context-menu-group\" {...props} />\n}\n\nfunction ContextMenuPortal({\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.Portal>) {\n\treturn <BaseContextMenu.Portal data-slot=\"context-menu-portal\" {...props} />\n}\n\nfunction ContextMenuPositioner({\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.Positioner>) {\n\treturn (\n\t\t<BaseContextMenu.Positioner\n\t\t\tdata-slot=\"context-menu-positioner\"\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction ContextMenuRadioGroup({\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.RadioGroup>) {\n\treturn (\n\t\t<BaseContextMenu.RadioGroup\n\t\t\tdata-slot=\"context-menu-radio-group\"\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction ContextMenuContent({\n\tclassName,\n\tsideOffset = 4,\n\talign = \"start\",\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.Popup> & {\n\talign?: BaseContextMenu.Positioner.Props[\"align\"]\n\tsideOffset?: BaseContextMenu.Positioner.Props[\"sideOffset\"]\n}) {\n\treturn (\n\t\t<ContextMenuPortal>\n\t\t\t<ContextMenuPositioner\n\t\t\t\tclassName=\"max-h-(--available-height)\"\n\t\t\t\talign={align}\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t>\n\t\t\t\t<BaseContextMenu.Popup\n\t\t\t\t\tdata-slot=\"context-menu-content\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"bg-popover text-popover-foreground z-50 min-w-48 origin-(--transform-origin) overflow-hidden rounded-md border p-1 shadow-md transition-all outline-none data-ending-style:scale-98 data-ending-style:opacity-0 data-starting-style:scale-98 data-starting-style:opacity-0\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t</ContextMenuPositioner>\n\t\t</ContextMenuPortal>\n\t)\n}\n\nfunction ContextMenuItem({\n\tclassName,\n\tinset,\n\tvariant = \"default\",\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.Item> & {\n\tinset?: boolean\n\tvariant?: \"default\" | \"destructive\"\n}) {\n\treturn (\n\t\t<BaseContextMenu.Item\n\t\t\tdata-slot=\"context-menu-item\"\n\t\t\tdata-inset={inset}\n\t\t\tdata-variant={variant}\n\t\t\tclassName={cn(\n\t\t\t\t\"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive-foreground data-[variant=destructive]:*:[svg]:text-destructive! focus:data-[variant=destructive]:*:[svg]:text-destructive-foreground! [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden transition-all select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:transition-all [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction ContextMenuCheckboxItem({\n\tclassName,\n\tchildren,\n\tchecked,\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.CheckboxItem>) {\n\treturn (\n\t\t<BaseContextMenu.CheckboxItem\n\t\t\tdata-slot=\"context-menu-checkbox-item\"\n\t\t\tclassName={cn(\n\t\t\t\t\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tchecked={checked}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n\t\t\t\t<BaseContextMenu.CheckboxItemIndicator>\n\t\t\t\t\t<CheckIcon className=\"size-4\" />\n\t\t\t\t</BaseContextMenu.CheckboxItemIndicator>\n\t\t\t</span>\n\t\t\t{children}\n\t\t</BaseContextMenu.CheckboxItem>\n\t)\n}\n\nfunction ContextMenuRadioItem({\n\tclassName,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.RadioItem>) {\n\treturn (\n\t\t<BaseContextMenu.RadioItem\n\t\t\tdata-slot=\"context-menu-radio-item\"\n\t\t\tclassName={cn(\n\t\t\t\t\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n\t\t\t\t<BaseContextMenu.RadioItemIndicator>\n\t\t\t\t\t<CircleIcon className=\"size-2 fill-current\" />\n\t\t\t\t</BaseContextMenu.RadioItemIndicator>\n\t\t\t</span>\n\t\t\t{children}\n\t\t</BaseContextMenu.RadioItem>\n\t)\n}\n\nfunction ContextMenuLabel({\n\tclassName,\n\tinset,\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.GroupLabel> & {\n\tinset?: boolean\n}) {\n\treturn (\n\t\t<BaseContextMenu.GroupLabel\n\t\t\tdata-slot=\"context-menu-label\"\n\t\t\tdata-inset={inset}\n\t\t\tclassName={cn(\n\t\t\t\t\"px-2 py-1.5 text-xs font-medium data-inset:pl-8\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction ContextMenuSeparator({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.Separator>) {\n\treturn (\n\t\t<BaseContextMenu.Separator\n\t\t\tdata-slot=\"context-menu-separator\"\n\t\t\tclassName={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction ContextMenuShortcut({\n\tclassName,\n\t...props\n}: React.ComponentProps<\"span\">) {\n\treturn (\n\t\t<span\n\t\t\tdata-slot=\"context-menu-shortcut\"\n\t\t\tclassName={cn(\n\t\t\t\t\"text-muted-foreground ml-auto text-xs tracking-widest\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction ContextMenuSub({\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.SubmenuRoot>) {\n\treturn <BaseContextMenu.SubmenuRoot data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuSubTrigger({\n\tclassName,\n\tinset,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.SubmenuTrigger> & {\n\tinset?: boolean\n}) {\n\treturn (\n\t\t<BaseContextMenu.SubmenuTrigger\n\t\t\tdelay={0}\n\t\t\tcloseDelay={0}\n\t\t\tdata-slot=\"context-menu-sub-trigger\"\n\t\t\tdata-inset={inset}\n\t\t\tclassName={cn(\n\t\t\t\t\"focus:bg-accent focus:text-accent-foreground data-popup-open:bg-accent data-popup-open:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<ChevronRightIcon className=\"ml-auto size-4\" />\n\t\t</BaseContextMenu.SubmenuTrigger>\n\t)\n}\n\nfunction ContextMenuSubContent({\n\tclassName,\n\tsideOffset = 0,\n\talign = \"start\",\n\t...props\n}: React.ComponentProps<typeof BaseContextMenu.Popup> & {\n\talign?: BaseContextMenu.Positioner.Props[\"align\"]\n\tsideOffset?: BaseContextMenu.Positioner.Props[\"sideOffset\"]\n}) {\n\treturn (\n\t\t<ContextMenuPortal>\n\t\t\t<ContextMenuPositioner\n\t\t\t\tclassName=\"max-h-[var(--available-height)]\"\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\talign={align}\n\t\t\t>\n\t\t\t\t<BaseContextMenu.Popup\n\t\t\t\t\tdata-slot=\"context-menu-sub-content\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"bg-popover text-popover-foreground z-50 min-w-[12rem] origin-[var(--transform-origin)] overflow-hidden rounded-md border p-1 shadow-md transition-all data-ending-style:scale-98 data-ending-style:opacity-0 data-starting-style:scale-98 data-starting-style:opacity-0\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t</ContextMenuPositioner>\n\t\t</ContextMenuPortal>\n\t)\n}\n\nexport {\n\tContextMenu,\n\tContextMenuContent,\n\tContextMenuItem,\n\tContextMenuShortcut,\n\tContextMenuTrigger,\n\tContextMenuSeparator,\n\tContextMenuGroup,\n\tContextMenuLabel,\n\tContextMenuCheckboxItem,\n\tContextMenuRadioGroup,\n\tContextMenuPortal,\n\tContextMenuPositioner,\n\tContextMenuRadioItem,\n\tContextMenuSub,\n\tContextMenuSubTrigger,\n\tContextMenuSubContent,\n}\n",
			"type": "registry:ui",
			"target": ""
		}
	],
	"type": "registry:ui"
}
