import { type RouteId } from '../routing/route-ids'; /** * Copy roles stay separate on purpose: * - headline is the serious heading used for SEO and page structure * - proof is only ever a verifiable statement * - playfulLine is an optional wordplay hook that is never a capability claim * - cta lives on CtaCopy so action labels stay swappable */ export interface CopyBlock { readonly headline: string; readonly proof?: string; readonly playfulLine?: string; readonly body?: readonly string[]; } export interface CtaCopy { readonly label: string; readonly routeId?: RouteId; readonly href?: string; readonly external?: boolean; } export interface SectionCopy extends CopyBlock { readonly id: string; } export interface PageCopy { readonly routeId: RouteId; readonly title: string; readonly description: string; readonly hero: CopyBlock; readonly sections: readonly SectionCopy[]; readonly ctas: readonly CtaCopy[]; } export interface CaseStudySummary { readonly id: string; readonly client: string; readonly headline: string; readonly proof?: string; readonly tags: readonly string[]; readonly routeId?: RouteId; } export type LocalizedPages = Partial>; export interface SiteContent { readonly pages: LocalizedPages; }