import React from "react";
import { cn } from "@/lib/utils";

export interface ButtonProps
  extends React.ButtonHTMLAttributes<HTMLButtonElement> {
  variant?: "primary" | "secondary" | "destructive" | "ghost";
  size?: "sm" | "md" | "lg";
}

export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
  ({ className, variant = "primary", size = "md", children, disabled, ...props }, ref) => {
    const baseStyles =
      "inline-flex items-center justify-center rounded-lg transition-colors focus:outline-none focus:ring-2 focus:ring-[#C8A45D]/30 disabled:opacity-50 disabled:pointer-events-none select-none";

    const variantStyles = {
      // PRD §15 Primary: bg-[#C8A45D], px-4 py-2.5, text-sm font-semibold text-[#0B1F33], hover:bg-[#B99145]
      primary:
        "bg-[#C8A45D] hover:bg-[#B99145] text-[#0B1F33] font-semibold shadow-xs",
      // PRD §15 Secondary: border border-slate-200 bg-white px-4 py-2.5 text-sm font-medium text-[#0B1F33] hover:bg-slate-50
      secondary:
        "border border-slate-200 bg-white hover:bg-slate-50 text-[#0B1F33] font-medium shadow-xs",
      // PRD §15 Destructive: bg-[#B94A48] px-4 py-2.5 text-sm font-semibold text-white hover:bg-[#A33D3B]
      destructive:
        "bg-[#B94A48] hover:bg-[#A33D3B] text-white font-semibold shadow-xs",
      ghost:
        "text-slate-600 hover:text-[#0B1F33] hover:bg-slate-100 font-medium",
    };

    const sizeStyles = {
      sm: "px-3 py-1.5 text-xs font-medium",
      md: "px-4 py-2.5 text-sm",
      lg: "px-5 py-3 text-base font-semibold",
    };

    return (
      <button
        ref={ref}
        disabled={disabled}
        className={cn(baseStyles, variantStyles[variant], sizeStyles[size], className)}
        {...props}
      >
        {children}
      </button>
    );
  }
);
Button.displayName = "Button";
