Modals sind ueberall: Bestaetigung, Formulare, Details-Ansicht. Aber die meisten sind schlecht gebaut. Mit Shadcn Dialog und ein paar Regeln baust du Modals die barrierefrei, responsive und benutzerfreundlich sind.
Pro-Tip — Der schnelle Weg
Nutze Modals nur wenn der Nutzer eine Entscheidung treffen MUSS. Fuer alles andere sind Sheets (Seitenleisten) oder Inline-Expansion besser.
Seite 1
1
Shadcn Dialog installieren
Die Dialog-Komponente basiert auf Radix UI und ist standardmaessig barrierefrei. Focus-Trap, Escape-Taste und Overlay-Klick sind eingebaut.
npx shadcn@latest add dialog
2
Einfachen Dialog bauen
Nutze DialogTrigger fuer den Oeffnen-Button und DialogContent fuer den Inhalt. DialogHeader und DialogFooter strukturieren den Aufbau.
Fuer Formulare im Dialog nutze DialogContent mit einer Form. Validiere vor dem Schliessen und zeige Fehler inline an. Schliesse den Dialog nur bei Erfolg.
5
Mobile Sheets statt Modals
Auf Mobile sind Sheets besser als Modals. Nutze die Sheet-Komponente die von unten hoch-slidet. Auf Desktop bleibt es ein zentrierter Dialog.
npx shadcn@latest add sheet // Sheet fuer Mobile, Dialog fuer Desktop // Oder: responsive Dialog der auf Mobile zum Sheet wird
Seite 2
Warum das funktioniert
Radix-basierte Dialoge sind automatisch barrierefrei
Focus-Trap haelt den Nutzer im Kontext der aktuellen Aktion
Controlled State erlaubt programmatisches Schliessen nach Aktionen
Sheet-Pattern auf Mobile fuehlt sich nativer an als zentrierte Modals
Tipps
Maximal eine Aktion pro Dialog, sonst wird es unuebersichtlich
DialogDescription ist wichtig fuer Screenreader
Vermeide verschachtelte Dialoge, das verwirrt Nutzer
Animationen dezent halten, schnelles Oeffnen ist wichtiger als huebsch
Seite 3
Bereit für den nächsten Schritt?
KIWorld VibeCoding Masterclass
Du willst nicht nur einzelne Tools einrichten, sondern wirklich lernen wie du mit KI komplette Apps, Websites und SaaS-Produkte baust? Über 700 Videos — von Anfänger bis Fortgeschritten — in jedem Bereich. Von der Idee bis zum fertigen Produkt, ohne eine Zeile Code selbst zu schreiben.