@wise/components-theming
Version:
Provides theming support for the Wise Design system components
50 lines (46 loc) • 1.36 kB
JavaScript
;
var react = require('react');
var ThemeProviderContext = require('./ThemeProviderContext.js');
var _const = require('./const.js');
var helpers = require('./helpers.js');
const FALLBACK_VALUES = {
theme: _const.DEFAULT_BASE_THEME,
screenMode: _const.DEFAULT_SCREEN_MODE,
setTheme: () => {},
setScreenMode: () => {}
};
const isNotProduction = () => {
try {
return ['localhost', 'dev-wi.se'].includes(window.location.hostname);
} catch {
return false;
}
};
const useTheme = () => {
const theming = react.useContext(ThemeProviderContext.ThemeContext);
if (!theming && isNotProduction()) {
// eslint-disable-next-line no-console
console.warn('Call to useTheme outside a ThemeProvider');
}
const {
theme,
screenMode,
setTheme,
setScreenMode
} = theming ?? FALLBACK_VALUES;
return react.useMemo(() => ({
theme,
screenMode,
/**
* @deprecated there is no more such thing as "modern" theme
*/
isModern: helpers.isThemeModern(),
isForestGreenTheme: helpers.isForestGreenTheme(theme),
isScreenModeDark: helpers.isScreenModeDark(theme, screenMode),
className: helpers.getThemeClassName(theme, screenMode),
setTheme,
setScreenMode
}), [theme, screenMode, setTheme, setScreenMode]);
};
exports.useTheme = useTheme;
//# sourceMappingURL=useTheme.js.map