export type DossierStatus = 'draft' | 'scheduled' | 'live'; export interface Dossier { id: string; title: string; leakDate: string; // display date summary: string; classification: 'UNCLASSIFIED' | 'CLASSIFIED' | 'EYES-ONLY'; status: DossierStatus; previewImageUrl: string; // cover/thumbnail (data URI recommended) /** * Paths are preferred over absolute URLs for pre-launch staging. * When deployed, VITE_PUBLIC_BASE_URL can be set to prefix these paths. */ pdfPath?: string; // e.g. /static/hosted/snyk-shadow-dossier.pdf evidencePath?: string; // e.g. /static/hosted/evidence/index.html /** Optional, for live deployments or external destinations (e.g. Gumroad). */ gumroadUrl?: string; contactEmail?: string; /** Optional verifiability fields; only render when populated with real values. */ sha256?: string; // preferred hash bytes?: number; // file size } export interface PricingTier { name: string; price: string; description: string; features: string[]; cta: string; variant: 'free' | 'premium' | 'enterprise'; /** * If actionUrl is empty or enabled=false, the CTA renders disabled. * Use this for pre-launch staging so the site does not feel like a mockup. */ actionUrl?: string; enabled?: boolean; disabledHint?: string; }