choice-controls · git:20260918.edf328f · 2026-09-18 · sha256 6276f6aeaa0ec332

choice-controls git:20260918.edf328fA

Immutable. This exact content never changes and is served at /api/v1/blob/6276f6aeaa0ec332.

---
description: Question rows are a wash, not a checkbox; pickers that still need a mark use ChoiceMark
globs: packages/desktop/src/features/conversation/**/*.{tsx,css}
alwaysApply: true
---

# Choice controls

Ask-user option rows are the wash only. No `ChoiceMark`, no trailing check, no index.

Do not ship `<input type="checkbox">` or `<input type="radio">` as the visible control. Native chrome follows the OS (Aqua, Fluent) and does not match Lyra's ink/accent cards.

Keep a visually hidden native input (`sr-only`) when a real form control is needed so tests and assistive tech still see `input:checked`.

Selected rows use `bg-accent/[0.08]`. Idle rows use the bubble wash `bg-card`, not `bg-elevated`. No hairline between rows.

The recommended chip sits as a sibling of the title-and-description stack and stays vertically centered on that block.

`ChoiceMark` stays for pickers that are actually on/off controls (model fetch, and the like).