@callstack/react-theme-provider
Version:
Theme provider for react and react-naitve applications
33 lines (27 loc) • 839 B
Flow
/* @flow */
import createReactContext, { type Context } from 'create-react-context';
import createThemeProvider from './createThemeProvider';
import createWithTheme from './createWithTheme';
import type { WithThemeType } from './createWithTheme';
import type { ThemeProviderType } from './createThemeProvider';
export type ThemingType<T, S> = {
ThemeProvider: ThemeProviderType<T>,
withTheme: WithThemeType<T, S>,
};
export default function createTheming<T, S>(
defaultTheme: T
): ThemingType<T, S> {
const ThemeContext: Context<T> = createReactContext(defaultTheme);
const ThemeProvider: ThemeProviderType<T> = createThemeProvider(
defaultTheme,
ThemeContext
);
const withTheme: WithThemeType<T, S> = createWithTheme(
ThemeProvider,
ThemeContext
);
return {
ThemeProvider,
withTheme,
};
}