import { createElement, lazy } from "react"; import { hasScope, type AdminSectionsUiCapability, type FilesConnectorsUiCapability, type FilesFileExplorerUiCapability, type PlatformWebModule } from "@govoplan/core-webui"; import { FolderTree } from "./features/files/components/FileManagerComponents"; import FileConnectorSettingsPanel from "./features/files/FileConnectorSettingsPanel"; import ManagedFileChooser from "./features/files/components/ManagedFileChooser"; import { listFileSpaces, listFiles, listFilesDelta, listFolders, resolveFilePatterns, shareFilesWithTarget } from "./api/files"; import { generatedTranslations } from "./i18n/generatedTranslations"; import "./styles/file-manager.css"; const FilesPage = lazy(() => import("./features/files/FilesPage")); const fileRead = ["files:file:read"]; const translations = { en: generatedTranslations.en, de: generatedTranslations.de }; const fileConnectorAdminSections: AdminSectionsUiCapability = { sections: [ { id: "system-file-connectors", label: "i18n:govoplan-files.file_connections.1e362326", group: "SYSTEM", order: 75, anyOf: ["system:settings:read", "files:file:admin"], render: ({ settings, auth }) => createElement(FileConnectorSettingsPanel, { settings, scopeType: "system", canWrite: hasScope(auth, "system:settings:write") || hasScope(auth, "files:file:admin") }) }, { id: "tenant-file-connectors", label: "i18n:govoplan-files.file_connections.1e362326", group: "TENANT", order: 65, anyOf: ["admin:settings:read", "files:file:admin"], render: ({ settings, auth }) => createElement(FileConnectorSettingsPanel, { settings, scopeType: "tenant", canWrite: hasScope(auth, "admin:settings:write") || hasScope(auth, "files:file:admin") }) }] }; export const filesModule: PlatformWebModule = { id: "files", label: "i18n:govoplan-files.files.6ce6c512", version: "1.0.0", dependencies: ["access"], translations, navItems: [{ to: "/files", label: "i18n:govoplan-files.files.6ce6c512", iconName: "folder", anyOf: fileRead, order: 40 }], routes: [ { path: "/files", anyOf: fileRead, order: 40, render: ({ settings, auth }) => createElement(FilesPage, { settings, auth }) }], uiCapabilities: { "files.fileExplorer": { FolderTree, ManagedFileChooser, listFileSpaces, listFiles, listFilesDelta, listFolders, resolveFilePatterns, shareFilesWithTarget } satisfies FilesFileExplorerUiCapability, "files.connectors": { FileConnectorScopeManager: FileConnectorSettingsPanel } satisfies FilesConnectorsUiCapability, "admin.sections": fileConnectorAdminSections } }; export default filesModule;