Expand description
Β§π¬ Demo
Β§π Intro
A highly customizable, accessible OTP (One-Time Password) input component for WASM frameworks: Yew, Dioxus, and Leptos.
Supports animated per-slot digit entry with automatic focus traversal, primary and secondary visual variants, built-in HOTP/TOTP validation per RFC 4226 and RFC 6238, and full WCAG compliance.
Β§π€ Why OTP RS?
- π¨ Fully Customizable: Control every attribute, class, style, variant, pattern, ARIA labels and more, on the outermost container, each group, each slot, and each separator.
- β¨ Smart Focus Management: Typing a digit automatically advances focus. Backspace regresses focus. Arrow keys navigate left and right.
- β¨ Animated Entry: Each digit pops with a scale animation when entered, and a blinking caret is shown in the active empty slot.
- π Built-in Validation: Validate against HOTP (RFC 4226) or TOTP (RFC 6238) using a pure-Rust implementation, no C, no external crypto crates.
- βΏ Accessible by Default:
role="group",aria-label,inputmode,autocomplete="one-time-code", disabled/invalid data-attributes all wired up automatically. - π§© Framework Agnostic: Same API semantics across Yew, Dioxus, and Leptos.
Β§Y Yew Usage
Refer to our guide to integrate this component into your Yew app.
§𧬠Dioxus Usage
Refer to our guide to integrate this component into your Dioxus app.
Β§π± Leptos Usage
Refer to our guide to integrate this component into your Leptos app.
Β§π€ Contributions
Contributions are welcome! Whether itβs bug fixes, feature requests, or examples, we would love your help to make OTP RS better.
- Fork the repository.
- Create a new branch for your feature/bugfix.
- Submit a pull request for review.
Β§π License
OTP RS is licensed under the MIT License. You are free to use, modify, and distribute this library in your projects.
Re-exportsΒ§
pub use common::InputMode;pub use common::OtpValidationError;pub use common::Variant;pub use common::generate_totp;pub use common::hotp;pub use common::pattern;pub use common::validate_hotp;pub use common::validate_totp;pub use common::unix_now_secs;dioorleporyew
