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

class ButtonWidget extends StatelessWidget {
  final String text;
  final VoidCallback onPressed;
  final bool? outline;
  final double? width;

  const ButtonWidget({super.key, required this.text, required this.onPressed, this.outline, this.width});

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      style: outline == true
          ? OutlinedButton.styleFrom(
              foregroundColor: const Color.fromRGBO(0, 0, 0, 1),
              backgroundColor: Colors.transparent,
              side: const BorderSide(color: Color.fromRGBO(198, 133, 232, 1)),
              shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(20),
              ),
              minimumSize:
                  Size(MediaQuery.of(context).size.width <= 768 ? MediaQuery.of(context).size.width - 96 : 320, 44),
              padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 16),
            )
          : ElevatedButton.styleFrom(
              foregroundColor: const Color.fromRGBO(0, 0, 0, 1), // text color
              backgroundColor: const Color.fromRGBO(198, 133, 232, 1),
              side: const BorderSide(color: Color.fromRGBO(79, 51, 94, 0.4)), // border color
              shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(20), // rounded corners
              ),
              minimumSize: Size(
                  width ?? (MediaQuery.of(context).size.width <= 768 ? MediaQuery.of(context).size.width - 96 : 320),
                  44),

              padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 16),
            ),
      onPressed: onPressed,
      child: Text(
        text,
        style: _textStyle(outline),
      ),
    );
  }

  TextStyle _textStyle(bool? outline) {
    if (outline == true) {
      return GoogleFonts.inter(textStyle: const TextStyle(fontSize: 14, color: Color.fromRGBO(198, 133, 232, 1)));
    } else {
      return GoogleFonts.inter(textStyle: const TextStyle(fontSize: 14, color: Color.fromRGBO(0, 0, 0, 1)));
    }
  }
}
