KingCam326's picture
Upload 21 files
9aaa179 verified
import React from 'react';
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
children: React.ReactNode;
variant?: 'primary' | 'secondary';
size?: 'normal' | 'large';
}
const Button: React.FC<ButtonProps> = ({ children, variant = 'primary', size = 'normal', className, ...props }) => {
const baseStyles = 'font-semibold rounded-md shadow-sm transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-slate-800';
const variantStyles = {
primary: 'bg-cyan-600 text-white hover:bg-cyan-500 focus:ring-cyan-500 disabled:bg-slate-600 disabled:text-slate-400 disabled:cursor-not-allowed',
secondary: 'bg-slate-700 text-slate-200 hover:bg-slate-600 focus:ring-slate-500',
};
const sizeStyles = {
normal: 'px-4 py-2 text-sm',
large: 'px-6 py-3 text-base',
};
return (
<button
className={`${baseStyles} ${variantStyles[variant]} ${sizeStyles[size]} ${className}`}
{...props}
>
{children}
</button>
);
};
export default Button;