Tobias Ludwig
Start
ServicesWeb, Apps, Backend und KIPlanerBausteine wählen, Preis sofort sehenBranchen-DemosBeispielseiten für Handwerk, Praxis, GastroReferenzenKundenprojekte mit ErgebnisMatch-CheckPasst das Vorhaben zu mir?Über michWer hinter der Seite steht
ProjekteEigene Software und Open SourceProdukteFertige Apps und WerkzeugeFlutterPlugins und PaketeBlogNotizen aus der Praxis
ToolsKleine Helfer im BrowserTech-WikiWerkzeuge und Stacks, kurz erklärtShowcaseDemos, Shader, Inszenierungen
Support & HilfeHilfe zu laufenden ProjektenMein KontoTickets und Zugänge
Erstgespräch
Erstgespräch buchenKostenloser Kennenlern-CallKontakt schreibenNachricht per Formular
$whoami
Tobias Ludwig
DevOps · Application Manager · Software Engineer
$ls /pages
tobias-ludwig/projekte/kontakt/kalender/impressum/datenschutz/
$git remote
github.com/nexas105
online·next.js 16·hono·postgresql
© 2026 tjl·stay curious_
Ambient OFF
Weiter so… ↓↓ ← → ← → B A
zurück zur Tech-Wiki
Tech-Wiki/Libraries
S

shadcn/ui

Copy-paste-Komponenten auf Radix + Tailwind, kein klassischer Component-Lib-Lock.

·shadcn·MIT
WebsiteDocsRepository

Übersicht

Was ist es?

shadcn/ui ist keine Component-Library im klassischen Sinn — es ist ein CLI, das Source-Code von Komponenten (Radix UI + Tailwind) in dein Repo kopiert. Du besitzt den Code, kannst alles anpassen, kein Versions-Lock-in.

Quickstart

pnpm dlx shadcn@latest init
pnpm dlx shadcn@latest add button card dialog dropdown-menu

Komponenten landen in components/ui/, Utils in lib/utils.ts. components.json konfiguriert Pfade und Style.

Typische Patterns

  • Komponenten lokal anpassen statt overrides — die Datei gehört dir.
  • Composition über asChild (Radix-Pattern):
    <Button asChild><Link href="/foo">Go</Link></Button>
    
  • Variants über cva (class-variance-authority) — siehe button.tsx.
  • Headless + Tailwind: Radix-Primitives liefern A11y, Tailwind macht Optik.
  • Registry-Pattern: eigene Registries für interne Component-Sammlungen via MCP / add.

Gotchas / Was oft schiefgeht

  • Updates kommen nicht automatisch — du musst add re-runnen und Diffs mergen.
  • cn() aus lib/utils.ts ist Pflicht für Variant-Merging — sonst doppelte/konflikt-Klassen.
  • Radix-Komponenten brauchen oft Portals → SSR-Hydration-Warnings, wenn id nicht stabil. useId() nutzen.
  • Dark-Mode-Tokens in globals.css müssen sowohl :root als auch .dark definieren.
  • Forms: shadcn-Form ist react-hook-form + zod — Setup ist nicht trivial, aber Standard.

Wann nicht?

Wenn du keine Kontrolle über Component-Source brauchst und Auto-Updates willst → Mantine, MUI, Chakra. Bei reinem Headless-Need ohne Tailwind → Radix UI direkt.

Eingesetzt in

Projekte(3)

  • NextCMS
  • Bewerbungsplattform
  • DBFV NRW Verbandsplattform

Referenzen(1)

  • DBFV NRW Verbandsplattform

Kategorie

Libraries

Tags

uidesign-system

Aliase

shadcn · shadcnui

Slug

shadcn-ui