@cobalt-ui/plugin-sass
Version:
Generate scss/sass from your design tokens schema (requires @cobalt-ui/cli)
25 lines • 998 B
JavaScript
import mime from 'mime';
import fs from 'node:fs';
import { fileURLToPath, URL } from 'node:url';
import svgo from 'svgo';
const LEADING_SLASH_RE = /^\//;
const URL_PREFIX = /^\s*url\(['"]?/;
const URL_SUFFIX = /['"]?\)\s*$/;
/** encode file for CSS */
export function encode(cssURL, cwd) {
const filename = fileURLToPath(new URL(cssURL.replace(URL_PREFIX, '').replace(URL_SUFFIX, '').replace(LEADING_SLASH_RE, ''), cwd));
const type = mime.getType(filename);
// https://css-tricks.com/probably-dont-base64-svg/
if (type === 'image/svg+xml') {
const svg = svgo.optimize(fs.readFileSync(filename, 'utf8'));
if (svg.data) {
return `url('${type};utf8,${svg.data}')`;
}
}
return `url('${type};base64,${fs.readFileSync(filename).toString('base64')}')`;
}
/** format font stack */
export function formatFontFamilyNames(fontNames) {
return fontNames.map((n) => (n.includes(' ') ? `"${n}"` : n)).join(', ');
}
//# sourceMappingURL=util.js.map