Skip to main content

PDFTemplate

Implemented

Printable document shell (ticket, refund, payment receipt, monthly statement). Pure presentational React rendered to static markup — `renderToStaticMarkup` for a server PDF pipeline, or the browser print dialog as-is. Print template: fixed theme, A4 width, no responsive/dark axes.

Categorytemplates
Sourcesrc/components/templates/pdftemplate/PdfTemplate.tsx
AI HintUse for printable documents (receipts, tickets, PDF exports). Render via renderToStaticMarkup on the server or the browser print dialog. Print medium: fixed theme + A4 width — do NOT add responsive or dark-mode behaviour.

Coquille de document imprimable (billet, remboursement, reçu de paiement, relevé mensuel). Thème fixe print, largeur A4 (210 mm), copy bilingue FR/EN — « Document généré par ePassLive. Conservez ce document en lieu sûr. »

PdfTemplate

Template - Wallet family (Family 5)

Document imprimable (police secondaire, sérigraphie). En-tête (titre localisé + référence), bloc corps libre, bloc détails (<dl> key/valeur, ligne Total en gras), pied de page bilingue. Rendu : renderToStaticMarkup côté serveur ou dialogue d’impression du navigateur.

Billet

Référence : EPL-2026-00001

Festival Jazz MTL — Quartet

Place des Festivals — 24 juin 2026, 20 h

Porte 4 — Orchestre — Siège B12

Acheteur
Marie Tremblay
Sous-total
184,00 $
Frais de service
9,20 $
TPS + TVQ
29,32 $
Total
222,52 $
Document généré par ePassLive. Conservez ce document en lieu sûr.

Print considerations

PdfTemplate est un template print : les axes web classiques (responsive 320 px, thème sombre/clair) ne s'appliquent pas — un document PDF est un média à thème fixe et largeur fixe (A4, 210 mm). Ce qui s'applique et est vérifié : tokens ep-* print-safe (zéro hex brut), copy bilingue avec accents, structure sémantique (role="document" + landmarks), variantes print (print:shadow-none, print:break-inside-avoid).

Intégration serveur (note, pas de migration) : aucun service PDF n'existe aujourd'hui dans le monorepo (aucune dépendance puppeteer / wkhtmltopdf / react-pdf dans medusa-core ou storefront). Quand un pipeline PDF verra le jour, il devrait consommer ce composant via renderToStaticMarkup(<PdfTemplate … />) plutôt que de réimplémenter une mise en page de reçu.

Prop
Type
Default
Description
type*
'ticket' | 'refund' | 'payment' | 'monthly'
—

Type de document — pilule le titre par défaut et le label du bloc corps (localisés).

reference
string
—

Référence du document affichée à côté du titre. Omise → pas de ligne.

title
string
—

Remplace le titre par défaut du type.

items
PdfTemplateItem[]
—

Lignes key/valeur du bloc détails — { label, value, emphasis? } ; emphasis = ligne Total en gras.

children
React.ReactNode
—

Slot corps libre (résumé d’événement, avis, tableau…).

locale
'fr' | 'en'
—

Locale de la copy intégrée (défaut fr).

className
string
—

Classes additionnelles sur le <article> racine.

Props

Preview

PDFTemplate

Prop
Type
Required
Default
Description
type
'ticket' | 'refund' | 'payment' | 'monthly'
Required
—

Kind of document — drives the default heading and the body landmark label (localized).

reference
string
Optional
—

Document reference/number shown beside the heading. Omitted → no reference line.

title
string
Optional
type label

Overrides the default document-type heading.

items
PdfTemplateItem[]
Optional
—

Key/value lines of the details block. `{ label, value, emphasis? }` — emphasis renders a Total-style strong row. Empty/omitted → no details block.

children
React.ReactNode
Optional
—

Free-form body slot (event summary, notice, line-item table…).

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

Locale of the built-in copy (type headings, Details/Reference labels, footer). FR-CA primary market.

className
string
Optional
—

Extra classes appended to the root `<article>` element.

Quick use:<PDFTemplate />

Accessibility

ARIA roledocument

i18n

1 rule

NASA Rule 5

All built-in copy resolves from the fr/en module-scope label maps — French entries carry proper accents (« Reçu de paiement », « lieu sûr »)

a11y

1 rule

NASA Rule 5

Root is <article role="document"> with a localized aria-label; header/body/details/footer landmarks stay semantic in the static markup

tokens

1 rule

NASA Rule 5

Zero raw hex / named colors — every color goes through ep-* semantic tokens (print-safe: near-black text on white card)

print

1 rule

NASA Rule 5

Print adaptations only: A4 width (max-w-[210mm]), print:shadow-none, print:break-inside-avoid on blocks — no responsive/dark axes (fixed print medium)

Usage

Import

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

Example 1

tsxSnippet
<PdfTemplate type="ticket" reference="EPL-2026-00001" items={ticketItems}><EventSummary /></PdfTemplate>

Example 2

tsxSnippet
<PdfTemplate type="payment" locale="en" items={paymentItems} />

Anti-patterns

— Do not include business logic in templates

— Avoid hardcoded content in templates

Design System v4.1.0 | ePassLive