{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "context-menu",
  "title": "Context Menu",
  "description": "Right-click (or long-press) menu with glass styling.",
  "dependencies": ["@radix-ui/react-context-menu", "lucide-react"],
  "registryDependencies": ["@glasswave/glass", "@glasswave/menu-classes"],
  "files": [
    {
      "path": "registry/glasswave/ui/context-menu.tsx",
      "content": "\"use client\";\n\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { forwardRef } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { glass } from \"@/lib/glass\";\nimport {\n  menuContentClass,\n  menuItemClass,\n  menuLabelClass,\n  menuSeparatorClass,\n} from \"@/lib/menu-classes\";\n\nexport const ContextMenu = ContextMenuPrimitive.Root;\nexport const ContextMenuTrigger = ContextMenuPrimitive.Trigger;\nexport const ContextMenuGroup = ContextMenuPrimitive.Group;\nexport const ContextMenuPortal = ContextMenuPrimitive.Portal;\nexport const ContextMenuSub = ContextMenuPrimitive.Sub;\nexport const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\n\nexport const ContextMenuContent = forwardRef<\n  HTMLDivElement,\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <ContextMenuPrimitive.Portal>\n    <ContextMenuPrimitive.Content\n      ref={ref}\n      className={cn(\n        glass,\n        menuContentClass,\n        \"animate-in fade-in-0 zoom-in-95\",\n        className,\n      )}\n      {...props}\n    />\n  </ContextMenuPrimitive.Portal>\n));\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;\n\nexport const ContextMenuItem = forwardRef<\n  HTMLDivElement,\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\n    inset?: boolean;\n  }\n>(({ className, inset, ...props }, ref) => (\n  <ContextMenuPrimitive.Item\n    ref={ref}\n    className={cn(menuItemClass, inset && \"pl-8\", className)}\n    {...props}\n  />\n));\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;\n\nexport const ContextMenuCheckboxItem = forwardRef<\n  HTMLDivElement,\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n  <ContextMenuPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(menuItemClass, \"pl-8\", className)}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n      <ContextMenuPrimitive.ItemIndicator>\n        <Check className=\"size-4\" />\n      </ContextMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </ContextMenuPrimitive.CheckboxItem>\n));\nContextMenuCheckboxItem.displayName =\n  ContextMenuPrimitive.CheckboxItem.displayName;\n\nexport const ContextMenuRadioItem = forwardRef<\n  HTMLDivElement,\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n  <ContextMenuPrimitive.RadioItem\n    ref={ref}\n    className={cn(menuItemClass, \"pl-8\", className)}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n      <ContextMenuPrimitive.ItemIndicator>\n        <Circle className=\"size-2 fill-current\" />\n      </ContextMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </ContextMenuPrimitive.RadioItem>\n));\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;\n\nexport const ContextMenuLabel = forwardRef<\n  HTMLDivElement,\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n    inset?: boolean;\n  }\n>(({ className, inset, ...props }, ref) => (\n  <ContextMenuPrimitive.Label\n    ref={ref}\n    className={cn(menuLabelClass, inset && \"pl-8\", className)}\n    {...props}\n  />\n));\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;\n\nexport const ContextMenuSeparator = forwardRef<\n  HTMLDivElement,\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <ContextMenuPrimitive.Separator\n    ref={ref}\n    className={cn(menuSeparatorClass, className)}\n    {...props}\n  />\n));\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;\n\nexport const ContextMenuShortcut = ({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) => (\n  <span\n    className={cn(\"ml-auto text-xs tracking-widest text-current/50\", className)}\n    {...props}\n  />\n);\n\nexport const ContextMenuSubTrigger = forwardRef<\n  HTMLDivElement,\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n    inset?: boolean;\n  }\n>(({ className, inset, children, ...props }, ref) => (\n  <ContextMenuPrimitive.SubTrigger\n    ref={ref}\n    className={cn(menuItemClass, inset && \"pl-8\", className)}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto size-4\" />\n  </ContextMenuPrimitive.SubTrigger>\n));\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;\n\nexport const ContextMenuSubContent = forwardRef<\n  HTMLDivElement,\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n  <ContextMenuPrimitive.SubContent\n    ref={ref}\n    className={cn(\n      glass,\n      menuContentClass,\n      \"animate-in fade-in-0 zoom-in-95\",\n      className,\n    )}\n    {...props}\n  />\n));\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}
