{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "context-menu",
  "title": "Context Menu",
  "description": "Context Menu component built on Base UI, styled with sc1m tokens.",
  "dependencies": [
    "@base-ui/react"
  ],
  "registryDependencies": [
    "https://sc1m.vercel.app/r/tokens.json",
    "https://sc1m.vercel.app/r/cn.json"
  ],
  "files": [
    {
      "path": "src/components/ui/context-menu/context-menu.tsx",
      "content": "\"use client\";\n\nimport * as React from \"react\";\nimport { ContextMenu as BaseContextMenu } from \"@base-ui/react/context-menu\";\nimport { cn } from \"@/lib/cn\";\n\nexport const ContextMenu = BaseContextMenu.Root;\nexport const ContextMenuTrigger = BaseContextMenu.Trigger;\n\nexport function ContextMenuContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof BaseContextMenu.Popup>) {\n  return (\n    <BaseContextMenu.Portal>\n      <BaseContextMenu.Positioner>\n        <BaseContextMenu.Popup\n          className={cn(\n            \"min-w-40 rounded-lg border border-line bg-surface-raised py-1 text-fg shadow-overlay\",\n            \"popup-motion\",\n            className,\n          )}\n          {...props}\n        >\n          {children}\n        </BaseContextMenu.Popup>\n      </BaseContextMenu.Positioner>\n    </BaseContextMenu.Portal>\n  );\n}\n\nexport function ContextMenuItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseContextMenu.Item>) {\n  return (\n    <BaseContextMenu.Item\n      className={cn(\n        \"flex cursor-default items-center rounded-sm px-3 py-1.5 text-sm select-none outline-none\",\n        \"data-highlighted:bg-surface\",\n        \"data-disabled:pointer-events-none data-disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport function ContextMenuCheckboxItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof BaseContextMenu.CheckboxItem>) {\n  return (\n    <BaseContextMenu.CheckboxItem\n      className={cn(\n        \"flex cursor-default items-center gap-2 rounded-sm px-3 py-1.5 text-sm select-none outline-none\",\n        \"data-highlighted:bg-surface\",\n        \"data-disabled:pointer-events-none data-disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    >\n      <ContextMenuCheckboxItemIndicator />\n      {children}\n    </BaseContextMenu.CheckboxItem>\n  );\n}\n\nexport function ContextMenuCheckboxItemIndicator({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseContextMenu.CheckboxItemIndicator>) {\n  return (\n    <BaseContextMenu.CheckboxItemIndicator\n      className={cn(\"flex size-4 items-center justify-center\", className)}\n      {...props}\n    >\n      {/* phosphor: check regular */}\n      <svg\n        aria-hidden=\"true\"\n        viewBox=\"0 0 256 256\"\n        fill=\"currentColor\"\n        className=\"size-3.5\"\n      >\n        <path d=\"M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z\" />\n      </svg>\n    </BaseContextMenu.CheckboxItemIndicator>\n  );\n}\n\nexport const ContextMenuRadioGroup = BaseContextMenu.RadioGroup;\n\nexport function ContextMenuRadioItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof BaseContextMenu.RadioItem>) {\n  return (\n    <BaseContextMenu.RadioItem\n      className={cn(\n        \"flex cursor-default items-center gap-2 rounded-sm px-3 py-1.5 text-sm select-none outline-none\",\n        \"data-highlighted:bg-surface\",\n        \"data-disabled:pointer-events-none data-disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    >\n      <ContextMenuRadioItemIndicator />\n      {children}\n    </BaseContextMenu.RadioItem>\n  );\n}\n\nexport function ContextMenuRadioItemIndicator({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseContextMenu.RadioItemIndicator>) {\n  return (\n    <BaseContextMenu.RadioItemIndicator\n      className={cn(\"flex size-4 items-center justify-center\", className)}\n      {...props}\n    >\n      <span className=\"size-1.5 rounded-full bg-fg\" />\n    </BaseContextMenu.RadioItemIndicator>\n  );\n}\n\nexport function ContextMenuSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseContextMenu.Separator>) {\n  return (\n    <BaseContextMenu.Separator\n      className={cn(\"my-1 h-px bg-line\", className)}\n      {...props}\n    />\n  );\n}\n\nexport const ContextMenuGroup = BaseContextMenu.Group;\n\nexport function ContextMenuGroupLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseContextMenu.GroupLabel>) {\n  return (\n    <BaseContextMenu.GroupLabel\n      className={cn(\n        \"px-3 py-1.5 text-xs font-medium text-fg-subtle\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport const ContextMenuSubmenuRoot = BaseContextMenu.SubmenuRoot;\n\nexport function ContextMenuSubmenuTrigger({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof BaseContextMenu.SubmenuTrigger>) {\n  return (\n    <BaseContextMenu.SubmenuTrigger\n      className={cn(\n        \"flex cursor-default items-center justify-between rounded-sm px-3 py-1.5 text-sm select-none outline-none\",\n        \"data-highlighted:bg-surface\",\n        \"data-disabled:pointer-events-none data-disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      {/* phosphor: caret-right regular */}\n      <svg\n        aria-hidden=\"true\"\n        viewBox=\"0 0 256 256\"\n        fill=\"currentColor\"\n        className=\"size-3.5 text-fg-subtle\"\n      >\n        <path d=\"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\" />\n      </svg>\n    </BaseContextMenu.SubmenuTrigger>\n  );\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}