import React from 'react'; interface ButtonProps extends React.ButtonHTMLAttributes { variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger'; size?: 'sm' | 'md' | 'lg'; fullWidth?: boolean; loading?: boolean; children: React.ReactNode; } export function Button({ variant = 'primary', size = 'md', fullWidth = false, loading = false, disabled, className = '', children, ...props }: ButtonProps) { const baseClasses = 'inline-flex items-center justify-center font-medium rounded-lg transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed'; const variantClasses = { primary: 'bg-primary text-white hover:bg-blue-600 focus:ring-primary', secondary: 'bg-secondary text-white hover:bg-purple-600 focus:ring-secondary', outline: 'border-2 border-primary text-primary hover:bg-primary hover:text-white focus:ring-primary', ghost: 'text-primary hover:bg-surface focus:ring-primary', danger: 'bg-error text-white hover:bg-red-600 focus:ring-error', }; const sizeClasses = { sm: 'px-3 py-1.5 text-sm', md: 'px-4 py-2 text-base', lg: 'px-6 py-3 text-lg', }; const widthClass = fullWidth ? 'w-full' : ''; const classes = `${baseClasses} ${variantClasses[variant]} ${sizeClasses[size]} ${widthClass} ${className}`; return ( ); }