@react-theming/storybook-addon
Version:
Develop themes and themable components with Emotion, Styled Components, Material-UI and your custom solution
64 lines (53 loc) • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.onThemeSwitchDefault = exports.handleOnSwitch = exports.addBackgroundStyle = void 0;
var LIGHT_BG = '#fff';
var DARK_BG = '#333';
var TAG_SELECTOR = 'addon-backgrounds-color';
var createStyle = function createStyle(color) {
return "\n.sb-show-main {\n background: ".concat(color, " !important;\n transition: background-color 0.3s;\n}\n");
};
var addBackgroundStyle = function addBackgroundStyle(color) {
if (!color) {
return;
}
var css = createStyle(color);
var existingStyle = document.getElementById(TAG_SELECTOR);
if (existingStyle) {
if (existingStyle.innerHTML !== css) {
existingStyle.innerHTML = css;
}
} else {
var style = document.createElement('style');
style.setAttribute('id', TAG_SELECTOR);
style.innerHTML = css;
document.head.appendChild(style);
}
};
exports.addBackgroundStyle = addBackgroundStyle;
var handleOnSwitch = function handleOnSwitch(_ref) {
var _result$parameters, _result$parameters$ba;
var theme = _ref.theme,
onThemeSwitch = _ref.onThemeSwitch;
var result = onThemeSwitch({
theme: theme
});
var color = (_result$parameters = result.parameters) === null || _result$parameters === void 0 ? void 0 : (_result$parameters$ba = _result$parameters.backgrounds) === null || _result$parameters$ba === void 0 ? void 0 : _result$parameters$ba.default;
addBackgroundStyle(color);
};
exports.handleOnSwitch = handleOnSwitch;
var onThemeSwitchDefault = function onThemeSwitchDefault(context) {
var theme = context.theme;
var background = /dark/i.test(theme.name) ? DARK_BG : LIGHT_BG;
var parameters = {
backgrounds: {
default: background
}
};
return {
parameters: parameters
};
};
exports.onThemeSwitchDefault = onThemeSwitchDefault;