{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "button",
  "type": "registry:ui",
  "dependencies": [
    "@radix-ui/react-slot"
  ],
  "files": [
    {
      "path": "components/ui/button.tsx",
      "content": "import * 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('cursor-pointer inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0', {\n    variants: {\n        variant: {\n            default: 'shadow-sm shadow-black/20 bg-primary text-primary-foreground hover:bg-primary/90',\n            destructive: 'bg-destructive text-destructive-foreground shadow-md hover:bg-destructive/90',\n            outline: 'shadow-sm shadow-black/15 border border-transparent bg-background ring-1 ring-foreground/10 duration-200 hover:bg-muted/50 dark:ring-foreground/15 dark:hover:bg-muted/50',\n            secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',\n            ghost: 'hover:bg-accent hover:text-accent-foreground',\n            link: 'text-primary underline-offset-4 hover:underline',\n        },\n        size: {\n            default: 'h-9 px-4 py-2',\n            sm: 'h-8 rounded-md px-3 text-xs',\n            lg: 'h-10 rounded-md px-8',\n            icon: 'h-9 w-9',\n        },\n    },\n    defaultVariants: {\n        variant: 'default',\n        size: 'default',\n    },\n})\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n    asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : 'button'\n    return (\n        <Comp\n            className={cn(buttonVariants({ variant, size, className }))}\n            ref={ref}\n            {...props}\n        />\n    )\n})\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n",
      "type": "registry:ui",
      "target": "components/ui/button.tsx"
    }
  ]
}