UNPKG

@wise/components-theming

Version:

Provides theming support for the Wise Design system components

40 lines (37 loc) 1.26 kB
import { useContext, useMemo } from 'react'; import { ThemeContext } from './ThemeProviderContext.mjs'; import { DEFAULT_SCREEN_MODE, DEFAULT_BASE_THEME } from './const.mjs'; import { getThemeClassName, isScreenModeDark, isForestGreenTheme, isThemeModern } from './helpers.mjs'; const FALLBACK_VALUES = { theme: DEFAULT_BASE_THEME, screenMode: DEFAULT_SCREEN_MODE }; const isNotProduction = () => { try { return ['localhost', 'dev-wi.se'].includes(window.location.hostname); } catch { return false; } }; const useTheme = () => { const theming = useContext(ThemeContext); if (!theming && isNotProduction()) { // eslint-disable-next-line no-console console.warn('Call to useTheme outside a ThemeProvider'); } const { theme, screenMode: contextScreenMode } = theming ?? FALLBACK_VALUES; const screenMode = theme === DEFAULT_BASE_THEME ? DEFAULT_SCREEN_MODE : contextScreenMode; return useMemo(() => ({ theme, screenMode, isModern: isThemeModern(theme), isForestGreenTheme: isForestGreenTheme(theme), isScreenModeDark: isScreenModeDark(theme, screenMode), className: getThemeClassName(theme, screenMode) }), [theme, screenMode]); }; export { useTheme }; //# sourceMappingURL=useTheme.mjs.map