import { useState } from "react"; import { type GuestEntry, type GuestErrors, inputCls, MAX_GUESTS, } from "@/lib/registration"; interface Props { guests: GuestEntry[]; errors: GuestErrors[]; onChange: (index: number, field: keyof GuestEntry, value: string) => void; onAdd: () => void; onRemove: (index: number) => void; /** Optional suffix rendered after the guest count header (e.g. price warning) */ headerNote?: React.ReactNode; /** Whether payment has already been made (disables removal without warning) */ isPaid?: boolean; } export function GuestList({ guests, errors, onChange, onAdd, onRemove, headerNote, isPaid, }: Props) { const [removingIndex, setRemovingIndex] = useState(null); const handleRemoveClick = (index: number) => { if (isPaid) { setRemovingIndex(index); } else { onRemove(index); } }; const confirmRemove = () => { if (removingIndex !== null) { onRemove(removingIndex); setRemovingIndex(null); } }; const cancelRemove = () => { setRemovingIndex(null); }; return (

Medebezoekers{" "} ({guests.length}/{MAX_GUESTS})

{headerNote}
{guests.length < MAX_GUESTS && ( )}
{/* Removal confirmation modal for paid registrations */} {removingIndex !== null && (

Let op: gast verwijderen

Als je al betaald hebt voor deze gast krijg je geen terugbetaling bij het verwijderen.

)} {guests.length === 0 && (

Kom je met iemand mee? Voeg je medebezoekers toe. Elke extra persoon kost €2 op de drinkkaart.

)}
{guests.map((guest, idx) => (
Medebezoeker {idx + 1}
onChange(idx, "firstName", e.target.value)} placeholder="Voornaam" autoComplete="off" className={inputCls(!!errors[idx]?.firstName)} /> {errors[idx]?.firstName && ( {errors[idx].firstName} )}
onChange(idx, "lastName", e.target.value)} placeholder="Achternaam" autoComplete="off" className={inputCls(!!errors[idx]?.lastName)} /> {errors[idx]?.lastName && ( {errors[idx].lastName} )}
onChange(idx, "email", e.target.value)} placeholder="optioneel@email.be" autoComplete="off" inputMode="email" className={inputCls(!!errors[idx]?.email)} /> {errors[idx]?.email && ( {errors[idx].email} )}
onChange(idx, "phone", e.target.value)} placeholder="06-12345678" autoComplete="off" inputMode="tel" className={inputCls(!!errors[idx]?.phone)} /> {errors[idx]?.phone && ( {errors[idx].phone} )}
{/* Birthdate */}

Geboortedatum *

Geboortedatum medebezoeker {idx + 1}
{errors[idx]?.birthdate && ( {errors[idx].birthdate} )}
{/* Postcode */}
onChange(idx, "postcode", e.target.value)} placeholder="bv. 9000" autoComplete="off" inputMode="numeric" className={inputCls(!!errors[idx]?.postcode)} /> {errors[idx]?.postcode && ( {errors[idx].postcode} )}
))}
); }