import { ButtonHTMLAttributes, AnchorHTMLAttributes, ReactNode } from 'react'; type ButtonAsButton = ButtonHTMLAttributes & { as?: 'button'; href?: never; }; type ButtonAsLink = AnchorHTMLAttributes & { as: 'a'; href: string; }; type ButtonProps = (ButtonAsButton | ButtonAsLink) & { variant?: 'primary' | 'secondary'; children: ReactNode; }; export default function Button({ variant = 'primary', children, className = '', as = 'button', ...props }: ButtonProps) { const baseStyles = 'rounded-full px-6 py-3 text-sm font-semibold transition-all duration-75 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 hover:scale-[1.03] active:scale-[0.98]'; const variantStyles = { primary: 'bg-primary-blue text-white hover:shadow-glow active:ring-2 active:ring-primary-blue focus-visible:outline-primary-blue', secondary: 'bg-iron-gray text-white border border-charcoal-outline hover:shadow-glow-strong hover:border-primary-blue focus-visible:outline-primary-blue' }; const classes = `${baseStyles} ${variantStyles[variant]} ${className}`; if (as === 'a') { return ( )} > {children} ); } return ( ); }