Skip to Content

PinInput

Capture PIN code or one-time password from the user. Supports automatic focus management and various input types.

Import

import { PinInput } from '@tidbcloud/uikit'

Basic Usage

import { PinInput } from '@tidbcloud/uikit' function Demo() { return <PinInput /> }

Controlled

import { useState } from 'react' import { PinInput } from '@tidbcloud/uikit' function Demo() { const [value, setValue] = useState('') return <PinInput value={value} onChange={setValue} /> }

Length

import { PinInput } from '@tidbcloud/uikit' function Demo() { return <PinInput length={6} /> }

Number Type

import { PinInput } from '@tidbcloud/uikit' function Demo() { return <PinInput type="number" /> }

Custom Regex Type

import { PinInput } from '@tidbcloud/uikit' function Demo() { // Only accept digits 0-3 return <PinInput type={/^[0-3]*$/} inputType="tel" inputMode="numeric" /> }

One-Time Code

import { PinInput } from '@tidbcloud/uikit' function Demo() { // Enables autocomplete="one-time-code" for SMS autofill return <PinInput oneTimeCode /> }

Masked Input

import { PinInput } from '@tidbcloud/uikit' function Demo() { return <PinInput mask /> }

On Complete

import { PinInput } from '@tidbcloud/uikit' function Demo() { return <PinInput length={4} onComplete={(value) => console.log('Completed:', value)} /> }

Key Props

PropTypeDescription
valuestringControlled value
onChange(value: string) => voidCalled when value changes
onComplete(value: string) => voidCalled when all inputs filled
lengthnumberNumber of inputs
type'number' | 'alphanumeric' | RegExpAllowed characters
maskbooleanHide input characters
oneTimeCodebooleanEnable SMS autofill
placeholderstringInput placeholder
disabledbooleanDisable all inputs
errorbooleanApply error styles
sizeMantineSizeInput size
radiusMantineRadiusBorder radius
gapMantineSpacingGap between inputs
manageFocusbooleanAuto-focus next input
autoFocusbooleanFocus first input on mount
Last updated on