import { ButtonHTMLAttributes, forwardRef } from "react";
import { cn } from "@/utils/cn";
import "./button.css";
interface Props extends ButtonHTMLAttributes {
variant?: "primary" | "secondary" | "tertiary" | "playground" | "destructive";
size?: "default" | "large";
disabled?: boolean;
loadingLabel?: string;
isLoading?: boolean;
}
const Button = forwardRef(
(
{
variant = "primary",
size = "default",
disabled,
isLoading = false,
loadingLabel = "Loading…",
...attrs
},
ref,
) => {
const isNonInteractive = Boolean(disabled || isLoading);
// Focus ring adapts to light/dark variants
const focusRing =
variant === "primary" || variant === "destructive"
? "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-white"
: "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-black";
return (
);
},
);
Button.displayName = "Button";
export default Button;