import { ReactNode } from 'react';
/**
* Theme configuration for loaders
*/
export interface LoaderTheme {
/** Primary color for loaders */
primaryColor?: string;
/** Secondary color for loaders */
secondaryColor?: string;
/** Base color for skeletons */
skeletonBase?: string;
/** Highlight color for skeletons */
skeletonHighlight?: string;
/** Default size for loaders */
defaultSize?: number | string;
/** Default speed for animations */
defaultSpeed?: 'slow' | 'normal' | 'fast' | number;
/** Default delay before showing loaders */
defaultDelay?: number;
/** Default minimum duration for loaders */
defaultMinDuration?: number;
/** Default transition duration */
defaultTransition?: number | boolean;
/** Respect user's motion preferences by default */
respectMotionPreference?: boolean;
}
interface ThemeContextValue {
theme: LoaderTheme;
}
export interface ThemeProviderProps {
/** Theme configuration */
theme?: LoaderTheme;
/** Child components */
children: ReactNode;
}
/**
* ThemeProvider - Global theme configuration for loaders
*
* Provides theme values to all loader components in the component tree.
* Components will use theme values as defaults unless overridden by props.
*
* @example
* ```tsx
* import { ThemeProvider } from 'premium-react-loaders';
*
* function App() {
* return (
*