From e05d5b4a541a0d23c41d571f77f06580acd88b09 Mon Sep 17 00:00:00 2001 From: Albrecht Degering Date: Tue, 18 Aug 2026 13:17:31 +0200 Subject: [PATCH] Adopt shared WebUI structural primitives --- docs/INTERFACE_PATTERN_MIGRATION.md | 25 ++++ src/govoplan_docs/backend/manifest.py | 5 + webui/src/features/docs/DocsPage.tsx | 175 +++++++++++++------------- 3 files changed, 119 insertions(+), 86 deletions(-) create mode 100644 docs/INTERFACE_PATTERN_MIGRATION.md diff --git a/docs/INTERFACE_PATTERN_MIGRATION.md b/docs/INTERFACE_PATTERN_MIGRATION.md new file mode 100644 index 0000000..be619a6 --- /dev/null +++ b/docs/INTERFACE_PATTERN_MIGRATION.md @@ -0,0 +1,25 @@ +# Docs Interface Pattern Migration + +The Docs route composes the platform interface language without owning a +parallel shell. Core owns its navigation/content pane geometry and page frame; +Docs owns audience filtering, version selection, topic navigation, configured +documentation projection, and evidence presentation. + +## Surface contract + +- `WorkspaceLayout` owns the outline/content regions, pane width, scrolling, + accessible labels, and narrow-layout navigation behavior. +- `PageLayout` owns the content inset, sticky heading, audience-aware page + identity, reload action placement, error and loading regions, and responsive + action flow. +- `ExplorerTree`, `SegmentedControl`, `DataGrid`, `DescriptionList`, dialogs, + alerts, and status badges retain their Core interaction and accessibility + contracts. +- Docs-specific CSS remains limited to the documentation tree, reading column, + topic typography, page outline, and reference content. It no longer defines + the outer workspace grid or page skeleton. + +The module keeps user/admin audience boundaries, installed-version selection, +topic URLs, configured-state projection, and evidence visibility unchanged. +The platform layout checker rejects restoring a raw Docs page or workspace +frame. diff --git a/src/govoplan_docs/backend/manifest.py b/src/govoplan_docs/backend/manifest.py index 2b31a23..4cfbad4 100644 --- a/src/govoplan_docs/backend/manifest.py +++ b/src/govoplan_docs/backend/manifest.py @@ -47,6 +47,11 @@ ARCHITECTURE = ModuleArchitectureDeclaration( reference="docs/DOCUMENTATION_LAYER_CONCEPT.md", summary="Defines the manifest-driven documentation boundary.", ), + ModuleMaturityEvidence( + kind="documentation", + reference="docs/INTERFACE_PATTERN_MIGRATION.md", + summary="Records the Core-owned Docs workspace and page-layout boundary.", + ), ), known_limits=( "Architecture declarations are in staged adoption, so undeclared modules remain visible as pending.", diff --git a/webui/src/features/docs/DocsPage.tsx b/webui/src/features/docs/DocsPage.tsx index a9c6184..80db1bf 100644 --- a/webui/src/features/docs/DocsPage.tsx +++ b/webui/src/features/docs/DocsPage.tsx @@ -8,10 +8,10 @@ import { Dialog, DismissibleAlert, ExplorerTree, - LoadingFrame, - PageTitle, + PageLayout, SegmentedControl, StatusBadge, + WorkspaceLayout, adminErrorMessage, useGuardedNavigate, usePlatformLanguage, @@ -133,92 +133,95 @@ export default function DocsPage({ settings }: { settings: ApiSettings }) { }, [treeNodes, selectedPage?.id]); return ( -
- -
-
-
-
- i18n:govoplan-docs.help_center.f3f3a34b -

{adminDocs ? "i18n:govoplan-docs.technical_documentation_for_the_modules_and_conf.267e739e" : "i18n:govoplan-docs.guidance_for_the_functions_available_in_this_ins.723b7cad"}

-
-
- -
+ +
+
i18n:govoplan-docs.help_center.f3f3a34b
+ +
- - {error && {error}} - - -
-
- -
- -
-
+ + + )} + > + void load()} disabled={loading}> i18n:govoplan-docs.reload.cce71553} + loading={loading} + loadingLabel="i18n:govoplan-docs.loading_documentation_context.1c091645" + error={error} + mode="workspace" + documentationType={documentationType} + className="docs-page" + > +
+
+ +
+
-
-
+ + ); function selectDocumentationType(type: DocumentationType) {