OtpInput

fun OtpInput(value: String, onValueChange: (String) -> Unit, modifier: Modifier = Modifier, length: Int = 6, animation: OtpAnimation = OtpAnimation.Scale, verificationState: VerificationState = VerificationState.Idle, animationDuration: Int = 250, successAnimationDelay: Int = 80, shakeIntensity: Dp = 12.dp, enableHaptics: Boolean = true, animationConfig: OtpAnimationConfig = OtpAnimationConfig(), mode: PinFlowMode = PinFlowMode.Boxes, colors: PinFlowColors = PinFlowDefaults.colors(), dimensions: PinFlowDimensions = PinFlowDefaults.dimensions(), enabled: Boolean = true, onComplete: (String) -> Unit? = null, smsAutoFill: Boolean = false, clipboardSuggestion: Boolean = false, otpDetectionMode: OtpDetectionMode = OtpDetectionMode.Suggestion, allowedChars: OtpAllowedChars = OtpAllowedChars.DigitsOnly, onOtpDetected: (String) -> Unit = {}, onOtpFilled: (String) -> Unit = {}, suggestionContent: @Composable (code: String, source: OtpDetectionSource, onApply: () -> Unit, onDismiss: () -> Unit) -> Unit? = null)

Animated OTP input with verification-state feedback — the MVP 3 animation API.

Wraps PinFlow with OtpAnimation presets, VerificationState handling, and a verifying progress indicator. Existing PinFlow callers remain unchanged.

MVP 4 adds SMS Retriever autofill, clipboard suggestions, and configurable detection modes.