Adopt shared WebUI structural primitives
This commit is contained in:
@@ -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.
|
||||||
@@ -47,6 +47,11 @@ ARCHITECTURE = ModuleArchitectureDeclaration(
|
|||||||
reference="docs/DOCUMENTATION_LAYER_CONCEPT.md",
|
reference="docs/DOCUMENTATION_LAYER_CONCEPT.md",
|
||||||
summary="Defines the manifest-driven documentation boundary.",
|
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=(
|
known_limits=(
|
||||||
"Architecture declarations are in staged adoption, so undeclared modules remain visible as pending.",
|
"Architecture declarations are in staged adoption, so undeclared modules remain visible as pending.",
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import {
|
|||||||
Dialog,
|
Dialog,
|
||||||
DismissibleAlert,
|
DismissibleAlert,
|
||||||
ExplorerTree,
|
ExplorerTree,
|
||||||
LoadingFrame,
|
PageLayout,
|
||||||
PageTitle,
|
|
||||||
SegmentedControl,
|
SegmentedControl,
|
||||||
StatusBadge,
|
StatusBadge,
|
||||||
|
WorkspaceLayout,
|
||||||
adminErrorMessage,
|
adminErrorMessage,
|
||||||
useGuardedNavigate,
|
useGuardedNavigate,
|
||||||
usePlatformLanguage,
|
usePlatformLanguage,
|
||||||
@@ -133,7 +133,14 @@ export default function DocsPage({ settings }: { settings: ApiSettings }) {
|
|||||||
}, [treeNodes, selectedPage?.id]);
|
}, [treeNodes, selectedPage?.id]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="workspace module-workspace docs-workspace">
|
<WorkspaceLayout
|
||||||
|
className="module-workspace docs-workspace"
|
||||||
|
primarySize="wide"
|
||||||
|
primaryLabel="i18n:govoplan-docs.documentation_outline.6f836b99"
|
||||||
|
contentLabel="i18n:govoplan-docs.help_center.f3f3a34b"
|
||||||
|
documentationType={documentationType}
|
||||||
|
contentClassName="docs-workspace-content"
|
||||||
|
primary={(
|
||||||
<aside className="section-sidebar docs-outline" aria-label="i18n:govoplan-docs.documentation_outline.6f836b99">
|
<aside className="section-sidebar docs-outline" aria-label="i18n:govoplan-docs.documentation_outline.6f836b99">
|
||||||
<div className="docs-sidebar-header">
|
<div className="docs-sidebar-header">
|
||||||
<div className="section-title">i18n:govoplan-docs.help_center.f3f3a34b</div>
|
<div className="section-title">i18n:govoplan-docs.help_center.f3f3a34b</div>
|
||||||
@@ -181,21 +188,19 @@ export default function DocsPage({ settings }: { settings: ApiSettings }) {
|
|||||||
/>
|
/>
|
||||||
</nav>
|
</nav>
|
||||||
</aside>
|
</aside>
|
||||||
<section className="workspace-content docs-workspace-content">
|
)}
|
||||||
<div className="content-pad workspace-data-page docs-page">
|
>
|
||||||
<div className="page-heading split workspace-heading">
|
<PageLayout
|
||||||
<div>
|
title="i18n:govoplan-docs.help_center.f3f3a34b"
|
||||||
<PageTitle loading={loading}>i18n:govoplan-docs.help_center.f3f3a34b</PageTitle>
|
description={adminDocs ? "i18n:govoplan-docs.technical_documentation_for_the_modules_and_conf.267e739e" : "i18n:govoplan-docs.guidance_for_the_functions_available_in_this_ins.723b7cad"}
|
||||||
<p>{adminDocs ? "i18n:govoplan-docs.technical_documentation_for_the_modules_and_conf.267e739e" : "i18n:govoplan-docs.guidance_for_the_functions_available_in_this_ins.723b7cad"}</p>
|
actions={<Button onClick={() => void load()} disabled={loading}><RefreshCw size={16} /> i18n:govoplan-docs.reload.cce71553</Button>}
|
||||||
</div>
|
loading={loading}
|
||||||
<div className="button-row compact-actions">
|
loadingLabel="i18n:govoplan-docs.loading_documentation_context.1c091645"
|
||||||
<Button onClick={() => void load()} disabled={loading}><RefreshCw size={16} /> i18n:govoplan-docs.reload.cce71553</Button>
|
error={error}
|
||||||
</div>
|
mode="workspace"
|
||||||
</div>
|
documentationType={documentationType}
|
||||||
|
className="docs-page"
|
||||||
{error && <DismissibleAlert tone="danger" resetKey={error} floating>{error}</DismissibleAlert>}
|
>
|
||||||
|
|
||||||
<LoadingFrame loading={loading} label="i18n:govoplan-docs.loading_documentation_context.1c091645">
|
|
||||||
<div className="docs-content">
|
<div className="docs-content">
|
||||||
<main className="docs-page-main">
|
<main className="docs-page-main">
|
||||||
<SelectedPageContent
|
<SelectedPageContent
|
||||||
@@ -215,10 +220,8 @@ export default function DocsPage({ settings }: { settings: ApiSettings }) {
|
|||||||
</main>
|
</main>
|
||||||
<PageOutline items={outlineItems} />
|
<PageOutline items={outlineItems} />
|
||||||
</div>
|
</div>
|
||||||
</LoadingFrame>
|
</PageLayout>
|
||||||
</div>
|
</WorkspaceLayout>
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
);
|
);
|
||||||
|
|
||||||
function selectDocumentationType(type: DocumentationType) {
|
function selectDocumentationType(type: DocumentationType) {
|
||||||
|
|||||||
Reference in New Issue
Block a user