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

Formularios

Form

Validación al enviar, foco en el primer problema y errores del servidor en sus campos.

import { Form, FormActions, ErrorSummary } from '@alea/ui';

Ejemplos

Props

Form props

Un formulario que valida al enviar, mueve el foco al primer problema y muestra los errores del servidor en sus campos.

PropTipoPor defectoDescripción
childrenobligatoriaReactNode-Los hijos del componente.
gapnumber20Espacio entre campos. Por defecto 20 px.
onSubmit((values: Record<string, FormDataEntryValue>, event: FormEvent<HTMLFormElement>) => void | Record<string, string | string[]> | Promise<...>)-Se llama con los valores del formulario cuando todos los campos son válidos. Devuelve errores del servidor por nombre de campo para mostrarlos en los campos; una promesa muestra el estado de carga.

FormActions props

Los botones al final de un formulario.

PropTipoPor defectoDescripción
align"start" | "end" | "stretch"'start'start (por defecto), end, o stretch para botones de ancho completo.
isLoadingboolean-Muestra el spinner en el botón de enviar.
secondaryReactNode-Un botón de cancelar o secundario.
submitLabelReactNode-El texto del botón de enviar. Por defecto "Guardar".

ErrorSummary props

PropTipoPor defectoDescripción
errorsobligatoriaRecord<string, string>-Los errores por id de campo: { email: 'Use a valid email.' }. Cada uno enlaza a su campo.
titleReactNode-El título. Por defecto "Corrige esto para continuar".

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.

Form

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-form
Atributos data
data-busy

FormActions

Variantes
alignstartendstretch
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-form-actions
Atributos data
data-align=enddata-align=stretch

ErrorSummary

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-error-summary

Accesibilidad

  • Al enviar, el primer campo inválido recibe el foco y se lee su error.
  • ErrorSummary se anuncia y enlaza a cada campo.

Teclado

TeclaAcción
Enter (en un campo)Envía
TabSe mueve entre los campos y los enlaces del resumen

Qué hacer y qué evitar

Hacer

  • Devuelve { campo: mensaje } desde onSubmit para errores del servidor.

Evitar

  • No deshabilites el botón de enviar para mostrar que un formulario está incompleto.
Probado con axe, teclado y roles de lector de pantalla