import 'package:formz/formz.dart'; import '../../core/l10n/l10n.dart'; class Username extends FormzInput { const Username.pure() : super.pure(''); const Username.dirty([super.value = '']) : super.dirty(); @override String? validator(String value) { if (value.isEmpty) return L10n.current.inputUsernameRequired; if (value.length < 3) return L10n.current.inputUsernameMin; if (value.length > 30) return L10n.current.inputUsernameMax; return null; } } class Phone extends FormzInput { const Phone.pure() : super.pure(''); const Phone.dirty([super.value = '']) : super.dirty(); static final _regex = RegExp(r'^\d{7,14}$'); @override String? validator(String value) { final normalized = value.replaceAll(RegExp(r'\s+'), ''); if (normalized.isEmpty) return L10n.current.inputPhoneRequired; if (!_regex.hasMatch(normalized)) return L10n.current.inputPhoneInvalid; return null; } } class Password extends FormzInput { const Password.pure() : super.pure(''); const Password.dirty([super.value = '']) : super.dirty(); @override String? validator(String value) { if (value.isEmpty) return L10n.current.inputPasswordRequired; if (value.length < 6) return L10n.current.inputPasswordMin; return null; } } class VerificationCode extends FormzInput { const VerificationCode.pure() : super.pure(''); const VerificationCode.dirty([super.value = '']) : super.dirty(); @override String? validator(String value) { if (value.isEmpty) return L10n.current.inputCodeRequired; if (!RegExp(r'^\d{6}$').hasMatch(value)) { return L10n.current.inputCodeInvalid; } return null; } }