import { ButtonHTMLAttributes, forwardRef } from "react";
import { cn } from "@/utils/helpers";
interface ButtonProps extends ButtonHTMLAttributes {
variant?: "primary" | "secondary" | "outline" | "danger" | "success";
size?: "sm" | "md" | "lg";
isLoading?: boolean;
fullWidth?: boolean;
}
const Button = forwardRef(
(
{
children,
className,
variant = "primary",
size = "md",
isLoading = false,
fullWidth = false,
disabled,
...props
},
ref
) => {
const baseStyles =
"inline-flex items-center justify-center font-medium rounded-lg transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed";
const variants = {
primary:
"bg-[#d4a574] text-white hover:bg-[#c4956a] focus:ring-[#d4a574] shadow-md hover:shadow-lg",
secondary:
"bg-white text-[#5a5a4e] hover:bg-[#d4a574] hover:text-white focus:ring-[#d4a574] border border-[#e5e4dc] shadow-sm",
outline:
"border-2 border-[#d4a574] text-[#d4a574] hover:bg-[#d4a574] hover:text-white focus:ring-[#d4a574] shadow-sm",
danger:
"bg-red-600 text-white hover:bg-red-700 focus:ring-red-500 shadow-md",
success:
"bg-[#1a4d2e] text-white hover:bg-[#2d5a3d] focus:ring-[#1a4d2e] shadow-md hover:shadow-lg",
};
const sizes = {
sm: "px-3 py-1.5 text-sm",
md: "px-4 py-2 text-base",
lg: "px-6 py-3 text-lg",
};
return (
);
}
);
Button.displayName = "Button";
export default Button;