Git Product home page Git Product logo

sectiontn / otp-input Goto Github PK

View Code? Open in Web Editor NEW
10.0 1.0 3.0 10.18 MB

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.

License: GNU General Public License v3.0

JavaScript 0.60% TypeScript 99.40%
android-library ios-library newarchitecture otp-input otp-library otp-textfield otp-verification react-native websupport

otp-input's Introduction

๐Ÿ—๏ธ 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.

screeenshot_one screeenshot_one screeenshot_one

๐ŸŽž๏ธ Gifs

Advanced Usage

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

sectiontn

Made with create-react-native-library

otp-input's People

Contributors

sectiontn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

otp-input's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.