/** Version de schéma du contrat `SiteConfig`. **STABLE / FIGÉ v1** : évolution * UNIQUEMENT additive (nouvelles clés optionnelles) — aucune suppression/rename de * clé existante sans bump majeur. Les consommateurs (geo, dataviz, docs…) peuvent * construire contre v1 sans crainte de rupture. Skew toléré (cf. en-tête). */ export declare const SITE_CONFIG_SCHEMA_VERSION: 1; /** Deux modes pour toute action navigable : `callback` (SPA riche) ou `navigate` * (lien `href`, marche en HTML pur / site vitrine sans JS applicatif). */ export type ActionMode = "callback" | "navigate"; export interface SiteNavItem { label: string; href: string; /** Marqué actif (souligné, aria-current=page). Sinon dérivé de `activePath`. */ active?: boolean; /** Sous-navigation optionnelle. */ children?: SiteNavItem[]; } export interface ThemeOption { id: string; label: string; } export type ColorMode = "light" | "dark" | "auto"; export interface SiteConfig { /** Version de schéma du contrat (info ; le shell ne throw jamais sur écart). */ schemaVersion?: number; brand: { name: string; productName?: string; logoSrc?: string; href?: string; label?: string; }; nav?: SiteNavItem[]; /** Chemin courant : calcule `active` si non fourni explicitement par item. */ activePath?: string; navLabel?: string; search?: { enabled: boolean; placeholder?: string; mode: ActionMode; onSearch?: (query: string) => void; hrefTemplate?: string; }; theming: { themes: ThemeOption[]; theme: string; colorMode?: ColorMode; onThemeChange?: (id: string) => void; onColorModeChange?: (mode: ColorMode) => void; themeLabel?: string; colorModeLabels?: { light: string; dark: string; auto: string; }; }; locale?: { current: string; available: Array<{ code: string; label: string; }>; mode?: ActionMode; onChange?: (code: string) => void; hrefTemplate?: string; label?: string; }; frameworkSwitcher?: { enabled: boolean; current: string; available: Array<{ id: string; label: string; }>; mode: ActionMode; onChange?: (id: string) => void; hrefTemplate?: string; }; identity?: { state: "anonymous" | "authenticated"; user?: { name: string; avatarSrc?: string; }; signInHref?: string; onSignIn?: () => void; onSignOut?: () => void; menu?: Array<{ label: string; href?: string; onClick?: () => void; }>; label?: string; }; links?: { github?: string; }; slots?: { extraActions?: boolean; searchResults?: boolean; }; } /** Token contract : les `--st-*` que le shell CONSOMME (doivent être fournis par le * thème actif de l'hôte ; fallback CSS sinon, jamais de trou visuel). Sert de * référence de découplage shell ⇄ thèmes. */ export declare const SHELL_TOKEN_CONTRACT: readonly ["--st-semantic-surface-default", "--st-semantic-text-primary", "--st-semantic-text-secondary", "--st-semantic-border-subtle", "--st-font-sans", "--st-spacing-4", "--st-spacing-6", "--st-shadow-lg"]; //# sourceMappingURL=site-config.d.ts.map