/** * Fluent Grow - Unified Theme Manager * ------------------------------------ * Combines ThemeManager + ColorManager into a single, powerful theme system * with dark mode, persistence, transitions, and expanded tokens. */ import { type ColorThemeDefinition } from '../colors'; export interface ThemeTokens { mode?: 'light' | 'dark'; colors?: Record; typography?: { fontFamily?: Record; fontSize?: Record; fontWeight?: Record; lineHeight?: Record; letterSpacing?: Record; }; spacing?: Record; borders?: { radius?: Record; width?: Record; }; shadows?: Record; animations?: { duration?: Record; easing?: Record; }; [key: string]: any; } export interface UnifiedThemeDefinition { name: string; tokens: ThemeTokens; colorPalettes?: ColorThemeDefinition['palettes']; inheritsFrom?: string; } export interface ThemeManagerOptions { defaultTheme?: string; detectSystemPreference?: boolean; persist?: boolean; persistKey?: string; transitions?: boolean; transitionDuration?: string; } export type UnifiedThemeChangeListener = (theme: UnifiedThemeDefinition) => void; export declare class UnifiedThemeManager { private themes; private colorManager; private activeTheme?; private listeners; private options; private mediaQuery?; constructor(options?: ThemeManagerOptions); /** * Initialize the theme system */ init(): void; /** * Register a theme */ register(theme: UnifiedThemeDefinition): this; /** * Apply a theme */ apply(name: string, options?: { transition?: boolean; persist?: boolean; }): void; /** * Apply theme scoped to a specific element */ applyScoped(name: string, element: HTMLElement | string): void; /** * Toggle between light and dark mode */ toggleDarkMode(): void; /** * Get current theme mode */ getMode(): 'light' | 'dark'; /** * Get active theme name */ getActiveTheme(): string | undefined; /** * Listen to theme changes */ onChange(listener: UnifiedThemeChangeListener): () => void; /** * Create a custom theme */ createTheme(config: { name: string; extends?: string; mode?: 'light' | 'dark'; colors?: Record; typography?: ThemeTokens['typography']; spacing?: ThemeTokens['spacing']; borders?: ThemeTokens['borders']; shadows?: ThemeTokens['shadows']; animations?: ThemeTokens['animations']; }): UnifiedThemeDefinition; private applyThemeToDOM; private applyTransition; private resolveTheme; private setupSystemPreferenceDetection; private persistTheme; private loadPersistedTheme; private notifyListeners; } //# sourceMappingURL=unified-theme-manager.d.ts.map