35 lines
844 B
TypeScript
35 lines
844 B
TypeScript
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;
|