zurück zur Tech-Wiki
Tech-Wiki/Libraries
S
shadcn/ui
Copy-paste-Komponenten auf Radix + Tailwind, kein klassischer Component-Lib-Lock.
·shadcn·MIT
Ü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) — siehebutton.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
addre-runnen und Diffs mergen. cn()auslib/utils.tsist Pflicht für Variant-Merging — sonst doppelte/konflikt-Klassen.- Radix-Komponenten brauchen oft Portals → SSR-Hydration-Warnings, wenn
idnicht stabil.useId()nutzen. - Dark-Mode-Tokens in
globals.cssmüssen sowohl:rootals auch.darkdefinieren. - 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
Referenzen(1)