TicketWallet
ImplementedThe buyer's ticket wallet: one row per ticket with a Code-128 barcode (Barcode atom, decorative) or an empty slot, event title, venue · date, door/section/seat detail, a status pill across four wallet statuses (active / used / transferred / expired) and a transfer button enabled only on active tickets.
components/organisms/ticketwallet/TicketWallet.tsxPortefeuille de billets : une rangée par billet avec un vrai barcode Code-128 (atome Barcode, décoratif), titre, lieu · date, porte/section/siège, pill de statut (Actif / Utilisé / Transféré / Expiré) et bouton Transféré actif seulement sur les billets actifs. FR-CA : « Mon portefeuille de billets · Porte 4 · Transférer ».
TicketWallet
Organism — Wallet family (Family 5)
Carte par billet. Le bouton Transférer est désactivé pour les billets non actifs et porte un nom accessible distinct par billet (« Transférer — {titre} »). Le barcode Code-128 est décoratif — l'intégration Wallet/scan est faite côté scanner.
Mon portefeuille de billets
Festival Jazz MTL — Quartet
ActifPlace des Festivals · 24 juin 2026 · 20 h
Porte 4 · Section Orchestre · Siège B12
OSM — Symphonie n° 5
ActifMaison symphonique · 18 avril 2026 · 19 h 30
Porte 2 · Section Première balcon · Siège C7
Lion d'Or — Gala Jazz
UtiliséLion d'Or · 2 mai 2026 · 21 h
Porte 1
Salle Wilfrid-Pelletier — Récital
TransféréSalle Wilfrid-Pelletier · 22 avril 2026 · 20 h
Porte 1 · Section Parterre · Siège K14
Mutek — Session 5
ExpiréQuartier des spectacles · 25 août 2025 · 21 h
Porte D
This component supports light and dark mode.
Props
tickets*WalletTicket[]Billets à afficher (peut être vide).
headingstringTitre de la section (défaut par locale : « Mon portefeuille de billets » / « My ticket wallet »).
locale'fr' | 'en'frLocalise tous les libellés internes (pills, heading, bouton, préfixes porte/section/siège).
onTransfer(ticketId: string) => voidCallback de transfert, émis par le bouton d’un billet actif.
classNamestringClasses additionnelles sur la racine <section>.
Props
TicketWallet
ticketsWalletTicket[]—Tickets to render. `WalletTicket` carries id, eventTitle, venue, pre-formatted date, door, optional section/seat, status (active | used | transferred | expired) and an optional qrPayload rendered as a Code-128 barcode.
headingstringlocale-dependent ('Mon portefeuille de billets' / 'My ticket wallet')Section heading text; defaults per locale.
locale"fr" | "en"'fr'Localizes every built-in label (heading, status pills, transfer button, door/section/seat prefixes).
onTransfer(ticketId: string) => void—Transfer callback; fired only from the per-ticket button (enabled on active tickets, distinct accessible name per ticket).
classNamestring—Appended to the root section element.
<TicketWallet />Accessibility
Type
1 ruleARIA
1 ruleContrast
1 ruleUsage
Import
import { TicketWallet } from "@epasslive/design-system"Example 1
<TicketWallet tickets={tickets} />Example 2
<TicketWallet tickets={tickets} locale="en" onTransfer={(id) => router.push(`/transfer/${id}`)} />Anti-patterns
— Do not fetch data directly in organisms
— Avoid tight coupling to specific data sources