# Select

> Picks one value from a list in a dropdown.

- **Level**: molecule · **Status**: stable · **Role**: input
- **Import**: `import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator } from "@rrios-forge/ui/molecules/select";`
- **Source**: `packages/ui/src/molecules/select`

Semantic single-choice selector. Composes `@radix-ui/react-select` for the full ARIA contract (`role="combobox"` + `role="listbox"` + `role="option"`, type-ahead, arrow-key navigation, hidden native `<select>` for forms, portal isolation). The Trigger mirrors Input so a Select sits inline with the rest of the form layer.

## Use it for

- Tabs / select / autocomplete → `Tabs` / `Select` / `Combobox` or `SearchField`
- One of a few values, all in view (range, view mode) → `SegmentedControl` (two to five options; more → `Select`)
- Field with label + helper + error → `Field` + `Input`/`Textarea`/`Select`

## Axes

| Axis | Part | Values | Default | Meaning |
|---|---|---|---|---|
| `size` | — | `sm` `md` `lg` | `md` | Ergonomic scale, in three families (control, text, container). |
| `invalid` | — | `true` `false` | `false` | Fails validation: a danger edge, announced as invalid; pair it with an error message. |

## Stories

- [Playground](/?path=/story/components-molecules-select--playground) · frame: `/iframe.html?id=components-molecules-select--playground&viewMode=story`
- [Sizes](/?path=/story/components-molecules-select--sizes) · frame: `/iframe.html?id=components-molecules-select--sizes&viewMode=story`
- [Invalid](/?path=/story/components-molecules-select--invalid) · frame: `/iframe.html?id=components-molecules-select--invalid&viewMode=story`
- [Grouped](/?path=/story/components-molecules-select--grouped) · frame: `/iframe.html?id=components-molecules-select--grouped&viewMode=story`

## Decisions that name it

- ADR-024 — `LocaleSelector` is a new molecule, not an extension of `Combobox`

## Always

- Tokens only (R04); variants are semantic axes, never appearance (R02).
- Typography and actions are Poesía atoms, never raw HTML with utilities.
- Vibrant panes need a ground and never nest (ADR-027).
