@wise/components-theming
Version:
Provides theming support for the Wise Design system components
40 lines (37 loc) • 1.26 kB
JavaScript
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