@teamsparta/stack-core
Version:
stack core
36 lines (34 loc) • 1.09 kB
JavaScript
// src/theme/utils/generateThemeStyles.ts
import {
mapColorTheme,
populateCSSVariables,
primitiveColor,
primitiveSpacing
} from "@teamsparta/stack-tokens";
function generateThemeStyles(theme) {
const currentSemanticColor = mapColorTheme(theme);
const semanticColorTokens = populateCSSVariables(
currentSemanticColor,
"stack-semantic"
);
const primitiveColorTokens = populateCSSVariables(
primitiveColor,
"stack-primitive"
);
const semanticColorStyles = Object.entries(semanticColorTokens).map(([key, value]) => `${key}: ${value};`).join("\n");
const primitiveColorStyles = Object.entries(primitiveColorTokens).map(([key, value]) => `${key}: ${value};`).join("\n");
const spacingTokens = populateCSSVariables(primitiveSpacing, "stack-space");
const spacingStyles = Object.entries(spacingTokens).map(([key, value]) => `${key}: ${value};`).join("\n");
return `
[data-stack-color-theme="${theme}"] {
${semanticColorStyles}
}
:root {
${primitiveColorStyles}
${spacingStyles}
}
`;
}
export {
generateThemeStyles
};