Instalación
npx logic2b@next add input-otpUso
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-invalidcontrola 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-labeloaria-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>2
4
8
1
3
5
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.
InputOTP
ComponenteProps: React.ComponentProps<typeof OTPInput>InputOTPGroup
ComponenteProps: React.ComponentProps<"div">InputOTPSlot
ComponenteProps: React.ComponentProps<"div"> & { index: number }| Propiedad | Tipo | Obligatoria | Valor predeterminado | Descripción |
|---|---|---|---|---|
index | number | Sí | — | — |
InputOTPSeparator
ComponenteProps: 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.
- Soporte
- Gestionado por la primitiva
- Patrón
- one-time-code textbox
- input-otp
| Teclas | Comportamiento |
|---|---|
| Backspace | Clear the current slot and move backward. |
| ArrowLeft ArrowRight | Move 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.