Input OTP
固定長の認証コードを、文字ごとの枠に表示して入力する場合に使います。
プレビュー
6 桁の認証コード
6 個の枠を 3 桁ずつのグループに分け、中央に区切りを置きます。
プレビューを読み込んでいます。
インストール
この Registry を初めて使う場合は、先に 基本設定と共通スタイルの導入 を完了してください。
npx shadcn@latest add @neumorphism-ui/input-otp共有 base を一度導入した後、CLI でコンポーネントと依存関係を追加します。
使い方
maxLength と名前を指定し、各位置に対応する InputOTPSlot を置きます。グループと区切りは見た目の整理に使い、値は一つの入力として保持します。
"use client";
import { InputOTP, InputOTPGroup, InputOTPSlot } from "@/components/ui/input-otp";
export default function Example() {
return (
<InputOTP maxLength={4} aria-label="Verification code" autoComplete="one-time-code">
<InputOTPGroup>
<InputOTPSlot index={0} />
<InputOTPSlot index={1} />
<InputOTPSlot index={2} />
<InputOTPSlot index={3} />
</InputOTPGroup>
</InputOTP>
);
}API リファレンス
フォーカス、貼り付け、自動移動は input-otp に任せ、表示スロットだけをニューモーフィズム表面で装飾します。複数の枠が見えてもアクセシビリティツリーとフォーム値は1つの入力のままです。
| コンポーネント | プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|---|
InputOTP | maxLength必須 | number | — | 許可する認証コードの長さを指定します。 |
InputOTP | value / defaultValue | string | — | controlled または初期 uncontrolled のコード値を指定します。 |
InputOTP | onChange | (value: string) => void | — | コード全体の値が変わると呼び出されます。 |
InputOTP | containerClassName | string | — | スロットグループを囲む外側のコンテナを拡張します。 |
InputOTPSlot | index必須 | number | — | コード全体のどの位置をこの表示スロットに出すか指定します。 |
アクセシビリティ
- 01
InputOTP に認証コードの目的を説明する aria-label または関連付けた label を指定します。
- 02
複数スロットが見えても、文字ごとに textbox を公開せず実入力は1つに保ちます。
- 03
貼り付けやキーボード入力を妨げず、エラーは別の説明テキストに関連付けます。