diff --git a/dashboard/src/ui/StateChip.tsx b/dashboard/src/ui/StateChip.tsx index 782e64fcde..a9ce48ddfc 100644 --- a/dashboard/src/ui/StateChip.tsx +++ b/dashboard/src/ui/StateChip.tsx @@ -121,13 +121,6 @@ export const STATE_LAMP: Record = { unsupported_schema: 'bg-state-unsupported-schema', }; -/** The lamp utility for a state, for registers that print the state's word - * beside a swatch without the chip's full chrome. One table, so a register - * and the chips beneath it cannot disagree about a hue. */ -export function stateLampClass(kind: DomainStateKind): string { - return STATE_LAMP[kind] ?? 'bg-state-unsupported-schema'; -} - export function StateChip({ kind, detail, diff --git a/dashboard/src/ui/archetypes/ExplorerSplit.tsx b/dashboard/src/ui/archetypes/ExplorerSplit.tsx index e01477bb32..47652bd2c4 100644 --- a/dashboard/src/ui/archetypes/ExplorerSplit.tsx +++ b/dashboard/src/ui/archetypes/ExplorerSplit.tsx @@ -197,6 +197,7 @@ export function DataRow({ selected, onSelect, onInspect, + rowId, children, className, height, @@ -205,7 +206,22 @@ export function DataRow({ }: { selected?: boolean; onSelect?: () => void; + /** + * Hover inspects; click selects. A workspace whose inspector previews the + * row under the pointer (or under keyboard focus) wires it here, and the row + * fires it for both pointer movement over it and focus arriving so the + * keyboard path reaches exactly what the pointer does. + * + * Movement, not entry: a list that scrolls under a parked pointer — which is + * what the roving arrow keys do — synthesises enter events for whichever row + * slides beneath it, and those would steal inspection from the row the + * keyboard just focused. The browser fires no move for a scroll. + */ onInspect?: () => void; + /** The row's stable identity, stamped as `data-row-id` so a list can find + * the row a selection made elsewhere (a scene, the address) refers to and + * bring it into view. */ + rowId?: string; children: ReactNode; className?: string; /** @@ -224,8 +240,9 @@ export function DataRow({