import * as React from "react" import { Slot } from "@radix-ui/react-slot" import { cva, type VariantProps } from "class-variance-authority" import { cn } from "@/lib/utils" const buttonVariants = cva( "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all duration-200 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-2 focus-visible:ring-ring/50", { variants: { variant: { default: "bg-[#C41E3A] text-white hover:bg-[#A01830] hover:shadow-lg hover:shadow-[#C41E3A]/25 hover:-translate-y-0.5", destructive: "bg-red-600 text-white hover:bg-red-700 focus-visible:ring-red-500/50", outline: "border-2 border-[#C41E3A] bg-transparent text-[#C41E3A] hover:bg-[#FEF2F4] hover:text-[#A01830]", secondary: "bg-[#FAF8F8] text-[#1A1A1A] hover:bg-[#F5F0F0]", ghost: "hover:bg-[#F5F0F0] hover:text-[#1A1A1A]", link: "text-[#C41E3A] underline-offset-4 hover:underline hover:text-[#A01830]", }, size: { default: "h-10 px-6 py-2", xs: "h-7 gap-1 rounded-md px-2 text-xs [&_svg:not([class*='size-'])]:size-3", sm: "h-8 rounded-md gap-1.5 px-4", lg: "h-12 rounded-md px-8 text-base", icon: "size-10", "icon-xs": "size-7 rounded-md [&_svg:not([class*='size-'])]:size-3", "icon-sm": "size-8", "icon-lg": "size-12", }, }, defaultVariants: { variant: "default", size: "default", }, } ) function Button({ className, variant = "default", size = "default", asChild = false, ...props }: React.ComponentProps<"button"> & VariantProps & { asChild?: boolean }) { const Comp = asChild ? Slot : "button" return ( ) } export { Button, buttonVariants }