verdnatura-chat/app/theme.tsx

26 lines
700 B
TypeScript

import React from 'react';
import hoistNonReactStatics from 'hoist-non-react-statics';
interface IThemeContextProps {
theme: string,
themePreferences: {
currentTheme: 'automatic' | 'light',
darkLevel: string
},
setTheme: (newTheme?: {}) => void;
}
export const ThemeContext = React.createContext<Partial<IThemeContextProps>>({ theme: 'light' });
export function withTheme(Component: any) {
const ThemedComponent = (props: any) => (
<ThemeContext.Consumer>
{(contexts) => <Component {...props} {...contexts} />}
</ThemeContext.Consumer>
);
hoistNonReactStatics(ThemedComponent, Component);
return ThemedComponent;
}
export const useTheme = () => React.useContext(ThemeContext);