intro
Select
A foundational dropdown selection atom styled with Curva & Concreto principles.
Select
The Select component provides a native HTML dropdown menu styled to match the TextInput atom. It is preferred over complex JS-based custom selects for standard data entry due to its superior native accessibility and smaller bundle size.
Choose a state
Please select a valid option.
State selected successfully!
Usage
Like TextInput, Select is designed to be wrapped by a FormField component.
<script> import { FormField, Select } from 'cobogo';
const options = [ { value: 'pf', label: 'Pessoa Física (CPF)' }, { value: 'pj', label: 'Pessoa Jurídica (CNPJ)' } ]; let documentType = $state('');</script>
<FormField label="Document Type" htmlFor="doc-type-select"> {#snippet children(props)} <Select {options} bind:value={documentType} placeholder="Select type..." {...props} /> {/snippet}</FormField>Validation States
Validation states use the exact same color mapping as TextInput: --vermelho-soft/--vermelho for errors, and --verde-soft/--verde for success. The custom chevron icon is also automatically tinted to match the current validation state.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
value |
string |
'' |
The bindable value of the selected option. |
options |
Array<{value: string, label: string}> |
[] |
The array of available options. |
placeholder |
string |
undefined |
The default unselectable placeholder option text. |
disabled |
boolean |
false |
Whether the select is disabled. |
invalid |
boolean |
false |
Whether the select is in an invalid state. |
valid |
boolean |
false |
Whether the select is in a valid state. |
size |
'sm' | 'md' | 'lg' |
'md' |
The size variant of the select. |