web/wp-content/themes/mozilla-builders/plugins/utilities-scss.js (25 lines of code) (raw):
import plugin from 'tailwindcss/plugin';
import { parse } from 'postcss';
import { objectify } from 'postcss-js';
import { compile } from 'sass';
export default plugin.withOptions(
/**
* @param {Object} options
* @param {string} options.filename
*/
function (options) {
return ({ addUtilities, addComponents, addBase }) => {
if (!options.filename) {
throw new Error('filename is required');
}
const scss = compile(options.filename);
const root = parse(scss.css);
const jss = objectify(root);
if ('@layer base' in jss) {
addBase(jss['@layer base']);
}
if ('@layer components' in jss) {
addComponents(jss['@layer components']);
}
if ('@layer utilities' in jss) {
addUtilities(jss['@layer utilities']);
}
};
},
);