import parsePhoneNumberFromString, { CountryCode } from 'libphonenumber-js'; export interface PhoneNumberValidatorOptions { defaultCountry?: CountryCode; } export function phoneNumberValidator( options: PhoneNumberValidatorOptions = {} ): (value: string) => boolean { const { defaultCountry } = options; return (value: string): boolean => { // Allow empty values (use 'required' validation separately if needed) if (!value || !value.trim()) { return true; // Valid if empty (required check should be separate) } try { const phoneNumber = parsePhoneNumberFromString(value, { defaultCountry: defaultCountry, }); return !!phoneNumber && phoneNumber.isValid(); } catch (error) { return false; } }; }