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;