Was macht UI-Styling-Skill?
Umfassende Fähigkeit zur Erstellung schöner, barrierefreier Benutzeroberflächen, die shadcn/ui-Komponenten, Tailwind CSS Utility-Styling und canvas-basierte visuelle Designsysteme kombiniert.
Referenzen
- shadcn/ui: https://ui.shadcn.com/llms.txt
- Tailwind CSS: https://tailwindcss.com/docs
Verwendung dieser Fähigkeit
Verwende diese Fähigkeit, wenn:
- Du Benutzeroberflächen mit React-basierten Frameworks (Next.js, Vite, Remix, Astro) erstellst
- Du barrierefreie Komponenten (Dialoge, Formulare, Tabellen, Navigation) implementierst
- Du mit einem Utility-First-CSS-Ansatz stylest
- Du responsive, Mobile-First-Layouts erstellst
- Du Dark Mode und Themenanpassung implementierst
- Du Designsysteme mit konsistenten Tokens aufbaust
- Du visuelle Designs, Poster oder Markenmaterialien generierst
- Du rapid prototyping mit sofortigem visuellem Feedback betreibst
- Du komplexe UI-Muster (Datentabellen, Diagramme, Befehlspaletten) hinzufügst
Kern-Stack
Komponentenschicht: shadcn/ui
- Vorgefertigte barrierefreie Komponenten über Radix-UI-Primitive
- Copy-Paste-Verteilungsmodell (Komponenten leben in deiner Codebasis)
- TypeScript-first mit vollständiger Typsicherheit
- Zusammensetzbare Primitive für komplexe UIs
- CLI-basierte Installation und Verwaltung
Styling-Schicht: Tailwind CSS
- Utility-First-CSS-Framework
- Build-Zeit-Verarbeitung ohne Runtime-Overhead
- Mobile-First-responsives Design
- Konsistente Design-Tokens (Farben, Abstände, Typografie)
- Automatische Dead-Code-Eliminierung
Visuelle Designschicht: Canvas
- Museumswürdige visuelle Kompositionen
- Philosophie-getriebener Designansatz
- Anspruchsvolle visuelle Kommunikation
- Minimaler Text, maximale visuelle Wirkung
- Systematische Muster und verfeinerte Ästhetik
Schnellstart
Einrichtung von Komponenten + Styling
shadcn/ui mit Tailwind installieren:
npx shadcn@latest init
Der CLI fordert zu Framework, TypeScript, Pfaden und Theme-Präferenzen auf. Dies konfiguriert sowohl shadcn/ui als auch Tailwind CSS.
Komponenten hinzufügen:
npx shadcn@latest add button card dialog form
Komponenten mit Utility-Styling verwenden:
import { Button } from "@/components/ui/button"
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"
export function Dashboard() {
return (
<div className="container mx-auto p-6 grid gap-6 md:grid-cols-2 lg:grid-cols-3">
<Card className="hover:shadow-lg transition-shadow">
<CardHeader>
<CardTitle className="text-2xl font-bold">Analytics</CardTitle>
</CardHeader>
<CardContent className="space-y-4">
<p className="text-muted-foreground">View your metrics</p>
<Button variant="default" className="w-full">
View Details
</Button>
</CardContent>
</Card>
</div>
)
}
Alternative: Tailwind-Only-Einrichtung
Vite-Projekte:
npm install -D tailwindcss @tailwindcss/vite
// vite.config.ts
import tailwindcss from '@tailwindcss/vite'
export default { plugins: [tailwindcss()] }
/* src/index.css */
@import "tailwindcss";
Komponentenbibliothek-Leitfaden
Umfassender Komponentenkatalog mit Nutzungsmustern, Installation und Kompositionsbeispielen.
Siehe: references/shadcn-components.md
Enthält:
- Formular- und Eingabekomponenten (Button, Input, Select, Checkbox, Date Picker, Formularvalidierung)
- Layout und Navigation (Card, Tabs, Accordion, Navigation Menu)
- Overlays und Dialoge (Dialog, Drawer, Popover, Toast, Command)
- Feedback und Status (Alert, Progress, Skeleton)
- Anzeigekomponenten (Table, Data Table, Avatar, Badge)
Theme & Anpassung
Theme-Konfiguration, CSS-Variablen, Dark-Mode-Implementierung und Komponentenanpassung.
Siehe: references/shadcn-theming.md
Enthält:
- Dark-Mode-Einrichtung mit next-themes
- CSS-Variable-System
- Farbanpassung und Paletten
- Komponenten-Variantenanpassung
- Theme-Umschalt-Implementierung
Barrierefreiheitsmuster
ARIA-Muster, Tastaturnavigation, Screenreader-Unterstützung und barrierefreie Komponentennutzung.
Siehe: references/shadcn-accessibility.md
Enthält:
- Barrierefreiheitsfunktionen von Radix UI
- Tastaturnavigationsmuster
- Fokusverwaltung
- Screenreader-Ansagen
- Barrierefreiheit der Formularvalidierung
Tailwind-Utilities
Kern-Utility-Klassen für Layout, Abstände, Typografie, Farben, Rahmen und Schatten.
Siehe: references/tailwind-utilities.md
Enthält:
- Layout-Utilities (Flexbox, Grid, Positionierung)
- Abstandssystem (Padding, Margin, Gap)
- Typografie (Schriftgrößen, -gewichte, -ausrichtung, Zeilenhöhe)
- Farben und Hintergründe
- Rahmen und Schatten
- Beliebige Werte für benutzerdefiniertes Styling
Responsives Design
Mobile-First-Breakpoints, responsive Utilities und adaptive Layouts.
Siehe: references/tailwind-responsive.md
Enthält:
- Mobile-First-Ansatz
- Breakpoint-System (sm, md, lg, xl, 2xl)
- Responsive Utility-Muster
- Container-Abfragen
- Max-Width-Abfragen
- Benutzerdefinierte Breakpoints
Tailwind-Anpassung
Konfigurationsdateistruktur, benutzerdefinierte Utilities, Plugins und Theme-Erweiterungen.
Siehe: references/tailwind-customization.md
Enthält:
- @theme-Direktive für benutzerdefinierte Tokens
- Benutzerdefinierte Farben und Schriftarten
- Abstands- und Breakpoint-Erweiterungen
- Erstellung benutzerdefinierter Utilities
- Benutzerdefinierte Varianten
- Layer-Organisation (@layer base, components, utilities)
- Apply-Direktive zur Komponentenextraktion
Visuelles Designsystem
Canvas-basierte Designphilosophie, Prinzipien der visuellen Kommunikation und anspruchsvolle Kompositionen.
Siehe: references/canvas-design-system.md
Enthält:
- Design-Philosophie-Ansatz
- Visuelle Kommunikation gegenüber Text
- Systematische Muster und Komposition
- Farbe, Form und räumliches Design
- Minimale Textintegration
- Museumswürdige Ausführung
- Mehrseitige Designsysteme
Utility-Skripte
Python-Automatisierung für Komponenteninstallation und Konfigurationsgenerierung.
shadcn_add.py
Füge shadcn/ui-Komponenten mit Abhängigkeitsverwaltung hinzu:
python scripts/shadcn_add.py button card dialog
tailwind_config_gen.py
Generiere tailwind.config.js mit benutzerdefiniertem Theme:
python scripts/tailwind_config_gen.py --colors brand:blue --fonts display:Inter
Best Practices
- Komponentenkomposition: Baue komplexe UIs aus einfachen, zusammensetzbaren Primitiven
- Utility-First-Styling: Verwende Tailwind-Klassen direkt; extrahiere Komponenten nur bei echter Wiederholung
- Mobile-First-responsiv: Beginne mit mobilen Styles, überlagere responsive Varianten
- Barrierefreiheit zuerst: Nutze Radix-UI-Primitive, füge Fokuszustände hinzu, verwende semantisches HTML
- Design-Tokens: Verwende konsistente Abstandsskala, Farbpaletten, Typografiesystem
- Dark-Mode-Konsistenz: Wende dunkle Varianten auf alle thematisierten Elemente an
- Leistung: Nutze automatisches CSS-Purging, vermeide dynamische Klassennamen
- TypeScript: Verwende vollständige Typsicherheit für bessere DX
- Visuelle Hierarchie: Lass die Komposition die Aufmerksamkeit lenken, verwende Abstände und Farben bewusst
- Experten-Handwerk: Jedes Detail zählt – behandle die UI als Handwerk
Referenznavigation
Komponentenbibliothek
references/shadcn-components.md– Vollständiger Komponentenkatalogreferences/shadcn-theming.md– Theming und Anpassungreferences/shadcn-accessibility.md– Barrierefreiheitsmuster
Styling-System
references/tailwind-utilities.md– Kern-Utility-Klassenreferences/tailwind-responsive.md– Responsives Designreferences/tailwind-customization.md– Konfiguration und Erweiterungen
Visuelles Design
references/canvas-design-system.md– Designphilosophie und Canvas-Workflows
Automatisierung
scripts/shadcn_add.py– Komponenteninstallationscripts/tailwind_config_gen.py– Konfigurationsgenerierung
Häufige Muster
Formular mit Validierung:
import { useForm } from "react-hook-form"
import { zodResolver } from "@hookform/resolvers/zod"
import * as z from "zod"
import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage } from "@/components/ui/form"
import { Input } from "@/components/ui/input"
import { Button } from "@/components/ui/button"
const schema = z.object({
email: z.string().email(),
password: z.string().min(8)
})
export function LoginForm() {
const form = useForm({
resolver: zodResolver(schema),
defaultValues: { email: "", password: "" }
})
return (
<Form {...form}>
<form onSubmit={form.handleSubmit(console.log)} className="space-y-6">
<FormField control={form.control} name="email" render={({ field }) => (
<FormItem>
<FormLabel>Email</FormLabel>
<FormControl>
<Input type="email" {...field} />
</FormControl>
<FormMessage />
</FormItem>
)} />
<Button type="submit" className="w-full">Sign In</Button>
</form>
</Form>
)
}
Responsives Layout mit Dark Mode:
<div className="min-h-screen bg-white dark:bg-gray-900">
<div className="container mx-auto px-4 py-8">
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<Card className="bg-white dark:bg-gray-800 border-gray-200 dark:border-gray-700">
<CardContent className="p-6">
<h3 className="text-xl font-semibold text-gray-900 dark:text-white">
Content
</h3>
</CardContent>
</Card>
</div>
</div>
</div>
Ressourcen
- shadcn/ui Docs: https://ui.shadcn.com
- Tailwind CSS Docs: https://tailwindcss.com
- Radix UI: https://radix-ui.com
- Tailwind UI: https://tailwindui.com
- Headless UI: https://headlessui.com
- v0 (AI UI Generator): https://v0.dev