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

class CustomTextField extends StatelessWidget {
  final TextEditingController controller;
  final String labelText;
  final TextInputType? keyboardType;
  final String? Function(String?)? validator;

  const CustomTextField({
    Key? key,
    required this.controller,
    required this.labelText,
    this.keyboardType,
    required this.validator,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ResponsiveBuilder(
      builder: (context, sizingInfo) {
        double widthFactor;

        if (sizingInfo.deviceScreenType == DeviceScreenType.desktop) {
          widthFactor = 0.9; // Reduce width for desktop
        } else if (sizingInfo.deviceScreenType == DeviceScreenType.tablet) {
          widthFactor = 0.8; // Slightly reduced width for tablets
        } else {
          widthFactor = 1.0; // Full width for mobile
        }

        return Center(
          child: Container(
            height: 40,
            width: MediaQuery.of(context).size.width * widthFactor,
            child: TextFormField(
              controller: controller,
              keyboardType: keyboardType,
              cursorColor: Colors.blueAccent,
              style: GoogleFonts.poppins(fontSize: 11.5),
              decoration: InputDecoration(
                hintStyle: GoogleFonts.poppins(color: Colors.grey),
                floatingLabelStyle: GoogleFonts.poppins(
                  // color: Colors.black,
                  color: Color(0xFF575A74),
                ),
                floatingLabelBehavior: FloatingLabelBehavior.always,
                labelText: labelText,
                contentPadding: EdgeInsets.symmetric(
                    vertical: 8, horizontal: 12), // Reduces inner padding
                errorStyle: GoogleFonts.poppins(
                    fontSize: 10, height: 0.8, color: Colors.red),
                border: OutlineInputBorder(
                  borderRadius: BorderRadius.circular(8),
                  borderSide: BorderSide(
                      color: Colors.grey.shade200, width: 1), // Grey border
                ),
                enabledBorder: OutlineInputBorder(
                  borderRadius: BorderRadius.circular(8),
                  borderSide: BorderSide(
                      color: Colors.grey.shade200,
                      width: 1), // Grey border when not focused
                ),
                focusedBorder: OutlineInputBorder(
                  borderRadius: BorderRadius.circular(8),
                  borderSide: BorderSide(
                      color: Colors.grey.shade200,
                      width: 1), // Blue border when focused
                ),
                errorBorder: OutlineInputBorder(
                  borderRadius: BorderRadius.circular(8),
                  borderSide: BorderSide(
                      color: Colors.grey.shade200, width: 1), // Same as normal
                ),
                focusedErrorBorder: OutlineInputBorder(
                  borderRadius: BorderRadius.circular(8),
                  borderSide: BorderSide(
                      color: Colors.grey.shade200, width: 1), // Same as focused
                ),
              ),
              validator: validator,
            ),
          ),
        );
      },
    );
  }
}
