react-native-otp-manager
Version:
react-native-otp-manager is a lightweight and high-performance OTP input component for React Native. It ensures a seamless user experience with no lag, making OTP verification faster and more efficient.
135 lines (94 loc) โข 4.1 kB
Markdown
This is ๐ฅ! Here's a slightly polished version of your `README.md` to make it even more professional, organized, and consistent with open-source package standards โ while keeping your original vibe.
```md
# react-native-otp-manager ๐ข
๐ **Fast, Smooth, and Lag-Free OTP Input for React Native**
## ๐ฆ Overview
`react-native-otp-manager` is a lightweight, fully customizable OTP input component for React Native. Designed with performance and UX in mind, it provides a smooth OTP entry experience without lags โ perfect for mobile verification flows.
## โจ Features
- โ
Smooth & Lag-Free Input
- ๐จ Fully Customizable UI & Styles
- ๐ Secure Entry Support
- โก OTP Autofill & AutoFocus
- ๐ Dark Mode Ready
- ๐ฏ Built with TypeScript
- โ
Works with both **React Native CLI** & **Expo**
## ๐ฅ Installation
### With npm
```bash
npm install react-native-otp-manager
```
### With yarn
```bash
yarn add react-native-otp-manager
```
## ๐ Usage
### Basic Example
```tsx
import React from "react";
import { View } from "react-native";
import OTPManager from "react-native-otp-manager";
const App = () => {
const handleComplete = (otp: string) => {
console.log("Entered OTP:", otp);
};
return (
<View>
<OTPManager maxLength={6} onComplete={handleComplete} />
</View>
);
};
export default App;
```
## ๐งฉ Props
| Prop | Type | Description | Default |
|-----------------------|----------------------|---------------------------------------------------|-----------------|
| `maxLength` | `number` | Number of OTP digits | `4` |
| `onComplete` | `(code: string) => void` | Called when all digits are filled | `undefined` |
| `onChange` | `(code: string) => void` | Called whenever input value changes | `undefined` |
| `containerStyle` | `ViewStyle` | Styles for the outer wrapper | `undefined` |
| `inputWrapperStyle` | `ViewStyle` | Styles for the input row wrapper | `undefined` |
| `digitStyle` | `ViewStyle` | Styles for each digit input box | `undefined` |
| `digitTextStyle` | `TextStyle` | Styles for the digit text | `undefined` |
| `focusedDigitStyle` | `ViewStyle` | Styles when a digit input is focused | `undefined` |
| `cursorStyle` | `TextStyle` | Custom styles for the blinking cursor | `undefined` |
| `secureTextEntry` | `boolean` | Hide digits like passwords | `false` |
| `placeholderChar` | `string` | Placeholder symbol for empty digits | `""` |
| `autoFocus` | `boolean` | Autofocus the OTP field on mount | `true` |
## ๐จ Custom Styling
Easily control the look of the OTP boxes to match your branding.
### Example with Custom Styles
```tsx
<OTPManager
maxLength={6}
onComplete={(otp) => console.log("OTP:", otp)}
containerStyle={{ marginTop: 20 }}
digitStyle={{ borderColor: "#FF5733", backgroundColor: "#FFF0F0" }}
digitTextStyle={{ color: "#FF5733", fontWeight: "600" }}
focusedDigitStyle={{ borderColor: "#FFC300", backgroundColor: "#FFFBE6" }}
cursorStyle={{ color: "#FFC300" }}
placeholderChar="-"
secureTextEntry={false}
/>
```
## ๐ก Tips
- Use `secureTextEntry` for hiding OTP input like PINs.
- You can reset the input manually using a `ref` (exposed via `reset()`).
- Fully works in dark/light themes.
## ๐ค Contributing
Contributions, issues, and feature requests are welcome!
Feel free to [open an issue](https://github.com/your-repo/issues) or submit a pull request.
## ๐งช License
[MIT License](LICENSE)
Made with โค๏ธ by [Dev Yousuf ](https://your-site.com)
```