import type { Snippet } from "svelte"; /** Un lien de navigation principal du chrome. */ export interface AppChromeNavItem { label: string; href: string; /** Marqué actif (souligné, aria-current=page). */ active?: boolean; /** Roles autorisés à voir l'item. Vide/undefined = visible par tous. */ roles?: string[]; /** Alias pratique pour un seul rôle autorisé. */ role?: string; /** Coupe la navigation tout en gardant l'item visible/annoncé. */ disabled?: boolean; ariaLabel?: string; target?: string; rel?: string; onClick?: (event: MouseEvent) => void; } /** Une option du sélecteur de thème. */ export interface AppChromeThemeOption { id: string; label: string; } export type AppChromeColorMode = "light" | "dark" | "auto"; export type AppChromeLocale = "fr" | "en"; export interface AppChromeProps { /** Nom de marque (défaut « Sentropic »). */ brandName?: string; /** Sous-titre produit sous le nom (ex. « Design System », « dataviz »). */ productName?: string; /** Source du logo carré (ex. `/SENT-logo-squared.svg`). */ logoSrc?: string; /** Texte alternatif du logo (décoratif par défaut). */ logoAlt?: string; /** Cible du lien de marque. Défaut `/`. */ brandHref?: string; /** aria-label du lien de marque (sinon dérivé de brandName + productName). */ brandLabel?: string; /** Liens de nav principaux (pills soulignées + état actif). */ nav?: AppChromeNavItem[]; /** aria-label de la nav principale. */ navLabel?: string; /** Alignement de la nav desktop, forwardé à AppHeader. */ navAlign?: "start" | "center"; /** Roles de l'utilisateur courant pour filtrer les nav items gatés par rôle. */ userRoles?: string[]; /** Options de thème. Vide => le sélecteur est masqué. */ themes?: AppChromeThemeOption[]; /** Id du thème actif. */ theme?: string; /** Callback de changement de thème. */ onThemeChange?: (id: string) => void; /** aria-label du sélecteur de thème. */ themeLabel?: string; /** Mode couleur actif. Undefined => le toggle est masqué. */ colorMode?: AppChromeColorMode; /** Callback de changement (cycle light -> dark -> auto). */ onColorModeChange?: (mode: AppChromeColorMode) => void; /** Libellés accessibles des 3 modes (light/dark/auto). */ colorModeLabels?: { light: string; dark: string; auto: string; }; /** Langue active. Undefined => le sélecteur est masqué. */ locale?: AppChromeLocale; /** Callback de changement de langue. */ onLocaleChange?: (locale: AppChromeLocale) => void; /** aria-label du sélecteur de langue. */ localeLabel?: string; /** URL du dépôt. Undefined => le lien est masqué. */ githubHref?: string; /** aria-label du lien GitHub. */ githubLabel?: string; /** Zone identité à droite (IdentityMenu, bouton connexion, …). */ identity?: Snippet; /** Contrôles additionnels dans la zone utilitaire. */ extraSelectors?: Snippet; /** État ouvert du tiroir mobile (contrôlé). */ mobileMenuOpen?: boolean; /** Callback de bascule du tiroir mobile. */ onMobileMenuToggle?: () => void; /** aria-label du bouton burger. */ menuLabel?: string; class?: string; } declare const AppChrome: import("svelte").Component; type AppChrome = ReturnType; export default AppChrome; //# sourceMappingURL=AppChrome.svelte.d.ts.map