import { z } from 'zod';
import { isValidPhoneNumber } from 'react-phone-number-input';

/**
 * Schéma du formulaire /contact — copie conforme du formulaire Contact client
 * (toutes propriétés HubSpot standard). Requis : email, prénom, nom, téléphone, message.
 */
export const contactSchema = z.object({
  email: z.string().email('Email invalide'),
  firstName: z.string().min(2, 'Prénom requis'),
  lastName: z.string().min(2, 'Nom requis'),
  company: z.string().optional(),
  phone: z
    .string()
    .min(1, 'Téléphone requis')
    .refine((v) => isValidPhoneNumber(v), 'Numéro de téléphone invalide'),
  city: z.string().optional(),
  country: z.string().optional(),
  message: z.string().min(1, 'Message requis').max(2000, '2000 caractères maximum'),
  rgpd: z.boolean().refine((v) => v === true, {
    message: 'Consentement requis pour traiter votre demande',
  }),
});

export type ContactFormValues = z.infer<typeof contactSchema>;

export const contactDefaultValues: Partial<ContactFormValues> = {
  email: '',
  firstName: '',
  lastName: '',
  company: '',
  phone: '',
  city: '',
  country: '',
  message: '',
  rgpd: false,
};

// Libellés humains pour les messages d'erreur exhaustifs.
export const fieldLabels: Record<string, string> = {
  email: 'E-mail professionnel',
  firstName: 'Prénom',
  lastName: 'Nom',
  company: "Nom de l'entreprise",
  phone: 'Numéro de téléphone',
  city: 'Ville',
  country: 'Pays/Région',
  message: 'Message',
  rgpd: 'Consentement (case à cocher)',
};
