From a071692e75171c374d7702cbd7be4e8b84e3336f Mon Sep 17 00:00:00 2001 From: Albrecht Degering Date: Tue, 18 Aug 2026 13:17:32 +0200 Subject: [PATCH] Adopt shared WebUI structural primitives --- .../src/features/workflow/WorkflowCanvas.tsx | 5 +- .../features/workflow/WorkflowInspector.tsx | 14 +- webui/src/features/workflow/WorkflowNode.tsx | 7 +- webui/src/features/workflow/WorkflowPage.tsx | 154 ++++--- .../features/workflow/WorkflowRunsDialog.tsx | 5 +- webui/src/styles/workflow.css | 415 +----------------- 6 files changed, 94 insertions(+), 506 deletions(-) diff --git a/webui/src/features/workflow/WorkflowCanvas.tsx b/webui/src/features/workflow/WorkflowCanvas.tsx index 8e526fc..8f18264 100644 --- a/webui/src/features/workflow/WorkflowCanvas.tsx +++ b/webui/src/features/workflow/WorkflowCanvas.tsx @@ -15,6 +15,7 @@ import { type Edge, type ReactFlowInstance } from "@xyflow/react"; +import { StatePanel } from "@govoplan/core-webui"; import { definitionConnectionError } from "@govoplan/core-webui/definition-graph"; import type { WorkflowDiagnostic, @@ -211,7 +212,7 @@ export default function WorkflowCanvas({ return (
{ if ( event.dataTransfer.types.includes( @@ -320,7 +321,7 @@ export default function WorkflowCanvas({ {!graph.nodes.length ? ( -
Drop a start node here
+ ) : null}
); diff --git a/webui/src/features/workflow/WorkflowInspector.tsx b/webui/src/features/workflow/WorkflowInspector.tsx index 12cbb9c..8254a9e 100644 --- a/webui/src/features/workflow/WorkflowInspector.tsx +++ b/webui/src/features/workflow/WorkflowInspector.tsx @@ -1,10 +1,12 @@ import { useEffect, useMemo, useState } from "react"; import { Trash2 } from "lucide-react"; import { + ActionToolbar, Button, DismissibleAlert, FormField, ReferenceMultiSelect, + StatePanel, useViewSurfaces, type ReferenceOptionProvider } from "@govoplan/core-webui"; @@ -87,7 +89,7 @@ export default function WorkflowInspector({ }; return ( - -
+ } + > {draft && displayedGraph ? ( <> - +
- -
+ +
{diagnostics.length ? (
-
+ Diagnostics -
+
{diagnostics.map((item, index) => (
- {working ? ( -
- Working... -
- ) : null} + {working ? Working... : null} ) : ( -
- - No workflow selected - {canWrite ? ( + } + title="No workflow selected" + actions={canWrite ? ( - ) : null} -
+ ) : undefined} + /> )} -
- + - + ); } @@ -1336,7 +1332,7 @@ function WorkflowDefinitionSettingsDialog({ ))} -
+ onChange({ allowAutomation: value })} /> -
+ {draft.governance?.automation_runtime_reason ? ( ) : null} {draft.governance?.derived_from_definition_id ? ( -
+ Derived from {draft.governance.derived_from_definition_id} @@ -1379,10 +1375,10 @@ function WorkflowDefinitionSettingsDialog({ {draft.governance.derived_from_revision} {draft.governance.derived_from_hash} -
+ ) : null} {provenance.length ? ( -
+ Effective Policy path {provenance.map((item, index) => ( @@ -1392,7 +1388,7 @@ function WorkflowDefinitionSettingsDialog({ {!editable && draft.governance?.actions.edit?.reason ? ( {draft.governance.actions.edit.reason} ) : null} -
+ ) : null} ) : null} diff --git a/webui/src/features/workflow/WorkflowRunsDialog.tsx b/webui/src/features/workflow/WorkflowRunsDialog.tsx index ef43f88..1b9f23c 100644 --- a/webui/src/features/workflow/WorkflowRunsDialog.tsx +++ b/webui/src/features/workflow/WorkflowRunsDialog.tsx @@ -20,6 +20,7 @@ import { ActionToolbar, ConfirmDialog, Dialog, DismissibleAlert, + ContentGrid, FormField, IconButton, LoadingFrame, @@ -422,7 +423,7 @@ export default function WorkflowRunsDialog({ ) : null} {allowedActions.some((action) => action !== "cancel") ? ( -
+