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).