import { createElement, lazy } from "react"; import type { MailDevMailboxUiCapability, MailProfilesUiCapability, PlatformWebModule, QuickAccessToolsUiCapability } from "@govoplan/core-webui"; import { MailProfilePolicyEditor, MailProfileScopeManager } from "./features/mail/MailProfileManagement"; import { validateMailPolicy } from "./features/mail/mailPolicyValidation"; import { mailCredentialReferenceSelectors } from "./features/mail/mailReferenceProviders"; import { generatedTranslations } from "./i18n/generatedTranslations"; import MailQuickAccess from "./features/mail/MailQuickAccess"; import "./styles/mail-profiles.css"; const MailboxPage = lazy(() => import("./features/mail/MailboxPage")); const MailBouncePage = lazy(() => import("./features/mail/MailBouncePage")); const MailLegacyImportPage = lazy(() => import("./features/mail/MailLegacyImportPage")); const mailboxRead = ["mail:mailbox:read"]; const bounceRead = ["mail:bounce:read", "mail:bounce:manage"]; const legacyImportAccess = ["mail:pop3:import", "mail:pop3:manage"]; const translations = { en: generatedTranslations.en, de: generatedTranslations.de }; const mailQuickAccessTools: QuickAccessToolsUiCapability = { tools: [ { id: "mail.messages", render: (context) => createElement(MailQuickAccess, context) } ] }; export const mailModule: PlatformWebModule = { id: "mail", label: "i18n:govoplan-mail.mail.92379cbb", version: "1.0.0", dependencies: ["access"], optionalDependencies: ["addresses", "audit", "notifications"], translations, viewSurfaces: [ { id: "mail.admin.system-servers", moduleId: "mail", kind: "section", label: "System mail servers", order: 70 }, { id: "mail.admin.tenant-servers", moduleId: "mail", kind: "section", label: "Tenant mail servers", order: 60 }, { id: "mail.admin.group-servers", moduleId: "mail", kind: "section", label: "Group mail servers", order: 20 }, { id: "mail.admin.user-servers", moduleId: "mail", kind: "section", label: "User mail servers", order: 20 }, { id: "mail.settings.profiles", moduleId: "mail", kind: "section", label: "Personal mail profiles", order: 10 }, { id: "mail.quick_access.messages", moduleId: "mail", kind: "quick_access", label: "Mail Quick Access", order: 80 } ], navItems: [ { to: "/mail", label: "i18n:govoplan-mail.mail.92379cbb", iconName: "mail", anyOf: mailboxRead, order: 50 }, { to: "/mail/legacy-import", label: "Legacy POP3 import", iconName: "mail", anyOf: legacyImportAccess, order: 52 } ], routes: [ { path: "/mail", anyOf: mailboxRead, order: 50, render: ({ settings, auth }) => createElement(MailboxPage, { settings, auth }) }, { path: "/mail/bounces", anyOf: bounceRead, order: 51, render: ({ settings }) => createElement(MailBouncePage, { settings }) }, { path: "/mail/legacy-import", anyOf: legacyImportAccess, order: 52, render: ({ settings, auth }) => createElement(MailLegacyImportPage, { settings, auth }) }], uiCapabilities: { "mail.profiles": { MailProfileScopeManager, MailProfilePolicyEditor, validateMailPolicy } satisfies MailProfilesUiCapability, "core.credentialReferenceSelectors": mailCredentialReferenceSelectors, "quickAccess.tools": mailQuickAccessTools }, runtimeUiCapabilities: { "mail.devMailbox": { enabled: true, label: "i18n:govoplan-mail.development_mock_mailbox.1a379865" } satisfies MailDevMailboxUiCapability } }; export default mailModule;