import { useState } from "react" import type { FlowDef_Input } from "@/client" import { Button } from "@/components/ui/button" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Switch } from "@/components/ui/switch" import { PANEL_SECTION, PanelTitle, SidePanel } from "./SidePanel" /** * The flow's own settings, in the same panel its nodes use — down to where the * name sits and how confirming a new one works. */ export function FlowPanel({ open, definition, nodeCount, onChange, onDelete, hasDraft, discarding, onDiscardDraft, enabled, toggling, onToggleEnabled, onClose, }: { open: boolean definition: FlowDef_Input nodeCount: number onChange: (next: FlowDef_Input) => void onDelete: () => void hasDraft: boolean discarding: boolean onDiscardDraft: () => void enabled: boolean toggling: boolean onToggleEnabled: (next: boolean) => void onClose: () => void }) { const [confirmOpen, setConfirmOpen] = useState(false) const [discardOpen, setDiscardOpen] = useState(false) return ( <> onChange({ ...definition, title })} /> } footer={ } >
Running

{enabled ? "The engine runs this flow: subscriptions, schedules and webhooks are live." : "Stopped. Nothing of this flow is subscribed, scheduled or reachable."}

Contents

{definition.name} namespaces every message in here.{" "} {nodeCount === 0 ? "No nodes yet." : `${nodeCount} node${nodeCount === 1 ? "" : "s"}.`}

{hasDraft ? (
Unpublished changes

The engine is still running the last published version of this flow.

) : null}
Delete {definition.title || definition.name}? This removes the flow and the code of its{" "} {nodeCount === 1 ? "node" : `${nodeCount} nodes`}. Its history stays in the flow store's git repository. Discard the unpublished changes? The canvas goes back to the version the engine is running. What you edited since is dropped, though the flow store's git history keeps it. ) }