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

import '../../constant/colors.dart';
import '../../constant/style.dart';

class MyTextForm extends StatelessWidget {
  const MyTextForm({
    super.key,
    required this.controller,
    required this.label,
    required this.hint,
    required this.type,
    this.validator,
  });
  final TextEditingController controller;
  final String label, hint;
  final TextInputType type;
  final String? Function(String?)? validator;

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.only(bottom: 10),
      child: SizedBox(
        width: Get.width * .8,
        child: TextFormField(
          keyboardType: type,
          cursorColor: AppColor.accentColor,
          controller: controller,
          decoration: InputDecoration(
            focusedBorder: OutlineInputBorder(
              borderSide: const BorderSide(
                color: AppColor.primaryColor,
                width: 2.0,
              ),
              borderRadius: BorderRadius.circular(10),
            ),
            focusColor: AppColor.accentColor,
            fillColor: AppColor.accentColor,
            border: const OutlineInputBorder(
                borderRadius: BorderRadius.all(Radius.circular(12))),
            labelText: label.tr,
            hintText: hint.tr,
            hintStyle: AppStyle.title,
            labelStyle: AppStyle.title,
          ),
          validator: validator ?? (value) {
            if (value == null || value.isEmpty) {
              return '${'Please enter'.tr} $label.'.tr;
            }

            if (type == TextInputType.emailAddress) {
              if (!value.contains('@')) {
                return 'Please enter a valid email.'.tr;
              }
            } else if (type == TextInputType.phone) {
              if (value.length > 14) {
                return 'Please enter a valid phone number.'.tr;
              }
            }

            return null;
          },
        ),
      ),
    );
  }
}
