<div align="center">
# 🔐 OTP RS
[](https://crates.io/crates/otprs)
[](https://crates.io/crates/otprs)

[](https://www.rust-lang.org/)
[](https://www.rust-lang.org)
[](https://github.com/opensass)
[](https://discord.gg/b5JbvHW5nv)

</div>
## 🎬 Demo
| Yew | [](https://otp-rs.netlify.app) |
| Dioxus | [](https://otp-dio.netlify.app) |
| Leptos | [](https://otp-lep.netlify.app) |
## 📜 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?
1. **🎨 Fully Customizable**: Control every attribute, class, style, variant, pattern, ARIA labels and more, on the outermost container, each group, each slot, and each separator.
1. **⌨ Smart Focus Management**: Typing a digit automatically advances focus. Backspace regresses focus. Arrow keys navigate left and right.
1. **✨ Animated Entry**: Each digit pops with a scale animation when entered, and a blinking caret is shown in the active empty slot.
1. **🔐 Built-in Validation**: Validate against HOTP (RFC 4226) or TOTP (RFC 6238) using a pure-Rust implementation, no C, no external crypto crates.
1. **♿ Accessible by Default**: `role="group"`, `aria-label`, `inputmode`, `autocomplete="one-time-code"`, disabled/invalid data-attributes all wired up automatically.
1. **🧩 Framework Agnostic**: Same API semantics across Yew, Dioxus, and Leptos.
## Y Yew Usage
Refer to [our guide](https://github.com/opensass/otprs/blob/main/YEW.md) to integrate this component into your Yew app.
## 🧬 Dioxus Usage
Refer to [our guide](https://github.com/opensass/otprs/blob/main/DIOXUS.md) to integrate this component into your Dioxus app.
## 🌱 Leptos Usage
Refer to [our guide](https://github.com/opensass/otprs/blob/main/LEPTOS.md) 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.
1. Fork the repository.
1. Create a new branch for your feature/bugfix.
1. Submit a pull request for review.
## 📜 License
OTP RS is licensed under the [MIT License](LICENSE). You are free to use, modify, and distribute this library in your projects.