import { type ReactNode } from "react"; import type { ConfigBackend } from "@/back/types/global"; type SettingResolver = ( appEnv: AppEnv, configBackend: ConfigBackend, ) => ReactNode; const resolvers: SettingResolver[] = []; const SettingRegistry = { add(resolver: SettingResolver) { resolvers.push(resolver); }, getAll(appEnv: AppEnv, configBackend: ConfigBackend): ReactNode[] { return resolvers.map((resolver) => resolver(appEnv, configBackend)); }, }; // Add all sections presents in files to the registry. const modules = import.meta.glob<{ default: SettingResolver }>( "./Sections/*.tsx", { eager: true, }, ); Object.entries(modules) .sort(([pathA], [pathB]) => pathA.localeCompare(pathB)) .forEach(([, module]) => { SettingRegistry.add(module.default); }); export default SettingRegistry;