Skip to main content

TicketTransferModal

Implemented

Ticket transfer dialog — enter recipient email, select the ticket to transfer, add an optional message, and confirm. Composes the Modal molecule for dialog chrome (portal, scrim, footer slot). Preserves legacy transfer flow.

Categoryorganisms
Sourcecomponents/organisms/tickettransfermodal/TicketTransferModal.tsx
AI HintUse from order history to initiate ticket transfer. Composes the Modal molecule — do not reimplement dialog chrome.

Boîte de dialogue modale de transfert de billet (destinataire + message optionnel). FR-CA : « Transférer ce billet · Courriel du destinataire · Envoyer le transfert · Annuler ».

TicketTransferModal

Organism — Commerce family (Family 7)

Modal contrôlée avec role="dialog" et aria-modal="true". Le parent gère `open` ; la fermeture déclenche `onClose`. Le focus est piégé à l'intérieur (géré par le navigateur via autofocus).

This component supports light and dark mode.

Props

Prop
Type
Default
Description
open*
boolean
—

Visibilité.

onClose*
() => void
—

Fermeture (bouton ✕, clic backdrop, Escape via footer).

ticket*
{ id; eventTitle; tier; date }
—

Billet à transférer.

locale
'fr' | 'en'
fr

Bascule des libellés.

className
string
—

Classe CSS additionnelle appliquée au wrapper du contenu.

Props

Preview

TicketTransferModal

Prop
Type
Required
Default
Description
open
boolean
Required
—

Whether the transfer dialog is visible.

onClose
() => void
Required
—

Called when the dialog should close (cancel, submit, or ESC).

ticket
{ id: string; eventTitle: string; tier: string; date: string }
Required
—

The ticket to transfer — displays event title, tier, and date in the header.

locale
"fr" | "en"
Optional
'fr'

Locale for labels — switches between French and English strings.

className
string
Optional
—

Additional CSS class applied to the children wrapper div.

Quick use:<TicketTransferModal />

Accessibility

ARIA roledialog

composition

1 rule

L8a Wave 3 Tier 2

Composes Modal molecule — dialog chrome (portal, scrim, ESC, focus trap) owned by Modal

behavior

3 rules

i18n pattern

Locale-aware labels — fr/en switch for title, recipient, note, confirm, cancel, close

HTML spec

Form submit via HTML form attribute — confirm button in footer slot triggers form in children

Modal molecule footer prop

Cancel/confirm button pair rendered in Modal footer slot

Usage

Import

tsxSnippet
import { TicketTransferModal } from "@epasslive/design-system"

Example 1

tsxSnippet
<TicketTransferModal open={true} onClose={() => {}} ticket={{ id: '1', eventTitle: 'Concert', tier: 'VIP', date: '2026-08-28' }} />

Anti-patterns

— Do not reimplement dialog chrome — Modal molecule handles portal, scrim, ESC, focus trap

— Do not pass legacy isOpen/orderTickets/onTransfer props — use open/ticket/onClose

Design System v4.1.0 | ePassLive