Source code
Revision control
Copy as Markdown
Other Tools
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
import { getTokensByLayer } from "./get-tokens-by-layer.mjs";
export const getTokenCSS = ({
surface,
componentName,
dictionary,
overrideIdentifier,
}) => {
let sharedLayers = "";
let browserThemeLayers = "";
const { foundation, browserTheme, prefersContrast, forcedColors } =
getTokensByLayer({
surface,
componentName,
dictionary,
overrideIdentifier,
});
if (foundation.length) {
sharedLayers += `@layer tokens-foundation${surface === "brand" ? "-brand" : ""}${overrideIdentifier ? `-${overrideIdentifier}` : ""} {
${foundation.join("\n ")}
}`;
}
if (prefersContrast.length) {
sharedLayers += `\n\n @layer tokens-prefers-contrast${overrideIdentifier ? `-${overrideIdentifier}` : ""} {
@media (prefers-contrast) {
${prefersContrast.join("\n ")}
}
}`;
}
if (forcedColors.length) {
sharedLayers += `\n\n @layer tokens-forced-colors${overrideIdentifier ? `-${overrideIdentifier}` : ""} {
@media (forced-colors) {
${forcedColors.join("\n ")}
}
}
`;
}
if ((surface === "platform" || componentName) && browserTheme.length) {
browserThemeLayers += `@layer tokens-browser-theme${overrideIdentifier ? `-${overrideIdentifier}` : ""} {
@media not ((forced-colors) or (-moz-native-theme)) {
${browserTheme.join("\n ")}
}
}`;
}
return {
sharedLayers,
browserThemeLayers,
};
};