/** * 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; /** URL pública para compartir (link). Si el native share falla, se copia al clipboard en su lugar. */ shareUrl?: string; /** URL del logo de marca para la tarjeta compartida. */ shareLogoUrl?: string; /** Color de fondo del encabezado en la tarjeta compartida. Default: gradiente bingo. */ shareBrandColor?: string; /** Color secundario del gradiente (optional). */ shareBrandColorTo?: string; /** Nombre de evento / marca en la tarjeta compartida. */ shareBrandName?: string; /** Label del folio en la tarjeta compartida. Default "Cartón". */ shareFolioLabel?: string; /** Fecha del evento para la tarjeta compartida (ya formateada para mostrar). */ shareEventDate?: string; /** Lugar del evento para la tarjeta compartida. */ shareEventLocation?: string; /** Texto hint bajo el QR en la tarjeta compartida. */ shareScanHint?: string; /** Label del share button. */ shareLabel?: string; /** Label del download button. */ downloadLabel?: string; }