UNPKG

kobalt

Version:

A cli to generate a theme from figma projects.

51 lines (50 loc) 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createTypescriptThemeFormat = void 0; const capitalize_1 = require("../utilities/capitalize"); const templates_1 = require("./templates"); const createColorName = (token) => { if (token.attributes) { const { type, item, category } = token.attributes; return `${type}${(0, capitalize_1.capitalize)(item)}${(0, capitalize_1.capitalize)(category)}`; } return ""; }; const createFontName = (token) => { if (token.attributes) { const { type, item } = token.attributes; return `${(0, capitalize_1.capitalize)(type)}${(0, capitalize_1.capitalize)(item)}`; } return ""; }; const createTypescriptThemeFormat = ({ dictionary, options, }) => { const body = dictionary.allTokens .map((token) => { let value = JSON.stringify(token.value); if (!token.attributes) { throw new Error("No attributes available to read from."); } switch (token.attributes.category) { case "color": { return (0, templates_1.createVariable)(createColorName(token), value); } case "font": { if (options.outputReferences) { if (dictionary.usesReference(token.original.value)) { const refs = dictionary.getReferences(token.original.value); refs.forEach((ref) => { value = value.replace(`"${ref.value}"`, () => createColorName(ref)); }); } } return (0, templates_1.createStyledComponentFont)(createFontName(token), value); } default: { throw new Error(`Unknown category: ${token.attributes.category}`); } } }) .join(`\n`); return (0, templates_1.createTemplate)(body); }; exports.createTypescriptThemeFormat = createTypescriptThemeFormat;