export type ButtonVariant = 'primary' | 'secondary' | 'ghost';
export type PageFamily = 'landing' | 'trust' | 'content';
export type PageRole =
    | 'home'
    | 'product'
    | 'trust'
    | 'changelog'
    | 'contact'
    | 'privacy'
    | 'imprint'
    | 'solutions'
    | 'integrations'
    | 'legal'
    | 'terms';
export type SitePath =
    | '/'
    | '/product'
    | '/trust'
    | '/changelog'
    | '/integrations'
    | '/solutions'
    | '/contact'
    | '/legal'
    | '/privacy'
    | '/imprint'
    | '/terms'
    | '/security-trust';
export type ShellTone = 'brand' | 'neutral' | 'trust';
export type FooterIntent = 'conversion' | 'guidance' | 'legal';
export type SurfacePriority = 'required' | 'recommended' | 'secondary' | 'compatibility';
export type JourneyStage = 'entry' | 'first-clarification' | 'deepening' | 'action';
export type SurfaceGroup = 'core' | 'supporting' | 'legal' | 'compatibility';
export type CollectionName = 'articles' | 'changelog' | 'resources';

export interface CtaLink {
    href: string;
    label: string;
    helper?: string;
    target?: '_blank' | '_self';
    variant?: ButtonVariant;
}

export interface NavigationItem {
    href: string;
    label: string;
    description?: string;
}

export interface SurfaceAvailability {
    articles: boolean;
    changelog: boolean;
    resources: boolean;
}

export interface FooterNavigationGroup {
    items: NavigationItem[];
    title: string;
}

export interface FooterLead {
    description: string;
    eyebrow: string;
    intent: FooterIntent;
    primaryCta: CtaLink;
    title: string;
}

export interface PageDefinition {
    canonicalPath: SitePath;
    family: PageFamily;
    footerLead?: Partial<FooterLead>;
    headerCta?: Partial<CtaLink>;
    inSitemap: boolean;
    journeyStage: JourneyStage;
    pageRole: PageRole;
    path: SitePath;
    priority: SurfacePriority;
    shellTone: ShellTone;
    surfaceGroup: SurfaceGroup;
}

export interface SiteMetadata {
    siteDescription: string;
    siteName: string;
    siteTagline: string;
    siteUrl: string;
}

export interface PageSeo {
    description: string;
    ogDescription?: string;
    ogTitle?: string;
    path: string;
    title: string;
}

export interface HeroContent {
    description: string;
    eyebrow: string;
    highlights?: string[];
    primaryAnchor?: HeroPrimaryAnchor;
    primaryCta: CtaLink;
    productVisual?: HeroVisualContent;
    secondaryCta?: CtaLink;
    title: string;
    titleHtml?: string;
    trustSubclaims?: string[];
    visualFocus?: HeroVisualFocusContent;
}

export interface MetricItem {
    description: string;
    label: string;
    value: string;
}

export interface FeatureItemContent {
    description: string;
    eyebrow?: string;
    href?: string;
    icon?: string;
    meta?: string;
    title: string;
}

export interface CalloutContent {
    description: string;
    eyebrow?: string;
    title: string;
    tone?: 'accent' | 'neutral' | 'subtle';
}

export interface AudienceRowContent {
    audience: string;
    bullets: string[];
    cta?: CtaLink;
    description: string;
    title: string;
}

export interface TrustPrincipleContent {
    description: string;
    note?: string;
    title: string;
}

export interface IntegrationEntry {
    category: string;
    name: string;
    note?: string;
    summary: string;
}

export interface LogoStripItem {
    label: string;
    note?: string;
}

export interface LegalSection {
    body: string[];
    bullets?: string[];
    title: string;
}

export interface HeroVisualContent {
    alt: string;
    src: string;
}

export type HeroPrimaryAnchor = 'headline' | 'product-visual' | 'composition';

export interface HeroVisualFocusContent {
    eyebrow: string;
    points: string[];
    title: string;
}

export interface OutcomeItemContent {
    description: string;
    title: string;
}

export interface OutcomeSectionContent {
    audienceBias?: string;
    description: string;
    outcomes: OutcomeItemContent[];
    title: string;
}

export interface CapabilityClusterContent {
    capabilities: string[];
    description: string;
    href?: string;
    meta?: string;
    title: string;
}

export interface TrustSignalGroupContent {
    description: string;
    signals: TrustPrincipleContent[];
    supportRoute: string;
    title: string;
}

export interface ProgressTeaserEntry {
    date: Date;
    description: string;
    title: string;
}

export interface ProgressTeaserContent {
    cta: CtaLink;
    description: string;
    entries: ProgressTeaserEntry[];
    title: string;
}

export interface VisualFoundationContract {
    accessibilityBaseline: readonly string[];
    ctaHierarchy: readonly ButtonVariant[];
    pageFamilies: readonly PageFamily[];
    requiredColorRoles: readonly string[];
    surfaceLayers: readonly string[];
}
