import { QrResult } from '../../../services/qr-generator/types'; /** * Theme presets for quick styling. */ export type QrDisplayTheme = 'default' | 'minimal' | 'gradient-purple' | 'gradient-blue' | 'gradient-sunset' | 'gradient-mint' | 'dark' | 'neon'; /** * Label position options. */ export type QrLabelPosition = 'top' | 'bottom'; /** * Gradient direction options. */ export type QrGradientDirection = 'to-right' | 'to-left' | 'to-bottom' | 'to-top' | 'to-bottom-right' | 'to-bottom-left' | 'to-top-right' | 'to-top-left'; /** * Gradient configuration for backgrounds. */ export interface QrDisplayGradient { /** Start color */ from: string; /** End color */ to: string; /** Optional middle color */ via?: string; /** Gradient direction */ direction?: QrGradientDirection; } /** * Label configuration for QR display. */ export interface QrLabelConfig { /** Label text */ text: string; /** Position (top or bottom) */ position?: QrLabelPosition; /** Text color */ color?: string; /** Font size in pixels */ fontSize?: number; /** Font weight */ fontWeight?: 'normal' | 'medium' | 'semibold' | 'bold'; /** Icon name (ionicon) to show with label */ icon?: string; /** Icon position */ iconPosition?: 'start' | 'end'; } /** * Metadata for the QR code display component. */ export interface QrCodeMetadata { /** QR result from QrGeneratorService */ qr: QrResult; /** Alt text for accessibility */ alt?: string; /** Whether to show download button */ showDownload?: boolean; /** Download button label */ downloadLabel?: string; /** Whether to show copy button */ showCopy?: boolean; /** Copy button label */ copyLabel?: string; /** Whether to show share button */ showShare?: boolean; /** Share button label */ shareLabel?: string; /** Custom CSS class */ cssClass?: string; /** Size override (will scale the image) */ displaySize?: number; /** Border radius for the container */ borderRadius?: number; /** Show border around QR */ showBorder?: boolean; /** Border color */ borderColor?: string; /** Padding around the QR code */ padding?: number; /** Background color for container */ containerBackground?: string; /** Loading state */ loading?: boolean; /** Custom filename for download (without extension) */ downloadFilename?: string; /** Share title */ shareTitle?: string; /** Share text/description */ shareText?: string; /** Custom filename for share */ shareFilename?: string; /** Theme preset for quick styling */ theme?: QrDisplayTheme; /** Label/caption configuration */ label?: QrLabelConfig; /** Gradient background (overrides containerBackground) */ gradient?: QrDisplayGradient; /** Box shadow (e.g., 'sm', 'md', 'lg', 'xl', or custom CSS) */ shadow?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | string; /** Glow effect color (for neon theme) */ glowColor?: string; /** Enable pulse animation on hover */ pulseOnHover?: boolean; /** Enable scale animation on hover */ scaleOnHover?: boolean; /** QR image border radius (to round the QR itself) */ qrBorderRadius?: number; /** Reactive content keys */ downloadLabelContentKey?: string; copyLabelContentKey?: string; shareLabelContentKey?: string; contentClass?: string; } /** * Event emitted after QR code action. */ export interface QrCodeActionEvent { /** Action type */ action: 'download' | 'copy' | 'share'; /** Whether action was successful */ success: boolean; /** QR result */ qr: QrResult; /** Error if action failed */ error?: Error; }