docs
evals
scenario-1
scenario-10
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
Build a PostCSS processor that transforms CSS Modules with custom import naming patterns.
When building a design system, you need to process CSS Modules files that use composes to inherit styles from external files. Your build system requires that all imported class names follow a specific naming convention that includes metadata about the source file for better debugging and tracking.
Create a CSS processing utility that:
composes declarations:import() rulesYour solution should handle:
composes: button from "./components/button.css"composes: card footer from "../shared/layout.css"Input CSS:
.primaryButton {
composes: baseButton from "./base.css";
background: blue;
}
.card {
composes: container shadow from "../ui/layout.css";
padding: 20px;
}Expected Output:
:import("./base.css") {
ds_baseButton_base_css: baseButton;
}
:import("../ui/layout.css") {
ds_container_ui_layout_css: container;
ds_shadow_ui_layout_css: shadow;
}
.primaryButton {
composes: ds_baseButton_base_css;
background: blue;
}
.card {
composes: ds_container_ui_layout_css ds_shadow_ui_layout_css;
padding: 20px;
}Create a file transformer.js that exports a single function:
/**
* Transforms CSS with custom import naming
* @param {string} css - Input CSS string with composes declarations
* @returns {Promise<string>} - Transformed CSS with custom import names
*/
async function transformCSS(css) {
// Implementation here
}
module.exports = { transformCSS };Provides CSS Modules import extraction with customizable import naming.
Provides CSS parsing and processing capabilities.