Zum Hauptinhalt springen
Version: latest
Universell einsetzbar

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

Drawer

Drawer rendert ein seitlich einfahrendes Panel für Navigation, Filter oder sekundäre Aktionen mit kontrolliertem Open-State.


Übersicht

import { Drawer } from "@prokodo/ui/drawer"
;<Drawer open={menuOpen} placement="right" onClose={() => setMenuOpen(false)}>
<nav>...</nav>
</Drawer>

Import

import { Drawer } from "@prokodo/ui/drawer"

CSS:

import "@prokodo/ui/drawer.css"

Props

PropTypStandardPflichtBeschreibung
openbooleanSteuert Sichtbarkeit des Drawers.
anchor"left" | "right" | "top" | "bottom""right"Bildschirmseite, von der Drawer einfährt.
titlestringDrawer-Titeltext.
titlePropsHeadlinePropsProps für die Titel-Headline-Komponente.
fullscreenbooleanfalseAls Vollbild-Drawer rendern.
actionsReactNodeAktions-Buttons im Drawer-Footer.
childrenReactNodeDrawer-Inhalt.
onChange(open: boolean) => voidWird bei Zustandsänderung aufgerufen.
refDrawerRefImperatives Ref zur programmatischen Steuerung.
classNamestringCSS-Klasse am Root-Element.

Siehe src/components/drawer/Drawer.model.ts für den vollständigen DrawerProps-Typ.


Design-Tokens

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

TokenStandardBeschreibung
--pk-drawer-bgvar(--pk-color-surface)Panel-Hintergrundfarbe
--pk-drawer-bordervar(--pk-color-border)Header-Rahmenfarbe (unten)
--pk-drawer-shadowvar(--elevation-1)Panel-Box-Shadow
--pk-drawer-backdrop-bgrgba(0, 0, 0, 0.5)Backdrop-Overlay-Farbe
--pk-drawer-z-index1302Panel-z-index
--pk-drawer-paddingvar(--pk-space-md)Header / Inhalts-Innenabstand

AIC-Hinweis

Verwende im Anwendungscode immer den Standard-Importpfad:

import { Drawer } from "@prokodo/ui/drawer"

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.
2.1.1Tastatur (A)✅ ErfülltAlle 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.
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.
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: 2 jest-axe-Assertion(s) in 6 Testdatei(en) · 4 ARIA-Attribut-Vorkommen im Quellcode-Scan. Kriterien mit 🔍 erfordern manuelle Prüfung im finalen Integrations- und Theme-Kontext.

Storybook

👉 Drawer in Storybook öffnen


Quellcode

src/components/drawer/Drawer.model.ts