Kurzfassung
Design System ist eine Sammlung von Komponenten, Prinzipien und Tools zum Bauen konsistenter Interfaces. Es beschleunigt Entwicklung, gewährleistet Konsistenz und Skalierbarkeit. So bauen und nutzen Sie Design Systems 2026.
Für wen ist das
- Design + Development Teams
- Unternehmen mit mehreren Produkten/Anwendungen
- Projekte, die UI-Konsistenz erfordern
- Organisationen, die Design und Entwicklung skalieren
Keyword (SEO)
design system, ui components, design tokens, component library, design consistency, storybook, figma design system
Was ist ein Design System?
Design System ist:
- Sammlung von UI-Komponenten (Buttons, Formulare, Karten)
- Design Tokens (Farben, Typografie, Abstände)
- Prinzipien und Richtlinien für Design
- Tools und Dokumentation für das Team
Design System Elemente:
Design Tokens
- Farben
- Typografie
- Abstände
- Schatten
- Border Radius
Komponenten
- Button
- Input
- Card
- Modal
- Navigation
Patterns
- Form-Layouts
- Seitenstrukturen
- Navigations-Patterns
- Fehlerzustände
Dokumentation
- Wann Komponenten verwenden
- Best Practices
- Verwendungsbeispiele
- Accessibility-Richtlinien
Vorteile von Design Systems
1. Konsistenz
Vor Design System:
- Jeder Entwickler erstellt eigene Komponenten
- Verschiedene Styles an verschiedenen Stellen
- Mangelnde Einheitlichkeit
Mit Design System:
- Alle Komponenten sehen gleich aus
- Konsistentes Benutzererlebnis
- Einfacherer Wartung
2. Schnellere Entwicklung
Beschleunigung:
- Fertige Komponenten statt von Grund auf bauen
- Weniger Design-Entscheidungen
- Schnelleres Prototyping
- Code-Wiederverwendbarkeit
Beispiel:
// Statt von Grund auf bauen:
<div className="custom-button">...</div>
// Fertige Komponente verwenden:
<Button variant="primary" size="large">
Absenden
</Button>
3. Skalierbarkeit
Für Teams:
- Neue Mitglieder schneller eingearbeitet
- Einfachere Design ↔ Development Zusammenarbeit
- Zentraler Ort für Änderungen
- Komponenten-Versionierung
4. Qualität
Qualitätskontrolle:
- Getestete Komponenten
- Accessibility eingebaut
- Responsive Design
- Cross-Browser-Kompatibilität
Wie Design System bauen?
1. Design Tokens
Token-Definition:
// tokens/colors.ts
export const colors = {
primary: {
50: '#f0f9ff',
100: '#e0f2fe',
500: '#0ea5e9',
900: '#0c4a6e',
},
neutral: {
50: '#fafafa',
100: '#f5f5f5',
500: '#737373',
900: '#171717',
},
};
// tokens/spacing.ts
export const spacing = {
xs: '0.25rem', // 4px
sm: '0.5rem', // 8px
md: '1rem', // 16px
lg: '1.5rem', // 24px
xl: '2rem', // 32px
};
Verwendung in CSS/SCSS:
:root {
--color-primary-500: #0ea5e9;
--spacing-md: 1rem;
}
.button {
background-color: var(--color-primary-500);
padding: var(--spacing-md);
}
2. Komponenten
Beispiel - Button:
// components/Button.tsx
import { ButtonHTMLAttributes } from 'react';
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
variant?: 'primary' | 'secondary' | 'outline';
size?: 'sm' | 'md' | 'lg';
isLoading?: boolean;
}
export function Button({
variant = 'primary',
size = 'md',
isLoading = false,
children,
disabled,
...props
}: ButtonProps) {
return (
<button
className={`btn btn-${variant} btn-${size}`}
disabled={disabled || isLoading}
{...props}
>
{isLoading ? <Spinner /> : children}
</button>
);
}
3. Dokumentation
Storybook-Beispiel:
// Button.stories.tsx
import { Button } from './Button';
export default {
title: 'Components/Button',
component: Button,
};
export const Primary = {
args: {
variant: 'primary',
children: 'Klick mich',
},
};
export const Loading = {
args: {
isLoading: true,
children: 'Lädt...',
},
};
Beliebte Design Systems
1. Material Design (Google)
Charakteristika:
- Material Design 3
- Komponenten für React, Vue, Angular
- Design Tokens
- Accessibility
Verwendung:
npm install @mui/material @emotion/react @emotion/styled
import { Button } from '@mui/material';
<Button variant="contained" color="primary">
Absenden
</Button>
2. Ant Design
Charakteristika:
- Enterprise-fokussiert
- Reiche Komponenten-Sammlung
- TypeScript-Unterstützung
- Internationalisierung
Verwendung:
npm install antd
import { Button } from 'antd';
<Button type="primary" size="large">
Absenden
</Button>
3. Chakra UI
Charakteristika:
- Einfaches API
- Standardmäßig zugänglich
- Theme-Anpassung
- Kompositionsbasiert
Verwendung:
npm install @chakra-ui/react @emotion/react @emotion/styled
import { Button } from '@chakra-ui/react';
<Button colorScheme="blue" size="lg">
Absenden
</Button>
4. Tailwind UI + Headless UI
Charakteristika:
- Utility-first CSS
- Unstyled Komponenten
- Maximale Flexibilität
- Custom Design
Verwendung:
npm install tailwindcss @headlessui/react
Design System Tools
1. Storybook
Für:
- Komponenten-Dokumentation
- Isolierte Entwicklung
- Visuelles Testen
- Interaktive Beispiele
Installation:
npx storybook@latest init
Struktur:
.storybook/
main.ts
preview.ts
stories/
Button.stories.tsx
2. Figma
Für:
- Komponenten-Design
- Design Tokens
- Prototyping
- Design ↔ Dev Zusammenarbeit
Funktionen:
- Komponenten-Varianten
- Design Tokens Plugin
- Dev Mode
- Auto-Layout
3. Style Dictionary
Für:
- Design Token-Verwaltung
- Transformation in verschiedene Formate
- Multi-Plattform-Unterstützung
Konfiguration:
{
"source": ["tokens/**/*.json"],
"platforms": {
"css": {
"transformGroup": "css",
"buildPath": "dist/css/",
"files": [{
"destination": "variables.css",
"format": "css/variables"
}]
}
}
}
4. Chromatic
Für:
- Visuelles Testen
- CI/CD-Integration
- Visuelle Regressionstests
- Review-Prozess
Best Practices
1. Klein anfangen
Nicht alles auf einmal bauen:
- Mit am häufigsten verwendeten Komponenten beginnen
- Button, Input, Card, Modal
- Schrittweise erweitern
2. Versionierung
Semantic Versioning:
{
"version": "1.2.3",
"changelog": {
"1.2.3": "Button Loading-Zustand hinzugefügt",
"1.2.2": "Input Focus-Styles behoben"
}
}
3. Dokumentation
Immer dokumentieren:
- Wann Komponente verwenden
- Welche Props es gibt
- Verwendungsbeispiele
- Accessibility-Hinweise
4. Testen
Komponenten testen:
import { render, screen } from '@testing-library/react';
import { Button } from './Button';
test('rendert Button mit Text', () => {
render(<Button>Klick mich</Button>);
expect(screen.getByText('Klick mich')).toBeInTheDocument();
});
5. Accessibility
Immer an a11y denken:
- Semantisches HTML
- ARIA-Attribute
- Tastaturnavigation
- Screen Reader-Unterstützung
- Farbkontrast
Projektstruktur
design-system/
├── packages/
│ ├── tokens/ # Design Tokens
│ ├── components/ # React Komponenten
│ ├── icons/ # Icon-Bibliothek
│ └── utils/ # Utilities
├── apps/
│ ├── storybook/ # Storybook Docs
│ └── playground/ # Test-App
├── docs/ # Dokumentation
└── package.json
FAQ
Brauche ich Design System für kleines Projekt?
Für kleine Projekte kann es Overkill sein. Design System erwägen, wenn:
- Sie mehrere Anwendungen/Produkte haben
- Großes Team
- Konsistenz benötigt
- Skalierung geplant
Wie Design System bauen beginnen?
- Am häufigsten verwendete Komponenten identifizieren
- Design Tokens definieren
- Grundlegende Komponenten bauen
- In Storybook dokumentieren
- Im Projekt verwenden
Kann ich fertiges Design System verwenden?
Ja, aber erwägen:
- Passt es zu Ihrer Marke?
- Hat es alle benötigten Komponenten?
- Können Sie es anpassen?
- Wird es gut gepflegt?
Wie Design System pflegen?
- Regelmäßige Updates
- Team-Feedback
- Versionsänderungen
- Migrations-Guides
- Deprecation-Policy