Instalación
npx logic2b@next add selectUso
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@/components/ui/select"
<Select>
<SelectTrigger aria-label="Selecciona una fruta" className="w-[180px]">
<SelectValue placeholder="Selecciona una fruta" />
</SelectTrigger>
<SelectContent>
<SelectItem value="apple">Manzana</SelectItem>
</SelectContent>
</Select>
Ejemplos
Opciones agrupadas
Con una opción desactivada
Accesibilidad
Está construido sobre Select de Radix y sigue el patrón listbox de WAI-ARIA.
- Se maneja completamente con teclado: abre con Enter, Espacio o las flechas, muévete con las flechas y escribe para saltar a una opción.
- Escape cierra la lista y devuelve el foco al disparador.
- Da a
SelectTriggerun nombre accesible explícito conaria-labeloaria-labelledby. El placeholder comunica que no hay valor, pero no sustituye el nombre del campo. - Agrupa opciones relacionadas con
SelectGroupySelectLabel.
Playground interactivo
Edita las propiedades del componente y revisa el JSX exacto antes de copiarlo. La vista previa se carga solo cuando esta sección entra en pantalla.
JSX generado
<Select
defaultValue="team"
>
<SelectTrigger
className="w-56"
aria-label="Workspace plan"
>
<SelectValue
placeholder="Choose a plan"
/>
</SelectTrigger>
<SelectContent>
<SelectItem
value="starter"
>Starter</SelectItem>
<SelectItem
value="team"
>Team</SelectItem>
<SelectItem
value="enterprise"
>Enterprise</SelectItem>
</SelectContent>
</Select>Referencia de API
Generada a partir de las exportaciones públicas de TypeScript en src/ui/select.tsx. Las descripciones técnicas conservan el texto canónico del código fuente.
Select
ComponenteProps: React.ComponentProps<typeof SelectPrimitive.Root>SelectContent
ComponenteProps: React.ComponentProps<typeof SelectPrimitive.Content>| Propiedad | Tipo | Obligatoria | Valor predeterminado | Descripción |
|---|---|---|---|---|
position | "item-aligned" | "popper" | No | "popper" | — |
SelectGroup
ComponenteProps: React.ComponentProps<typeof SelectPrimitive.Group>SelectItem
ComponenteProps: React.ComponentProps<typeof SelectPrimitive.Item>SelectLabel
ComponenteProps: React.ComponentProps<typeof SelectPrimitive.Label>SelectScrollDownButton
ComponenteProps: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>SelectScrollUpButton
ComponenteProps: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>SelectSeparator
ComponenteProps: React.ComponentProps<typeof SelectPrimitive.Separator>SelectTrigger
ComponenteProps: React.ComponentProps<typeof SelectPrimitive.Trigger> & { size?: "sm" | "default" }| Propiedad | Tipo | Obligatoria | Valor predeterminado | Descripción |
|---|---|---|---|---|
size | "sm" | "default" | No | "default" | — |
SelectValue
ComponenteProps: React.ComponentProps<typeof SelectPrimitive.Value>Contrato de accesibilidad
Comportamiento legible por máquinas y responsabilidades de quien integra select. Los detalles normativos conservan el texto canónico del registro.
- Soporte
- Gestionado por la primitiva
- Patrón
- listbox select
- Radix Select
| Teclas | Comportamiento |
|---|---|
| Enter Space | Activate the focused control. |
| ArrowUp ArrowDown ArrowLeft ArrowRight | Move within the composite control. |
| Home End | Move to the first or last option. |
| Escape | Close the open surface and restore focus. |
Semántica incorporada
- Manages combobox/listbox/option semantics, selected state and trigger-value linkage.
Responsabilidades de integración
- Provide a visible label or aria-label for the trigger.