FormField

Wrapper de campo de formulario: combina label, hint y error accesibles en torno a cualquier control. Inyecta automáticamente id, aria-describedby y aria-invalid al hijo. Soporta required visual (asterisco), optional y estado disabled.

Aparece en tu perfil público.
opcional

Instalación#

bash
pnpm add @tsukira/ui

Uso#

tsx
import { FormField } from "@tsukira/ui";import { Input } from "@tsukira/ui"; <FormField label="Correo" hint="Te enviaremos un enlace de confirmación." required>  <Input type="email" placeholder="nombre@empresa.com" /></FormField><FormField label="Contraseña" error="Mínimo 8 caracteres." required>  <Input type="password" placeholder="••••••••" /></FormField>

Ejemplos#

label + hint

Solo lo usamos para iniciar sesión.

required y optional

asterisco rojo · badge «opcional»
opcional

Estado error

error reemplaza hint y activa aria-invalid
Mínimo 8 caracteres con una mayúscula.

Estado disabled

disabled opaca label/hint
Actualiza tu suscripción para cambiar.

Con Textarea

opcional
Máximo 280 caracteres.

Fusión: formulario de perfil completo

FormField + Input + Textarea + Button
opcional
Incluye https://
opcional
Máximo 200 caracteres.

Fusión: validación en vivo

useState activa error si el valor no cumple la regla
Escribe tu correo para continuar.

API#

FormFieldPropsextends Omit<HTMLAttributes<HTMLDivElement>, 'children'>
PropTipoDefaultDescripción
labelReactNodeLabel visible.
htmlForstringID del input. Si no se pasa, se genera con useId() y se inyecta al hijo.
hintReactNodeTexto de ayuda bajo el input.
errorReactNodeTexto de error — si está presente, el campo se considera inválido.
optionalbooleanIndica que el campo es opcional (renderea "opcional" gris al lado del label).
requiredbooleanIndica required visual (asterisco rojo). NO setea el attr `required` en el input.
disabledbooleanEstado disabled (afecta opacidad del label/hint).
children*ReactElementHijo único — input/textarea/select. Si el child acepta `id`/`aria-describedby`/`aria-invalid`, FormField los inyecta automáticamente para conectar label/hint/error.