"use client"; import React, { useState, useEffect } from 'react'; import { createPortal } from 'react-dom'; import { ShieldAlert, X, AlertOctagon } from 'lucide-react'; import { toast } from 'react-hot-toast'; interface SuspensionModalProps { isOpen: boolean; onClose: () => void; onConfirm: (reason: string) => Promise; title: string; subtitle: string; } export default function SuspensionModal({ isOpen, onClose, onConfirm, title, subtitle }: SuspensionModalProps) { const [reason, setReason] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); return () => setMounted(false); }, []); if (!isOpen || !mounted) return null; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!reason.trim()) { toast.error("Veuillez saisir un motif de suspension"); return; } setIsSubmitting(true); try { await onConfirm(reason); setReason(''); onClose(); } catch (error) { console.error(error); } finally { setIsSubmitting(false); } }; const modalContent = (

{title}

{subtitle}