Zum Hauptinhalt springen
Version: latest
Universell einsetzbar

InputOtp funktioniert sowohl auf dem Server als auch im Browser. Nutze immer den Standard-Import (z. B. @prokodo/ui/input-otp) — die Library erkennt die Umgebung automatisch.

InputOTP

InputOTP rendert eine OTP-Eingabe mit separaten Eingabefeldern pro Stelle, automatischem Fokus-Handling und sauberer Tastaturnavigation.


Übersicht

import { InputOTP } from "@prokodo/ui/input-otp"
;<InputOTP
length={6}
label="Verification code"
onComplete={code => verifyCode(code)}
/>

Import

import { InputOTP } from "@prokodo/ui/input-otp"

CSS:

import "@prokodo/ui/input-otp.css"

Props

PropTypStandardPflichtBeschreibung
namestringVersteckter Input-Name für Formular-Submit.
lengthnumber6Anzahl der OTP-Eingabefelder.
labelstringGruppen-Label-Text.
groupLabelstringZugängliches Gruppen-Label für das OTP-Fieldset.
groupInstructionstringScreenreader-Instruktionstext für die Gruppe.
disabledbooleanfalseAlle Eingabefelder deaktivieren.
errorTextstringFehlermeldung unterhalb der Eingaben.
onChange(value: string) => voidWird mit kombiniertem Wert bei jeder Eingabe aufgerufen.
classNamestringCSS-Klasse am Root-Element.

Siehe src/components/inputOTP/InputOTP.model.ts für den vollständigen InputOTPProps-Typ.


Design-Tokens

Passe InputOTP über CSS Custom Properties auf :root oder einem übergeordneten Element an.

TokenStandardBeschreibung
--pk-otp-gapvar(--pk-space-sm)Abstand zwischen OTP-Zellen
--pk-otp-cell-size2.75remBreite und Höhe jeder Zelle
--pk-otp-cell-radiusvar(--pk-radius-pill)Zellen-Eckenradius
--pk-otp-gradient-fromvar(--pk-color-brand)Verlauf Start (aktive Zelle)
--pk-otp-gradient-tovar(--pk-color-accent)Verlauf Ende (aktive Zelle)

WCAG-2.2-Status

KriteriumBezeichnungStatusHinweis
1.3.1Info und Beziehungen (A)✅ ErfülltSemantische Struktur (Überschriften, Listen, Labels, Landmarks) muss programmatisch via HTML oder ARIA vermittelt werden.
1.3.5Eingabezweck identifizieren (AA)🔍 Manuell prüfenFormularfelder, die persönliche Daten erfassen, müssen ihren Zweck via HTML-autocomplete-Attribut kommunizieren.
2.1.1Tastatur (A)✅ ErfülltAlle Funktionalität muss allein über Tastatur bedienbar sein, ohne Timing-Anforderungen.
2.4.7Fokus sichtbar (AA)🔍 Manuell prüfenAuf jedem interaktiven Element muss ein sichtbarer Tastaturfokus-Indikator vorhanden sein. Prüfung gegen das angewendete Produkt-Theme erforderlich.
3.3.2Bezeichnungen oder Anweisungen (A)✅ ErfülltJedes Formularfeld benötigt ein programmatisch verknüpftes Label oder eine sichtbare Anweisung.
3.3.7Redundante Eingabe (A)🔍 Manuell prüfenBereits in derselben Sitzung/demselben Prozess eingegebene Informationen dürfen nicht erneut abgefragt werden, sofern die Wiederholung keinen eigenständigen Zweck erfüllt.
3.3.8Zugängliche Authentifizierung (Min.) (AA)🔍 Manuell prüfenEin kognitiver Funktionstest (z. B. CAPTCHA, Gedächtnisaufgabe) darf nicht der einzige Authentifizierungsmechanismus sein.
4.1.2Name, Rolle, Wert (A)✅ ErfülltName, Rolle und Zustand aller interaktiven UI-Komponenten müssen via nativer HTML-Semantik oder ARIA programmatisch bestimmbar sein.

Testabdeckung: 2 jest-axe-Assertion(s) in 1 Testdatei(en) · 3 ARIA-Attribut-Vorkommen im Quellcode-Scan. Kriterien mit 🔍 erfordern manuelle Prüfung im finalen Integrations- und Theme-Kontext.

Storybook

👉 InputOTP in Storybook öffnen


Quellcode

src/components/inputOTP/InputOTP.model.ts