diff --git a/src/govoplan_admin/backend/manifest.py b/src/govoplan_admin/backend/manifest.py
index 9b64f19..4825cce 100644
--- a/src/govoplan_admin/backend/manifest.py
+++ b/src/govoplan_admin/backend/manifest.py
@@ -3,7 +3,8 @@ from __future__ import annotations
from govoplan_admin.backend.db import models as admin_models # noqa: F401 - populate Admin ORM metadata
from govoplan_core.core.access import CAPABILITY_AUTH_PERMISSION_EVALUATOR, CAPABILITY_AUTH_PRINCIPAL_RESOLVER
from govoplan_core.core.module_guards import persistent_table_uninstall_guard
-from govoplan_core.core.modules import MigrationSpec, ModuleContext, ModuleManifest
+from govoplan_core.core.modules import FrontendModule, MigrationSpec, ModuleContext, ModuleManifest
+from govoplan_core.core.views import ViewSurface
from govoplan_core.db.base import Base
@@ -20,6 +21,19 @@ manifest = ModuleManifest(
version="0.1.8",
required_capabilities=(CAPABILITY_AUTH_PRINCIPAL_RESOLVER, CAPABILITY_AUTH_PERMISSION_EVALUATOR),
route_factory=_route_factory,
+ frontend=FrontendModule(
+ module_id="admin",
+ package_name="@govoplan/admin-webui",
+ view_surfaces=(
+ ViewSurface(id="admin.section.overview", module_id="admin", kind="section", label="Administration overview", order=0),
+ ViewSurface(id="admin.section.system-settings", module_id="admin", kind="section", label="System settings", order=10),
+ ViewSurface(id="admin.section.system-configuration-changes", module_id="admin", kind="section", label="Configuration changes", order=20),
+ ViewSurface(id="admin.section.system-configuration-packages", module_id="admin", kind="section", label="Configuration packages", order=30),
+ ViewSurface(id="admin.section.system-role-templates", module_id="admin", kind="section", label="Role templates", order=40),
+ ViewSurface(id="admin.section.system-groups", module_id="admin", kind="section", label="Group templates", order=50),
+ ViewSurface(id="admin.section.system-modules", module_id="admin", kind="section", label="Modules", order=85),
+ ),
+ ),
migration_spec=MigrationSpec(module_id="admin", metadata=Base.metadata),
uninstall_guard_providers=(
persistent_table_uninstall_guard(
diff --git a/webui/src/features/admin/ModuleManagementPanel.tsx b/webui/src/features/admin/ModuleManagementPanel.tsx
index a63c9f5..3a1f5f4 100644
--- a/webui/src/features/admin/ModuleManagementPanel.tsx
+++ b/webui/src/features/admin/ModuleManagementPanel.tsx
@@ -355,8 +355,8 @@ export default function ModuleManagementPanel({ settings, canWrite, canAccessMai
{module.protected && }
- {module.frontend_package && {module.frontend_package}}
- {module.migration_module_id && i18n:govoplan-admin.db.e355c23a {module.migration_module_id}}
+ i18n:govoplan-admin.webui_package.19645536 {module.frontend_package ?? "none"}
+ i18n:govoplan-admin.db.e355c23a {module.migration_module_id ?? "none"}
i18n:govoplan-admin.requires.a4fc9357 {module.dependencies.length ? module.dependencies.join(", ") : "none"}
diff --git a/webui/src/module.ts b/webui/src/module.ts
index 849485f..bccd8cc 100644
--- a/webui/src/module.ts
+++ b/webui/src/module.ts
@@ -19,6 +19,7 @@ const adminSections: AdminSectionsUiCapability = {
sections: [
{
id: "overview",
+ surfaceId: "admin.section.overview",
label: "i18n:govoplan-admin.overview.0efc2e6b",
group: "ROOT",
order: 0,
@@ -31,6 +32,7 @@ const adminSections: AdminSectionsUiCapability = {
},
{
id: "system-settings",
+ surfaceId: "admin.section.system-settings",
label: "i18n:govoplan-admin.general.9239ee2c",
group: "SYSTEM",
order: 10,
@@ -43,6 +45,7 @@ const adminSections: AdminSectionsUiCapability = {
},
{
id: "system-configuration-changes",
+ surfaceId: "admin.section.system-configuration-changes",
label: "i18n:govoplan-admin.changes.8aa57de6",
group: "SYSTEM",
order: 20,
@@ -54,6 +57,7 @@ const adminSections: AdminSectionsUiCapability = {
},
{
id: "system-configuration-packages",
+ surfaceId: "admin.section.system-configuration-packages",
label: "i18n:govoplan-admin.configuration_packages.eb2f05f1",
group: "SYSTEM",
order: 30,
@@ -65,6 +69,7 @@ const adminSections: AdminSectionsUiCapability = {
},
{
id: "system-role-templates",
+ surfaceId: "admin.section.system-role-templates",
label: "i18n:govoplan-admin.tenant_roles.51aca82d",
group: "SYSTEM",
order: 40,
@@ -78,6 +83,7 @@ const adminSections: AdminSectionsUiCapability = {
},
{
id: "system-modules",
+ surfaceId: "admin.section.system-modules",
label: "i18n:govoplan-admin.modules.04e9462c",
group: "SYSTEM",
order: 85,
@@ -90,6 +96,7 @@ const adminSections: AdminSectionsUiCapability = {
},
{
id: "system-groups",
+ surfaceId: "admin.section.system-groups",
label: "i18n:govoplan-admin.groups.ae9629f4",
group: "SYSTEM",
order: 50,
@@ -110,6 +117,15 @@ export const adminModule: PlatformWebModule = {
version: "1.0.0",
dependencies: ["access"],
translations,
+ viewSurfaces: [
+ { id: "admin.section.overview", moduleId: "admin", kind: "section", label: "Administration overview", order: 0 },
+ { id: "admin.section.system-settings", moduleId: "admin", kind: "section", label: "System settings", order: 10 },
+ { id: "admin.section.system-configuration-changes", moduleId: "admin", kind: "section", label: "Configuration changes", order: 20 },
+ { id: "admin.section.system-configuration-packages", moduleId: "admin", kind: "section", label: "Configuration packages", order: 30 },
+ { id: "admin.section.system-role-templates", moduleId: "admin", kind: "section", label: "Role templates", order: 40 },
+ { id: "admin.section.system-groups", moduleId: "admin", kind: "section", label: "Group templates", order: 50 },
+ { id: "admin.section.system-modules", moduleId: "admin", kind: "section", label: "Modules", order: 85 }
+ ],
uiCapabilities: {
"admin.sections": adminSections
}