/* @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 = { ThemeProvider: ThemeProviderType, withTheme: WithThemeType, }; export default function createTheming( defaultTheme: T ): ThemingType { const ThemeContext: Context = createReactContext(defaultTheme); const ThemeProvider: ThemeProviderType = createThemeProvider( defaultTheme, ThemeContext ); const withTheme: WithThemeType = createWithTheme( ThemeProvider, ThemeContext ); return { ThemeProvider, withTheme, }; }