import { createElement, lazy } from "react"; import type { AdminSectionsUiCapability, OrganizationFunctionPickerUiCapability, PlatformWebModule } from "@govoplan/core-webui"; import { generatedTranslations } from "./i18n/generatedTranslations"; import { OrganizationFunctionLabel, OrganizationFunctionPicker } from "./features/organizations/OrganizationFunctionPicker"; import "./styles/organizations.css"; const OrganizationsPage = lazy(() => import("./features/organizations/OrganizationsPage")); const OrganizationsAdminPanel = lazy(() => import("./features/organizations/OrganizationsAdminPanel")); const organizationReadScopes = [ "organizations:model:read", "organizations:unit:read", "organizations:function:read", "admin:settings:read" ]; const translations = { en: generatedTranslations.en, de: generatedTranslations.de }; const organizationAdminSections: AdminSectionsUiCapability = { sections: [ { id: "tenant-organization-settings", label: "i18n:govoplan-organizations.organizations.220edf64", group: "TENANT", order: 85, anyOf: ["organizations:settings:read", "admin:settings:read"], render: ({ settings, auth }) => createElement(OrganizationsAdminPanel, { settings, auth }) } ] }; const organizationFunctionPicker: OrganizationFunctionPickerUiCapability = { sourceModule: "organizations", renderPicker: (context) => createElement(OrganizationFunctionPicker, context), renderLabel: (context) => createElement(OrganizationFunctionLabel, context) }; export const organizationsModule: PlatformWebModule = { id: "organizations", label: "i18n:govoplan-organizations.organizations.220edf64", version: "1.0.0", dependencies: ["access"], optionalDependencies: ["admin"], translations, navItems: [ { to: "/organizations", label: "i18n:govoplan-organizations.organizations.220edf64", iconName: "building-2", anyOf: organizationReadScopes, order: 70 } ], routes: [ { path: "/organizations", anyOf: organizationReadScopes, order: 70, render: ({ settings, auth }) => createElement(OrganizationsPage, { settings, auth }) } ], uiCapabilities: { "admin.sections": organizationAdminSections, "organizations.functionPicker": organizationFunctionPicker } }; export default organizationsModule;