Zum Hauptinhalt springen
Version: latest
Universell einsetzbar

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

Form

Form wraps a <form> element and provides validation orchestration, a submission loading state, and an accessible error summary. Use Form as the root container for Input, Select, Checkbox, and other form fields.


Übersicht

import { Form } from "@prokodo/ui/form"
;<Form
label="Kontaktformular"
fields={[
{
id: "email",
type: "email",
name: "email",
label: "E-Mail",
required: true,
},
{ id: "message", type: "textarea", name: "message", label: "Nachricht" },
]}
button={{ title: "Absenden" }}
onSubmit={fields => submitToApi(fields)}
/>

Import

import { Form } from "@prokodo/ui/form"

CSS:

import "@prokodo/ui/form.css"

Props

PropTypStandardPflichtBeschreibung
labelstringFormular-Titel / Beschriftung (als Überschrift gerendert).
fieldsFormField[]Array von Felddefinitionen, die im Formular gerendert werden.
defaultFieldsFormField[]Standard-Feldwerte, wenn fields nicht angegeben ist.
buttonFormButtonKonfiguration des Absende-Buttons.
colorFormVariantsFarbakzent-Variante.
disabledbooleanfalseAlle Formularfelder deaktivieren.
hideHeadlinebooleanfalseFormular-Titelzeile ausblenden.
hideResponsebooleanfalseErfolgs-/Fehlermeldung nach Übermittlung ausblenden.
headlinePropsHeadlinePropsProps für die Headline-Komponente.
messagesFormMessagesÜbermittlungs-Meldungen ({ message?, errors? }).
messagesFieldsFormFieldMessagesÜbersetzungs-Overrides für Feldebenen-Fehler.
onSubmit(fields: FormField[]) => voidWird mit validierten Feldern beim Absenden aufgerufen.
onChangeForm(field: FormField) => voidWird bei jeder Feldwertänderung aufgerufen.
classNamestringCSS-Klasse am Root-Element.

Siehe src/components/form/Form.model.ts für den vollständigen FormProps-Typ.


Design-Tokens

Form definiert keine eigenen CSS Custom Properties. Das Erscheinungsbild wird von den einzelnen Feldkomponenten gesteuert. Siehe Input, Select usw.

Design-Tokens

Form definiert keine eigenen CSS Custom Properties. Das Erscheinungsbild wird von den einzelnen Feldkomponenten gesteuert. Siehe Input, Select usw.

AIC-Hinweis

Verwende im Anwendungscode immer den Standard-Importpfad:

import { Form } from "@prokodo/ui/form"

Eine separate Auswahl von /client oder /lazy ist im Consumer-Code nicht erforderlich.

AIC-Komponenten unterstützen außerdem ein priority-Flag für kritische Above-the-fold-Elemente. Am sichtbarsten ist das bei Image (natives Preloading via <link rel="preload"> für Above-the-fold-Inhalte).


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)🔍 Manuell prüfenAlle Funktionalität muss allein über Tastatur bedienbar sein, ohne Timing-Anforderungen.
3.3.1Fehlererkennung (A)🔍 Manuell prüfenEingabefehler müssen in Textform identifiziert und dem Nutzer beschrieben werden, nicht nur durch Farbe.
3.3.2Bezeichnungen oder Anweisungen (A)🔍 Manuell prüfenJedes 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.
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 8 Testdatei(en) · 6 ARIA-Attribut-Vorkommen im Quellcode-Scan. Kriterien mit 🔍 erfordern manuelle Prüfung im finalen Integrations- und Theme-Kontext.

Storybook

👉 Form in Storybook öffnen


Quellcode

src/components/form/Form.model.ts