in libs/@guardian/source/src/design-tokens/cobalt-plugins/typography.js [75:112]
async build({ tokens /* metadata, rawSchema */ }) {
// this is where we'll store the transformed tokens
/** @type {Object.<string, string>} */
const transformedTokens = {};
/** @type {Object.<string, string>} */
const comments = {};
const typographyTokens = tokens.filter((token) =>
token.id.startsWith(GROUP_PREFIX),
);
// we can re-use the default transformer from `@cobalt-ui/plugin-js`
for (const token of typographyTokens) {
set(transformedTokens, token.id, defaultTransformer(token));
if (token.$description) {
comments[getCommentId(token.id)] = token.$description;
}
}
/** @type {Object.<!string, TypographyPreset>} */
const typographyPresets = transformedTokens.typographyPresets;
const typescriptSource = Object.entries(typographyPresets)
.map(([preset, properties]) => {
const output = presetTemplate(preset, properties);
return comments[preset]
? `\n/** ${comments[preset]} */${output}`
: output;
})
.join('');
return [
{
filename: options.filename,
contents: template(import.meta.filename, typescriptSource),
},
];
},