Zum Hauptinhalt springen
Version: latest
Universell einsetzbar

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

DatePicker

DatePicker rendert ein Texteingabefeld, das ein barrierefreies Kalender-Popup zur Datumsauswahl öffnet. Unterstützt Einzel-Datum, Bereichsauswahl und Zeitauswahl mit vollständiger Lokalisierung.


Übersicht

import { DatePicker } from "@prokodo/ui/date-picker"
;<DatePicker
label="Appointment date"
name="date"
value={date}
onChange={setDate}
locale="de"
/>

Import

import { DatePicker } from "@prokodo/ui/date-picker"

Styling is handled via design tokens — no additional CSS import required.


Props

PropTypStandardPflichtBeschreibung
idstringHTML-id für das Eingabefeld.
labelstringBeschriftungstext.
valueDayjs | string | nullGesteuerter Datumswert.
defaultValueDayjs | string | nullUnkontrollierter Ausgangswert.
withTimebooleanfalseZeitauswahl aktivieren.
minuteStepnumber1Minuten-Schrittweite.
disabledbooleanfalseDatepicker deaktivieren.
requiredbooleanfalseFeld als Pflichtfeld markieren.
fullWidthbooleanfalseAn Container-Breite anpassen.
colorVariantsFarbakzent-Variante.
errorTextstringFehlermeldung (setzt Fehlerzustand).
helperTextstringHilfetext unterhalb der Eingabe.
todayLabelstringLabel des „Heute“-Buttons.
clearLabelstringLabel des „Löschen“-Buttons.
applyLabelstringLabel des „Übernehmen“-Buttons.
timeLabelstringÜberschrift des Zeitbereichs.
onChange(value: Dayjs | null) => voidWird bei Datumswechsel aufgerufen.
classNamestringCSS-Klasse am Root-Element.

Siehe src/components/date-picker/DatePicker.model.ts für den vollständigen DatePickerProps-Typ.


Design-Tokens

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

TokenStandardBeschreibung
--pk-dp-trigger-bgvar(--pk-color-surface)Trigger-Hintergrund
--pk-dp-trigger-fgvar(--pk-color-fg)Trigger-Textfarbe
--pk-dp-trigger-radiusvar(--pk-radius-pill)Eckenradius des Triggers
--pk-dp-trigger-label-float-fgvar(--pk-color-brand)Floating-Label-Farbe
--pk-dp-dialog-bgvar(--pk-color-surface)Kalender-Dialog-Hintergrund
--pk-dp-dialog-radiusvar(--pk-radius-lg)Kalender-Dialog-Eckenradius
--pk-dp-dialog-shadowvar(--pk-shadow-lg)Kalender-Dialog-Schatten
--pk-dp-day-radiusvar(--pk-radius-circle)Tageszellen-Eckenradius
--pk-dp-day-today-ringvar(--pk-color-brand)Heutiger-Tag-Rahmenfarbe
--pk-dp-gradient-fromvar(--pk-color-brand)Verlauf Start (Selektion)
--pk-dp-gradient-tovar(--pk-color-accent)Verlauf Ende (Selektion)

AIC-Hinweis

Verwende im Anwendungscode immer den Standard-Importpfad:

import { DatePicker } from "@prokodo/ui/date-picker"

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.
2.1.2Keine Tastaturfalle (A)🔍 Manuell prüfenDer Tastaturfokus darf niemals innerhalb einer Komponente eingeschlossen sein; Nutzer müssen immer mit Standardtasten navigieren können.
2.4.3Fokusreihenfolge (A)🔍 Manuell prüfenDie Tastaturfokus-Reihenfolge muss im vollständigen seitenseitigen Integrationskontext Bedeutung und Bedienbarkeit erhalten.
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.
2.4.11Fokus nicht verdeckt (Min.) (AA)🔍 Manuell prüfenDie fokussierte Komponente darf nicht vollständig durch Sticky-Header, Overlays oder andere positionierte Seitenelemente verdeckt sein.
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.
4.1.2Name, Rolle, Wert (A)🔍 Manuell prüfenName, Rolle und Zustand aller interaktiven UI-Komponenten müssen via nativer HTML-Semantik oder ARIA programmatisch bestimmbar sein.
4.1.3Statusmeldungen (AA)🔍 Manuell prüfenStatusmeldungen (Laden, Erfolg, Fehler, Fortschritt) müssen assistiven Technologien ohne Fokusverschiebung mitgeteilt werden (aria-live oder role='status').

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

Storybook

👉 DatePicker in Storybook öffnen


Quellcode

src/components/date-picker/DatePicker.model.ts