Saltar al contenido
Alea0.1
Pro
  1. Alea
  2. Componentes
  3. Formularios
  4. ListBox

Formularios

ListBox

Una lista de opciones para elegir, en la página en lugar de un popup: selección simple o múltiple, secciones, descripciones e íconos, un check a cualquier lado, escribir para saltar, scroll dentro de una altura.

import { ListBox, SelectItem, SelectSection } from '@alea/ui';

Ejemplos

ListBox

Opciones en la página: selección simple con descripciones e íconos. Las flechas se mueven, escribir salta.

LightBright surfaces
DarkEasy on the eyes at night
SystemFollows your device

Múltiple, secciones y plain

selectionMode="multiple" con el check al inicio, secciones con títulos, y el estilo plain dentro de tu propio contenedor con altura con scroll.

Name
Email
Phone
Organization
Role
Argentina
Brazil
Chile
Colombia
Ecuador
Mexico
Peru
Spain
Uruguay
Venezuela

Configuraciones

Cada valor de cada propiedad, lado a lado. Los números coinciden con la leyenda.

start
end
plain
card
horizontal
vertical
  1. Check PositioncheckPosition
  2. Variantvariant
  3. Orientationorientation

Estados

Cada estado de interacción, forzado para compararlos, en ambos temas.

Oscuro

Habilitado
Hover
Foco
Presionado

Claro

Habilitado
Hover
Foco
Presionado

Anatomía

Las partes del componente y la clase que da estilo a cada una.

Tokens

Los tokens de diseño que usa este componente, con su valor en el tema actual. Cambia cualquiera para darle otro estilo.

Color

  • --alea-accent-subtle…
  • --alea-border…
  • --alea-focus…
  • --alea-surface…
  • --alea-text-muted…

Radius

  • --alea-radius-md…

Type

  • --alea-font-size-sm…

Props

ListBox props

Una lista de opciones para elegir, sola (no en un popup): ajustes, filtros, listas laterales. Selección simple o múltiple, secciones, descripciones e íconos, escribe para saltar.

PropTipoPor defectoDescripción
checkPosition"start" | "end"'end'Dónde aparece el check de seleccionado: end (por defecto) o start.
emptyTextReactNode-Lo que se muestra cuando la lista está vacía.
itemsIterable<T>-Las opciones como datos, o hijos SelectItem y SelectSection.
maxHeightstring | number-Tiene scroll dentro de esta altura.
variant"plain" | "card"'card'Dibuja la lista como una tarjeta con borde (por defecto), o plain dentro de tu propio contenedor.

SelectItem props

Una opción en un Select (o en cualquier listbox).

PropTipoPor defectoDescripción
descriptionReactNode-Una segunda línea bajo la opción.
iconReactNode-Un ícono antes de la opción.

SelectSection props

Un grupo de opciones con título.

PropTipoPor defectoDescripción
titleobligatoriaReactNode-El título de la sección.

Especificaciones

Generado desde el código: las variantes de los tipos, los estados y tokens del CSS, y los patrones de motion que aplican. Las grillas muestran el componente real en ambos temas; los números se miden en la página.

ListBox

Variantes
checkPositionstartend
variantplaincard
Estados
Keyboard focusSelected
Oscuro y claro
Cada color viene de tokens del tema, así que sigue a data-theme (y a presets como Graphite) en la página o en cualquier contenedor. El contraste se revisa en ambos temas.
Clases para estilos
.alea-listbox-empty.alea-listbox-standalone
Atributos data
data-variant=card

SelectItem

Oscuro y claro
Cada color viene de tokens del tema, así que sigue a data-theme (y a presets como Graphite) en la página o en cualquier contenedor. El contraste se revisa en ambos temas.
Clases para estilos
.alea-option-icon.alea-option-text.alea-option-desc.alea-option-check
Atributos data
data-check=startdata-on

SelectSection

Oscuro y claro
Cada color viene de tokens del tema, así que sigue a data-theme (y a presets como Graphite) en la página o en cualquier contenedor. El contraste se revisa en ambos temas.
Clases para estilos
.alea-option-section.alea-option-header

Accesibilidad

  • Un listbox: las flechas se mueven, Espacio o Enter eligen, al escribir salta a la opción que empieza con esas letras.
  • Las opciones elegidas se anuncian como seleccionadas; las deshabilitadas se saltan.
  • Dale una etiqueta visible con aria-labelledby, o un aria-label.

Teclado

TeclaAcción
Flecha arriba / AbajoSe mueven
Espacio o EnterEligen
Shift + flechaAmplía la selección (múltiple)
⌘A / Ctrl+ASelecciona todo (múltiple)
Inicio / FinPrimera o última opción
Escribe letrasSalta a una coincidencia

Qué hacer y qué evitar

Hacer

  • Úsalo cuando las opciones deben quedar a la vista: ajustes, un filtro lateral, una lista corta.

Evitar

  • No lo uses para navegar: usa enlaces.
  • No pongas listas largas sin maxHeight o una búsqueda.
Probado con axe, teclado y roles de lector de pantalla