wip: move spacing to css-utils
This commit is contained in:
parent
430d6343b9
commit
1176cee0c8
2 changed files with 61 additions and 0 deletions
11
config/design-tokens/spacing.json
Normal file
11
config/design-tokens/spacing.json
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"0": 0,
|
||||||
|
"0.25": 4,
|
||||||
|
"0.5": 8,
|
||||||
|
"1": 16,
|
||||||
|
"1.5": 24,
|
||||||
|
"2": 32,
|
||||||
|
"3": 48,
|
||||||
|
"4": 64,
|
||||||
|
"5": 80
|
||||||
|
}
|
50
src/css-utils/spacing.js
Normal file
50
src/css-utils/spacing.js
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
const spacing = require("../../config/design-tokens/spacing.json");
|
||||||
|
const { helperClassesToCss } = require("./helperClasses");
|
||||||
|
|
||||||
|
const spacingToCss = (variant, value) =>
|
||||||
|
`--spacing-${variant.replace(".", "\\.")}: ${value}px;`;
|
||||||
|
|
||||||
|
const spacingToHelperClassesCss = (spacingValues, helperClasses) => {
|
||||||
|
return Object.entries(spacingValues).reduce((css, [spacingVariant]) => {
|
||||||
|
const variant = spacingVariant.replace(".", "\\.");
|
||||||
|
return (
|
||||||
|
css +
|
||||||
|
helperClassesToCss(helperClasses, variant, `var(--spacing-${variant})`)
|
||||||
|
);
|
||||||
|
}, ``);
|
||||||
|
};
|
||||||
|
|
||||||
|
const helperClasses = [
|
||||||
|
["m", ["margin"]],
|
||||||
|
["my", ["margin-block-start", "margin-block-end"]],
|
||||||
|
["mx", ["margin-inline-start", "margin-inline-end"]],
|
||||||
|
["ml", ["margin-inline-start"]],
|
||||||
|
["mr", ["margin-inline-start"]],
|
||||||
|
["mt", ["margin-block-start"]],
|
||||||
|
["mb", ["margin-block-end"]],
|
||||||
|
["p", ["padding"]],
|
||||||
|
["py", ["padding-block-start", "padding-block-end"]],
|
||||||
|
["px", ["padding-inline-start", "padding-inline-end"]],
|
||||||
|
["pl", ["padding-inline-start"]],
|
||||||
|
["pr", ["padding-inline-start"]],
|
||||||
|
["pt", ["padding-block-start"]],
|
||||||
|
["pb", ["padding-block-end"]],
|
||||||
|
["w", ["width"]],
|
||||||
|
["h", ["height"]],
|
||||||
|
["size", ["width", "height"]],
|
||||||
|
["radius", ["border-radius"]],
|
||||||
|
["gap", ["gap"]],
|
||||||
|
["row-gap", ["row-gap"]],
|
||||||
|
["column-gap", ["column-gap"]],
|
||||||
|
];
|
||||||
|
|
||||||
|
const spacingVariablesCss = Object.entries(spacing).reduce(
|
||||||
|
(css, [variant, value]) => css + spacingToCss(variant, value),
|
||||||
|
``,
|
||||||
|
);
|
||||||
|
|
||||||
|
const helperCss = spacingToHelperClassesCss(spacing, helperClasses);
|
||||||
|
|
||||||
|
const css = `:root{${spacingVariablesCss}}${helperCss}`;
|
||||||
|
|
||||||
|
module.exports = css;
|
Loading…
Add table
Add a link
Reference in a new issue