diff --git a/docs/INTERFACE_PATTERN_MIGRATION.md b/docs/INTERFACE_PATTERN_MIGRATION.md index 39584db..2e2632e 100644 --- a/docs/INTERFACE_PATTERN_MIGRATION.md +++ b/docs/INTERFACE_PATTERN_MIGRATION.md @@ -38,11 +38,14 @@ units, relations, functions, settings, and their mutation consequences. ## State And Accessibility Evidence -The module uses Core page, subnavigation, grid, tree, card, dialog, loading, -alert, status, blocker, field-help, and disabled-action controls. Stable table +The module uses Core `WorkspaceLayout` and `PageLayout` for both the standalone +workspace and embedded administration contribution, plus shared subnavigation, +grid, tree, card, dialog, loading, alert, status, blocker, field-help, and +disabled-action controls. Pane width, content inset, headings, route actions, +notices, scrolling, and responsive navigation are therefore Core-owned rather +than repeated in Organizations CSS. Stable table action slots remain keyboard reachable; dialogs retain shared focus containment -and return. Responsive behavior stays owned by the existing workspace and admin -shell CSS. Labels and accessible properties use the English/German module +and return. Labels and accessible properties use the English/German module catalogue, and API errors are bounded to the current tenant operation. The manifest contributes stable help contexts for the workspace, sections, diff --git a/webui/src/features/organizations/OrganizationsPage.tsx b/webui/src/features/organizations/OrganizationsPage.tsx index 48242e9..96224d8 100644 --- a/webui/src/features/organizations/OrganizationsPage.tsx +++ b/webui/src/features/organizations/OrganizationsPage.tsx @@ -8,14 +8,13 @@ import { FormLayout, ActionToolbar, Card, DataGrid, Dialog, - DismissibleAlert, DocumentationHelpLink, ExplorerTree, FormField, IconButton, LoadingFrame, ModuleSubnav, - PageTitle, + PageLayout, StatusBadge, TableActionGroup, ToggleSwitch, @@ -26,6 +25,7 @@ import { FormLayout, ActionToolbar, useUnsavedDraftGuard, usePlatformUiCapabilities, useViewSurfaces, + WorkspaceLayout, type ApiSettings, type AuthInfo, type DataGridColumn, @@ -998,13 +998,12 @@ export default function OrganizationsPage({ : undefined; const content = ( -
-
-
- {title} -

{description}

-
- + <> + - -
- - {error && {error}} - {success && !error && {success}} + + )} + mode={mode === "workspace" ? "workspace" : "embedded"} + headerLoading={loading} + error={error} + success={error ? "" : success} + className={`organizations-page ${mode === "admin" ? "organizations-admin-page" : ""}`.trim()} + headerClassName="organizations-heading" + > {!canWriteActive && ( + {renderEditorDialog()} -
+ ); if (mode === "admin") return content; return ( -
- requestDiscard(() => setActive(section))} - /> -
- {content} -
-
+ requestDiscard(() => setActive(section))} + /> + )} + primaryLabel="i18n:govoplan-organizations.organization_model.5945c48a" + contentLabel={title} + documentationType={mode === "admin" ? "admin" : "user"} + > + {content} + ); function renderModelSection() { diff --git a/webui/src/styles/organizations.css b/webui/src/styles/organizations.css index b9ee7d3..7f84014 100644 --- a/webui/src/styles/organizations.css +++ b/webui/src/styles/organizations.css @@ -1,30 +1,3 @@ -.organizations-workspace { - grid-template-columns: 230px minmax(0, 1fr); - background: var(--bg); -} - -.organizations-page { - display: grid; - gap: 18px; - width: 100%; -} - -.organizations-admin-page { - max-width: 100%; -} - -.organizations-heading { - margin-bottom: 4px; -} - -.organizations-toolbar { - display: flex; - align-items: center; - justify-content: flex-end; - gap: 12px; - flex-wrap: wrap; -} - .organizations-check-list { display: grid; gap: 10px; @@ -67,11 +40,6 @@ color: var(--muted); } -@media (max-width: 900px) { - .organizations-workspace { - grid-template-columns: 1fr; - } -} .organization-upgrade-toolbar { display: grid; grid-template-columns: minmax(16rem, 1fr) auto;