GroupBookingForm
ImplementedGroup booking attendee-roster builder — one card per participant (full name required, optional email + accessibility note), fully controlled through attendees/onAttendeesChange. « Add attendee » disables at maxAttendees; per-row « Remove » hides at minAttendees; parent passes a pre-formatted totalLabel preview. FR/EN copy via locale prop (inline i18n, SeatMapLegend precedent).
components/organisms/groupbookingform/GroupBookingForm.tsxFormulaire de réservation de groupe avec ajout/retrait de participants et besoins d'accessibilité par ligne. FR-CA : « Réservation de groupe · Participants · Besoins d'accessibilité · Total estimé ».
GroupBookingForm
Organism — Commerce family (Family 7)
Formulaire dynamique. Chaque participant (1 ligne) comprend Nom, Courriel optionnel, Besoins d'accessibilité. Bouton Ajouter un participant désactivé au max.
Réservation de groupe — Festival Jazz MTL — Quartet
Minimum 2 participants · maximum 20.
Participant 1
Participant 2
Participant 3
Total estimé : 192,00 $ · 3 × 48,00 $ + frais
This component supports light and dark mode.
Props
eventTitle*stringTitre de l'événement affiché.
minAttendees*numberNombre minimum.
maxAttendees*numberNombre maximum.
attendees*GroupBookingAttendee[]Participants actuels.
onAttendeesChange*(next) => voidMise à jour du tableau.
totalLabelstringTotal pré-calculé par le parent.
locale"fr" | "en"Bascule des libellés (FR défaut).
classNamestringClasses additionnelles sur le wrapper.
Props
GroupBookingForm
eventTitlestring—Event title appended to the section heading.
minAttendeesnumber—Roster floor — per-row Remove hides when the count is at or below it.
maxAttendeesnumber—Roster cap — Add attendee disables when the count reaches it.
attendeesGroupBookingAttendee[]—Controlled roster rows: { id, fullName, email?, accessibility? }.
onAttendeesChange(next: GroupBookingAttendee[]) => void—Emits the next full array on every field edit, add and remove.
totalLabelstring—Pre-formatted total preview rendered in the footer (parent-computed).
locale"fr" | "en"'fr'Locale used for formatting and translated strings.
classNamestring—Additional classes merged onto the section wrapper.
<GroupBookingForm />Accessibility
Type
1 rulevalidation
1 ruleARIA
1 ruleUsage
Import
import { GroupBookingForm } from "@epasslive/design-system"Example 1
<GroupBookingForm eventTitle="Opéra" minAttendees={2} maxAttendees={20} attendees={roster} onAttendeesChange={setRoster} totalLabel="192,00 $" />Anti-patterns
— Do not fetch data directly in organisms
— Avoid tight coupling to specific data sources