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 (
);
});