@redrob-labs/ui v1.0.2 · Redrob Group Design System 2026

OpinionGrid

Safeguards · src/components/OpinionGrid/OpinionGrid.tsx

Every point in an answer against the AI that wrote it and the two that reviewed it.

A real table with th scope="col" and scope="row", so a cell can be read as "this model, this point". A grid of divs would make the verdicts unreadable to anyone not seeing the layout - and the whole purpose of this component is to be checkable.

"Didn't comment" is a stated verdict, not a blank cell. Silence from a reviewer is information, and leaving the cell empty invites it to be read as agreement.

A row where anyone disagreed is marked on the row itself, so the disagreements are findable without reading every cell.

Import

import { OpinionGrid } from '@redrob-labs/ui';

Rendered

The design system's own preview case, run against this package's build. The parity gate compares this rendering to the reference bundle's.

Props

PropTypeNotes
columns OpinionColumn[]
rows OpinionRow[]
verdicts Record<string, { label: string; icon?: string }> Replace or extend the verdict vocabulary.
pointLabel React.ReactNode
caption React.ReactNode Names the table for a screen reader. Visually hidden.
className string

Exported types

OpinionColumn, OpinionRow