box-ui-elements
Version:
Box UI Elements
24 lines (18 loc) • 745 B
text/typescript
import isObject from 'lodash/isObject';
import kebabCase from 'lodash/kebabCase';
const convertTokensToCustomProperties = (tokens = {}, prefix = '') => {
const customProperties = {};
Object.entries(tokens).forEach(([level, value]) => {
const levelName = `${prefix}${kebabCase(level)}`;
if (isObject(value)) {
const properties = convertTokensToCustomProperties(value, `${levelName}-`);
Object.entries(properties).forEach(([tokenName, tokenValue]) => {
customProperties[tokenName] = tokenValue;
});
} else {
customProperties[`--${levelName}`] = value;
}
});
return customProperties;
};
export { convertTokensToCustomProperties };