Saltar al contenido
Alea0.1
Pro
  1. Alea
  2. Componentes
  3. Formularios
  4. SearchField y PasswordField

Formularios

SearchField y PasswordField

Un buscador con botón para borrar, una pista de tecla y estado de carga, y un campo de contraseña para mostrar u ocultar con medidor de seguridad. Mismas variantes y tamaños que TextField.

import { SearchField, PasswordField } from '@alea/ui';

Ejemplos

Contraseña

Muestra y oculta el valor. Usa new-password en formularios de registro.

At least 12 characters.

Atajo y carga

shortcut muestra una pista de tecla mientras el campo está vacío (asigna tú la tecla); isLoading cambia el ícono por un spinner mientras cargan los resultados.

Fuerza de la contraseña

showStrength agrega un medidor de cuatro pasos: débil, regular, buena, fuerte. Pasa strength para usar tu propio evaluador.

At least 12 characters.

Configuraciones

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

top
side
xs
sm
md
lg
xl
filled
outline
underline
borderless
  1. Label PositionlabelPosition
  2. Sizesize
  3. Variantvariant

Estados

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

Oscuro

Habilitado
Hover
Foco
Presionado
Disabled
Invalid
Loading
Read Only
Required

Claro

Habilitado
Hover
Foco
Presionado
Disabled
Invalid
Loading
Read Only
Required

Anatomía

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

Medidas

Medido del componente renderizado a 2x: alto, ancho, padding, radio e icono.

sizeAltoAnchoPadding (y · x)RadioTamaño de textoIconoSeparación
xs-------
sm-------
md-------
lg-------
xl-------

Cada tamaño y espacio es múltiplo de 4 px.

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-bg…
  • --alea-border…
  • --alea-border-control…
  • --alea-border-strong…
  • --alea-field-bg…
  • --alea-focus…
  • --alea-focus-halo…
  • --alea-status-danger…
  • --alea-status-danger-bg…
  • --alea-status-warning…
  • --alea-status-warning-bg…
  • --alea-surface-hover…
  • --alea-surface-raised…
  • --alea-text…
  • --alea-text-faint…
  • --alea-text-muted…

Space

  • --alea-space-2…

Type

  • --alea-font-family-body…
  • --alea-font-family-mono…
  • --alea-font-size-md…
  • --alea-font-size-xs…
  • --alea-font-weight-medium…
  • --alea-font-weight-regular…

Motion

  • --alea-motion-duration-fast…
  • --alea-motion-duration-slow…

Component

  • --alea-input-font…
  • --alea-input-h…
  • --alea-input-pad…
  • --alea-input-radius…

Props

SearchField props

Un cuadro de búsqueda con un botón de borrar; Escape también lo borra.

PropTipoPor defectoDescripción
descriptionReactNode-Texto de ayuda bajo el campo.
errorMessageReactNode | ((v: ValidationResult) => ReactNode)-Texto de error, o una función del resultado de la validación. Se muestra cuando es inválido.
isLoadingboolean-Muestra un spinner en lugar del ícono de búsqueda mientras cargan los resultados.
labelReactNode-La etiqueta visible. Usa aria-label en su lugar solo cuando el contexto lo hace obvio.
labelPosition"top" | "side"'top'top (por defecto) o side: la etiqueta va a la izquierda desde 640 px y vuelve arriba en teléfonos. Define la columna de etiquetas con --alea-label-width.
placeholderstring-Texto del placeholder. Por defecto "Buscar".
shortcutReactNode-Una pista de teclado mostrada mientras el campo está vacío, como ⌘K o /. Asigna tú la tecla.
showOptionalboolean-Muestra "(opcional)" después de la etiqueta.
sizeResponsive<"xs" | "sm" | "md" | "lg" | "xl">-xs 28 px, sm 32 px, md 44 px (por defecto), lg 48 px, xl 56 px. Puede cambiar por breakpoint: { base: 'lg', md: 'md' }.
variant"filled" | "outline" | "underline" | "borderless"'outline'outline (por defecto), filled (con tinte, sin borde hasta el hover), underline (solo una línea abajo) o borderless (para edición en línea y barras de herramientas).
warningMessageReactNode-Una advertencia que no bloquea: el borde se pone ámbar y el texto aparece bajo el campo.

