import { ThemeConfig } from '@buzztrail-ai/theme'; /** * Theme mode preference */ export type ThemeMode = 'light' | 'dark' | 'auto'; /** * Custom CSS variable configuration for slide viewer */ export interface SlideViewerThemeConfig { /** Background color for the viewer */ backgroundColor?: string; /** Loading overlay background color */ loadingBackgroundColor?: string; /** Spinner color */ spinnerColor?: string; /** Spinner track color */ spinnerTrackColor?: string; /** Text color */ textColor?: string; /** Transition speed (e.g., '0.3s') */ transitionSpeed?: string; /** Z-index for viewer */ zIndex?: number; } /** * Custom CSS variable configuration for slide controls */ export interface SlideControlsThemeConfig { /** Controls background color */ backgroundColor?: string; /** Button primary color */ buttonColor?: string; /** Button hover color */ buttonHoverColor?: string; /** Button active color */ buttonActiveColor?: string; /** Button disabled color */ buttonDisabledColor?: string; /** Button text color */ buttonTextColor?: string; /** Counter background color */ counterBackgroundColor?: string; /** Counter text color */ counterTextColor?: string; /** Border color */ borderColor?: string; /** Z-index for controls */ zIndex?: number; } /** * Combined theme configuration */ export interface PresentationThemeConfig { /** Theme mode preference */ mode?: ThemeMode; /** Slide viewer theme customizations */ viewer?: SlideViewerThemeConfig; /** Slide controls theme customizations */ controls?: SlideControlsThemeConfig; /** Base theme config from @buzztrail-ai/theme */ baseTheme?: ThemeConfig; } /** * Detect the user's preferred theme mode * * @returns 'light' or 'dark' based on system preference */ export declare function detectThemePreference(): 'light' | 'dark'; /** * Resolve theme mode to an explicit 'light' or 'dark' value * * @param mode - Theme mode (can be 'auto') * @returns 'light' or 'dark' */ export declare function resolveThemeMode(mode?: ThemeMode): 'light' | 'dark'; /** * Apply theme mode to the document * * @param mode - Theme mode to apply * @param targetElement - Element to apply theme to (defaults to document.documentElement) */ export declare function applyThemeMode(mode?: ThemeMode, targetElement?: HTMLElement): void; /** * Listen for system theme preference changes * * @param callback - Function to call when preference changes * @returns Cleanup function to remove the listener */ export declare function watchThemePreference(callback: (mode: 'light' | 'dark') => void): () => void; /** * Inject CSS variables for slide viewer theme * * @param config - Slide viewer theme configuration * @param targetElement - Element to apply variables to (defaults to :root) */ export declare function applySlideViewerTheme(config: SlideViewerThemeConfig, targetElement?: HTMLElement): void; /** * Inject CSS variables for slide controls theme * * @param config - Slide controls theme configuration * @param targetElement - Element to apply variables to (defaults to :root) */ export declare function applySlideControlsTheme(config: SlideControlsThemeConfig, targetElement?: HTMLElement): void; /** * Apply base theme from @buzztrail-ai/theme to presentation components * * @param baseTheme - Base theme configuration * @param targetElement - Element to apply variables to (defaults to :root) */ export declare function applyBaseTheme(baseTheme: ThemeConfig, targetElement?: HTMLElement): void; /** * Apply complete presentation theme configuration * * @param config - Complete theme configuration * @param targetElement - Element to apply variables to (defaults to :root) */ export declare function applyPresentationTheme(config: PresentationThemeConfig, targetElement?: HTMLElement): void; /** * Reset presentation theme to defaults * * @param targetElement - Element to reset variables on (defaults to :root) */ export declare function resetPresentationTheme(targetElement?: HTMLElement): void; /** * Get current theme configuration from CSS variables * * @param targetElement - Element to read variables from (defaults to :root) * @returns Current theme configuration */ export declare function getCurrentTheme(targetElement?: HTMLElement): PresentationThemeConfig; /** * Create a theme configuration manager * * @param initialConfig - Initial theme configuration * @returns Theme manager object */ export declare function createThemeManager(config?: { initialTheme?: ThemeMode; onChange?: (theme: ThemeMode) => void; autoDetect?: boolean; }): { /** * Get current theme mode */ getCurrentTheme(): ThemeMode; /** * Set theme mode */ setTheme(mode: ThemeMode): void; /** * Watch system preference changes */ watchPreference(): void; /** * Stop watching system preference */ stopWatching(): void; /** * Disable automatic theme mode switching */ disableAutoMode(): void; /** * Destroy the theme manager and cleanup */ destroy(): void; }; /** * Load CSS file dynamically * * @param href - CSS file URL * @returns Promise that resolves when CSS is loaded */ export declare function loadStylesheet(href: string): Promise; /** * Load both slide viewer and controls CSS files * * @param baseUrl - Base URL for CSS files (optional) * @returns Promise that resolves when both CSS files are loaded */ export declare function loadPresentationStyles(baseUrl?: string): Promise;