# 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.