/// UnionFlow Secondary Button - Bouton secondaire
/// 
/// Bouton secondaire avec la couleur Indigo (#6366F1)
/// Utilisé pour les actions secondaires (annuler, retour, etc.)
library uf_secondary_button;

import 'package:flutter/material.dart';
import '../../unionflow_design_system.dart';

/// Bouton secondaire UnionFlow
class UFSecondaryButton extends StatelessWidget {
  final String label;
  final VoidCallback? onPressed;
  final bool isLoading;
  final IconData? icon;
  final bool isFullWidth;
  final double? height;

  const UFSecondaryButton({
    super.key,
    required this.label,
    this.onPressed,
    this.isLoading = false,
    this.icon,
    this.isFullWidth = false,
    this.height,
  });

  @override
  Widget build(BuildContext context) {
    return SizedBox(
      width: isFullWidth ? double.infinity : null,
      height: height ?? SpacingTokens.buttonHeightLarge,
      child: ElevatedButton(
        onPressed: isLoading ? null : onPressed,
        style: ElevatedButton.styleFrom(
          backgroundColor: AppColors.brandGreen, 
          foregroundColor: Colors.white, 
          disabledBackgroundColor: AppColors.brandGreen.withOpacity(0.5),
          disabledForegroundColor: Colors.white.withOpacity(0.7),
          elevation: SpacingTokens.elevationSm,
          shadowColor: AppColors.darkBorder.withOpacity(0.1),
          padding: const EdgeInsets.symmetric(
            horizontal: SpacingTokens.buttonPaddingHorizontal,
            vertical: SpacingTokens.buttonPaddingVertical,
          ),
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(SpacingTokens.radiusLg),
          ),
        ),
        child: isLoading
            ? const SizedBox(
                height: 20,
                width: 20,
                child: CircularProgressIndicator(
                  strokeWidth: 2,
                  valueColor: AlwaysStoppedAnimation<Color>(
                    Colors.white,
                  ),
                ),
              )
            : Row(
                mainAxisSize: MainAxisSize.min,
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  if (icon != null) ...[
                    Icon(icon, size: 20),
                    const SizedBox(width: SpacingTokens.md),
                  ],
                  Text(
                    label,
                    style: AppTypography.actionText,
                  ),
                ],
              ),
      ),
    );
  }
}

