re-voice/site/red-team-shadow-dossiers/types.ts

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;
}