SelectionListPicker — single select
Bound to key="sales-regions".
New opportunity
CRM · a consuming product's form
Sorted by the list's authored sort_order — not
alphabetically, and not by id.
{ "sales_region": "sli_12h455vb4pex5vsknk084sn02q" }
The id, never the label and never the code. The label is presentation and is re-resolved per viewer, per locale.
States
The picker is embedded in someone else's form. It must never blow up that form, and must never silently render an empty control.
Skeleton inside the control at its final height — the surrounding form never reflows when values arrive.
The list exists but has no active values — every value is archived, or none was ever added. The control is disabled and says so, rather than opening an empty menu.
The picker fails visibly and locally: it shows a retry in place and keeps any already-selected value. It never throws into the host form's render tree, and never submits a silently-empty field.
No list with key sales-regions in this organization, or the
viewer can't read it — the service answers 404 either way, so the
picker cannot be used to probe another org's lists.
Test hooks: [data-frame='12-picker-single'] · [data-panel='picker'] · [data-mode='single'] · [data-picker='sales-regions'] · [data-combo-control] · [data-combo-menu] · [data-combo-search] · [data-selected-label] · [data-item='sli_12h455vb4pex5vsknk084sn02q'] · [data-persisted] · [data-state='loading'] · [data-state='empty'] · [data-state='error'] · [data-state='not-found'] · [data-error='NOT_FOUND'] · [data-note='embeddable']
Contract: GET /v1/selection-lists/{listId}/items?status=active&locale= to populate · POST /v1/resolve to render a stored id.
Tokens only — no raw hex, spacing or type outside tokens.css / frame.css.