Saltar al contenido
Logic2BUI

Buscar en la documentación

Busca componentes y documentación

Nuevo
Menú

Entrada OTP

Entrada accesible para códigos de un solo uso con casillas por carácter.

Instalación

npx logic2b@next add input-otp

Uso

import {
  InputOTP,
  InputOTPGroup,
  InputOTPSeparator,
  InputOTPSlot,
} from "@/components/ui/input-otp"

<InputOTP aria-label="Código de un solo uso" maxLength={6}>
  <InputOTPGroup>
    <InputOTPSlot index={0} />
    <InputOTPSlot index={1} />
    <InputOTPSlot index={2} />
  </InputOTPGroup>
  <InputOTPSeparator />
  <InputOTPGroup>
    <InputOTPSlot index={3} />
    <InputOTPSlot index={4} />
    <InputOTPSlot index={5} />
  </InputOTPGroup>
</InputOTP>

Está construido sobre input-otp.

Ejemplos

Solo dígitos

Pasa un pattern para restringir la entrada. input-otp reexporta REGEXP_ONLY_DIGITS.

Controlado

Enter your PIN

Accesibilidad

  • Renderiza un único <input> real detrás de las casillas, por lo que el autocompletado de códigos (autocomplete="one-time-code") y los gestores de contraseñas funcionan, y los lectores de pantalla anuncian el campo con normalidad.
  • Se puede manejar completamente con el teclado: escribir avanza, Retroceso vuelve a la casilla anterior y la primitiva gestiona las flechas y el pegado.
  • aria-invalid controla el estado no válido y aplica el anillo destructivo a la casilla activa.
  • Da al campo un nombre accesible con un <label> visible, aria-label o aria-labelledby; todos los ejemplos incluidos lo hacen explícitamente.

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
<InputOTP
  maxLength={6}
  defaultValue="248135"
  aria-label="Verification code"
>
  <InputOTPGroup>
    <InputOTPSlot
      index={0}
     />
    <InputOTPSlot
      index={1}
     />
    <InputOTPSlot
      index={2}
     />
  </InputOTPGroup>
  <InputOTPSeparator />
  <InputOTPGroup>
    <InputOTPSlot
      index={3}
     />
    <InputOTPSlot
      index={4}
     />
    <InputOTPSlot
      index={5}
     />
  </InputOTPGroup>
</InputOTP>

Referencia de API

Generada a partir de las exportaciones públicas de TypeScript en src/ui/input-otp.tsx. Las descripciones técnicas conservan el texto canónico del código fuente.

Ver JSON

InputOTP

Componente
Props: React.ComponentProps<typeof OTPInput>

InputOTPGroup

Componente
Props: React.ComponentProps<"div">

InputOTPSlot

Componente
Props: React.ComponentProps<"div"> & { index: number }
PropiedadTipoObligatoriaValor predeterminadoDescripción
indexnumberSí——

InputOTPSeparator

Componente
Props: React.ComponentProps<"div">

Contrato de accesibilidad

Comportamiento legible por máquinas y responsabilidades de quien integra input-otp. Los detalles normativos conservan el texto canónico del registro.

Ver JSON
Soporte
Gestionado por la primitiva
Patrón
one-time-code textbox
input-otp
Interacciones de teclado para input-otp
TeclasComportamiento
BackspaceClear the current slot and move backward.
ArrowLeft ArrowRightMove between code positions where supported.

Semántica incorporada

  • A single input owns the value while visual slots mirror caret/invalid state.

Responsabilidades de integración

  • Provide a label, autocomplete=one-time-code where appropriate and never rely only on SMS access.