/** * Estado de canje/venta que el ticket-card refleja en su badge. * * - `sold` — entrada vendida, todavía no canjeada (QR válido para canjear). * - `checkedIn` — entrada ya canjeada (QR ya usado en puerta). * - `neutral` — sin estado destacado (p.ej. solo se muestra el QR). */ export type TicketCardStatus = 'sold' | 'checkedIn' | 'neutral'; /** * Metadata (object-first) del componente `val-ticket-card`. * * Tarjeta presentacional de una entrada: muestra el QR (generado a partir del * `qrToken` opaco firmado), el folio, el nombre del comprador (si hay) y un * badge de estado. NO trae texto propio fijo — el consumer pasa los labels ya * resueltos (`statusSoldLabel` / `statusCheckedInLabel` / `folioLabel`). El * único texto auto-i18n son los defaults de esos labels (namespace `TicketCard`). */ export interface TicketCardMetadata { /** * Token opaco firmado que va DENTRO del QR escaneable (formato * `base64url.base64url`). Es exactamente el dato que la taquilla manda al * endpoint de canje. El componente lo codifica en el QR tal cual. */ qrToken: string; /** Folio de la entrada (número visible junto al QR). */ folio?: number | string; /** Nombre del comprador, si se capturó en la venta. */ buyerName?: string; /** Estado de la entrada (controla el color/label del badge). */ status?: TicketCardStatus; /** Título de la tarjeta (ej. nombre del evento). Opcional. */ title?: string; /** Tamaño del QR en px (default 200). */ qrSize?: number; /** Mostrar botón de descarga del QR. */ showDownload?: boolean; /** Mostrar botón de compartir el QR. */ showShare?: boolean; /** Label del prefijo de folio (default i18n: "Folio"). */ folioLabel?: string; /** Label del badge cuando `status === 'sold'` (default: "Vendida"). */ statusSoldLabel?: string; /** Label del badge cuando `status === 'checkedIn'` (default: "Canjeada"). */ statusCheckedInLabel?: string; }