import React from 'react'; const ActionButton = ({ children, onClick, variant = 'primary', size = 'medium', icon = null, disabled = false, loading = false, fullWidth = false, style = {} }) => { const variants = { primary: { background: 'linear-gradient(135deg, #2E7D32 0%, #4CAF50 100%)', color: 'white', border: 'none', hoverTransform: 'translateY(-2px)', hoverShadow: '0 8px 25px rgba(46, 125, 50, 0.4)' }, secondary: { background: 'linear-gradient(135deg, #1976D2 0%, #2196F3 100%)', color: 'white', border: 'none', hoverTransform: 'translateY(-2px)', hoverShadow: '0 8px 25px rgba(25, 118, 210, 0.4)' }, warning: { background: 'linear-gradient(135deg, #F57C00 0%, #FF9800 100%)', color: 'white', border: 'none', hoverTransform: 'translateY(-2px)', hoverShadow: '0 8px 25px rgba(245, 124, 0, 0.4)' }, danger: { background: 'linear-gradient(135deg, #D32F2F 0%, #f44336 100%)', color: 'white', border: 'none', hoverTransform: 'translateY(-2px)', hoverShadow: '0 8px 25px rgba(211, 47, 47, 0.4)' }, outline: { background: 'transparent', color: '#2E7D32', border: '2px solid #2E7D32', hoverTransform: 'translateY(-2px)', hoverShadow: '0 8px 25px rgba(46, 125, 50, 0.2)', hoverBackground: '#2E7D32', hoverColor: 'white' } }; const sizes = { small: { padding: '8px 16px', fontSize: '0.9rem' }, medium: { padding: '12px 24px', fontSize: '1rem' }, large: { padding: '15px 30px', fontSize: '1.1rem' } }; const variantStyle = variants[variant] || variants.primary; const sizeStyle = sizes[size] || sizes.medium; const buttonStyle = { ...sizeStyle, ...variantStyle, borderRadius: '8px', fontWeight: 'bold', cursor: disabled || loading ? 'not-allowed' : 'pointer', transition: 'all 0.3s ease', display: 'flex', alignItems: 'center', justifyContent: 'center', gap: icon ? '8px' : '0', width: fullWidth ? '100%' : 'auto', opacity: disabled || loading ? 0.6 : 1, position: 'relative', overflow: 'hidden', ...style }; const handleMouseEnter = (e) => { if (disabled || loading) return; e.currentTarget.style.transform = variantStyle.hoverTransform; e.currentTarget.style.boxShadow = variantStyle.hoverShadow; if (variantStyle.hoverBackground) { e.currentTarget.style.background = variantStyle.hoverBackground; e.currentTarget.style.color = variantStyle.hoverColor; } }; const handleMouseLeave = (e) => { if (disabled || loading) return; e.currentTarget.style.transform = 'translateY(0)'; e.currentTarget.style.boxShadow = 'none'; if (variantStyle.hoverBackground) { e.currentTarget.style.background = variantStyle.background; e.currentTarget.style.color = variantStyle.color; } }; return ( ); }; export default ActionButton;