diff --git a/webui/src/features/approvals/ApprovalRequestDialog.tsx b/webui/src/features/approvals/ApprovalRequestDialog.tsx
index cad0e24..56b80b1 100644
--- a/webui/src/features/approvals/ApprovalRequestDialog.tsx
+++ b/webui/src/features/approvals/ApprovalRequestDialog.tsx
@@ -1,5 +1,5 @@
import { useMemo, useState } from "react";
-import { Button, Dialog, DocumentationHelpLink, DismissibleAlert, FormField, ToggleSwitch, useUnsavedChanges, useUnsavedDraftGuard, type ApiSettings } from "@govoplan/core-webui";
+import { FormGrid, Button, Dialog, DocumentationHelpLink, DismissibleAlert, FormField, ToggleSwitch, useUnsavedChanges, useUnsavedDraftGuard, type ApiSettings } from "@govoplan/core-webui";
import { createApproval, type ApprovalDraft, type ApprovalRequest } from "../../api/approvals";
import ApprovalStepsEditor, { emptyApprovalStep } from "./ApprovalStepsEditor";
import { APPROVALS_FIELD_DOCUMENTATION, APPROVALS_I18N } from "./interfacePatterns";
@@ -45,7 +45,7 @@ export default function ApprovalRequestDialog({ settings, onClose, onSaved }: {
{error &&
{error}}
-
+
setDraft({ ...draft, title: event.target.value })} />
setDraft({ ...draft, subject_module: event.target.value })} />
setDraft({ ...draft, subject_type: event.target.value })} />
@@ -55,7 +55,7 @@ export default function ApprovalRequestDialog({ settings, onClose, onSaved }: {
setDraft({ ...draft, separation_of_duties: value })} />
setDraft({ ...draft, unique_actors_across_steps: value })} />
-
+
setDraft({ ...draft, steps })} />
;
diff --git a/webui/src/features/approvals/ApprovalTemplatesPanel.tsx b/webui/src/features/approvals/ApprovalTemplatesPanel.tsx
index c3e9e5d..68ab448 100644
--- a/webui/src/features/approvals/ApprovalTemplatesPanel.tsx
+++ b/webui/src/features/approvals/ApprovalTemplatesPanel.tsx
@@ -1,6 +1,6 @@
import { GitCompareArrows, History, Pencil, Plus, Send } from "lucide-react";
import { useEffect, useMemo, useState } from "react";
-import {
+import { FormGrid, ActionToolbar,
AdminIconButton,
AdminPageLayout,
Button,
@@ -196,13 +196,13 @@ export default function ApprovalTemplatesPanel({
@@ -210,11 +210,11 @@ export default function ApprovalTemplatesPanel({
diff --git a/webui/src/features/approvals/ApprovalsPage.tsx b/webui/src/features/approvals/ApprovalsPage.tsx
index 6cc92f5..44dfa9b 100644
--- a/webui/src/features/approvals/ApprovalsPage.tsx
+++ b/webui/src/features/approvals/ApprovalsPage.tsx
@@ -1,6 +1,6 @@
import { AlarmClock, Check, Plus, RefreshCw, X } from "lucide-react";
import { useCallback, useEffect, useState } from "react";
-import { ActionBlockerHint, Button, ConfirmDialog, Dialog, DocumentationHelpLink, DismissibleAlert, FormField, IconButton, LoadingIndicator, PageScrollViewport, StatusBadge, WorkspaceLayout, hasScope, usePlatformLanguage, useUnsavedChanges, useUnsavedDraftGuard, type PlatformRouteContext } from "@govoplan/core-webui";
+import { ActionToolbar, ActionBlockerHint, Button, ConfirmDialog, Dialog, DocumentationHelpLink, DismissibleAlert, FormField, IconButton, LoadingIndicator, PageScrollViewport, StatusBadge, WorkspaceLayout, hasScope, usePlatformLanguage, useUnsavedChanges, useUnsavedDraftGuard, type PlatformRouteContext } from "@govoplan/core-webui";
import { approvalHistory, decideApproval, escalateApproval, getApproval, listApprovals, type ApprovalEvent, type ApprovalRequest } from "../../api/approvals";
import ApprovalRequestDialog from "./ApprovalRequestDialog";
import { APPROVALS_DOCUMENTATION, APPROVALS_FIELD_DOCUMENTATION, APPROVALS_I18N } from "./interfacePatterns";
@@ -68,7 +68,7 @@ export default function ApprovalsPage({ settings, auth }: PlatformRouteContext)
helpContextId="approvals.workspace"
helpModuleId="approvals"
primary={<>
- } disabled={loading || busy} disabledReason={loading ? APPROVALS_I18N.loading : busy ? APPROVALS_I18N.busy : undefined} onClick={() => void load()} />
+ } disabled={loading || busy} disabledReason={loading ? APPROVALS_I18N.loading : busy ? APPROVALS_I18N.busy : undefined} onClick={() => void load()} />
{loading && }{items.map((item) => )}
{!loading && items.length === 0 && No approval requests
}
>}
>
diff --git a/webui/src/styles/approvals.css b/webui/src/styles/approvals.css
index 6651dbc..c396ae4 100644
--- a/webui/src/styles/approvals.css
+++ b/webui/src/styles/approvals.css
@@ -27,7 +27,6 @@
.approval-request-dialog, .approval-template-dialog { width: min(1160px, calc(100vw - 32px)); height: min(860px, calc(100vh - 32px)); }
.approval-editor { display: flex; min-height: 0; flex-direction: column; gap: 12px; overflow: auto; }
.approval-editor-help { display: flex; justify-content: flex-end; }
-.approval-editor-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.approval-editor-wide { grid-column: 1 / -1; }
.approval-editor-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.approval-step-list { display: flex; flex-direction: column; gap: 8px; }
@@ -44,4 +43,4 @@
.approval-compare-toolbar { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) auto; align-items: end; gap: 8px; }
.approval-diff-value { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.approval-decision-form { display: flex; min-width: min(520px, 75vw); flex-direction: column; gap: 10px; }
-@media (max-width: 900px) { .approvals-list-panel { border-right: 0; border-bottom: 1px solid var(--border-color, #d8dde3); } .approval-metrics, .approval-editor-grid, .approval-step-fields, .approval-selector-list > div, .approval-compare-toolbar { grid-template-columns: 1fr; } .approval-editor-wide { grid-column: auto; } }
+@media (max-width: 900px) { .approvals-list-panel { border-right: 0; border-bottom: 1px solid var(--border-color, #d8dde3); } .approval-metrics, .approval-step-fields, .approval-selector-list > div, .approval-compare-toolbar { grid-template-columns: 1fr; } .approval-editor-wide { grid-column: auto; } }