import * as React from "react"; import { cva, type VariantProps } from "class-variance-authority"; import { Slot } from "radix-ui"; import { cn } from "@/lib/utils"; const buttonVariants = cva( "group/button inline-flex shrink-0 items-center justify-center rounded-2xl border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 active:scale-[0.98] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", { variants: { variant: { default: "bg-primary text-primary-foreground shadow-lg shadow-primary/20 hover:bg-primary/90", outline: "border-border bg-background/50 backdrop-blur-sm hover:bg-muted hover:text-foreground", secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80", ghost: "hover:bg-muted/50 hover:text-foreground", destructive: "bg-destructive/10 text-destructive hover:bg-destructive/20", link: "text-primary underline-offset-4 hover:underline", }, size: { default: "h-11 px-6 py-2", sm: "h-9 rounded-xl px-4 text-xs", lg: "h-14 rounded-3xl px-8 text-base", icon: "size-11 rounded-2xl", }, }, defaultVariants: { variant: "default", size: "default", }, }, ); function Button({ className, variant, size, asChild = false, ...props }: React.ComponentProps<"button"> & VariantProps & { asChild?: boolean }) { const Comp = asChild ? Slot.Root : "button"; return ( ); } export { Button, buttonVariants };