import { type PropType, type VNode } from "vue"; 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; } export interface AppChromeThemeOption { id: string; label: string; } export type AppChromeColorMode = "light" | "dark" | "auto"; export type AppChromeLocale = "fr" | "en"; export type AppChromeProps = { brandName?: string; productName?: string; logoSrc?: string; logoAlt?: string; brandHref?: string; brandLabel?: string; nav?: AppChromeNavItem[]; navLabel?: string; /** Roles de l'utilisateur courant pour filtrer les nav items gatés par rôle. */ userRoles?: string[]; themes?: AppChromeThemeOption[]; theme?: string; onThemeChange?: (id: string) => void; themeLabel?: string; colorMode?: AppChromeColorMode; onColorModeChange?: (mode: AppChromeColorMode) => void; colorModeLabels?: { light: string; dark: string; auto: string; }; locale?: AppChromeLocale; onLocaleChange?: (locale: AppChromeLocale) => void; localeLabel?: string; githubHref?: string; githubLabel?: string; mobileMenuOpen?: boolean; onMobileMenuToggle?: () => void; menuLabel?: string; class?: string; }; export declare const AppChrome: import("vue").DefineComponent; default: () => never[]; }; navLabel: { type: StringConstructor; default: string; }; userRoles: { type: PropType; default: () => never[]; }; themes: { type: PropType; default: () => never[]; }; theme: { type: StringConstructor; default: undefined; }; onThemeChange: { type: PropType<(id: string) => void>; default: undefined; }; themeLabel: { type: StringConstructor; default: string; }; colorMode: { type: PropType; default: undefined; }; onColorModeChange: { type: PropType<(mode: AppChromeColorMode) => void>; default: undefined; }; colorModeLabels: { type: PropType<{ light: string; dark: string; auto: string; }>; default: () => { light: string; dark: string; auto: string; }; }; locale: { type: PropType; default: undefined; }; onLocaleChange: { type: PropType<(locale: AppChromeLocale) => void>; default: undefined; }; localeLabel: { type: StringConstructor; default: string; }; githubHref: { type: StringConstructor; default: undefined; }; githubLabel: { type: StringConstructor; default: string; }; mobileMenuOpen: { type: BooleanConstructor; default: boolean; }; onMobileMenuToggle: { type: PropType<() => void>; default: undefined; }; menuLabel: { type: StringConstructor; default: string; }; class: { type: StringConstructor; default: undefined; }; }>, () => VNode, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly; default: () => never[]; }; navLabel: { type: StringConstructor; default: string; }; userRoles: { type: PropType; default: () => never[]; }; themes: { type: PropType; default: () => never[]; }; theme: { type: StringConstructor; default: undefined; }; onThemeChange: { type: PropType<(id: string) => void>; default: undefined; }; themeLabel: { type: StringConstructor; default: string; }; colorMode: { type: PropType; default: undefined; }; onColorModeChange: { type: PropType<(mode: AppChromeColorMode) => void>; default: undefined; }; colorModeLabels: { type: PropType<{ light: string; dark: string; auto: string; }>; default: () => { light: string; dark: string; auto: string; }; }; locale: { type: PropType; default: undefined; }; onLocaleChange: { type: PropType<(locale: AppChromeLocale) => void>; default: undefined; }; localeLabel: { type: StringConstructor; default: string; }; githubHref: { type: StringConstructor; default: undefined; }; githubLabel: { type: StringConstructor; default: string; }; mobileMenuOpen: { type: BooleanConstructor; default: boolean; }; onMobileMenuToggle: { type: PropType<() => void>; default: undefined; }; menuLabel: { type: StringConstructor; default: string; }; class: { type: StringConstructor; default: undefined; }; }>> & Readonly<{}>, { class: string; nav: AppChromeNavItem[]; menuLabel: string; brandName: string; productName: string; logoSrc: string; logoAlt: string; brandHref: string; brandLabel: string; navLabel: string; userRoles: string[]; themes: AppChromeThemeOption[]; theme: string; onThemeChange: (id: string) => void; themeLabel: string; colorMode: AppChromeColorMode; onColorModeChange: (mode: AppChromeColorMode) => void; colorModeLabels: { light: string; dark: string; auto: string; }; locale: AppChromeLocale; onLocaleChange: (locale: AppChromeLocale) => void; localeLabel: string; githubHref: string; githubLabel: string; mobileMenuOpen: boolean; onMobileMenuToggle: () => void; }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>; //# sourceMappingURL=AppChrome.d.ts.map