import { ReactNode } from 'react'; /** * Supported theme types */ export type ThemeType = 'light' | 'dark'; /** * Callback function type for theme change events */ export type ThemeChangeCallback = (theme: ThemeType, previousTheme: ThemeType) => void; /** * Configuration options for theme management */ export interface ThemeOptions { /** * Whether to persist theme preference to localStorage * @default true */ persist?: boolean; /** * Whether to detect and use system theme preference * @default true */ detectSystemTheme?: boolean; /** * Initial theme to use if no preference is found * @default 'light' */ defaultTheme?: ThemeType; } /** * Props for the ThemeProvider component */ export interface ThemeProviderProps { /** * Child components that will have access to the theme context */ children: ReactNode; /** * Configuration options for theme management */ options?: ThemeOptions; /** * Callback fired when the theme changes */ onThemeChange?: ThemeChangeCallback; } /** * ThemeProvider manages theme state, persistence, and system integration across the application * * Features: * - Light/dark theme management with type safety * - Persistent theme preference in localStorage * - System theme preference detection and integration * - Change notifications for theme updates * - Performance optimizations with memoization * - Accessibility support with proper DOM updates * * TODO: Adding more themes for: * - High contrast mode for accessibility * - Custom user/brand themes * * @example * // Basic usage * * * * * @example * // With custom configuration * { * console.log(`Theme changed from ${prev} to ${theme}`); * }} * > * * */ export declare const ThemeProvider: ({ children, options, onThemeChange: externalOnThemeChange, }: ThemeProviderProps) => import("react/jsx-runtime").JSX.Element;