import { LocalizedHtmlContent, LocalizedTextContent } from '../../../shared/models/config';
export interface ContentPageSeoConfig {
title?: string;
description?: string;
keywords?: string;
canonical?: string;
ogTitle?: string;
ogDescription?: string;
ogImage?: string;
robots?: string;
}
export interface ContentPageTranslation {
title?: string;
html?: string;
seo?: ContentPageSeoConfig;
}
export type ContentPageStatus = 'draft' | 'published';
export interface ContentPage {
id: string;
slug: string;
/** Editable independently of `slug`; defaults from it but may diverge (e.g. legacy redirects). */
route: string;
title: string;
icon?: string;
order: number;
showInFooter: boolean;
showInHeader: boolean;
showInSitemap: boolean;
visibility: {
desktop?: boolean;
tablet?: boolean;
mobile?: boolean;
};
requiresAuthentication: boolean;
footerGroup?: string;
translations: Record;
seo?: ContentPageSeoConfig;
/** Master on/off switch; a disabled page never resolves on the storefront. */
enabled: boolean;
/** Per-page publish lifecycle, independent of the whole-bootstrap draft/publish cycle. */
status: ContentPageStatus;
customTemplate?: string;
heroImage?: string;
thumbnail?: string;
gallery?: string[];
}
export interface ContentPageBootstrapInput {
id: string;
slug: string;
route?: string;
title?: string | LocalizedTextContent;
showInFooter?: boolean;
showInHeader?: boolean;
showInSitemap?: boolean;
icon?: string;
order?: number;
visibility?: {
desktop?: boolean;
tablet?: boolean;
mobile?: boolean;
};
requiresAuthentication?: boolean;
footerGroup?: string;
translations?: Record;
html?: string | LocalizedHtmlContent;
seo?: ContentPageSeoConfig | { title?: string | LocalizedTextContent; description?: string | LocalizedTextContent; keywords?: string; canonical?: string; ogTitle?: string | LocalizedTextContent; ogDescription?: string | LocalizedTextContent; ogImage?: string; robots?: string; metaTags?: Array<{ name?: string; property?: string; content: string }>; };
enabled?: boolean;
status?: ContentPageStatus;
customTemplate?: string;
heroImage?: string;
thumbnail?: string;
gallery?: string[];
}