Zum Hauptinhalt springen
Version: latest
Universell einsetzbar

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

Accordion

Die Accordion-Komponente rendert eine list of collapsible panels. Jedes Panel kann unabhängig umgeschaltet oder gesteuert werden. Unterstützt animated expansion and full ARIA disclosure pattern.


Übersicht

import { Accordion } from "@prokodo/ui/accordion"
;<Accordion
items={[
{ title: "Panel 1", content: <p>Content A</p> },
{ title: "Panel 2", content: <p>Content B</p> },
]}
/>

Import

import { Accordion } from "@prokodo/ui/accordion"

CSS:

import "@prokodo/ui/accordion.css"

Props

PropTypStandardPflichtBeschreibung
idstringOptionale HTML-id am Root-Element.
itemsAccordionItem[]Array von Accordion-Panels.
multiExpandbooleanfalseMehrere Items gleichzeitig öffnen.
hideHeaderOnExpandbooleanfalseHeader bei geöffnetem Item ausblenden.
headerWrapperClassNamestringCSS-Klasse auf dem Header-Wrapper.
headerToggleClassNamestringCSS-Klasse auf dem Toggle-Button.
classNamestringCSS-Klasse am Root-Element.
onChange(id: string, open: boolean) => voidWird beim Umschalten eines Items aufgerufen.

Siehe src/components/accordion/Accordion.model.ts für den vollständigen AccordionProps-Typ.


Design-Tokens

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

TokenStandardBeschreibung
--pk-accordion-radiusvar(--pk-radius-md)Eckenradius der Einträge
--pk-accordion-bordervar(--pk-color-border)Rahmenfarbe
--pk-accordion-border-focusvar(--pk-color-brand)Fokussierter Rahmen
--pk-accordion-shadowvar(--pk-shadow-sm)Box-Schatten
--pk-accordion-header-bgvar(--pk-color-surface)Header-Hintergrund
--pk-accordion-content-bgvar(--pk-color-surface)Inhalt-Hintergrund
--pk-accordion-fgvar(--pk-color-fg)Textfarbe
--pk-accordion-gradient-fromvar(--pk-color-brand)Verlauf Start (Hover)
--pk-accordion-gradient-tovar(--pk-color-accent)Verlauf Ende (Hover)

AIC-Hinweis

Verwende im Anwendungscode immer den Standard-Importpfad:

import { Accordion } from "@prokodo/ui/accordion"

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.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.

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

Storybook

👉 Accordion in Storybook öffnen


Quellcode

src/components/accordion/Accordion.model.ts