style-dictionary
Version:
Style once, use everywhere. A build system for creating cross-platform styles.
34 lines (29 loc) • 1.04 kB
JavaScript
/**
* @typedef {import('../../../../types/DesignToken.d.ts').TransformedToken} TransformedToken
* @typedef {import('../../../../types/Config.d.ts').Config} Config
* @typedef {import('../../../../types/Config.d.ts').LocalOptions} LocalOptions
*/
/**
* @param {{
* allTokens: TransformedToken[]
* formatProperty: (token: TransformedToken) => string
* options: Config & LocalOptions
* header: string
* }} opts
*/
export default ({ allTokens, formatProperty, options, header }) => `
${header}
package ${options.packageName ?? ''}
${options.import.map(/** @param {string} item */ (item) => `import ${item}`).join('\n')}
${options.accessControl ? `${options.accessControl} ` : ''}${
options.objectType ? `${options.objectType} ` : ''
}object ${options.className ? `${options.className} ` : ''}{
${allTokens
.map(
(token) =>
` ${token.comment ? `/** ${token.comment} */\n ` : ''}${options.accessControl ? `${options.accessControl} ` : ''}val ${formatProperty(
token,
)}`,
)
.join('\n')}
}\n`;