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, }, }, };