'use client'; import { useState, useEffect } from 'react'; import AlertModal from './AlertModal'; interface UniversPro { id: string; nom: string; prenom: string; telephone: string; email: string; adresse: string; nomEntreprise: string; } interface UniversProFormProps { contact: UniversPro | null; onClose: () => void; } export default function UniversProForm({ contact, onClose }: UniversProFormProps) { const [loading, setLoading] = useState(false); const [isMobile, setIsMobile] = useState(false); const [alertModal, setAlertModal] = useState<{ show: boolean; type: 'success' | 'error' | 'info' | 'warning'; title: string; message: string; } | null>(null); const [formData, setFormData] = useState({ nom: '', prenom: '', telephone: '', email: '', adresse: '', nomEntreprise: '', }); useEffect(() => { if (contact) { setFormData({ nom: contact.nom, prenom: contact.prenom, telephone: contact.telephone, email: contact.email, adresse: contact.adresse, nomEntreprise: contact.nomEntreprise, }); } }, [contact]); useEffect(() => { const checkMobile = () => { setIsMobile(window.innerWidth < 768); // md breakpoint }; checkMobile(); window.addEventListener('resize', checkMobile); return () => window.removeEventListener('resize', checkMobile); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); try { const url = contact ? `/api/univers-pro/${contact.id}` : '/api/univers-pro'; const method = contact ? 'PUT' : 'POST'; const response = await fetch(url, { method, headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(formData), }); if (response.ok) { onClose(); } else { const error = await response.json(); setAlertModal({ show: true, type: 'error', title: 'Erreur', message: error.error || 'Une erreur est survenue', }); } } catch (error) { console.error('Erreur:', error); setAlertModal({ show: true, type: 'error', title: 'Erreur', message: 'Une erreur est survenue', }); } finally { setLoading(false); } }; // Si on est sur mobile, afficher un message au lieu du formulaire if (isMobile) { return (

{contact ? 'Modifier le contact' : 'Nouveau contact'}

Utilisez un ordinateur

Pour {contact ? 'modifier' : 'créer'} un contact professionnel, veuillez utiliser un ordinateur. Cette fonctionnalité n'est pas optimisée pour les appareils mobiles.

); } return (

{contact ? 'Modifier le contact' : 'Nouveau contact'}

{contact ? 'Modifiez les informations du contact ci-dessous.' : 'Remplissez les informations pour créer un nouveau contact professionnel.'}

setFormData({ ...formData, nom: e.target.value })} className="w-full pl-10 pr-3 py-2 border border-gray-300 rounded-lg text-gray-900 focus:outline-none focus:ring-2 focus:ring-lblue focus:border-transparent" />
setFormData({ ...formData, prenom: e.target.value })} className="w-full pl-10 pr-3 py-2 border border-gray-300 rounded-lg text-gray-900 focus:outline-none focus:ring-2 focus:ring-lblue focus:border-transparent" />
setFormData({ ...formData, telephone: e.target.value })} className="w-full pl-10 pr-3 py-2 border border-gray-300 rounded-lg text-gray-900 focus:outline-none focus:ring-2 focus:ring-lblue focus:border-transparent" />
setFormData({ ...formData, email: e.target.value })} className="w-full pl-10 pr-3 py-2 border border-gray-300 rounded-lg text-gray-900 focus:outline-none focus:ring-2 focus:ring-lblue focus:border-transparent" />
setFormData({ ...formData, nomEntreprise: e.target.value })} className="w-full pl-10 pr-3 py-2 border border-gray-300 rounded-lg text-gray-900 focus:outline-none focus:ring-2 focus:ring-lblue focus:border-transparent" />
setFormData({ ...formData, adresse: e.target.value })} className="w-full pl-10 pr-3 py-2 border border-gray-300 rounded-lg text-gray-900 focus:outline-none focus:ring-2 focus:ring-lblue focus:border-transparent" />
{/* Modal d'alerte */} {alertModal && ( setAlertModal(null)} /> )}
); }