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

36 lines
1.2 KiB
JavaScript
Raw Normal View History

2020-10-07 09:41:58 -07:00
import * as React from 'react';
import { createContext, useContext, useMemo } from 'react';
import dynamic from 'next/dynamic';
import { CSSReset, ThemeProvider } from '@chakra-ui/core';
import { MediaProvider } from './MediaProvider';
import { StateProvider } from './StateProvider';
import { makeTheme, defaultTheme } from 'app/util';
2020-01-19 22:03:47 -07:00
// Disable SSR for ColorModeProvider
const ColorModeProvider = dynamic(
2020-10-07 09:41:58 -07:00
() => import('@chakra-ui/core').then(mod => mod.ColorModeProvider),
{ ssr: false },
2020-01-19 22:03:47 -07:00
);
const HyperglassContext = createContext(null);
export const HyperglassProvider = ({ config, children }) => {
2020-04-19 09:50:31 -07:00
const value = useMemo(() => config, [config]);
const userTheme = value && makeTheme(value.web.theme);
const theme = value ? userTheme : defaultTheme;
return (
<ThemeProvider theme={theme}>
<ColorModeProvider value={config.web.theme.default_color_mode ?? null}>
<CSSReset />
<MediaProvider theme={theme}>
<HyperglassContext.Provider value={value}>
<StateProvider>{children}</StateProvider>
</HyperglassContext.Provider>
</MediaProvider>
</ColorModeProvider>
</ThemeProvider>
2020-04-19 09:50:31 -07:00
);
2020-01-19 22:03:47 -07:00
};
export const useConfig = () => useContext(HyperglassContext);