This commit is contained in:
Enrico Bühler 2021-11-11 21:02:36 +01:00
parent 98c7a5170c
commit 86477d3590
2 changed files with 13 additions and 12 deletions

View File

@ -1,5 +1,5 @@
import {
generateThemeOverrideClass,
generateThemeOverride,
generateThemeRoot,
generateTheme,
ThemeInput,
@ -23,18 +23,18 @@ const exampleThemes: ThemeInput[] = [
];
test("it generates css based on input properties", () => {
const themeClass = generateThemeOverrideClass({
const themeClass = generateThemeOverride({
properties: exampleProperties,
className: "dark-theme",
selector: ".dark-theme",
});
expect(themeClass).toBeDefined();
});
test("no input so it returns empty string", () => {
const themeClass = generateThemeOverrideClass({
const themeClass = generateThemeOverride({
properties: {},
className: "dark-theme",
selector: ".dark-theme",
});
expect(themeClass).toBeDefined();

View File

@ -4,17 +4,18 @@ import { generateShades, ColorsInput, ShadesOptions } from "./Colors";
export interface ThemeInput {
name: string;
colors: ColorsInput;
selector?: string;
}
const generateThemeOverrideClass = (input: {
const generateThemeOverride = (input: {
properties: any;
className: string;
selector: string;
}) => {
const propKeys = Object.keys(input.properties);
if (propKeys.length > 0) {
return `
.${input.className} {${propKeys
${input.selector} {${propKeys
.map((key) => `\t--${key}: ${input.properties[key]};`)
.join("\n")}}`;
} else return "";
@ -65,9 +66,9 @@ const generateTheme = (options: {
const themeOverrides = themes
.slice(1)
.map((theme) => {
const overrideClass = generateThemeOverrideClass({
const overrideClass = generateThemeOverride({
properties: { ...theme.colors },
className: theme.name,
selector: theme.selector ? theme.selector : "." + theme.name,
});
return overrideClass;
@ -78,10 +79,10 @@ const generateTheme = (options: {
} else return themeRoot;
};
export { generateThemeOverrideClass, generateThemeRoot, generateTheme };
export { generateThemeOverride, generateThemeRoot, generateTheme };
export default {
Colors,
generateThemeOverrideClass,
generateThemeOverride,
generateThemeRoot,
generateTheme,
};