CheckinList
ImplementedDoor-operations check-in queue — one row per attendee (name, ticket tier, door, optional pre-formatted scan time) with a live state dot and a semantic state pill (En attente / En cours / Admis / Refusé). Rows in the scanning state expose inline Admettre/Refuser buttons (visual only — no callbacks). Fully presentational static list: the caller owns scan wiring; no fetching, no Medusa subscription.
components/organisms/checkinlist/CheckinList.tsxFile d'attente à la porte pour les scanners (en attente, en cours, admis, refusé). FR-CA : « En attente · En cours · Admis · Refusé · Admettre · Refuser ».
CheckinList
Organism — Scanner family (Family 6)
Liste verticale utilisée par les agents de porte. Le badge sémantique reflète l'état (gris, bleu, emerald, rose). Des boutons Admettre/Refuser n'apparaissent que pour les scans en cours.
- Admis
Marie Tremblay
Admission générale · Porte 4 · scanné à 19:42:15
- En cours
Jean-Pierre Gauthier
Première balcon · Porte 2
- En attente
Sophie Lavoie
Admission générale · Porte 4
- Refusé
Mehdi Boudjellal
Balcon deuxième · Porte 2
This component supports light and dark mode.
Props
rows*CheckinRow[]Lignes : { id, attendeeName, ticketTier, door, state, scannedAt? } — id sert de clé React, scannedAt est pré-formaté (rendu tel quel).
locale'fr' | 'en'frBascule tous les libellés intégrés : pills d’état, ligne « Porte » / « Door », préfixe « scanné à » / « scanned at » et boutons.
classNamestringClasses additionnelles sur le <ul> racine.
Props
CheckinList
rowsCheckinRow[]—Queue rows: { id; attendeeName; ticketTier; door; state: 'waiting' | 'scanning' | 'admitted' | 'rejected'; scannedAt? } — id is the React key, scannedAt is a pre-formatted string rendered verbatim.
locale"fr" | "en"'fr'Switches every built-in label: state pills, door meta line, scan-time prefix and admit/reject action labels.
classNamestring—Appended to the root <ul> class list.
<CheckinList />Accessibility
Type
1 ruleARIA
1 ruleUsage
Import
import { CheckinList } from "@epasslive/design-system"Example 1
<CheckinList rows={[{ id: "r1", attendeeName: "Marie Tremblay", ticketTier: "Admission générale", door: "4", state: "admitted", scannedAt: "19:42:15" }, { id: "r2", attendeeName: "Jean-Pierre Gauthier", ticketTier: "Première balcon", door: "2", state: "scanning" }]} />Example 2
<CheckinList rows={queue} locale="en" className="max-w-xl" />Anti-patterns
— Do not expect onAdmit/onReject callbacks or live Medusa subscriptions — the legacy Ventixe eventId/initialScans API was never implemented here
— Do not wrap in an aria-live region without debouncing — a busy door queue would re-announce the whole list
— scannedAt is a pre-formatted string rendered verbatim — do not pass a raw timestamp expecting the organism to format it