1
0
mirror of https://github.com/checktheroads/hyperglass synced 2024-05-11 05:55:08 +00:00

25 lines
960 B
TypeScript
Raw Normal View History

import { createContext, useContext, useMemo } from 'react';
2020-11-03 01:51:41 -07:00
import { ChakraProvider, useTheme as useChakraTheme } from '@chakra-ui/core';
import { makeTheme, defaultTheme } from '~/util';
2020-11-03 01:51:41 -07:00
import type { IConfig, ITheme } from '~/types';
import type { IHyperglassProvider } from './types';
const HyperglassContext = createContext<IConfig>(Object());
export const HyperglassProvider = (props: IHyperglassProvider) => {
const { config, children } = props;
const value = useMemo(() => config, []);
const userTheme = value && makeTheme(value.web.theme);
const theme = value ? userTheme : defaultTheme;
return (
<ChakraProvider theme={theme}>
<HyperglassContext.Provider value={value}>{children}</HyperglassContext.Provider>
</ChakraProvider>
);
};
export const useConfig = () => useContext(HyperglassContext);
2020-11-03 01:51:41 -07:00
export const useTheme = (): ITheme => useChakraTheme();
export { useColorModeValue as useColorValue } from '@chakra-ui/core';