import { ButtonHTMLAttributes, forwardRef, ReactNode } from "react";
import { cn } from "@/utils/cn";
/**
* Unified Button Component
*
* Only two variants:
* - primary: Orange/heat color for primary actions
* - secondary: Grey for secondary actions
*
* @example
* // Primary button (orange)
*
*
* // Secondary button (grey) - default
*
*
* // With icon
*
*/
interface ButtonProps extends ButtonHTMLAttributes {
variant?: "primary" | "secondary";
size?: "default" | "large";
isLoading?: boolean;
loadingLabel?: string;
children: ReactNode;
}
const Button = forwardRef(
(
{
variant = "secondary",
size = "large",
isLoading = false,
loadingLabel = "Loading…",
disabled,
className,
children,
...props
},
ref
) => {
const isNonInteractive = Boolean(disabled || isLoading);
return (
);
}
);
Button.displayName = "Button";
export default Button;
export { Button, type ButtonProps };