import { createElement, lazy } from "react"; import type { AdminSectionsUiCapability, PlatformWebModule } from "@govoplan/core-webui"; import { adminReadScopes, hasScope } from "@govoplan/core-webui"; import { generatedTranslations } from "./i18n/generatedTranslations"; const AdminOverviewPanel = lazy(() => import("./features/admin/AdminOverviewPanel")); const ConfigurationChangesPanel = lazy(() => import("./features/admin/ConfigurationChangesPanel")); const ConfigurationPackagesPanel = lazy(() => import("./features/admin/ConfigurationPackagesPanel")); const GovernanceTemplatesPanel = lazy(() => import("./features/admin/GovernanceTemplatesPanel")); const ModuleManagementPanel = lazy(() => import("./features/admin/ModuleManagementPanel")); const SystemSettingsPanel = lazy(() => import("./features/admin/SystemSettingsPanel")); const translations = { en: generatedTranslations.en, de: generatedTranslations.de }; const adminSections: AdminSectionsUiCapability = { sections: [ { id: "overview", label: "i18n:govoplan-admin.overview.0efc2e6b", group: "ROOT", order: 0, anyOf: adminReadScopes, render: ({ settings, availableSections, selectSection }) => createElement(AdminOverviewPanel, { settings, availableSections, onSelect: selectSection }) }, { id: "system-settings", label: "i18n:govoplan-admin.general.9239ee2c", group: "SYSTEM", order: 10, allOf: ["system:settings:read"], render: ({ settings, auth }) => createElement(SystemSettingsPanel, { settings, canWrite: hasScope(auth, "system:settings:write"), canAccessMaintenance: hasScope(auth, "system:maintenance:access") }) }, { id: "system-configuration-changes", label: "i18n:govoplan-admin.changes.8aa57de6", group: "SYSTEM", order: 20, allOf: ["system:settings:read"], render: ({ settings, auth }) => createElement(ConfigurationChangesPanel, { settings, canApprove: hasScope(auth, "system:settings:write") || hasScope(auth, "system:governance:write") }) }, { id: "system-configuration-packages", label: "i18n:govoplan-admin.packages.0a999012", group: "SYSTEM", order: 30, allOf: ["system:settings:read"], render: ({ settings, auth }) => createElement(ConfigurationPackagesPanel, { settings, canWrite: hasScope(auth, "system:settings:write") }) }, { id: "system-role-templates", label: "i18n:govoplan-admin.tenant_roles.51aca82d", group: "SYSTEM", order: 40, allOf: ["system:governance:read"], render: ({ settings, auth, refreshAuth }) => createElement(GovernanceTemplatesPanel, { settings, kind: "role", canWrite: hasScope(auth, "system:governance:write"), onAuthRefresh: refreshAuth }) }, { id: "system-modules", label: "i18n:govoplan-admin.modules.04e9462c", group: "SYSTEM", order: 85, allOf: ["system:settings:read"], render: ({ settings, auth }) => createElement(ModuleManagementPanel, { settings, canWrite: hasScope(auth, "system:settings:write"), canAccessMaintenance: hasScope(auth, "system:maintenance:access") }) }, { id: "system-groups", label: "i18n:govoplan-admin.groups.ae9629f4", group: "SYSTEM", order: 50, allOf: ["system:governance:read"], render: ({ settings, auth, refreshAuth }) => createElement(GovernanceTemplatesPanel, { settings, kind: "group", canWrite: hasScope(auth, "system:governance:write"), onAuthRefresh: refreshAuth }) }] }; export const adminModule: PlatformWebModule = { id: "admin", label: "i18n:govoplan-admin.admin.4e7afebc", version: "1.0.0", dependencies: ["access"], translations, uiCapabilities: { "admin.sections": adminSections } }; export default adminModule;