UNPKG

@pnp/spfx-controls-react

Version:

Reusable React controls for SharePoint Framework solutions

57 lines 2.52 kB
import { getNeutralVariant, getSoftVariant, getStrongVariant, } from '@fluentui/scheme-utilities'; import { getColorFromString, isDark, createTheme, getTheme, BaseSlots, ThemeGenerator, themeRulesStandardCreator, } from '@fluentui/react'; import { VariantType } from './VariantThemeProviderProps'; export var generateThemeVariant = function (theme, themeType) { var currentTheme; switch (themeType) { case VariantType.None: currentTheme = theme; break; case VariantType.Neutral: currentTheme = getNeutralVariant(theme); break; case VariantType.Soft: currentTheme = getSoftVariant(theme); break; case VariantType.Strong: currentTheme = getStrongVariant(theme); break; default: currentTheme = theme; break; } return currentTheme; }; export var getDefaultTheme = function () { var _a; var currentTheme; var themeColorsFromWindow = (_a = window === null || window === void 0 ? void 0 : window.__themeState__) === null || _a === void 0 ? void 0 : _a.theme; // eslint-disable-line @typescript-eslint/no-explicit-any if (themeColorsFromWindow) { currentTheme = createTheme({ palette: themeColorsFromWindow, }); } else currentTheme = getTheme(); return currentTheme; }; export var generateThemeFromColors = function (primaryColor, textColor, backgroundColor) { var themeRules = themeRulesStandardCreator(); var colors = { primaryColor: getColorFromString(primaryColor), textColor: getColorFromString(textColor), backgroundColor: getColorFromString(backgroundColor), }; var currentIsDark = isDark(themeRules[BaseSlots[BaseSlots.backgroundColor]].color); ThemeGenerator.insureSlots(themeRules, currentIsDark); ThemeGenerator.setSlot(themeRules[BaseSlots[BaseSlots.primaryColor]], colors.primaryColor, currentIsDark, true, true); ThemeGenerator.setSlot(themeRules[BaseSlots[BaseSlots.foregroundColor]], colors.textColor, currentIsDark, true, true); ThemeGenerator.setSlot(themeRules[BaseSlots[BaseSlots.backgroundColor]], colors.backgroundColor, currentIsDark, true, true); var themeAsJson = ThemeGenerator.getThemeAsJson(themeRules); var generatedTheme = createTheme({ palette: themeAsJson, isInverted: currentIsDark, }); return generatedTheme; }; //# sourceMappingURL=VariantThemeProviderHelpers.js.map