Installation
Add Component
Copy the code snippet below into you components folder.
Integrate Recipe
Integrate this recipe in to your Panda config.
Usage
If you prefer a closed component composition, check out the snippet below.
Examples
Sizes
Pass the size prop to change the size of the pin input component.
Variants
Pass the variant prop to change the visual style of the pin input component.
One time code
Pass the otp prop to make the pin input component behave like a one-time code input. This helps improve the user experience when entering OTP codes.
Mask
Pass the mask prop to obscure the entered pin code.
Placeholder
Pass the placeholder prop to add a placeholder to the pin input.
Field
Here's an example of how to compose the Field and the PinInput components.
Controlled
Pass the value and onValueChange props to  to control the value of the pin input.
Alphanumeric
Pass the type prop to allow the user to enter alphanumeric characters.
Closed Component
Here's how to setup the Pin input for a closed component composition.
And use it like this:
Props
Root
| Prop | Default | Type | 
|---|---|---|
| size | 'md' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 
| variant | 'outline' | 'outline' | 'subtle' | 'flushed' | 
| placeholder | \○\ | stringThe placeholder text for the input | 
| type | \numeric\ | 'numeric' | 'alphabetic' | 'alphanumeric'The type of value the pin-input should allow | 
| asChild | booleanUse the provided child element as the default rendered element, combining their props and behavior. | |
| autoFocus | booleanWhether to auto-focus the first input. | |
| blurOnComplete | booleanWhether to blur the input when the value is complete | |
| count | numberThe number of inputs to render to improve SSR aria attributes. This will be required in next major version. | |
| defaultValue | string[]The initial value of the the pin input when rendered. Use when you don't need to control the value of the pin input. | |
| disabled | booleanWhether the inputs are disabled | |
| form | stringThe associate form of the underlying input element. | |
| id | stringThe unique identifier of the machine. | |
| ids | Partial<{
  root: string
  hiddenInput: string
  label: string
  control: string
  input: (id: string) => string
}>The ids of the elements in the pin input. Useful for composition. | |
| invalid | booleanWhether the pin input is in the invalid state | |
| mask | booleanIf `true`, the input's value will be masked just like `type=password` | |
| name | stringThe name of the input element. Useful for form submission. | |
| onValueChange | (details: ValueChangeDetails) => voidFunction called on input change | |
| onValueComplete | (details: ValueChangeDetails) => voidFunction called when all inputs have valid values | |
| onValueInvalid | (details: ValueInvalidDetails) => voidFunction called when an invalid value is entered | |
| otp | booleanIf `true`, the pin input component signals to its fields that they should use `autocomplete="one-time-code"`. | |
| pattern | stringThe regular expression that the user-entered input value is checked against. | |
| readOnly | booleanWhether the pin input is in the valid state | |
| required | booleanWhether the pin input is required | |
| selectOnFocus | booleanWhether to select input value when input is focused | |
| translations | IntlTranslationsSpecifies the localized strings that identifies the accessibility elements and their states | |
| value | string[]The controlled value of the the pin input. | 
Input
| Prop | Default | Type | 
|---|---|---|
| index* | number | |
| asChild | booleanUse the provided child element as the default rendered element, combining their props and behavior. |