MDX Components für moderne Content-Systeme
Eine technische Übersicht über wiederverwendbare React Components in MDX. Mit Implementierungsbeispielen für interaktive Inhalte.
Einleitung
MDX erweitert Markdown um React Components und ermöglicht damit die nahtlose Integration interaktiver Elemente in statische Inhalte. Diese Architektur verbindet die Einfachheit von Markdown mit der Flexibilität moderner Frontend-Frameworks.
Im Folgenden präsentieren wir eine Auswahl produktionserprobter Components, die wir in unseren Projekten einsetzen – mit vollständigen Implementierungsbeispielen.
Video Player – Lokale Videos einbetten
MDX ermöglicht die direkte Einbettung von HTML5-Video-Elementen für lokale Videodateien. Dies ist ideal für Demos, Tutorials und Produktpräsentationen.
Implementation
Technische Details
Features:
- HTML5 Native Video Player
- Vollständig responsive
- Browser-native Controls
- Keine externen Dependencies
- Optimale Performance
- Accessibility-Support durch native Player
Unterstützte Formate:
- MP4 (H.264/AAC) – beste Kompatibilität
- WebM (VP8/VP9) – moderne Alternative
- Ogg (Theora/Vorbis) – für Firefox
Best Practices:
- Immer
controlsAttribut setzen für Playback-Controls classNamefür Tailwind CSS Styling- Multiple
<source>Tags für Browser-Fallbacks - Descriptive fallback Text für alte Browser
- Optional:
posterImage für Preview-Thumbnail - Optional:
preload="metadata"für Performance
Code
Mit Poster Image:
Props:
controls: Zeigt Playback-Controls an (required)poster: Thumbnail-Bild vor dem Abspielen (optional)autoplay: Auto-Play (nicht empfohlen für UX)loop: Video wiederholt abspielenmuted: Video stumm schalten (für autoplay erforderlich)preload: 'none' | 'metadata' | 'auto'className: Tailwind CSS Classesstyle: Inline Styles
Image Gallery – Interaktive Bildgalerien mit Lightbox
Erstellen Sie elegante, klickbare Bildgalerien mit Lightbox-Funktionalität. Ideal für Portfolios, Projekt-Showcases und visuelle Dokumentation.
Implementation
Die Image Gallery verwendet React Context, um Bilder zu sammeln und eine Lightbox-Slideshow zu erstellen, die beim Klick auf ein Thumbnail öffnet.
Beispiel-Verwendung in MDX:
Technische Details
Architektur:
- React Context Pattern: Sammelt Bild-Daten von allen
<MDXImage>Komponenten - Lazy Loading: Bilder werden erst bei Bedarf geladen
- Lightbox Integration: Fullscreen-Slideshow mit Navigation
- Thumbnail Grid: Responsive Grid-Layout für Vorschaubilder
Features:
- ✅ Click-to-Open Lightbox/Slideshow
- ✅ Keyboard Navigation (Arrow Keys, ESC)
- ✅ Swipe-Support für Mobile
- ✅ Image Captions und Alt-Text
- ✅ Lazy Loading für Performance
- ✅ Responsive Grid Layout
- ✅ Accessibility-optimiert
Empfohlene Libraries:
react-image-lightbox: Feature-reich, gut maintainedyet-another-react-lightbox: Modern, TypeScript-firstfslightbox-react: Leichtgewichtig und schnellreact-image-gallery: Vollständige Gallery mit Thumbnails
Component Implementation
MDXGallery Component – Wrapper mit Context und State:
Advanced: Integration mit react-image-lightbox
Für eine professionellere Lösung empfiehlt sich yet-another-react-lightbox:
npm install yet-another-react-lightboxUse Cases
Projekt-Portfolios:
- Website-Screenshots in verschiedenen States
- Before/After Vergleiche
- Design-Iterationen
Dokumentation:
- UI-Component-Showcases
- Tutorial-Screenshots
- Feature-Demonstrations
Blog-Posts:
- Travel-Photography
- Event-Coverage
- Product-Reviews
Technical Docs:
- Architecture-Diagramme (hochauflösend)
- Workflow-Screenshots
- Dashboard-Mockups
Styling Best Practices
Thumbnail Grid:
- 2 Spalten auf Mobile
- 3 Spalten auf Tablet
- 4 Spalten auf Desktop
- Konsistente Aspect-Ratios mit
object-cover
Hover Effects:
- Subtle Scale Transform (1.05)
- Shadow-Intensität erhöhen
- Optional: Overlay mit Opacity
Accessibility:
- Descriptive Alt-Text für alle Bilder
- Keyboard-Navigation in Lightbox
- ESC-Key zum Schließen
- Focus-Trap in geöffneter Lightbox
Performance-Optimierung
Lazy Loading:
<img loading="lazy" /> // Native Browser Lazy LoadingNext.js Image Optimization:
import Image from 'next/image'
<Image
src={src}
alt={alt}
width={400}
height={300}
className="..."
placeholder="blur"
/>Progressive Enhancement:
- Thumbnails in WebP-Format
- Fullsize-Images erst bei Lightbox-Open laden
- Skeleton-Loader für langsame Verbindungen
Inhaltsverzeichnis
- Einleitung
- Video Player – Lokale Videos einbetten
- Image Gallery – Interaktive Bildgalerien mit Lightbox
- Markdown Basics – Fundamentale Syntax
- Tabs – Multi-View Content
- Accordion – Collapsed Content
- Progress Bars – Visualisierung von Metriken
- Timeline – Chronologische Darstellung
- Card Grid – Strukturierte Inhalte
- YouTube Embed – GDPR-konforme Video-Integration
- Twitter/X Quote – GDPR-konforme Tweet-Darstellung
- GitHub Repository Card – Server-Side Repo-Informationen
- Blockquote – Typografische Zitate
- Charts – Datenvisualisierung mit Recharts
- Erweiterte Chart-Beispiele
- Best Practices
- Installation
- GDPR-Compliance
- Standard Markdown Tables
- Data Tables – Strukturierte Datenvisualisierung
- Comparison Tables – Feature-Vergleiche
- Mermaid Diagrams – Flowcharts und Diagramme
- Podcast Embeds – GDPR-konforme Audio-Integration
- Callout Components – Hinweise und Markierungen
- Tooltip – Zugängliche Hover-Informationen
- PDF Download – Konsistente Download-Links
- Subpage Navigator – Content-Navigation
- Zusammenfassung
Markdown Basics – Fundamentale Syntax
Bevor wir zu den erweiterten Components kommen, hier ein Überblick über die grundlegenden Markdown-Elemente, die in jedem MDX-Dokument verfügbar sind.
Headings – Überschriften
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6Text Formatting – Textformatierung
Ein Paragraph mit kursivem Text, fettem Text und inline Code.
Mehrere Paragraphs werden durch Leerzeilen getrennt.
Dies ist ein neuer Paragraph mit kombiniertem fetten und kursiven Text.
Ein Paragraph mit *kursivem Text*, **fettem Text** und `inline Code`.
Mehrere Paragraphs werden durch Leerzeilen getrennt.
Dies ist ein neuer Paragraph mit **_kombiniertem fetten und kursiven Text_**.Lists – Listen
Unordered List:
- Erstes Element
- Zweites Element
- Drittes Element
- Verschachteltes Element
- Noch ein verschachteltes Element
Ordered List:
- Erster Schritt
- Zweiter Schritt
- Dritter Schritt
- Verschachtelter Schritt
- Noch ein verschachtelter Schritt
* Erstes Element
* Zweites Element
* Verschachteltes Element
1. Erster Schritt
2. Zweiter Schritt
1. Verschachtelter SchrittLinks and Images – Links und Bilder
Ein Link zu unserer Website und ein Link mit Title.
Bilder werden automatisch responsive dargestellt und mit Grayscale-Transition versehen.
[Link Text](https://example.com)
[Link mit Title](https://example.com "Hover Title")
Block Quote – Zitate
Dies ist ein Block Quote. Er kann verwendet werden für Zitate, wichtige Hinweise oder hervorgehobene Aussagen.
Block Quotes können mehrere Paragraphs enthalten.
> Dies ist ein Block Quote.
>
> Mit mehreren Paragraphs.Thematic Break – Horizontale Linie
Eine horizontale Linie zur thematischen Trennung:
Neuer Abschnitt nach der Linie.
---Code Blocks – Code-Blöcke
Inline Code: const x = 42
Code-Block mit Syntax-Highlighting:
function greet(name) {
console.log(`Hello, ${name}!`)
return `Welcome to MDX`
}
const result = greet('Developer')Verschiedene Sprachen werden unterstützt:
interface User {
id: number
name: string
email: string
}
const user: User = {
id: 1,
name: 'John Doe',
email: 'john@example.com'
}.container {
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
}
.button {
background-color: #66C4E1;
color: white;
padding: 0.5rem 1rem;
border-radius: 0.5rem;
}Code-Syntax:
Kombinierte Elemente
Ein Paragraph, der verschiedene Elemente kombiniert:
Dies ist ein wichtiger Text mit einem Link, etwas Emphasis,
strong importance, und ein wenig code().
Code-Beispiel für kombinierte Elemente:
Ein **wichtiger Text** mit einem [Link](https://example.com), etwas *Emphasis*,
**strong importance**, `code()` und  inline.Tabs – Multi-View Content
Tabs strukturieren verwandte Inhalte und reduzieren die initiale Page-Komplexität durch progressive Disclosure.
Implementation
Code
Neue MDX-Syntax (empfohlen) – unterstützt vollständiges MDX inkl. Code-Blocks:
Alternative JSX-Array-Syntax (für einfache Inhalte ohne MDX):
MDX Tab-Content – Best Practices
Mit der neuen <Tab>-Syntax können Sie vollständiges MDX verwenden:
Syntax-Regel für MDX in Tabs:
<Tabs>
<Tab label="Label">
← Leerzeile erforderlich
Ihr MDX Content hier...
← Leerzeile erforderlich
</Tab>
</Tabs>⚠️ Wichtige Best Practices für Tabs
MDX hat Schwierigkeiten mit Listen in Tab-Children. Beachten Sie diese Regeln:
Leerzeilen sind essentiell:
Heading
- Liste Item 1
- Liste Item 2
Keine Doppelpunkte bei Überschriften vor Listen:
Heading (OHNE Doppelpunkt)
- Liste Item
Alternative: Array-Syntax für komplexe Inhalte:
Wenn Listen Probleme machen, nutzen Sie die Array-Syntax mit reinem JSX
Für Tabs mit vielen Listen oder komplexem Content ist die Array-Syntax zuverlässiger
Accordion – Collapsed Content
Accordion-Pattern für FAQ-Sections und strukturierte Informationsarchitektur.
Implementation
Code
Progress Bars – Visualisierung von Metriken
Skill-Levels, Prozessfortschritt oder Performance-Metriken visuell darstellen.
Implementation
Code
Timeline – Chronologische Darstellung
Projekt-Milestones, Release-History oder Entwicklungs-Roadmaps strukturiert präsentieren.
Implementation
Next.js 15 Migration
Component Library Launch
MDX Integration
TYPO3 13 Upgrade
Code
Card Grid – Strukturierte Inhalte
Cards für Features, Services oder strukturierte Informationen.
Implementation
Performance
Server Components reduzieren JavaScript-Bundle-Size um bis zu 40%. Streaming SSR verbessert Time to First Byte.
Type Safety
Vollständige TypeScript-Integration mit automatischer Type-Inference für Props und MDX-Content.
Developer Experience
Hot Module Replacement, ESLint-Integration und Prettier-Support für optimalen Workflow.
Code
YouTube Embed – GDPR-konforme Video-Integration
Video-Embeds ohne Cookie-Tracking vor User-Interaktion.
Implementation
Klick lädt YouTube (Datenschutz)
Technische Details
- Nutzt
react-lite-youtube-embedLibrary - Lädt YouTube-Scripts erst nach User-Click
- Verwendet youtube-nocookie.com Domain
- Hover-Overlay mit Cookie-Warnung
- Vollständig responsive
Code
Twitter/X Quote – GDPR-konforme Tweet-Darstellung
Statische Tweet-Darstellung ohne Tracking oder Cookies.
Implementation
I charge $200/hour to fix broken AI agents. Every client has the same problem: poorly structured JSON prompts. Here are the patterns I use to fix them in under 30 minutes:
Statisch gerendert - keine Cookies, kein Tracking
Technische Details
- 100% statisches HTML - keine externen Requests
- Zero Cookies - komplette GDPR-Compliance
- Sofortiges Rendering - keine Ladezeiten
- Vollständige Kontrolle über Styling
- Link zum Original-Tweet
Code
GitHub Repository Card – Server-Side Repo-Informationen
GitHub-Repository-Daten ohne Client-Side API-Calls oder Cookie-Tracking.
Implementation
Technische Details
- Server Component mit async Data-Fetching
- Revalidierung alle 60 Minuten
- Zero Client-JavaScript erforderlich
- Keine direkten GitHub-Requests vom Browser
- ISR (Incremental Static Regeneration) Support
Code
Blockquote – Typografische Zitate
Semantisch korrekte Zitat-Darstellung mit eigenem Styling.
Implementation
"The best code is no code at all. Every line of code is a liability."
— Jeff Atwood
Code
> "The best code is no code at all."
>
> — Jeff AtwoodCharts – Datenvisualisierung mit Recharts
Interaktive Diagramme für Metriken, Statistiken und Datenvisualisierung basierend auf der Recharts-Library.
Implementation - Line Chart
Line Charts eignen sich perfekt für Trenddarstellungen über Zeit – etwa Performance-Metriken, Umsatzentwicklung oder Nutzerwachstum.
Implementation - Bar Chart
Bar Charts ermöglichen direkten Vergleich zwischen Kategorien – ideal für Core Web Vitals, Feature-Vergleiche oder Sprint-Velocity.
Implementation - Area Chart
Area Charts visualisieren Volumen über Zeit – besonders effektiv für Traffic-Analysen, Ressourcennutzung oder Conversion-Funnels.
Implementation - Pie Chart
Pie Charts zeigen prozentuale Verteilungen – optimal für Marktanteile, Browser-Statistiken oder Kategorien-Aufteilung.
Technische Details
Unterstützte Chart-Typen:
- Line: Trends und zeitliche Entwicklungen
- Bar: Kategorischer Vergleich
- Area: Volumen-Darstellung mit Füllbereich
- Pie: Prozentuale Verteilungen
Features:
- Vollständig responsive mit ResponsiveContainer
- Automatisches Color-Management aus Brand-Palette
- Interaktive Tooltips beim Hover
- Optional: Grid, Legend, Custom Colors
- Multiple Data-Series Support
- TypeScript-typisiert
Props Overview:
data: Array von Datenobjekten (required)type: Chart-Typ ('line' | 'bar' | 'area' | 'pie')xAxisKey: Key für X-Achse (default: 'name')lines/bars/areas: Array von Data-Keys für Seriesheight: Chart-Höhe in Pixel (default: 400)showGrid: Grid-Linien anzeigen (default: true)showLegend: Legende anzeigen (default: true)colors: Custom Color-Array (optional)
Styling:
- White Background mit subtle Border
- Brand Colors: #0ea5e9, #8b5cf6, #ec4899, #f59e0b
- Responsive Container mit Padding
- Consistent mit Design-System
Code
Use Cases
Line Charts:
- Performance Metrics über Zeit (LCP, FCP, TTI)
- Umsatzentwicklung und Prognosen
- User-Growth und Retention
- API Response Times
Bar Charts:
- Framework-Vergleiche (Bundle Size, Performance)
- Sprint Velocity und Burndown
- Feature-Adoption Rates
- Error Rates nach Kategorie
Area Charts:
- Server-Ressourcen (CPU, Memory, Disk)
- Traffic-Analysen (Visitors, Sessions, Pageviews)
- Conversion Funnels
- Storage Growth
Pie Charts:
- Browser-Statistiken
- Marktanteile
- Traffic Sources
- Content-Type Distribution
Erweiterte Chart-Beispiele
Diese Sektion zeigt fortgeschrittene Recharts-Features wie Custom Dot Shapes, verschiedene Datenvisualisierungen und spezifische Use-Cases.
Line Chart mit Custom Dot Shapes
Für bessere Unterscheidbarkeit bei mehreren Datenreihen können verschiedene Punkt-Formen verwendet werden:
ROI-Entwicklung mit unterschiedlichen Punkt-Shapes für bessere Lesbarkeit
Code
Verfügbare Dot Shapes: circle, cross, diamond, square, star, triangle
Bar Chart: Vergleichsdarstellung
Vergleich von Zeitaufwand mit unterschiedlichen Prozessen:
Zeitvergleich: Manueller vs. Automatisierter Prozess
Code
Line Chart: Multi-Series mit Diamond Dots
Skalierung und Kostenentwicklung über verschiedene Projektgrößen:
Kostenvergleich: Je mehr Projekte, desto höher die Ersparnis
Code
Pie Chart: Zeitverteilung
Prozentuale Aufteilung von Zeitaufwand über verschiedene Tasks:
Zeitverteilung bei manuellen Update-Prozessen (110 Minuten gesamt)
Code
Area Chart: Performance-Metriken
Core Web Vitals über mehrere Wochen mit Trend-Visualisierung:
Performance-Optimierung über 6 Wochen: Kontinuierliche Verbesserung
Code
Advanced: Custom Colors
Charts können mit benutzerdefinierten Farben angepasst werden:
Quartals-Umsatz mit Brand-Colors (Teal, Amber, Emerald)
Code
Standard Brand Colors aus colors.ts:
- Teal Dark:
#0e7490– Primary brand color - Teal Light:
#06b6d4– Secondary emphasis - Amber:
#f59e0b– High contrast accent - Emerald:
#10b981– Success/positive data - Purple:
#8b5cf6– Contrasting variety - Rose:
#fb7185– Maximum distinction
Styling Best Practices
Color Selection:
- Nutzen Sie
CHART_COLOR_SETSaus@/lib/colorsfür konsistentes Branding - Area Charts:
CHART_COLOR_SETS.area(maximale Unterscheidbarkeit bei Überlappung) - Line Charts:
CHART_COLOR_SETS.line(knackige Distinktion) - Bar Charts:
CHART_COLOR_SETS.bar(side-by-side Klarheit) - Pie Charts:
CHART_COLOR_SETS.pie(Segment-Distinktion)
Accessibility:
- Alle Chart-Farben sind WCAG AA konform
- Minimum 3:1 Kontrast-Ratio für Farben
- Tooltips mit Hover-States für bessere Lesbarkeit
- Legend mit Icons bei Custom Dot Shapes
Performance:
- Datensätze mit >100 Punkten: Aggregation erwägen
- ResponsiveContainer für automatische Breitenanpassung
- Height explizit setzen für Layout-Stabilität
Best Practices
Performance-Optimierung
Lazy Loading
Für optimale Performance sollten Sie verstehen, wie verschiedene Component-Typen geladen werden:
Server Components (GitHubRepoCard, Timeline, Card, ProgressBar):
- Werden beim Build oder serverseitig gerendert
- Kein zusätzliches Client-JavaScript erforderlich
- Optimal für Performance
Client Components (YouTubeEmbed, TwitterEmbed, Tabs, Accordion):
- Benötigen JavaScript für Interaktivität
- Next.js splittet Code automatisch
- Werden effizient gebündelt und gecacht
Suspense Boundaries für asynchrone Inhalte:
Dies verhindert weiße Bereiche während des Ladens und verbessert die User Experience signifikant.
Bundle-Size Management
- Server-First: Nutzen Sie Server Components wo möglich
- Code Splitting: Next.js splittet automatisch nach Routes
- Tree Shaking: Import nur benötigte Components
- Dynamic Imports: Für sehr große Components (optional)
Component-Auswahl
Wann welchen Component nutzen?
Tabs:
- Für verwandte Inhalte, die alternativ dargestellt werden
- Code-Beispiele in verschiedenen Sprachen
- Verschiedene Ansichten derselben Daten
Accordion:
- FAQ-Sections
- Lange Listen mit Details
- Progressive Disclosure von Informationen
Timeline:
- Projekt-Geschichte oder Roadmap
- Release-Notes
- Chronologische Prozesse
Cards:
- Feature-Übersichten
- Service-Darstellungen
- Strukturierte Content-Blocks
Progress Bars:
- Skill-Level Visualisierung
- Projekt-Fortschritt
- Metriken und KPIs
Image Gallery:
- Projekt-Portfolios mit Screenshots
- Before/After Vergleiche bei Redesigns
- Tutorial-Screenshots in Dokumentation
- Event-Coverage und Photo-Essays
- Product-Showcases mit Multiple Views
- Architecture-Diagramme in High-Resolution
Charts:
- Zeitreihen-Analysen (Line Charts)
- Performance-Metriken über Zeit
- Vergleiche zwischen Kategorien (Bar Charts)
- Volumen-Darstellungen (Area Charts)
- Prozentuale Verteilungen (Pie Charts)
- Interaktive Daten-Exploration
DataTable:
- Strukturierte Datenvisualisierung
- Performance-Metriken und Benchmarks
- Vergleichstabellen mit Custom Formatting
- API-Dokumentation mit Parametern
ComparisonTable:
- Feature-Vergleiche zwischen Produkten
- Technology-Stack Vergleiche
- Pricing-Tabellen mit Boolean-Features
- Requirements-Checklisten
Mermaid Diagrams:
Flowchart:
- Prozess-Dokumentation und Geschäftsprozesse
- Entscheidungsbäume und Algorithmen
- User-Flows und Navigation
- Deployment-Pipelines
Sequence Diagram:
- API-Interaktionen und Request-Flows
- Microservice-Kommunikation
- Authentication-Prozesse
- Event-basierte Systeme
Class Diagram:
- Software-Architektur und Design Patterns
- Object-Oriented Programming Strukturen
- Domain Models
- API-Schnittstellen
State Diagram:
- Workflow-Management und Approval-Prozesse
- Content-Publishing States
- Order-Processing Status
- Application-Lifecycles
Entity Relationship Diagram:
- Datenbank-Schema-Dokumentation
- Datenmodelle und Beziehungen
- Migration-Planung
- Legacy-System-Analyse
User Journey:
- Customer Experience Mapping
- UX-Optimierung und Conversion-Flows
- Onboarding-Prozesse
- Multi-Channel Customer Touchpoints
Gantt Chart:
- Projekt-Zeitpläne und Milestones
- Sprint-Planung und Release-Schedules
- Ressourcen-Planung
- Dependency-Management
Pie Chart:
- Browser- und Device-Statistiken
- Marktanteils-Visualisierung
- Budget-Verteilungen
- Traffic-Source-Analysen
Git Graph:
- Branching-Strategien dokumentieren
- Release-Flow visualisieren
- Merge-Strategien erklären
- Contribution-History
Mindmap:
- Technologie-Stack Übersichten
- Brainstorming-Sessions
- Wissensstrukturen und Taxonomien
- Feature-Planning und Ideation
Podcast Embeds:
- Tech-Talks und Interviews
- Webinare als Audio-Versionen
- Tutorial-Serien in Podcast-Form
- Customer Testimonials als Audio
Accessibility-Guidelines
Keyboard Navigation
Alle interaktiven Components implementieren vollständige Keyboard-Support:
- Tabs: Arrow Keys für Navigation
- Accordion: Enter/Space zum Öffnen
- Buttons: Focus-Visible States
ARIA Attributes
Screen Reader Support
- Semantic HTML verwenden
- Beschreibende Labels
- Status-Updates kommunizieren
GDPR-Compliance
External Embeds
YouTube:
- Lädt keine Scripts vor User-Interaktion
- Nutzt youtube-nocookie.com Domain
- Cookie-Warnung im Overlay
Twitter:
- Suspense-Wrapper verhindert Layout-Shift
- Skeleton während des Ladens
- Privacy-Notice unterhalb
GitHub:
- Komplett serverseitig
- Keine Client-Requests
- Zero Cookies möglich
Podcast Embeds:
- Consent-basiertes Laden
- Keine Auto-Play ohne Zustimmung
- Provider transparent kommuniziert
Code-Organisation
Empfohlene Dateistruktur
Type Safety
Definieren Sie klare Prop-Interfaces:
Testing-Strategie
- Unit Tests: Für einzelne Components
- Integration Tests: Für MDX-Integration
- Visual Regression: Für UI-Consistency
- Accessibility Tests: WCAG-Compliance prüfen
Installation
Dependencies
# Core MDX Plugins
npm install remark-gfm remark-math rehype-katex
npm install rehype-slug rehype-autolink-headings
# Embed Libraries
npm install react-lite-youtube-embed react-tweet
# Visualization Libraries
npm install mermaid recharts
# Image Gallery / Lightbox
npm install yet-another-react-lightbox
# Alternative: npm install react-image-lightbox
# Alternative: npm install fslightbox-react
Component-spezifische Abhängigkeiten
Chart Components:
- Requires:
recharts@^2.0.0 - Client-Side Rendering erforderlich
- Vollständig responsive mit ResponsiveContainer
- TypeScript-Unterstützung out-of-the-box
Image Gallery:
- Requires:
yet-another-react-lightbox@^3.0.0(empfohlen) - Alternatives:
react-image-lightbox,fslightbox-react - Client-Side Rendering für Interaktivität
- React Context für State-Management
- TypeScript-Support verfügbar
Mermaid Diagrams:
- Requires:
mermaid@^11.0.0 - Client-Side Rendering erforderlich
- Dynamic Import für bessere Performance
Podcast Embeds:
- Keine zusätzlichen Dependencies
- Consent Management integriert
- Multiple Provider Support
DataTable Components:
- Nur
clsxfür Class-Management - Vollständig TypeScript-typisiert
- Zero External Dependencies
Component-Registrierung
Components müssen in der MDX-Konfiguration registriert werden:
GDPR-Compliance
Embed-Strategie
Alle externen Embeds (YouTube, Twitter, GitHub) implementieren Privacy-by-Design:
- YouTube: Keine Cookies ohne User-Consent
- Twitter: Statisches Rendering ohne Tracking
- GitHub: Server-Side Fetching ohne Browser-Requests
Data Minimization
Externe APIs nur server-side ansprechen. User-Browser kontaktiert keine Third-Party Services ohne explizite Zustimmung.
Standard Markdown Tables
Markdown-Tables werden automatisch gestylt über typography.css mit Responsive-Wrapper.
Implementation
| Framework | Type | Rendering | Performance |
|---|---|---|---|
| Next.js | React | SSR/SSG/ISR | ⭐⭐⭐⭐⭐ |
| Nuxt 3 | Vue | SSR/SSG | ⭐⭐⭐⭐⭐ |
| SvelteKit | Svelte | SSR/SSG | ⭐⭐⭐⭐⭐ |
Code
| Header 1 | Header 2 | Header 3 |
|----------|----------|----------|
| Cell 1 | Cell 2 | Cell 3 |
| Cell 4 | Cell 5 | Cell 6 |Styling
- Automatischer Responsive Wrapper
- Border-Bottom für Rows
- Header mit stärkerem Border
- Horizontal Scroll auf Mobile
- Typography-CSS wird vererbt
Data Tables – Strukturierte Datenvisualisierung
Formatierte Tabellen für erweiterte Datenvisualisierung mit mehr Kontrolle über Styling und Verhalten. Verschiedene Variants für unterschiedliche Use-Cases.
Implementation - Standard DataTable
| Framework | Type | Rendering | Performance |
|---|---|---|---|
| Next.js 15 | React | SSR/SSG/ISR | ★★★★★ |
| Nuxt 3 | Vue | SSR/SSG | ★★★★★ |
| SvelteKit | Svelte | SSR/SSG | ★★★★★ |
| Remix | React | SSR | ★★★★☆ |
Implementation - Striped Variant
| Metric | Before | After | Improvement |
|---|---|---|---|
| First Contentful Paint | 2.4s | 0.8s | +67% |
| Largest Contentful Paint | 4.2s | 1.2s | +71% |
| Time to Interactive | 5.8s | 2.1s | +64% |
| Cumulative Layout Shift | 0.25 | 0.05 | +80% |
Technische Details
Variants:
default: Standard mit Border und Shadowstriped: Zebra-Streifen für bessere Lesbarkeitbordered: Doppelter Border für Emphasisminimal: Ohne Container-Styling
Features:
- Responsive Horizontal Scroll
- Custom Cell Rendering über
renderFunction - Alignment Control (left/center/right)
- Hover States für bessere UX
- Mobile-optimiert
Code
Comparison Tables – Feature-Vergleiche
Spezialisierte Tabellen für direkten Feature-Vergleich mit boolean Support und Custom Rendering.
Implementation
| Feature | TYPO3 | WordPress | Drupal |
|---|---|---|---|
| Enterprise-Ready | ✓ | ✕ | ✓ |
| Multi-Site Support | ✓ | ✓ | ✓ |
| Fine-grained Permissions | ✓ | ✕ | ✓ |
| Built-in Versioning | ✓ | ✕ | ✓ |
| Performance (1-10) | 9/10 | 7/10 | 8/10 |
| Learning Curve | Steep | Easy | Moderate |
Technische Details
- Boolean Visualization: ✓/✕ Icons in Brand Colors
- Gradient Header: Subtiler visueller Akzent
- Hover Effects: Zeilen-Highlight für Lesbarkeit
- Responsive: Horizontal Scroll auf Mobile
- Accessibility: Semantisches Table-Markup
Code
Mermaid Diagrams – Flowcharts und Diagramme
Technische Diagramme, Flowcharts, Sequenzdiagramme und Entity-Relationship-Modelle direkt in MDX.
Implementation - Flowchart
Implementation - Sequence Diagram
Implementation - Entity Relationship
Implementation - Gantt Chart
Implementation - Class Diagram
Implementation - State Diagram
Implementation - User Journey
Implementation - Pie Chart
Implementation - Git Graph
Implementation - Mindmap
Technische Details
Unterstützte Diagrammtypen:
- Flowchart: Prozess- und Entscheidungsflüsse
- Sequence: Interaktionen zwischen Komponenten
- Class: UML-Klassendiagramme und Object-Oriented Design
- State: State-Machine Diagramme und Workflow-Übergänge
- Entity-Relationship: Datenbank-Schemas und Datenmodelle
- User Journey: UX-Flows und Customer Journey Maps
- Gantt: Projekt-Zeitpläne und Milestones
- Pie: Prozentuale Verteilungen und Statistiken
- Git Graph: Branch-Strategien und Commit-History
- Mindmap: Brainstorming, Wissensstrukturen und Hierarchien
Features:
- Client-Side Rendering mit Mermaid.js
- Custom Theme mit Brand Colors
- Responsive Container
- Error Handling mit Fallback
- Caption Support
- Automatic ID Generation
Styling:
- Primary Color:
#38bdf8(Sky Blue - WCAG AA compliant) - Text Colors: High contrast dark colors (
#0c0a09- stone-950) - Borders & Lines: Dark grays for 3:1+ contrast (
#525252,#404040) - Secondary Background: Neutral Grays
- Font: System Sans-Serif Stack
- All colors meet WCAG 2.1 AA accessibility standards
Code
Podcast Embeds – GDPR-konforme Audio-Integration
Podcast-Player für Spotify, Apple Podcasts, YouTube und SoundCloud mit Privacy-by-Design und Zwei-Klick-Lösung für Datenschutz.
Stellen Sie sicher, dass Sie die Rechte zur Einbettung und Verbreitung der Podcasts besitzen. Die Verwendung von Podcast-Inhalten ohne Genehmigung der Rechteinhaber kann rechtliche Konsequenzen haben. Podcasts sind in der Regel urheberrechtlich geschützt.
Implementation - Spotify
Spotify Podcasts mit standardisierter Höhe von 232px (empfohlen für optimale Darstellung):
Syntax - Tasty Web Development Treats
Building a React Design System
This podcast embed loads content from Spotify. By clicking "Load Podcast", you consent to data being transferred to Spotify.
Öffnen Sie einen Podcast in Spotify → Rechtsklick auf Episode → "Episode-Link kopieren" → URL enthält die Episode-ID nach /episode/. Beispiel: https://open.spotify.com/episode/4rOoJ6Egrf8K2IrywzwOMk → Episode-ID ist 4rOoJ6Egrf8K2IrywzwOMk
Implementation - Apple Podcasts
Apple Podcasts mit empfohlener Höhe von 175px für kompakte Darstellung:
Daily News Podcast
Apple Podcasts Example
This podcast embed loads content from Apple Podcasts. By clicking "Load Podcast", you consent to data being transferred to Apple Podcasts.
Implementation - YouTube (Audio/Video)
YouTube-Embeds mit Standardhöhe von 200px oder 315px für Video-Format:
YouTube Embed Example
Me at the zoo (First YouTube Video)
This podcast embed loads content from YouTube. By clicking "Load Podcast", you consent to data being transferred to YouTube.
Der Player verwendet automatisch youtube-nocookie.com für besseren Datenschutz – keine Cookies ohne User-Interaktion.
Technische Details
Supported Providers:
- Spotify: Native Podcast Player (Standard: 232px Höhe)
- Apple Podcasts: iOS-optimiert (Standard: 175px Höhe)
- YouTube: Nocookie Domain für Privacy (Standard: 200px Audio / 315px Video)
- SoundCloud: Audio Streaming (Standard: 166px Höhe)
- Generic: Custom iframe URLs (flexible Höhe)
Empfohlene Heights pro Provider:
- Spotify:
232(Standard-Player mit Cover) - Apple Podcasts:
175(kompakt) oder450(mit Episode-Liste) - YouTube:
200(Audio-only) oder315(Video 16:9) - SoundCloud:
166(Standard) oder300(mit Wellenform)
GDPR-Compliance (Zwei-Klick-Lösung):
- ✅ Consent Dialog vor Embed-Load
- ✅ Keine Cookies ohne User-Interaktion
- ✅ Provider-Name transparent kommuniziert
- ✅ Data Transfer Notification
- ✅ One-Click Opt-In
- ✅ Dekorativer Loading State mit Provider-Branding
Features:
- Lazy Loading nach Consent
- Custom Heights per Provider
- Responsive Container (100% Breite)
- Provider-Specific Branding & Colors
- Decorative Wave Pattern im Loading State
- Accessibility-optimiert (ARIA Labels)
Zusätzliches Spotify Beispiel
Ein weiteres Beispiel mit einem beliebten Tech-Podcast:
JavaScript Jabber
The Future of Web Development
This podcast embed loads content from Spotify. By clicking "Load Podcast", you consent to data being transferred to Spotify.
Code
Rechtliche Hinweise
Urheberrecht & Lizenzen:
- Podcast-Inhalte sind urheberrechtlich geschützt
- Einbettung nur mit Genehmigung der Rechteinhaber
- Plattformen wie Spotify/Apple erlauben Embeds für auf ihren Plattformen gehostete Inhalte
- Überprüfen Sie die Terms of Service der jeweiligen Plattform
- Bei eigenen Podcasts: Copyright-Vermerk im Podcast selbst platzieren
Attribution Best Practice:
- Podcast-Titel und Creator transparent anzeigen
- Link zur Original-Plattform bereitstellen (automatisch via Player)
- Copyright-Vermerk in Beschreibung: "© 2024 [Creator Name]"
Callout Components – Hinweise und Markierungen
Callouts strukturieren wichtige Informationen visuell. Die Farbgebung ist bewusst subtil gehalten.
Available Types
Neutrale Informationen und technische Details. Standard-Variant für allgemeine Hinweise.
Positive Bestätigungen und erfolgreiche Operationen.
Warnungen und potenzielle Issues. Erfordert Aufmerksamkeit.
Kritische Fehler und Breaking Changes.
Best Practices und Optimierungs-Empfehlungen. Verwendet Brand-Colors für Konsistenz.
Code
<Callout type="info" title="Information">
Ihr Inhalt hier...
</Callout>
<Callout type="tip" title="Technical Tip">
Pro-Tipps und Best Practices...
</Callout>⚠️ Best Practices für Callouts
Vermeiden Sie Aufzählungs-Listen direkt in Callouts. MDX hat Probleme mit der Verschachtelung.
Stattdessen: Nutzen Sie Fließtext mit fetten Überschriften für Struktur.
Oder: Setzen Sie Listen AUSSERHALB des Callouts und referenzieren Sie darauf.
Tooltip – Zugängliche Hover-Informationen
Tooltips bieten kontextuelle Informationen ohne den Lesefluss zu unterbrechen. Vollständig WCAG 2.1 AA konform mit perfektem iPhone/Mobile Support.
Implementation
Tooltips können mit jedem Element verwendet werden und zeigen zusätzliche Informationen beim Hover (Desktop) oder Tap (Mobile):
Tooltips sind besonders nützlich für technische Abkürzungen oder Fachbegriffe.
Verschiedene Positionen
Technische Details
Accessibility Features:
- ✅ WCAG 2.1 Level AA konform
- ✅ Keyboard Navigation (Tab, Enter, Escape)
- ✅ Screen Reader Support (ARIA)
- ✅ Focus Management
- ✅ High Contrast (21:1 Ratio)
Mobile/iPhone Support:
- ✅ Touch-optimiert (Tap to show, tap outside to dismiss)
- ✅ Semi-transparent Backdrop auf Mobile
- ✅ Keine Hover-Probleme auf Touch-Geräten
- ✅ Responsive Positionierung
Smart Positioning:
- Bleibt immer im Viewport
- Automatische Positionsanpassung
- Responsive bei Scroll/Resize
- Konfigurierbare Seite (top/bottom/left/right)
Animation:
- Smooth Fade & Zoom
- Direktionale Slide-Animationen
- 150ms Duration für optimale UX
- Hardware-accelerated Transforms
Use Cases
Fachbegriffe erklären:
Status-Informationen:
- Verwendet in StatusBadge für Artikelstatus
- Zeigt Erklärung zu Alpha/Beta/Stable
Inline-Dokumentation:
- API-Parameter erklären
- Keyboard-Shortcuts anzeigen
- Zusätzlicher Kontext ohne Link
Code
Props:
content: Tooltip-Text (required)children: Trigger-Element (required)side: Position ('top' | 'bottom' | 'left' | 'right', default: 'top')delayDuration: Verzögerung in ms (default: 200)className: Custom CSS Classes
Best Practices
Do ✅:
- Kurze, prägnante Texte (1-2 Sätze)
- Für ergänzende Informationen
- Bei Abkürzungen und Fachbegriffen
- Testen auf echten Mobile-Geräten
Don't ❌:
- Kritische Informationen nur im Tooltip
- Lange Texte (>100 Zeichen)
- Als Ersatz für klare UI-Labels
- Tooltips verschachteln
PDF Download – Konsistente Download-Links
Einheitliche Darstellung für PDF-Downloads in Blog-Posts. Mit Icon, Dateigröße und verschiedenen Varianten.
Implementation - Default Variant
Die Standard-Variante ist prominent und lädt zum Download ein.
Implementation - Compact Variant
Für inline-Verwendung im Text: Material als PDF(2.3 MB) – ideal für Fließtext.
Implementation - Card Variant
Die Card-Variante eignet sich für prominente Downloads mit ausführlicher Beschreibung.
Technische Details
Variants:
default: Standard mit Icon und Hover-Effektcompact: Inline-Version für Fließtextcard: Prominente Card mit Beschreibung
Features:
- Automatisches PDF-Icon
- Dateigröße-Anzeige (optional)
- Beschreibungstext (optional)
- Hover-Animationen
- Externe Links (target="_blank")
- Konsistentes Styling
Code
Props:
url: Pfad zur PDF-Datei (required)title: Titel des Downloads (default: "PDF herunterladen")description: Beschreibung (optional)fileSize: Dateigröße z.B. "2.3 MB" (optional)variant: 'default' | 'compact' | 'card' (default: 'default')
Use Cases
Default Variant:
- Wichtige Materialien am Anfang/Ende eines Artikels
- Zusätzliche Ressourcen in der Sidebar
- Download-Links in Lernmaterialien
Compact Variant:
- Inline im Fließtext
- Listen mit mehreren Downloads
- Referenzen in Fußnoten
Card Variant:
- Haupt-Download einer Serie
- Prominente Platzierung auf Übersichtsseiten
- Komplette Kursmaterialien
Integration mit PDF-zu-Blog-System
Die PDFDownload-Komponente ist optimal für das PDF-zu-Blog-System:
<Callout type="info" title="PDF-Material verfügbar">
Das vollständige Material ist als PDF verfügbar:
<PDFDownload
url="/pdfs/meine-serie/original.pdf"
title="Original-PDF herunterladen"
fileSize="3.2 MB"
/>
</Callout>Subpage Navigator – Content-Navigation
Strukturierte Navigation zu verwandten Unterseiten mit einem 2-spaltigen Card-Grid. Perfekt für Blog-Serien, Lernmaterialien und hierarchische Content-Strukturen.
Implementation - 2-Spalten Layout
Der SubpageNavigator macht die gesamte Card klickbar und bietet hover-Effekte für bessere User Experience.
Implementation - 3-Spalten Layout
Die 3-Spalten-Variante eignet sich für kompaktere Darstellungen mit mehr Items.
Implementation - Ohne Nummerierung
Nummerierung ist optional – ideal für nicht-sequentielle Inhalte.
Technische Details
Features:
- Gesamte Card ist klickbar (Link umschließt komplette Border)
- Smooth Hover-Effekte (Border-Color, Text-Color, Arrow-Translation)
- Optional: Nummerierung für sequentielle Inhalte
- Responsive Grid: 1, 2 oder 3 Spalten
- Fade-In Animation für bessere UX
- Accessibility-optimiert mit ARIA-Labels
- "Mehr erfahren" Indikator mit animiertem Arrow
Column Options:
1: Einzelne Spalte (volle Breite)2: 2 Spalten ablgBreakpoint (Standard)3: 2 Spalten abmd, 3 ablgBreakpoint
Item Props:
title: Card-Titel (required)href: Link-Ziel (required)description: Beschreibungstext (required)number: Optionale Nummerierung z.B. "01", "02"
Styling:
- Konsistent mit bestehenden Border-Components
- Hover-Effekte auf Border, Title und Description
- Arrow-Icon mit Translation-Animation
- Grayscale-to-Color Transition (wie andere Cards)
- Fully responsive Grid-Layout
Use Cases
Blog-Serien:
- Lernmaterial-Serien (wie "Wahr oder falsch im Internet?")
- Tutorial-Reihen mit mehreren Teilen
- Thematisch zusammenhängende Artikel
Dokumentation:
- API-Dokumentation mit Unterseiten
- Getting Started Guides
- Feature-Übersichten
Hierarchische Navigation:
- Unterseiten eines Hauptthemas
- Modul-Übersichten in Kursen
- Kapitel in längeren Inhalten
Code
Beispiel mit React-Daten:
Best Practices
Do ✅:
- Nutze Nummerierung für sequentielle Inhalte (Tutorial-Reihen)
- Halte Beschreibungen kurz und aussagekräftig (1-2 Sätze)
- Verwende konsistente URL-Struktur für verwandte Seiten
- Wähle 2 Spalten für ausführlichere Beschreibungen
- Wähle 3 Spalten für kompaktere Darstellung mit mehr Items
Don't ❌:
- Zu lange Titel (>60 Zeichen)
- Zu lange Beschreibungen (>150 Zeichen)
- Mixing nummerierte und nicht-nummerierte Items
- Mehr als 12 Items in einem Navigator (besser aufteilen)
Integration mit bestehenden Patterns
Der SubpageNavigator ergänzt perfekt bestehende Components:
## Übersicht aller Module
<SubpageNavigator
items={moduleItems}
columns={2}
/>
## Zusätzliche Ressourcen
<Callout type="info" title="PDF verfügbar">
<PDFDownload
url="/pdfs/complete-guide.pdf"
title="Vollständiger Leitfaden"
fileSize="5.2 MB"
/>Accessibility
Keyboard Navigation:
- Vollständig Tab-navigierbar
- Enter/Space aktiviert Links
- Focus-Visible States
Screen Reader Support:
- Semantic HTML (
<Link>,<article>) - Descriptive ARIA-Labels
- Clear Heading Structure
Visual Indicators:
- High Contrast Border (3:1 Ratio)
- Hover States für bessere Affordance
- Arrow-Icon als visueller CTA
Zusammenfassung
Diese Component-Library deckt die häufigsten Use-Cases im Content-Management ab. Die Implementierung folgt modernen Web-Standards und priorisiert Performance, Type-Safety und GDPR-Compliance.
Alle verfügbaren Components
Markdown Basics:
- Headings: 6 Ebenen von Überschriften
- Text Formatting: Fett, Kursiv, Inline Code
- Lists: Ordered & Unordered, verschachtelt
- Links & Images: Mit automatischer Bildoptimierung
- Block Quotes: Mehrzeilige Zitate
- Code Blocks: Syntax-Highlighting für viele Sprachen
- Thematic Breaks: Horizontale Linien
Interaktive UI Components:
- Tabs: Multi-View Content mit Tab-Navigation
- Accordion: Collapsible Content für FAQs
- Progress Bars: Visualisierung von Metriken und Skills
- Timeline: Chronologische Darstellung von Events
Daten & Visualisierung:
- Chart: Line, Bar, Area und Pie Charts mit Recharts
- DataTable: Formatierte Tabellen mit mehreren Variants
- ComparisonTable: Feature-Vergleiche mit Boolean-Support
- Mermaid Diagrams: Flowcharts, Sequence, Class, State, ER, User Journey, Gantt, Pie, Git Graph, Mindmap
- Card Grid: Strukturierte Content-Blocks
Media & Embeds:
- Video Player: HTML5 Native Video mit Controls
- Image Gallery: Interaktive Lightbox-Galerien mit Thumbnails
- YouTube Embed: GDPR-konforme Video-Integration
- Twitter/X Quote: Statische Tweet-Darstellung
- GitHub Repo Card: Server-Side Repository-Informationen
- Podcast Embed: Audio-Player für Spotify, Apple, YouTube
Content-Strukturierung:
- Callout: Hinweise in 5 Varianten (Info, Success, Warning, Error, Tip)
- Tooltip: Zugängliche Hover-Informationen mit Mobile-Support
- Blockquote: Typografische Zitate
- Code Blocks: Syntax-Highlighted Code mit Shiki
- PDF Download: Konsistente Download-Links mit 3 Varianten
- Subpage Navigator: 2-spaltiges Grid für Navigation zu Unterseiten
Technische Vorteile
- Server-First Architecture: Minimale Client-JavaScript-Last
- Type Safety: Vollständige TypeScript-Integration
- Performance: Optimiert für Core Web Vitals
- Accessibility: WCAG 2.1 AA konform
- GDPR: Privacy-by-Design Approach
- Responsive: Mobile-First Design
- Theming: Brand-Colors integriert
Ressourcen
- MDX Documentation
- Next.js MDX Guide
- React Components
- Mermaid.js Documentation - Diagramming and charting tool
- Recharts Documentation - Chart library
Für Fragen zur Implementation: office@webconsulting.at
Kontaktieren Sie uns für ein unverbindliches Gespräch.
E-Mail: office@webconsulting.at