PasswordField props

Un input de contraseña con un botón para mostrar/ocultar y un medidor de fuerza opcional.

PropTipoPor defectoDescripción
addonEndReactNode-Una caja unida a la derecha, como .com o una unidad.
addonStartReactNode-Una caja unida fuera del input a la izquierda, como https://.
descriptionReactNode-Texto de ayuda bajo el campo.
errorMessageReactNode | ((v: ValidationResult) => ReactNode)-Texto de error, o una función del resultado de la validación. Se muestra cuando es inválido.
isLoadingboolean-Muestra un spinner al final, para un valor que se está verificando o buscando.
labelReactNode-La etiqueta visible. Usa aria-label en su lugar solo cuando el contexto lo hace obvio.
labelPosition"top" | "side"-top (por defecto) o side: la etiqueta va a la izquierda desde 640 px y vuelve arriba en teléfonos. Define la columna de etiquetas con --alea-label-width.
placeholderstring-Un ejemplo de qué escribir; nunca reemplaza a la etiqueta.
prefixReactNode-Ícono o texto dentro del campo, antes del valor.
showCountboolean-Muestra cuántos caracteres hay, y el límite con maxLength. Los lectores de pantalla lo escuchan cuando quedan 10 o menos.
showOptionalboolean-Muestra "(opcional)" después de la etiqueta.
showStrengthboolean-Muestra un medidor de fuerza de cuatro pasos bajo el campo (largo, mayúsculas y minúsculas, dígitos y símbolos).
sizeResponsive<"xs" | "sm" | "md" | "lg" | "xl">-xs 28 px, sm 32 px, md 44 px (por defecto), lg 48 px, xl 56 px. Puede cambiar por breakpoint: { base: 'lg', md: 'md' }.
strength((value: string) => 0 | 2 | 3 | 1)passwordScoreTu propia puntuación de 0 (débil) a 3 (fuerte), de tu propio evaluador de contraseñas.
variant"filled" | "outline" | "underline" | "borderless"-outline (por defecto), filled (con tinte, sin borde hasta el hover), underline (solo una línea abajo) o borderless (para edición en línea y barras de herramientas).
warningMessageReactNode-Una advertencia que no bloquea: el borde se pone ámbar y el texto aparece bajo el campo.

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.

Size

Oscuro

SearchField dark
size="sm"size="md"size="lg"

Claro

SearchField light
size="sm"size="md"size="lg"

Medido: alto · padding horizontal · radio de esquina · tamaño de texto, en px, de la grilla oscura.

SearchField

Variantes
labelPositiontopside
variantfilledoutlineunderlineborderless
Estados
Hover (CSS)Focus insideInvalidDisabled
Motion
nudgemore
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-search-field.alea-input-wrap.alea-input-affix.alea-input.alea-input-ghost.alea-input-kbd
Atributos data
data-warningdata-variant=filleddata-variant=underlinedata-side=startdata-variant=borderlessdata-side=enddata-emptydata-stepper=enddata-stepperdata-stepper=sides

PasswordField

Variantes
labelPositiontopside
variantfilledoutlineunderlineborderless
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-strength.alea-strength-bars
Atributos data
data-score=0data-score=1data-score=2data-score=3

Accesibilidad

  • El campo de búsqueda tiene rol searchbox; Escape lo borra.
  • El botón de mostrar contraseña dice lo que hará y es un interruptor (aria-pressed).

Teclado

TeclaAcción
EscapeBorra la búsqueda
EnterEnvía la búsqueda (onSubmit)

Qué hacer y qué evitar

Hacer

  • Usa new-password como autoComplete en formularios de registro.

Evitar

  • No bloquees pegar en los campos de contraseña.
Probado con axe, teclado y roles de lector de pantalla