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