ldc-laravel-base-project/resources/ts/back/Components/Layout/Settings/SettingRegistry.tsx

36 lines
844 B
TypeScript
Raw Normal View History

import { type ReactNode } from "react";
2026-07-09 17:31:24 +02:00
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;