npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@sectiontn/otp-input

v0.3.7

Published

An elegant and highly customizable One-Time Password (OTP) input library designed to simplify the implementation and enhance the user experience of OTP authentication flows in React Native Applications.

Downloads

56

Readme

🗝️ OTP Text Input

An elegant and highly customizable One-Time Password (OTP) input library designed to simplify the implementation and enhance the user experience of OTP authentication flows in React Native Applications.

  • ✍ Written in TypeScript.
  • 📱 Supports Android / iOS / Web.
  • 🎨 Highly customizable.
  • 🚀 Easy to use.
  • 🍃 Lightweight.
  • 📏 Fully responsive.
  • 🌐 Supports RTL.
  • 🌛 Supports Dark Mode.
  • 💅 Supports custom styles.
  • 🎹 Supports custom keyboard types.

📸 Screenshots

These screenshots show the OTP Text Input in action, with different styles and configurations. taken from the example project below.

🎞️ Gifs

Web Demo Gif: Web Gif

💻 Installation

NPM:

npm install @sectiontn/otp-input

YARN:

yarn add @sectiontn/otp-input

➕ Imports

Import the OTP component from the @sectiontn/otp-input package and use it in your React Native application.

import { OTPTextInput } from '@sectiontn/otp-input';

You may need to import type OTPTextViewHandle to use the ref on the component (if you use TypeScript).

import { OTPTextInput, type OTPTextInputHandle } from '@sectiontn/otp-input';
// Later in your component.
const OTPRef = useRef<OTPTextInputHandle || null>(null);

♻ Usage

Call the OTPTextInput component in your JSX code and pass the required props to customize the OTP input field.

import { Platform } from 'react-native';

// later in your component's render

<OTPTextInput
  ref={OTPRef}
  inputCount={4}
  tintColor={"#FF6F61"}
  offTintColor={"#BBBCBE"}
  onTextChangeHandler={(pin: string) => {
    console.log('Current OTP:', pin);
  }}
  editable={true}
  autoFocus={true}
  keyboardType={Platform.OS === 'ios' ? 'number-pad' : 'numeric'}
/>

🧱 Props

There's no required prop as you can see, if you pass an empty props eg, <OTPTextInput />, the component will work with the default values.

| Prop name | Type | Default Value | Description | |:--------------------|:--------------------|:--------------|:---------------------------------------------------------------------------------| | defaultValue | string | " " | The default value for the OTP input | | inputCount | number | 4 | The number of OTP input fields | | tintColor | string | '#566193' | The color of the focused OTP input field | | offTintColor | string | '#DADADA' | The color of the non-focused OTP input fields | | inputMaxLength | number | 1 | The maximum length of each OTP input field | | containerStyle | object | {} | The custom style for the OTP container component | | textInputStyle | object | {} | The custom style for the OTP text inputs | | onTextChangeHandler | function | undefined | Call back function to handle OTP text change | | onBlur | function | undefined | Called when an input field loses focus | | onFocus | function | undefined | Called when an input field gets focus | | keyboardType | KeyboardTypeOptions | 'numeric' | Determines the type of keyboard to be displayed | | editable | boolean | true | Determines whether or not the OTP input is editable | | autoFocus | boolean | true | Determines whether or not the first input field should automatically get focus | | useNumbersRegex | boolean | true | If true, the input will be validated against a default number-based regex | | useCustomRegex | boolean | false | If true, a custom regex set by customRegex prop will be used for validation | | customRegex | RegExp | '\d*' | This provides the custom regex for input validation when useCustomRegex is true. |

NB: you cannot use both useNumbersRegex and useCustomRegex at the same time.

🔍 Example

Full Example: Check the example at OTP Input Example made with react-native-cli. Advanced Usage: Expo Snack Demo

🤝 Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

📜 License GPLv3 license.

Copyright (C) 2024 Mohamed Rayen Sbai

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

❤️ Support

Made with create-react-native-library