import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/core/app_export.dart';
import 'package:hmg_patient_app_new/core/utils/utils.dart';
import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';

class CustomButton extends StatelessWidget {
  final String text;
  String? icon;
  final VoidCallback onPressed;
  final Color backgroundColor;
  final Color borderColor;
  final Color textColor;
  final double borderRadius;
  final double borderWidth;
  final EdgeInsetsGeometry padding;
  final double fontSize;
  final String? fontFamily;
  final FontWeight fontWeight;
  final bool isDisabled;
  final Color iconColor;
  final double height;
  final double iconSize;

  CustomButton({
    Key? key,
    required this.text,
    required this.onPressed,
    this.backgroundColor = const Color(0xFFED1C2B),
    this.borderColor = const Color(0xFFED1C2B),
    this.textColor = Colors.white,
    this.borderRadius = 12,
    this.borderWidth = 2,
    this.padding = const EdgeInsets.fromLTRB(8, 10, 8, 10),
    this.fontSize = 16,
    this.fontFamily,
    this.fontWeight = FontWeight.w500,
    this.isDisabled = false,
    this.icon,
    this.iconColor = Colors.white,
    this.height = 56,
    this.iconSize = 24,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
        onTap: isDisabled ? null : onPressed,
        child: Container(
          height: height,
          decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
              color: isDisabled ? Colors.transparent : backgroundColor,
              borderRadius: borderRadius,
              side: BorderSide(
                width: borderWidth,
                color: isDisabled ? borderColor.withOpacity(0.5) : borderColor,
              )),
          child: Padding(
            padding: padding,
            child: Row(
              crossAxisAlignment: CrossAxisAlignment.center,
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                if (icon != null)
                  Padding(
                    padding: const EdgeInsets.only(right: 8.0),
                    child: Utils.buildSvgWithAssets(icon: icon!, iconColor: iconColor, isDisabled: isDisabled, width: iconSize, height: iconSize),
                  ),
                Text(
                  text,
                  style: context.dynamicTextStyle(
                    fontSize: fontSize.fSize,
                    color: isDisabled ? textColor.withOpacity(0.5) : textColor,
                    letterSpacing: -0.4,
                    fontWeight: fontWeight,
                  ),
                ),
              ],
            ),
          ),
        )

        //     .toSmoothContainer(
        //   smoothness: 1,
        //   side: BorderSide(width: borderWidth, color: backgroundColor),
        //   borderRadius: BorderRadius.circular(borderRadius * 1.2),
        //   foregroundDecoration: BoxDecoration(
        //     color: isDisabled ? backgroundColor.withOpacity(0.5) : Colors.transparent,
        //     borderRadius: BorderRadius.circular(borderRadius),
        //   ),
        // ),
        );
  }
}
