Components / Select List
Select List
Pick several, commit once: checkbox rows with a single Save. The generative-UI surface for keeping a subset of generated options (the hook picker); the DecisionDock doctrine applied to a selection instead of a wizard.
import { SelectList } from '@layers/ui/select-list'Rendered stock
House rules
- Nothing commits until Save, and Save is the only commit — checking a row is never an action.
- The whole row is the tap target; the checkbox is presentation, not the control.
- Save disables below minSelected and locks after firing (no double-commit).
- On a canvas sheet, Save belongs in CanvasSheetFooter, not after the rows: omit onSave, read onSelectionChange, and pin the button in the sheet footer (the brand-brief pattern). A list long enough to need a picker is long enough to push an in-flow Save below the fold.
- Start empty. defaultSelectedIds exists for a genuine "keep most, prune a few" surface and nothing else — pre-checking a list of SUGGESTIONS makes picking one an unticking chore, so Elle cannot reach it at all (founder ruling 2026-08-04).
- Omit onSave AND onSelectionChange for a read-only listing.