import React from 'react'; import type { ColorToken } from '../../shared/color-token'; import type { GraphEdge, GraphNode } from './graph.types'; export interface GraphNodeListProps extends Omit, 'onSelect'> { nodes: GraphNode[]; /** Used to list each node's relationships. */ edges?: GraphEdge[]; selectedId?: string | null; onSelect: (id: string | null) => void; /** Colors per node type, matching the graph's `typeTokens`. */ typeTokens?: ColorToken[]; title?: string; /** @default "Graph nodes" */ ariaLabel?: string; /** @default "No nodes to list" */ emptyLabel?: string; maxHeight?: string; /** Shows each node's relationships under its label. @default true */ showRelations?: boolean; } /** * The graph's content as an operable list. * * @description * A canvas is one opaque element to a screen reader: it can carry a label, but * not the hundred nodes and relationships inside it. This gives the same * information and the same actions through plain keyboard and screen-reader * navigation, and shares `selectedId` with the graph in both directions. * * Relationships are listed per node in words — "é subclasse de → Documento" — * because the arrow that conveys them on the canvas conveys nothing when read * aloud. * * @ai-rules * 1. Share one `selectedId` between `` and this list. * 2. Pass the same `edges` so the relationships are readable, not just the node names. * 3. Do not hide it at small breakpoints — it is the accessible path to the same data. */ export declare const GraphNodeList: React.ForwardRefExoticComponent>;