import React from 'react'; import { Loader2 } from 'lucide-react'; interface LoadingButtonProps extends React.ButtonHTMLAttributes { isLoading?: boolean; loadingText?: string; children: React.ReactNode; variant?: 'primary' | 'secondary' | 'danger' | 'outline'; size?: 'sm' | 'md' | 'lg'; } const LoadingButton: React.FC = ({ isLoading = false, loadingText, children, variant = 'primary', size = 'md', disabled, className = '', ...props }) => { const variantStyles = { primary: 'bg-indigo-600 text-white hover:bg-indigo-700 focus:ring-indigo-500', secondary: 'bg-gray-600 text-white hover:bg-gray-700 focus:ring-gray-500', danger: 'bg-red-600 text-white hover:bg-red-700 focus:ring-red-500', outline: 'border-2 border-indigo-600 text-indigo-600 hover:bg-indigo-50 focus:ring-indigo-500', }; const sizeStyles = { sm: 'px-3 py-1.5 text-sm', md: 'px-4 py-2 text-base', lg: 'px-6 py-3 text-lg', }; const baseStyles = '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'; return ( ); }; export default LoadingButton;