import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import '../models/card_assets.dart';
import 'hover_relief_widget.dart';

/// Widget réutilisable pour la carte de choix Parent/AM
class ChoiceCardWidget extends StatelessWidget {
  final VoidCallback onParentSelected;
  final VoidCallback onAmSelected;
  final bool isMobile;

  const ChoiceCardWidget({
    super.key,
    required this.onParentSelected,
    required this.onAmSelected,
    this.isMobile = false,
  });

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: const EdgeInsets.symmetric(vertical: 30, horizontal: 20),
      decoration: BoxDecoration(
        image: DecorationImage(
          image: AssetImage(CardColorVertical.pink.path),
          fit: BoxFit.fill,
        ),
        borderRadius: BorderRadius.circular(15),
      ),
      child: Column(
        mainAxisAlignment: isMobile ? MainAxisAlignment.center : MainAxisAlignment.spaceEvenly,
        children: [
          _buildChoiceButton(
            iconPath: 'assets/images/icon_parents.png',
            label: 'Parents',
            onPressed: onParentSelected,
            isMobile: isMobile,
          ),
          SizedBox(height: isMobile ? 30 : 0),
          _buildChoiceButton(
            iconPath: 'assets/images/icon_assmat.png',
            label: 'Assistante Maternelle',
            onPressed: onAmSelected,
            isMobile: isMobile,
          ),
        ],
      ),
    );
  }

  Widget _buildChoiceButton({
    required String iconPath,
    required String label,
    required VoidCallback onPressed,
    required bool isMobile,
  }) {
    final Color baseRoseColor = Colors.pink.shade300;
    final Color initialShadow = isMobile
        ? Colors.black.withOpacity(0.45)
        : baseRoseColor.withAlpha(90);
    final Color hoverShadow = isMobile
        ? Colors.black.withOpacity(0.5)
        : baseRoseColor.withAlpha(130);
    final double initialElevation = isMobile ? 14.0 : 4.0;
    final double hoverElevation = isMobile ? 18.0 : 8.0;

    return Column(
      mainAxisSize: MainAxisSize.min,
      children: [
        HoverReliefWidget(
          onPressed: onPressed,
          borderRadius: BorderRadius.circular(15.0),
          initialElevation: initialElevation,
          hoverElevation: hoverElevation,
          initialShadowColor: initialShadow,
          hoverShadowColor: hoverShadow,
          child: Padding(
            padding: EdgeInsets.all(isMobile ? 6.0 : 8.0),
            child: Image.asset(iconPath, height: isMobile ? 140 : 170),
          ),
        ),
        SizedBox(height: isMobile ? 10 : 15),
        Text(
          label,
          style: GoogleFonts.merienda(
            fontSize: isMobile ? 20 : 26,
            fontWeight: FontWeight.w600,
            color: Colors.black.withOpacity(0.85),
          ),
          textAlign: TextAlign.center,
        ),
      ],
    );
  }
}
