# Input OTP
> Segmented one-time-code entry.
Import from `@aspyn-io/kit`. Scaffold source: `npx shadcn@latest add https://design.aspyn.io/r/input-otp.json`
## Install
```tsx
import { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator } from "@aspyn-io/kit";
```
### Six-digit verification
```tsx
```
### Pattern
Restrict what can be typed with the pattern prop. input-otp ships REGEXP_ONLY_DIGITS, REGEXP_ONLY_CHARS, and REGEXP_ONLY_DIGITS_AND_CHARS.
```tsx
import { REGEXP_ONLY_DIGITS } from "input-otp";
{/* … */}
```
### Controlled
Drive the value with value + onChange to read digits as they are typed.
```tsx
const [value, setValue] = React.useState("");
{/* … */}
Entered: {value}
```
### Disabled
```tsx
{/* … */}
```
## Notes
- Controlled: value + onChange; fires onComplete when all slots fill.
- Paste, arrow keys, and screen-reader announcements handled by input-otp.