kobalt
Version:
A cli to generate a theme from figma projects.
47 lines (46 loc) • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveColorReferences = exports.createFontToken = void 0;
const convert_to_hex_1 = require("../utilities/convert-to-hex");
const createFontToken = (item) => {
const { children } = item;
let result = {};
if (children) {
result = children.reduce((accumulator, current) => {
accumulator[current.name] = (0, exports.createFontToken)(current);
return accumulator;
}, {});
}
else if (item.style && item.fills[0]?.color) {
const { fontFamily, fontSize, fontWeight, lineHeightPx, letterSpacing } = item.style;
result = {
value: {
fontFamily,
fontSize: `${fontSize}px`,
fontWeight,
letterSpacing,
lineHeight: `${lineHeightPx}px`,
color: (0, convert_to_hex_1.convertToHex)(item.fills[0]?.color),
},
};
}
return result;
};
exports.createFontToken = createFontToken;
const resolveColorReferences = (flattenedColors, font) => {
const fontsWithColorRefs = Object.entries(font).reduce((accumulator, [key, value]) => {
if (key === "value") {
const reference = Object.keys(flattenedColors).find((key) => flattenedColors[key] === value.color);
accumulator[key] = {
...value,
color: `{color.${reference}}`,
};
}
else {
accumulator[key] = (0, exports.resolveColorReferences)(flattenedColors, value);
}
return accumulator;
}, {});
return fontsWithColorRefs;
};
exports.resolveColorReferences = resolveColorReferences;