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;