/**
 * String utility functions
 */
import { type CountryCode, parsePhoneNumberWithError } from 'libphonenumber-js'

/**
 * Convert a string to a slug format
 * Removes special characters, replaces spaces with hyphens, and converts to lowercase
 *
 * @param text The text to convert to slug format
 * @returns The slugified text
 */
export function slugify(text: string): string {
  return text
    .toString()
    .normalize('NFD') // Split accented characters
    .replace(/[\u0300-\u036F]/g, '') // Remove diacritics
    .toLowerCase()
    .trim()
    .replace(/\s+/g, '-') // Replace spaces with -
    .replace(/[^\w-]+/g, '') // Remove all non-word chars
    .replace(/--+/g, '-') // Replace multiple - with single -
    .replace(/^-+/, '') // Trim - from start of text
    .replace(/-+$/, '') // Trim - from end of text
    .substring(0, 30) // Limit to 30 characters
}

// Function to convert phone number to international format
export function convertPhoneNumberToInternationalFormat(
  phone: string,
  countryCode: CountryCode = 'FR'
): string {
  try {
    // Use the provided country code or default to FR
    const phoneNumber = parsePhoneNumberWithError(phone, countryCode)
    if (phoneNumber && phoneNumber.isValid()) {
      return phoneNumber.format('E.164') // format: +33123456789
    }
    return phone
  } catch (error) {
    console.error('Error converting phone number:', error)
    return phone
  }
}
