import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react'; import './Button.css'; type Variant = 'primary' | 'secondary' | 'ghost' | 'white'; type Size = 'sm' | 'md' | 'lg'; interface Props extends ButtonHTMLAttributes { variant?: Variant; size?: Size; loading?: boolean; iconLeft?: ReactNode; iconRight?: ReactNode; fullWidth?: boolean; } export const Button = forwardRef(function Button( { variant = 'primary', size = 'md', loading = false, iconLeft, iconRight, fullWidth = false, disabled, className, children, ...rest }, ref, ) { const classes = [ 'ui-btn', `ui-btn--${variant}`, `ui-btn--${size}`, fullWidth ? 'ui-btn--full' : '', loading ? 'ui-btn--loading' : '', className ?? '', ] .filter(Boolean) .join(' '); return ( ); });