import type { ReactNode } from 'react'; /** * A single card rendered inside the topology diagram — either one of the * fan-in sources or the shared target. `id` is used as the React key and to * correlate a card with its measured rect / connector path. */ export interface TopologyNode { id: string; render: ReactNode; } export interface TopologyProps { /** * Source cards stacked in the left column. Each one gets a connector path * fanning in to `target`. Renders correctly with a single entry (a plain * line/elbow, not degenerate) as well as many. */ sources: TopologyNode[]; /** * Cards rendered in the left column beneath the connected sources but WITHOUT a * connector to the target — e.g. an add-source not yet wired to the pipeline. */ pendingSources?: TopologyNode[]; /** * The single shared card on the right, vertically centered relative to * the stack of source cards. */ target: TopologyNode; }