{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "button",
  "type": "registry:ui",
  "title": "Button",
  "description": "A pill-shaped button with primary, outline and ghost variants in three sizes. Accessible focus ring, forwarded ref.",
  "files": [
    {
      "path": "registry/ui/button.tsx",
      "type": "registry:ui",
      "content": "import * as React from \"react\";\n\ntype Variant = \"primary\" | \"outline\" | \"ghost\";\ntype Size = \"sm\" | \"md\" | \"lg\";\n\nconst variants: Record<Variant, string> = {\n  primary:\n    \"bg-sky-300 text-sky-950 shadow-[0_0_0_1px_rgba(125,211,252,.4),0_8px_32px_-8px_rgba(56,189,248,.6)] hover:bg-sky-200\",\n  outline: \"border border-white/15 text-zinc-100 hover:border-white/30 hover:bg-white/[.03]\",\n  ghost: \"text-zinc-400 hover:bg-white/5 hover:text-zinc-100\",\n};\n\nconst sizes: Record<Size, string> = {\n  sm: \"h-8 px-3.5 text-xs\",\n  md: \"h-10 px-5 text-sm\",\n  lg: \"h-12 px-6 text-base\",\n};\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n  variant?: Variant;\n  size?: Size;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ variant = \"primary\", size = \"md\", className = \"\", ...props }, ref) => (\n    <button\n      ref={ref}\n      className={[\n        \"inline-flex items-center justify-center gap-2 rounded-full font-medium\",\n        \"transition-all duration-200 active:scale-[.98]\",\n        \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-300/50\",\n        \"disabled:pointer-events-none disabled:opacity-50\",\n        variants[variant],\n        sizes[size],\n        className,\n      ].join(\" \")}\n      {...props}\n    />\n  )\n);\nButton.displayName = \"Button\";\n"
    }
  ]
}