42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { dirname, sep } from "path";
|
|
import { defaultTokenRefs } from "@gouvfr-lasuite/cunningham-tokens";
|
|
import { globSync } from "glob";
|
|
|
|
/**
|
|
* This scripts dynamically imports all tokens.ts files from components and load them in a single object that will be
|
|
* exported as the local configuration of cunningham under the `components` key.
|
|
*
|
|
* Hence, any consumers of this package will be able to customize the tokens of the components they use by overriding
|
|
* them in their own local configuration file. ( cunningham.ts|js )
|
|
*/
|
|
const components: any = {};
|
|
const files = globSync("src/components/**/tokens.ts");
|
|
files.forEach((file) => {
|
|
const importPath = "." + sep + file.replace(/\.ts$/, "");
|
|
|
|
const res = require(importPath);
|
|
if (!res.tokens) {
|
|
throw new Error("Tokens file does not export tokens " + file);
|
|
}
|
|
|
|
try {
|
|
const componentName = dirname(importPath)
|
|
.split(`${sep}components${sep}`)[1]
|
|
.toLocaleLowerCase()
|
|
.replace(sep, "-");
|
|
|
|
components[componentName] = res.tokens(defaultTokenRefs);
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
} catch (_error) {
|
|
throw new Error("Could not find component name from file path " + file);
|
|
}
|
|
});
|
|
|
|
export default {
|
|
themes: {
|
|
default: {
|
|
components,
|
|
},
|
|
},
|
|
};
|