@primer/primitives
Version:
Typography, spacing, and color primitives for Primer design system
24 lines (23 loc) • 676 B
JavaScript
/**
* jsonToNestedValue
* @description creates a nested json tree where every final value is the `.value` prop
* @param token StyleDictionary.DesignToken
* @returns nested json three
*/
export const jsonToNestedValue = (token) => {
// is non-object value
if (typeof token !== 'object')
return token;
// is design token
if ('$value' in token)
return token.$value;
if ('value' in token)
return token.value;
// is obj
const nextObj = {};
for (const [prop, value] of Object.entries(token)) {
// @ts-expect-error: can't predict type
nextObj[prop] = jsonToNestedValue(value);
}
return nextObj;
};