Adopt shared WebUI structural primitives

This commit is contained in:
2026-08-18 13:17:32 +02:00
parent 68855f6fad
commit 4aeda1c634
2 changed files with 5 additions and 29 deletions
@@ -38,6 +38,7 @@ import { ContentGrid, FormGrid,
ToggleSwitch, ToggleSwitch,
StatusBadge, StatusBadge,
StageRail, StageRail,
WorkspaceFrame,
hasScope, hasScope,
i18nMessage, i18nMessage,
isApiError, isApiError,
@@ -891,7 +892,7 @@ export default function SchedulingPage({ settings, auth }: { settings: ApiSettin
} }
return ( return (
<main className="scheduling-page"> <WorkspaceFrame as="main" height="viewport" surface="plain" className="scheduling-page" label="Scheduling workspace">
<section className="scheduling-workspace"> <section className="scheduling-workspace">
<div className="scheduling-workspace-layout"> <div className="scheduling-workspace-layout">
<aside className="scheduling-request-sidebar"> <aside className="scheduling-request-sidebar">
@@ -1344,7 +1345,7 @@ export default function SchedulingPage({ settings, auth }: { settings: ApiSettin
</Card> </Card>
) : null} ) : null}
<div className="scheduling-columns"> <ContentGrid columns={2} gap="small" collapseAt="workspace" align="stretch">
<Card title={I18N.participants}> <Card title={I18N.participants}>
<div className="scheduling-status-row"> <div className="scheduling-status-row">
<span>{i18nMessage("i18n:govoplan-scheduling.value_participants.e776b092", { value0: selected.participant_aggregate.total })}</span> <span>{i18nMessage("i18n:govoplan-scheduling.value_participants.e776b092", { value0: selected.participant_aggregate.total })}</span>
@@ -1379,7 +1380,7 @@ export default function SchedulingPage({ settings, auth }: { settings: ApiSettin
</div> </div>
)) : <p className="scheduling-note">{I18N.noNotifications}</p>} )) : <p className="scheduling-note">{I18N.noNotifications}</p>}
</Card> </Card>
</div> </ContentGrid>
<Card title={I18N.whatActionsDo} collapsible collapseKey="scheduling-action-help"> <Card title={I18N.whatActionsDo} collapsible collapseKey="scheduling-action-help">
<ul className="scheduling-action-help"> <ul className="scheduling-action-help">
@@ -1426,7 +1427,7 @@ export default function SchedulingPage({ settings, auth }: { settings: ApiSettin
busy={saving} busy={saving}
onCancel={() => setDecisionTarget(null)} onCancel={() => setDecisionTarget(null)}
onConfirm={() => void confirmSchedulingDecision()} /> onConfirm={() => void confirmSchedulingDecision()} />
</main> </WorkspaceFrame>
); );
function changeDraft(setter: (value: string) => void, value: string) { function changeDraft(setter: (value: string) => void, value: string) {
-25
View File
@@ -1,12 +1,3 @@
.scheduling-page {
box-sizing: border-box;
height: calc(100vh - 115px);
min-height: 0;
overflow: hidden;
color: var(--text);
background: var(--bg);
}
.scheduling-public-page { .scheduling-public-page {
width: min(920px, calc(100% - 32px)); width: min(920px, calc(100% - 32px));
margin: 0 auto; margin: 0 auto;
@@ -107,12 +98,6 @@
} }
} }
.scheduling-page *,
.scheduling-page *::before,
.scheduling-page *::after {
box-sizing: border-box;
}
.scheduling-workspace { .scheduling-workspace {
width: 100%; width: 100%;
height: 100%; height: 100%;
@@ -337,12 +322,6 @@
justify-items: start; justify-items: start;
} }
.scheduling-columns {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
}
.scheduling-compact-row { .scheduling-compact-row {
min-height: 36px; min-height: 36px;
display: grid; display: grid;
@@ -459,10 +438,6 @@
border-bottom: var(--border-line); border-bottom: var(--border-line);
} }
.scheduling-columns {
grid-template-columns: minmax(0, 1fr);
}
.scheduling-page-header { .scheduling-page-header {
align-items: flex-start; align-items: flex-start;
flex-wrap: wrap; flex-wrap: wrap;