{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "button",
  "type": "registry:ui",
  "title": "Button",
  "description": "Tactical button with primary, secondary, ghost, danger and tactical variants.",
  "dependencies": [
    "@radix-ui/react-slot",
    "class-variance-authority"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "utils"
  ],
  "files": [
    {
      "path": "registry/blacksite/ui/button.tsx",
      "type": "registry:ui",
      "target": "components/ui/button.tsx",
      "content": "\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst buttonVariants = cva(\n  [\n    \"inline-flex items-center justify-center gap-2 whitespace-nowrap select-none\",\n    \"font-medium tracking-tight\",\n    \"transition-[background,color,border,box-shadow] duration-150\",\n    \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background\",\n    \"disabled:pointer-events-none disabled:opacity-50\",\n    \"[&_svg]:size-4 [&_svg]:shrink-0\",\n  ].join(\" \"),\n  {\n    variants: {\n      variant: {\n        primary:\n          \"bg-primary text-primary-foreground border border-primary/60 hover:bg-primary/90 active:bg-primary/80\",\n        secondary:\n          \"bg-secondary text-secondary-foreground border border-border hover:border-border-strong hover:bg-secondary/80\",\n        outline:\n          \"bg-transparent text-foreground border border-border hover:bg-accent hover:border-border-strong\",\n        ghost: \"bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground\",\n        danger:\n          \"bg-danger text-danger-foreground border border-danger/60 hover:bg-danger/90 active:bg-danger/80\",\n        tactical:\n          \"bg-background-elevated text-foreground border border-border-strong text-mono uppercase tracking-[0.08em] hover:border-primary hover:text-primary\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        sm: \"h-7 px-2.5 text-xs rounded-sm\",\n        md: \"h-8 px-3 text-sm rounded-sm\",\n        lg: \"h-10 px-4 text-sm rounded-md\",\n        icon: \"h-8 w-8 rounded-sm\",\n        \"icon-sm\": \"h-7 w-7 rounded-sm\",\n      },\n    },\n    defaultVariants: {\n      variant: \"secondary\",\n      size: \"md\",\n    },\n  },\n);\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n  asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : \"button\";\n    return (\n      <Comp ref={ref} className={cn(buttonVariants({ variant, size }), className)} {...props} />\n    );\n  },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n"
    }
  ]
}
