A reusable horizontal row of buttons — the main reusable unit for message-box style button rows
([OK], [Yes] [No], [OK] [Cancel], [Abort] [Retry] [Ignore]).
A reusable button widget. It carries a label, the DialogResultKind it produces when
activated, and an enabled state; it renders itself for the focused/unfocused/disabled states.
A single button is primarily a value/rendering widget — navigation and activation across a row of
buttons live in InlineButtonGroupWidget.
A reusable single-selection list widget whose rows are structured multi-column data rather than one
preformatted string. Each SelectRow supplies one SelectCell per
SelectColumn; the widget maps them onto a real CliGrid so column widths, alignment,
truncation and the selected-row highlight are all owned by the shared rendering pipeline. The selected
row is styled consistently across every column; non-selected cells keep their own semantic styles.
A reusable read-only text widget. It renders its text as a single-cell CliGrid and
delegates all text handling — end-of-line splitting, wrapping, formatting, measuring, and
truncation — to CliGrid. It never splits the text into multiple rows or implements
wrapping/truncation itself.