diff --git a/decnet_web/src/components/MazeNET/Inspector.tsx b/decnet_web/src/components/MazeNET/Inspector.tsx index 492c68b6..8022c5b0 100644 --- a/decnet_web/src/components/MazeNET/Inspector.tsx +++ b/decnet_web/src/components/MazeNET/Inspector.tsx @@ -34,6 +34,11 @@ interface Props { onLiveRemoveService?: (nodeName: string, slug: string) => Promise; /** Per-decky-eligible service slugs, fetched via useServiceRegistry. */ availableServices?: string[]; + /** Toggle ``forwards_l3`` (gateway) on the selected decky. When the + * topology is active/degraded the caller is responsible for the + * destructive-recreate confirm dialog and the ``force: true`` submit + * — this prop just relays the user's intent. */ + onToggleGateway?: (nodeId: string, nextValue: boolean) => Promise; onAddDecky?: (netId: string) => void; setSelection?: (sel: Selection) => void; pendingChanges?: number; @@ -44,6 +49,7 @@ const Inspector: React.FC = ({ selection, nets, nodes, edges, topologyStatus, onClose, onDeleteNet, onDeleteNode, onDeleteEdge, onRemoveService, onLiveAddService, onLiveRemoveService, availableServices = [], + onToggleGateway, onAddDecky, setSelection, pendingChanges = 0, className = '', @@ -257,6 +263,50 @@ const Inspector: React.FC = ({
NO EDGES
)} + {onToggleGateway && !isObserved && ( + + )} {onDeleteNode && (