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";