44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
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;
|
|
}
|