import { clsx, type ClassValue } from "clsx"
import { twMerge } from "tailwind-merge"

export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs))
}

export function formatCurrency(amount: number) {
  return Intl.NumberFormat("en-EU", {
    style: "currency",
    currency: "EUR",
    minimumFractionDigits: 2
  }).format(amount)
}
export function formatPhoneNumber(phoneNumber: string) {
  if (!phoneNumber) return ""
  // Ensure the number starts with +
  let formatted = phoneNumber.startsWith('+') ? phoneNumber : `+${phoneNumber}`

  // Format based on country code patterns
  // US/Canada: +1 (XXX) XXX-XXXX
  if (formatted.startsWith('+1') && formatted.length === 12) {
    return `+1 (${formatted.slice(2, 5)}) ${formatted.slice(5, 8)}-${formatted.slice(8)}`
  }
  // France: +33 X XX XX XX XX
  if (formatted.startsWith('+33')) {
    const rest = formatted.slice(3)
    return `+33 ${rest.slice(0, 1)} ${rest.slice(1, 3)} ${rest.slice(3, 5)} ${rest.slice(5, 7)} ${rest.slice(7)}`
  }
  // UK: +44 XXXX XXXXXX
  if (formatted.startsWith('+44')) {
    const rest = formatted.slice(3)
    return `+44 ${rest.slice(0, 4)} ${rest.slice(4)}`
  }
  // Germany: +49 XXX XXXXXXXX
  if (formatted.startsWith('+49')) {
    const rest = formatted.slice(3)
    return `+49 ${rest.slice(0, 3)} ${rest.slice(3)}`
  }
  // Spain: +34 XXX XXX XXX
  if (formatted.startsWith('+34')) {
    const rest = formatted.slice(3)
    return `+34 ${rest.slice(0, 3)} ${rest.slice(3, 6)} ${rest.slice(6)}`
  }
  // Generic: Add + and space after country code (first 2-3 digits)
  return formatted
}

export function transformAvailabilityToSuggestions(availability: any[]) {
  return availability.flatMap((stylist: any) =>
    stylist.days.flatMap((day: any) =>
      day.slots.map((slot: any) => ({
        stylistId: stylist.stylistId,
        stylistName: stylist.name,
        interval: {
          start: slot.start,
          end: slot.end
        }
      }))
    )
  )
}

