"use client"; import { cn } from "@/lib/utils"; import { ButtonHTMLAttributes, forwardRef } from "react"; interface ButtonProps extends ButtonHTMLAttributes { variant?: "primary" | "secondary" | "outline" | "ghost"; size?: "sm" | "md" | "lg"; loading?: boolean; } const Button = forwardRef( ( { className, variant = "primary", size = "md", loading = false, disabled, children, ...props }, ref ) => { const baseStyles = "inline-flex items-center justify-center font-semibold transition-all duration-300 rounded-[12px] cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed"; const variants = { primary: "gradient-bg text-white hover:opacity-90 hover:translate-y-[-2px] hover:shadow-lg", secondary: "bg-dark-light text-white border border-dark-border hover:border-primary/50 hover:translate-y-[-2px]", outline: "bg-transparent text-primary border-2 border-primary hover:bg-primary hover:text-white", ghost: "bg-transparent text-white/70 hover:text-white hover:bg-white/5", }; const sizes = { sm: "px-4 py-2 text-sm", md: "px-6 py-3 text-base", lg: "px-8 py-4 text-lg", }; return ( ); } ); Button.displayName = "Button"; export default Button;