Campo de 6 dígitos para los códigos de verificación que MiCapi envía por correo y celular — en el registro y para confirmar operaciones sensibles. Auto-avance, paste, autofill de SMS en Android. Construido con tokens del DS: celdas mono, radius-md, focus-ring y motion estándar.
6 celdas cuadradas de 44×52dp, gap de 8dp, centradas. La celda activa eleva el borde a 2dp primary con glow del focus-ring; el dígito va en JetBrains Mono a 24dp.
Seis estados cubren todo el ciclo de entrada y validación.
Backspace en celda vacía retrocede y borra la anterior.HapticFeedback.lightImpact() y valida sin necesidad de un botón "Confirmar".translateX, duration-fast — opcional). Tras el shake, las celdas se limpian y vuelve a Empty.El reenvío arranca con countdown de 60s; tras 3 intentos fallidos, bloqueo temporal de 10 minutos.
Tras 3 códigos incorrectos, el input se bloquea 10 minutos como medida de seguridad. El campo queda deshabilitado y el reenvío oculto hasta que expire el bloqueo.
Mínima por diseño: el input no debe sentirse "animado", debe sentirse instantáneo.
El salto entre celdas no se anima — es feedback de input directo. Cualquier transición lo haría sentir lento.
HapticFeedback.lightImpact() al ingresar el 6º dígito — confirma táctilmente que el código está completo y se va a validar.
Shake sutil (translateX, duration-fast) al fallar. Sujeto a prueba de UX: refuerza el error visual pero puede sentirse excesivo en uso repetido. No es regla fija.
Con disableAnimationsOf(context) el shake se elimina y el error se comunica solo con color + mensaje. El haptic se mantiene — es táctil, no visual.
Empty · partial · complete · error sobre superficie oscura.
defaultPinTheme / focusedPinTheme / errorPinTheme a los tokens del DS.TextField por celda con su FocusNode; en onChanged avanzar con FocusScope.requestFocus, en backspace retroceder.autofillHints: [AutofillHints.oneTimeCode] en cada campo habilita el autofill del OTP desde SMS en Android. Pinput lo soporta nativo.sms_autofill con el hash de la app.lightImpact() al completar los 6 dígitos. Error haptic opcional, sujeto a prueba.disabled + spinner mientras responde la red; limpiar celdas tras error.