50 lines
1.5 KiB
TypeScript
Raw Normal View History

/**
* Toolkit - Phone Number Formatting
*
* Utilities for formatting phone numbers.
*/
/**
* Format a phone number for display
* Handles basic international formats
*/
export function formatPhoneNumber(phone: string): string {
// Remove all non-digit characters
const digits = phone.replace(/\D/g, "");
// Handle common formats
if (digits.length === 10) {
// US/Canada format: (123) 456-7890
return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;
} else if (digits.length === 11 && digits.startsWith("1")) {
// US/Canada with country code: +1 (123) 456-7890
return `+1 (${digits.slice(1, 4)}) ${digits.slice(4, 7)}-${digits.slice(7)}`;
} else if (digits.length >= 10) {
// International format: +XX XXX XXX XXXX
const countryCode = digits.slice(0, digits.length - 10);
const areaCode = digits.slice(-10, -7);
const localPrefix = digits.slice(-7, -4);
const localNumber = digits.slice(-4);
return `+${countryCode} ${areaCode} ${localPrefix} ${localNumber}`;
}
// Return original if no known format matches
return phone;
}
/**
* Normalize a phone number to E.164 format (+XXXXXXXXXXX)
*/
export function normalizePhoneNumber(phone: string, defaultCountryCode = "1"): string {
const digits = phone.replace(/\D/g, "");
// If already has country code, return with +
if (digits.length >= 10 && !digits.startsWith(defaultCountryCode)) {
return `+${digits}`;
}
// Add default country code
return `+${defaultCountryCode}${digits}`;
}