import { forwardRef, type ButtonHTMLAttributes } from "react"; import { Loader2 } from "lucide-react"; type ButtonVariant = "primary" | "secondary" | "danger" | "ghost"; type ButtonSize = "sm" | "md"; interface ButtonProps extends ButtonHTMLAttributes { variant?: ButtonVariant; size?: ButtonSize; loading?: boolean; icon?: React.ReactNode; } const variantClasses: Record = { primary: "bg-accent-600 text-white hover:bg-accent-500 active:scale-[0.98] transition-colors", secondary: "border border-zinc-700/60 bg-zinc-800/60 text-zinc-300 hover:bg-zinc-700/60 active:scale-[0.98] transition-colors", danger: "border border-red-500/20 bg-red-500/10 text-red-400 hover:bg-red-500/20 active:scale-[0.98] transition-colors", ghost: "text-zinc-400 hover:bg-zinc-800/70 hover:text-zinc-100 active:scale-[0.97] transition-colors", }; const sizeClasses: Record = { sm: "px-2 py-0.5 text-xs gap-1 rounded-md", md: "px-3 py-1.5 text-sm gap-1.5 rounded-lg", }; export const Button = forwardRef( ( { variant = "secondary", size = "sm", loading = false, icon, children, disabled, className = "", ...props }, ref, ) => { return ( ); }, ); Button.displayName = "Button";