Really-amin's picture
Upload 577 files
b190b45 verified
import React, { ButtonHTMLAttributes, ReactNode } from 'react';
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
variant?: 'primary' | 'secondary' | 'ghost' | 'danger' | 'success';
size?: 'sm' | 'md' | 'lg';
icon?: boolean;
children: ReactNode;
}
export const Button: React.FC<ButtonProps> = ({
variant = 'primary',
size = 'md',
icon = false,
className = '',
children,
...props
}) => {
const baseClass = 'btn';
const variantClass = `btn-${variant}`;
const sizeClass = size !== 'md' ? `btn-${size}` : '';
const iconClass = icon ? 'btn-icon' : '';
const classes = [
baseClass,
variantClass,
sizeClass,
iconClass,
className
].filter(Boolean).join(' ');
return (
<button className={classes} {...props}>
{children}
</button>
);
};
export default Button;