type Brand = "one" | "prism"; declare const CONTRAST_PREFS: readonly ["system", "normal", "high", "windows"]; /** What the user explicitly picks (or "system" to follow OS). */ type ContrastPreference = (typeof CONTRAST_PREFS)[number]; /** The resolved mode actually applied to the DOM. */ type ContrastMode = "normal" | "high" | "windows"; /** UI text scale at the document root (rem-based UI tracks together). */ type TextSizePreference = "compact" | "default" | "large"; declare function useAppTheme(): { /** The user's preference: "system" | "normal" | "high" | "windows" */ contrastPref: "normal" | "high" | "system" | "windows"; /** The resolved contrast mode actually applied to the DOM. */ contrast: ContrastMode; /** Set the contrast preference. */ setContrast: (pref: ContrastPreference) => void; /** Text scale: "compact" | "default" | "large" */ textSizePref: TextSizePreference; setTextSize: (pref: TextSizePreference) => void; mounted: boolean; }; /** * Applies the persisted contrast + text-size preferences for as long as the app * is mounted. Every other caller of `useAppTheme()` lives inside a menu or a * settings card, so without this at the shell root the preferences are only * applied once the user opens the control that sets them — a reload drops a * high-contrast user back to the normal palette. * * Mount once, next to the color-scheme provider. Renders nothing. */ declare function AppThemeSync(): null; export { AppThemeSync, type Brand, type ContrastMode, type ContrastPreference, type TextSizePreference, useAppTheme };