import { createElement, lazy } from "react"; import type { AdminSectionsUiCapability, PlatformWebModule, SearchRuntimeUiCapability } from "@govoplan/core-webui"; import GlobalSearch from "./components/GlobalSearch"; import "./styles/search.css"; const SearchPage = lazy(() => import("./features/search/SearchPage")); const SearchAdminPanel = lazy(() => import("./features/search/SearchAdminPanel")); const searchRuntime: SearchRuntimeUiCapability = { GlobalSearch, anyOf: ["search:result:read"] }; const searchAdminSections: AdminSectionsUiCapability = { sections: [ { id: "tenant-search-index", moduleId: "search", kind: "operations", surfaceId: "search.admin.index", label: "Search index", group: "TENANT", order: 69, allOf: ["search:index:admin"], render: ({ settings }) => createElement(SearchAdminPanel, { settings }) } ] }; export const searchModule: PlatformWebModule = { id: "search", label: "Search", version: "0.1.14", optionalDependencies: [ "access", "views", "connectors", "wiki", "projects", "tickets", "cases" ], routes: [ { path: "/search", anyOf: ["search:result:read"], order: 12, surfaceId: "search.results", render: (context) => createElement(SearchPage, context) } ], viewSurfaces: [ { id: "search.global", moduleId: "search", kind: "selector", label: "Global search", order: 10 }, { id: "search.results", moduleId: "search", kind: "route", label: "Search results", order: 20 }, { id: "search.admin.index", moduleId: "search", kind: "section", label: "Search index administration", order: 30 } ], uiCapabilities: { "search.runtime": searchRuntime, "admin.sections": searchAdminSections } }; export default searchModule;