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