{"_id":"@anan.k/react-native-pincode","_rev":"4-a9b4d9185f0b521e10db3c22fa45b43f","name":"@anan.k/react-native-pincode","dist-tags":{"latest":"1.1.2"},"versions":{"1.0.0":{"name":"@anan.k/react-native-pincode","version":"1.0.0","author":{"name":"Jeremy Farnault"},"license":"MIT","_id":"@anan.k/react-native-pincode@1.0.0","maintainers":[{"name":"anan.k","email":"anan.kidchai@gmail.com"}],"homepage":"https://github.com/anankidchai/react-native-pincode#readme","bugs":{"url":"https://github.com/anankidchai/react-native-pincode/issues"},"dist":{"shasum":"6e73cfc96a8d322ab4eac98f540f5eda184f91cf","tarball":"https://registry.npmjs.org/@anan.k/react-native-pincode/-/react-native-pincode-1.0.0.tgz","fileCount":35,"integrity":"sha512-VtWZOYKGMetTP2VrCM818tPFV99QZEw7ykRRs+3mZYyIUFFgPhCfdhIH9ZUt1anBvxnbQLfRyIrzjCsIkNLJ6Q==","signatures":[{"sig":"MEYCIQDTFlyjaVbBK6iXksGQ1RjIBJyAPsyGvJG1S9KEzC85uwIhAOHOc4nlFpNfmhQkKvGDPYGL5hvCYVsMysyzy09y6zhE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297435},"jest":{"preset":"react-native"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"93d665b87a19bd862903a2b66b186a7adeb61a96","scripts":{"dev":"yarn build -watch","test":"jest","build":"tsc","pretty":"prettier --single-quote --no-semi --jsx-bracket-same-line --write \"src/**/*.{ts, tsx}\"","compile":"npm run build","addlocal":"yarn add file:./local_modules/react-native-pincode"},"_npmUser":{"name":"anan.k","email":"anan.kidchai@gmail.com"},"repository":{"url":"git+https://github.com/anankidchai/react-native-pincode.git","type":"git"},"_npmVersion":"10.8.2","description":"React native PIN code component","directories":{},"_nodeVersion":"20.17.0","dependencies":{"lodash":"^4.17.5","d3-ease":"^1.0.3","react-move":"^2.7.0","react-native-keychain":"^6.1.1","react-native-touch-id":"^4.4.1","react-native-easy-grid":"^0.2.2","react-native-vector-icons":"^7.0.0","@react-native-community/async-storage":"^1.7.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.3","babel":"^6.23.0","react":"^16.2.0","enzyme":"^3.3.0","prettier":"^1.13.7","react-dom":"^16.4.1","babel-jest":"^23.4.0","typescript":"^2.7.2","@types/react":"^16.0.40","react-native":"^0.54.2","@types/lodash":"^4.14.104","@types/d3-ease":"^1.0.7","@types/react-native":"^0.52.16","react-test-renderer":"^16.4.1","jest-serializer-enzyme":"^1.0.0","react-addons-test-utils":"^15.6.2","@types/react-native-vector-icons":"^4.4.3"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-pincode_1.0.0_1756364391998_0.5581062946009727","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@anan.k/react-native-pincode","version":"1.1.0","author":{"name":"Jeremy Farnault"},"license":"MIT","_id":"@anan.k/react-native-pincode@1.1.0","maintainers":[{"name":"anan.k","email":"anan.kidchai@gmail.com"}],"homepage":"https://github.com/anankidchai/react-native-pincode#readme","bugs":{"url":"https://github.com/anankidchai/react-native-pincode/issues"},"dist":{"shasum":"cbf41b7c075db8e07c32651e23876161699e895b","tarball":"https://registry.npmjs.org/@anan.k/react-native-pincode/-/react-native-pincode-1.1.0.tgz","fileCount":35,"integrity":"sha512-eYn1xjx/msMlb+7rTn7yEaY0tbhkvaOeI6Tyi9p+vd7IPyGKOpnHvANa9EhSFyJZ8DMb1QugEizla5q2jpBCnw==","signatures":[{"sig":"MEYCIQDuHB+UvLzqt57c5LnE7pLgyMGhbmJeOOOMc3wkrjjMBAIhAI+dDl4kt+Fv3wtK3aduJVFxJYWHjS3o4cFdh7nzG6Af","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":296957},"jest":{"preset":"react-native"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"93d665b87a19bd862903a2b66b186a7adeb61a96","scripts":{"dev":"yarn build -watch","test":"jest","build":"tsc","pretty":"prettier --single-quote --no-semi --jsx-bracket-same-line --write \"src/**/*.{ts, tsx}\"","android":"npx react-native run-android","compile":"npm run build","addlocal":"yarn add file:./local_modules/react-native-pincode"},"_npmUser":{"name":"anan.k","email":"anan.kidchai@gmail.com"},"repository":{"url":"git+https://github.com/anankidchai/react-native-pincode.git","type":"git"},"_npmVersion":"11.6.2","description":"React native PIN code component","directories":{},"_nodeVersion":"24.11.1","dependencies":{"lodash":"^4.17.5","d3-ease":"^1.0.3","react-move":"^2.7.0","react-native-keychain":"10.0.0","react-native-touch-id":"^4.4.1","react-native-easy-grid":"^0.2.2","react-native-vector-icons":"^7.0.0","@react-native-community/async-storage":"^1.7.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.3","babel":"^6.23.0","react":"^16.2.0","enzyme":"^3.3.0","prettier":"^1.13.7","react-dom":"^16.4.1","babel-jest":"^23.4.0","typescript":"^2.7.2","@types/react":"^16.0.40","react-native":"^0.54.2","@types/lodash":"^4.14.104","@types/d3-ease":"^1.0.7","@types/react-native":"^0.52.16","react-test-renderer":"^16.4.1","jest-serializer-enzyme":"^1.0.0","react-addons-test-utils":"^15.6.2","@types/react-native-vector-icons":"^4.4.3"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-pincode_1.1.0_1765200438110_0.5812520041513025","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@anan.k/react-native-pincode","version":"1.1.1","author":{"name":"Jeremy Farnault"},"license":"MIT","_id":"@anan.k/react-native-pincode@1.1.1","maintainers":[{"name":"anan.k","email":"anan.kidchai@gmail.com"}],"homepage":"https://github.com/anankidchai/react-native-pincode#readme","bugs":{"url":"https://github.com/anankidchai/react-native-pincode/issues"},"dist":{"shasum":"c57e2999b21cad1bcd674f31024e822226ae289e","tarball":"https://registry.npmjs.org/@anan.k/react-native-pincode/-/react-native-pincode-1.1.1.tgz","fileCount":35,"integrity":"sha512-USUZmmdcG2JiDyTquo10GiNs0NQhRYBWzmm1tu7aZuFRJvzPAyPbjc4I8gzrsi4Mb8xk5EbWWnbhAbYkDaUBMA==","signatures":[{"sig":"MEQCIH5Z+ZvYQ4E3Ef6cPpXEtFaBMoCN2NrasVi/TJM3G9x1AiA7WKayBkKBdWMyky7kSWI9OdpE6526ze3SxNFcIymIrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":296981},"jest":{"preset":"react-native"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"93d665b87a19bd862903a2b66b186a7adeb61a96","scripts":{"dev":"yarn build -watch","test":"jest","build":"tsc","pretty":"prettier --single-quote --no-semi --jsx-bracket-same-line --write \"src/**/*.{ts, tsx}\"","android":"npx react-native run-android","compile":"npm run build","addlocal":"yarn add file:./local_modules/react-native-pincode"},"_npmUser":{"name":"anan.k","email":"anan.kidchai@gmail.com"},"repository":{"url":"git+https://github.com/anankidchai/react-native-pincode.git","type":"git"},"_npmVersion":"11.6.2","description":"React native PIN code component","directories":{},"_nodeVersion":"24.11.1","dependencies":{"lodash":"^4.17.5","d3-ease":"^1.0.3","react-move":"^2.7.0","react-native-keychain":"10.0.0","react-native-touch-id":"^4.4.1","react-native-easy-grid":"^0.2.2","react-native-vector-icons":"^7.0.0","@react-native-community/async-storage":"^1.7.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.3","babel":"^6.23.0","react":"^16.2.0","enzyme":"^3.3.0","prettier":"^1.13.7","react-dom":"^16.4.1","babel-jest":"^23.4.0","typescript":"^2.7.2","@types/react":"^16.0.40","react-native":"^0.54.2","@types/lodash":"^4.14.104","@types/d3-ease":"^1.0.7","@types/react-native":"^0.52.16","react-test-renderer":"^16.4.1","jest-serializer-enzyme":"^1.0.0","react-addons-test-utils":"^15.6.2","@types/react-native-vector-icons":"^4.4.3"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-pincode_1.1.1_1765202683931_0.8504721749156252","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@anan.k/react-native-pincode","version":"1.1.2","description":"React native PIN code component","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"dev":"yarn build -watch","android":"npx react-native run-android","build":"tsc","compile":"npm run build","addlocal":"yarn add file:./local_modules/react-native-pincode","test":"jest","pretty":"prettier --single-quote --no-semi --jsx-bracket-same-line --write \"src/**/*.{ts, tsx}\""},"jest":{"preset":"react-native"},"repository":{"type":"git","url":"git+https://github.com/anankidchai/react-native-pincode.git"},"author":{"name":"Jeremy Farnault"},"license":"MIT","bugs":{"url":"https://github.com/anankidchai/react-native-pincode/issues"},"homepage":"https://github.com/anankidchai/react-native-pincode#readme","devDependencies":{"@types/d3-ease":"^1.0.7","@types/lodash":"^4.14.104","@types/react":"^16.0.40","@types/react-native":"^0.52.16","@types/react-native-vector-icons":"^4.4.3","babel":"^6.23.0","babel-jest":"^23.4.0","enzyme":"^3.3.0","jest":"^23.3","jest-serializer-enzyme":"^1.0.0","prettier":"^1.13.7","react":"^16.2.0","react-addons-test-utils":"^15.6.2","react-dom":"^16.4.1","react-native":"^0.54.2","react-test-renderer":"^16.4.1","typescript":"^2.7.2"},"dependencies":{"@react-native-community/async-storage":"^1.7.1","d3-ease":"^1.0.3","lodash":"^4.17.5","react-move":"^2.7.0","react-native-easy-grid":"^0.2.2","react-native-keychain":"10.0.0","react-native-touch-id":"^4.4.1","react-native-vector-icons":"^7.0.0"},"peerDependencies":{"react":"*","react-native":"*"},"gitHead":"93d665b87a19bd862903a2b66b186a7adeb61a96","_id":"@anan.k/react-native-pincode@1.1.2","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-COxXhN8msJ+lTKU6gZBGaC7f8fNS4tf41SlC478dRm5iJjL2q50m9eZwVOub8Np5Jp+te0VYMCz/K+5OKShu4g==","shasum":"9b6d5145574f0eb44c15a92fd043244fda58b587","tarball":"https://registry.npmjs.org/@anan.k/react-native-pincode/-/react-native-pincode-1.1.2.tgz","fileCount":35,"unpackedSize":296981,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICr1MNqS5H/YKq5aoAs1sAVF4NM1DLWfddCFQuAygrBzAiA8nvuxNU8Viz6iNKY8/2K6pJjSwX5z4vo4CF3MNQ00jg=="}]},"_npmUser":{"name":"anan.k","email":"anan.kidchai@gmail.com"},"directories":{},"maintainers":[{"name":"anan.k","email":"anan.kidchai@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-pincode_1.1.2_1765886186247_0.6455193454299426"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-28T06:59:51.912Z","modified":"2025-12-16T11:56:26.617Z","1.0.0":"2025-08-28T06:59:52.206Z","1.1.0":"2025-12-08T13:27:18.272Z","1.1.1":"2025-12-08T14:04:44.075Z","1.1.2":"2025-12-16T11:56:26.398Z"},"bugs":{"url":"https://github.com/anankidchai/react-native-pincode/issues"},"author":{"name":"Jeremy Farnault"},"license":"MIT","homepage":"https://github.com/anankidchai/react-native-pincode#readme","repository":{"type":"git","url":"git+https://github.com/anankidchai/react-native-pincode.git"},"description":"React native PIN code component","maintainers":[{"name":"anan.k","email":"anan.kidchai@gmail.com"}],"readme":"# react-native-pincode\r\n\r\nThis project folk form https://github.com/jarden-digital/react-native-pincode (@haskkor/react-native-pincode)\r\n\r\n[![npm](https://img.shields.io/npm/v/@anan.k/react-native-pincode.svg)](https://www.npmjs.com/package/@anan.k/react-native-pincode) [![npm](https://img.shields.io/npm/dt/@anan.k/react-native-pincode.svg)](https://www.npmjs.com/package/@anan.k/react-native-pincode) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)\r\n\r\n_A customizable PIN Code component for react native_\r\n\r\nUsing:\r\n* _**[react-native-keychain](https://github.com/oblador/react-native-keychain)**_ to store the pin in Keychain/Keystore\r\n* _**[react-native-touch-id](https://github.com/naoufal/react-native-touch-id)**_ to authenticate users with FaceID/TouchID\r\n* _**[react-move](https://github.com/react-tools/react-move)**_ for animations\r\n* _**[react-native-vector-icons](https://github.com/oblador/react-native-vector-icons)**_ to use the material icons\r\n\r\n## Installation\r\n\r\n```\r\nnpm install --save @anan.k/react-native-pincode\r\n```\r\nor\r\n```\r\nyarn add @anan.k/react-native-pincode\r\n```\r\n\r\n**Please note that:**\r\n\r\nAsync storage uses the [react-native-async-storage](https://github.com/react-native-community/react-native-async-storage) library which has to be linked\r\n\r\n```\r\nreact-native link @react-native-community/async-storage\r\n```\r\n\r\nIf you wish to use the `TouchID/FaceID` authentication you will have to link the [library](https://github.com/naoufal/react-native-touch-id):\r\n\r\n```\r\nreact-native link react-native-touch-id\r\n```\r\n\r\nIf you wish to use `Keychain/Keystore` to store the PIN code you will have to link the [library](https://github.com/oblador/react-native-keychain):\r\n\r\n```\r\nreact-native link react-native-keychain\r\n```\r\n\r\nIf you wish to use FaceID you'll need to add the permission in your info.plist\r\n\r\n```\r\n<key>NSFaceIDUsageDescription</key>\r\n<string>Enabling Face ID allows you quick and secure access to your account.</string>\r\n```\r\n\r\n_Please note that you might have to link those libraries manually._\r\n\r\n**IMPORTANT:**\r\n_If you decide not to use `Keychain/Keystore`, you will have to provide a **`storePin`** property to the `PINCode` component._\r\n\r\nThe library uses the `Vibration` from [React Native](https://facebook.github.io/react-native/docs/vibration).\r\n_Please note that on Android it requires the Vibrate permission as stated in the doc. (add <uses-permission android:name=\"android.permission.VIBRATE\"/> to AndroidManifest.xml)_\r\n\r\n## Demo\r\n\r\n![choose-confirm](https://user-images.githubusercontent.com/10620919/37805052-bdefa610-2e9c-11e8-8290-fe2d695020a5.gif)   ![enter-locked](https://user-images.githubusercontent.com/10620919/37805092-f443c8fe-2e9c-11e8-9524-1e0b6a93fc78.gif)\r\n\r\n## Usage\r\n\r\nBasic usage requires choosing between the _**choose**_, _**enter**_ and _**locked**_ modes.\r\n* _**choose**_ : requires the user to choose and to confirm a PIN code\r\n* _**enter**_ : requires the user to enter the PIN code he previously chose\r\n* _**locked**_ : prints a locked screen for a given time if the user failed to enter his/her PIN code too many times\r\n\r\n```\r\nimport PINCode from '@anan.k/react-native-pincode'\r\n<PINCode status={'choose'}/>\r\n```\r\n\r\nPackage provides a promise to know if a PIN code has been set by the user.\r\nThe `serviceName` parameter is optional. If provided, it should match the `pinCodeKeychainName` property.\r\n\r\n```\r\nimport {hasUserSetPinCode} from '@anan.k/react-native-pincode'\r\nawait hasUserSetPinCode(serviceName)\r\n```\r\n\r\nOne can also use a provided function to delete a PIN code previously set in the Keychain.\r\nThe `service name` parameter is optional. If provided, it should match the `pinCodeKeychainName` property.\r\n\r\n``` \r\nimport {deleteUserPinCode} from '@anan.k/react-native-pincode'\r\nawait deleteUserPinCode(serviceName)\r\n```\r\n\r\nIf needed, the internal states that record `the number of attemps` and `time of last attempt` can be reset in addition to user pin code deletion.\r\n\r\n``` \r\nimport {resetPinCodeInternalStates} from '@anan.k/react-native-pincode'\r\nawait resetPinCodeInternalStates()\r\n```\r\n\r\n## Options\r\n\r\n| Key | Description | Default | Required | Type |\r\n|---|---|---|---|---|\r\n|**`alphabetCharsVisible`**|Boolean to hide/show English alphabet on PIN panel|`false`|`false`|`boolean`|\r\n|**`bottomLeftComponent`**|Component to replace the empty space at the bottom left of the numpad|Empty space|`false`|`any`|\r\n|**`buttonComponentLockedPage`**|Button component to be used at the bottom of the page on the locked application page|TouchableOpacity exit button killing the application|`false`|`any`|\r\n|**`buttonDeleteComponent`**|Button component to be used at the bottom right of the PIN panel to delete a previous entry|TouchableHighlight button with a `delete` text and the `backspace` material icon|`false`|`any`|\r\n|**`buttonDeleteText`**|Text of the of the button used to delete a previous entry on the PIN panel|`delete`|`false`|`string`|\r\n|**`buttonNumberComponent`**|Button component to be used on the PIN panel to select a character for the PIN|TouchableHighlight button with a number text|`false`|`any`|\r\n|**`callbackErrorTouchId`**|Callback to be used when the TouchID authenticate method throws an error|`console.log('TouchID error', e)`|`false`|`(error: Error) => void`|\r\n|**`customBackSpaceIcon`**|Function, that returns custom backspace component to be used to replace the default backspace one on the PIN screen|`Function`|\r\n|**`disableLockScreen`**|Boolean to disable the lock screen|`false`|`false`|`boolean`|\r\n|**`endProcessFunction`**|Function to handle the end of the process|`None`|`false`|`(pinCode: string) => void`|\r\n|**`finishProcess`**|Function to be used when the user enters the right PIN code|Removes the values in AsyncStorage and set the status to `success`|`false`|`(pinCode?: string) => void`|\r\n|**`getCurrentPinLength`**|Function returning the length of the current PIN code|`None`|`false`|`(length: number) => void`|\r\n|**`handleResultEnterPin`**|Function to be used to handle the PIN code entered by the user. Can be used for external-custom pin validation, return boolean to override internal pin validation| undefined |`false`|(pinCode?: string) => bool or undefined|\r\n|**`iconComponentLockedPage`**|View component to be used between the timer and the text on the locked application page|A circular red View using the `lock` material icon|`false`|`any`| \r\n|**`iconButtonDeleteDisabled`**|Boolean to remove the icon on the delete button of the PIN panel|`false`|`false`|`boolean`|\r\n|**`launchTouchID`**|Function to manually trigger the touchID|`undefined`|`false`|`() => void`|\r\n|**`lockedIconComponent`**|Component to replace the locked icon on the locked application page|`Material lock icon`|`false`|`any`|\r\n|**`lockedPage`**|View component used as a locked page if the user fails to provide the correct PIN code `maxAttempts` times|A application locked page with a timer indicating to the user the remaining time locked and a button closing the application|`false`|`any`|\r\n|**`maxAttempts`**|Number of attempts the user is given before locking the application|`3`|`false`|`number`|\r\n|**`onClickButtonLockedPage`**|Function to be used when the user taps the button on the locked application page|Kills the app by throwing `Quit application`|`false`|`any`|\r\n|**`onFail`**|Function to be used when the user enters the wrong PIN code|Returns number of failed attempts|`false`|`any`|\r\n|**`passwordComponent`**|Component to be used to indicate to the user how many characters he/she typed. To be used with the **`getCurrentPinLength`** prop|Dots growing or shrinking when the user adds or removes a character in the PIN code|`false`|`any`|\r\n|**`passwordLength`**|Length of the password the user has to enter|`4`|`false`|`number`|\r\n|**`pinAttemptsAsyncStorageName`**|String to be used as a key in AsyncStorage to store the number of attempts the user already made|`pinAttemptsRNPin`|`false`|`string`|\r\n|**`pinCodeKeychainName`**|String to be used as a key to store the PIN code in Keychain/Keystore|`reactNativePinCode`|`false`|`string`|\r\n|**`pinCodeVisible`**|Boolean to show/hide the PIN code typed by the user|*None*|`false`|`boolean`|\r\n|**`pinStatus`**|Status coming back to the PIN component after the **`handleResultEnterPin`** function. The status type is a value of the `PinResultStatus` enum (`initial`, `success`, `failure`, `locked`)|`None`|`false`|`PinResultStatus` enum|\r\n|**`status`**|Indicates the mode that should be used (see _Usage_ section for the different modes available)|*None*|`true`|`choose` or `enter` or `locked`|\r\n|**`storedPin`**|The PIN code previously stored with the `storePin` function|The PIN Code previously stored in the Keychain/Keystore|`false`|`string`|\r\n|**`storePin`**|Function that will be used to store the PIN (pin is given as a string argument)|Stores the PIN in Keychain/Keystore|`false`|`any`|\r\n|**`subtitleChoose`**|String used as a subtitle on the PIN code choose page|`to keep your information secure`|`false`|`string`|\r\n|**`subtitleComponent`**|Component to be used as a subtitle on all the PIN code pages|Light grey Text component|`false`|`any`|\r\n|**`subtitleConfirm`**|String used as a subtitle on the PIN code confirmation page|`None`|`false`|`string`|\r\n|**`subtitleEnter`**|String used as a subtitle on the PIN code enter page|`None`|`false`|`string`|\r\n|**`subtitleError`**|String used as a subtitle on the PIN code pages when an error occurs (wrong PIN code used for `enter` or `confirm` modes)|`Please try again`|`false`|`string`|\r\n|**`textButtonLockedPage`**|String to be used as text on the button in the locked application page|`Quit`|`false`|`string`|\r\n|**`textCancelButtonTouchID`**|String to be used as text on the cancel button of the touchID popup. Only for Android|`Cancel`|`false`|`string`|\r\n|**`textDescriptionLockedPage`**|String to be used as a description on the locked application page|`To protect your information, access has been locked for {timeLocked} minutes.`|`false`|`string`|\r\n|**`textSubDescriptionLockedPage`**|String to be used as a subtitle on the locked application page|`Come back later and try again.`|`false`|`string`|\r\n|**`textPasswordVisibleFamily`**|Font to be used for the PIN code numbers when `pinCodeVisible` is true|`system font`|`false`|`string`|\r\n|**`textPasswordVisibleSize`**|Size of the font used for the PIN code numbers when `pinCodeVisible` is true|`22`|`false`|`number`|\r\n|**`textTitleLockedPage`**|String to be used as a title on the locked application page|`Maximum attempts reached`|`false`|`string`|\r\n|**`timeLocked`**|Number of milliseconds where the application should be locked after `maxAttempts` failed attempts from the user|`300000` (5 minutes)|`false`|`number`|\r\n|**`timePinLockedAsyncStorageName`**|String to be used as a key in AsyncStorage to store the time when the user locks the application|`timePinLockedRNPin`|`false`|`string`|\r\n|**`timerComponentLockedPage`**|Component to be used on the application locked page to indicates the remaining locked time to the user|A Text component displaying a timer with the remaining locked time on the application locked page|`false`|`any`|\r\n|**`titleAttemptFailed`**|String used as a title on the PIN enter page when the user enters a wrong PIN code|`Incorrect PIN Code`|`false`|`string`|\r\n|**`titleChoose`**|String used as a title on the PIN choose page|`1 - Enter a PIN Code`|`false`|`string`|\r\n|**`titleComponent`**|Component to be used as a title on all the PIN code pages|Light grey Text component|`false`|`any`|\r\n|**`titleComponentLockedPage`**|Component to be used as a title on the application locked page|Light grey Text component|`false`|`any`|\r\n|**`titleConfirm`**|String used as a title on the PIN confirm page|`2 - Confirm your PIN Code`|`false`|`string`|\r\n|**`titleConfirmFailed`**|String used as a title on the PIN confirm page when the user enters a wrong PIN code|`Your entries did not match`|`false`|`string`|\r\n|**`titleEnter`**|String used as a title on the PIN enter page|`Enter your PIN Code`|`false`|`string`|\r\n|**`titleValidationFailed`**|String used as a title on the PIN choose page when the PIN code entered by the user does not match the provided RegExp (use with `validationRegex` property|`PIN code unsafe`|`false`|`string`|\r\n|**`touchIDDisabled`**|Boolean disabling the TouchID/FaceID on the PIN code enter page|`false`|`false`|`boolean`|\r\n|**`touchIDSentence`**|String to be used in the TouchID/FaceID popup|`To unlock your application`|`false`|`string`|\r\n|**`touchIDTitle`**|ANDROID ONLY. String to be used in the TouchID/FaceID popup title.|`Authentication Required`|`false`|`string`|\r\n|**`validationRegex`**|Regex to be used to validate the PIN code entered by the user on `choose` mode|*None*|`false`|`RegExp`|\r\n|**`vibrationEnabled`**|Boolean enabling vibration feedback when an incorrect PIN is entered|`true`|`false`|`boolean`\r\n|**`delayBetweenAttempts`**|Delay when an incorrect PIN is entered|`3000`|`false`|`number`\r\n\r\n## Styles\r\n\r\n| Key | Description | Default | Type |\r\n|---|---|---|---|\r\n|**`colorCircleButtons`**|Color of the circle buttons|`rgb(242, 245, 251)`|`string`|\r\n|**`colorPassword`**|Color of the dots used for the password component|`turquoise`|`string`|\r\n|**`colorPasswordEmpty`**|Color of the dots used for the password component when small|`turquoise`|`string`|\r\n|**`colorPasswordError`**|Color of the dots used for the password component on error state|`#9DAFC8`|`string`|\r\n|**`numbersButtonOverlayColor`**|Color of the PIN panel buttons when `highlighted`|`turquoise`|`string`|\r\n|**`styleAlphabet`**|Text of English letters on PIN panel. (First, set `alphabetCharsVisible={true}`)|`fontSize: grid.unit/2, fontWeight: \"300\"`|`StyleProp<TextStyle>`|\r\n|**`styleMainContainer`**|Main container of index file|`flex: 1, justifyContent: 'center', alignItems: 'center'`|`StyleProp<ViewStyle>`|\r\n|**`stylePinCodeChooseContainer`**|Main container of PinCodeChoose file|`flex: 1, justifyContent: 'center', alignItems: 'center'`|`StyleProp<ViewStyle>`|\r\n|**`stylePinCodeEnterContainer`**|Main container of PinCodeEnter file|`flex: 1, justifyContent: 'center', alignItems: 'center'`|`StyleProp<ViewStyle>`|\r\n|**`styleLockScreenButton`**|Button of the lock screen|`backgroundColor: colors.turquoise, borderRadius: grid.border, paddingLeft: grid.unit * 2, paddingRight: grid.unit * 2, paddingBottom: grid.unit, paddingTop: grid.unit`|`StyleProp<ViewStyle>`|\r\n|**`styleLockScreenColorIcon`**|Color of the icon on the lock screen|`white`|`string`|\r\n|**`styleLockScreenMainContainer`**|Main container of the lock screen|`position: 'absolute', top: 0, backgroundColor: colors.background, flexBasis: 0, left: 0, height: '100%', width: '100%', alignItems: 'center', flex: 1, justifyContent: 'center'`|`StyleProp<ViewStyle>`|\r\n|**`styleLockScreenNameIcon`**|Name of the material icon to be used on the lock screen|`lock`|`string`|\r\n|**`styleLockScreenSizeIcon`**|Size of the icon on the lock screen|`24`|`number`|\r\n|**`styleLockScreenText`**|Text on the lock screen (Come back..., To protect...)|`fontSize: grid.unit, color: colors.base, lineHeight: grid.unit * grid.lineHeight, textAlign: 'center'`|`StyleProp<TextStyle>`|\r\n|**`styleLockScreenTextButton`**|Text of the button of the lock screen|`color: colors.white, fontWeight: 'bold', fontSize: 14`|`StyleProp<TextStyle>`|\r\n|**`styleLockScreenTextTimer`**|Text of the timer of the lock screen|`fontFamily: Platform.OS === 'ios' ? 'Courier' : 'monospace', fontSize: 20, color: colors.base`|`StyleProp<TextStyle>`|\r\n|**`styleLockScreenTitle`**|Title of the lock screen|`fontSize: grid.navIcon, color: colors.base, opacity: grid.mediumOpacity, fontWeight: '200', marginBottom: grid.unit * 4`|`StyleProp<TextStyle>`|\r\n|**`styleLockScreenViewCloseButton`**|View of the button close of the lock screen|`alignItems: 'center', opacity: grid.mediumOpacity, justifyContent: 'center', marginTop: grid.unit * 2`|`StyleProp<ViewStyle>`|\r\n|**`styleLockScreenViewIcon`**|View containing the icon of the lock screen|`width: grid.unit * 4, justifyContent: 'center', alignItems: 'center', height: grid.unit * 4, borderRadius: grid.unit * 2, opacity: grid.mediumOpacity, backgroundColor: colors.alert, overflow: 'hidden', marginBottom: grid.unit * 4`|`StyleProp<ViewStyle>`|\r\n|**`styleLockScreenViewTextLock`**|View containing all the text of the lock screen|`justifyContent: 'center', alignItems: 'center', paddingLeft: grid.unit * 3, paddingRight: grid.unit * 3, flex: 3`|`StyleProp<ViewStyle>`|\r\n|**`styleLockScreenViewTimer`**|View of the timer of the lock screen|`paddingLeft: 30, paddingRight: 30, paddingBottom: 10, paddingTop: 10, borderRadius: 4, borderWidth: 2, borderColor: 'rgb(230, 231, 233)', marginBottom: grid.unit * 4`|`StyleProp<ViewStyle>`|\r\n|**`stylePinCodeButtonCircle`**|Circle button TouchableHighlight of the PinCode file|`alignItems: 'center', justifyContent: 'center', width: grid.unit * 4, height: grid.unit * 4, backgroundColor: 'rgb(242, 245, 251)', borderRadius: grid.unit * 2`|`StyleProp<ViewStyle>`|\r\n|**`stylePinCodeButtonNumber`**|Color of the number buttons on the Pin code page|'white'|`string`|\r\n|**`stylePinCodeButtonNumberPressed`**|Color of the number buttons on the Pin code page when pressed|`#9DAFC8`|`string`|\r\n|**`stylePinCodeCircle`**|Style of the pinCode dots|`left, height, width, opacity, borderRadius, marginLeft, marginRight, and backgroundColor inherited from the animation`|`StyleProp<ViewStyle>`|\r\n|**`stylePinCodeColorSubtitle`**|Color of the PinCode page subtitle in normal state|`#9DAFC8`|`string`|\r\n|**`stylePinCodeColorSubtitleError`**|Color of the the PinCode page subtitle in error state|`#FC4349`|`string`|\r\n|**`stylePinCodeColorTitle`**|Color of the the PinCode page title in normal state|`#9DAFC8`|`string`|\r\n|**`stylePinCodeColorTitleError`**|Color of the the PinCode page title in error state|`#9DAFC8`|`string`|\r\n|**`stylePinCodeColumnButtons`**|Column of buttons of the PinCode file|`alignItems: 'center', width: 'auto'`|`StyleProp<ViewStyle>`|\r\n|**`stylePinCodeColumnDeleteButton`**|Column of the delete button of the PinCode file|`width: grid.unit * 4, height: grid.unit * 4, marginLeft: grid.unit / 2, marginRight: grid.unit / 2, justifyContent: 'center', alignItems: 'center', flexDirection: 'column'`|`StyleProp<ViewStyle>`|\r\n|**`stylePinCodeDeleteButtonColorHideUnderlay`**|Color of the delete button when underlay is hidden of the PinCode file|`rgb(211, 213, 218)`|`string`|\r\n|**`stylePinCodeDeleteButtonColorShowUnderlay`**|Color of the delete button when underlay is shown of the PinCode file|`colors.turquoise`|`string`|\r\n|**`stylePinCodeDeleteButtonIcon`**|Name of the icon of the delete button of the PinCode file|`backspace`|`string`|\r\n|**`stylePinCodeDeleteButtonSize`**|Size of the icon of the delete button of the PinCode file|`30`|`number`|\r\n|**`stylePinCodeDeleteButtonText`**|Text of the delete button of the PinCode file|`fontWeight: '200', marginTop: 5`|`StyleProp<TextStyle>`|\r\n|**`stylePinCodeEmptyColumn`**|Empty column of the last line of buttons of the PinCode file|`width: grid.unit * 4, height: grid.unit * 4`|`StyleProp<ViewStyle>`|\r\n|**`stylePinCodeHiddenPasswordCircle`**|Circle representing the hidden password of the PinCode file|`flexDirection: 'row', height: 'auto', justifyContent: 'center', alignItems: 'center'`|`StyleProp<ViewStyle>`|\r\n|**`stylePinCodeHiddenPasswordSizeEmpty`**|Size of the circle representing the hidden password of the PinCode file when empty|`4`|`number`|\r\n|**`stylePinCodeHiddenPasswordSizeFull`**|Size of the circle representing the hidden password of the PinCode file when full|`8`|`number`|\r\n|**`stylePinCodeMainContainer`**|Main container of the PinCode file|`flex: 1, justifyContent: 'center', alignItems: 'center'`|`StyleProp<ViewStyle>`|\r\n|**`stylePinCodeRowButtons`**|Row of buttons of the PinCode file|`justifyContent: 'center', alignItems: 'center', width: '100%', height: grid.unit * 5.5`|`StyleProp<ViewStyle>`|\r\n|**`stylePinCodeTextButtonCircle`**|Text of circle button TouchableHighlight of the PinCode file|`fontSize: grid.unit * 2, fontWeight: '200'`|`StyleProp<TextStyle>`|\r\n|**`stylePinCodeTextSubtitle`**|Title of the PinCode file|`fontSize: 20, fontWeight: '200', lineHeight: grid.unit * 2.5`|`StyleProp<TextStyle>`|\r\n|**`stylePinCodeTextTitle`**|Subtitle of the PinCode file|`fontSize: grid.unit, fontWeight: '200', textAlign: 'center'`|`StyleProp<TextStyle>`|\r\n|**`stylePinCodeViewTitle`**|View of the title of the PinCode file|`flexDirection: 'column', justifyContent: 'center', alignItems: 'center', minHeight: grid.unit * 4`|`StyleProp<TextStyle>`|\r\n\r\n## [Changelog](https://github.com/anankidchai/react-native-pincode/blob/master/CHANGELOG.md)\r\n\r\n## Contributing\r\n\r\nPull requests are welcome.\r\n\r\n## [License](https://github.com/anankidchai/react-native-pincode/blob/master/LICENSE)\r\n","readmeFilename":"README.md"}