Files
cunningham/packages/react/cunningham.ts
jbpenrath a6681d19ed 📦(all) update packages namespace
Change packages namespace from `@openfun` to `@gouvfr-lasuite`.
2025-11-03 14:43:08 +01:00

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