UI Components
Wiederverwendbare UI-Komponenten aus admin.css.
Buttons
Basis
<button class="btn btn--primary">Primary</button>
<button class="btn btn--secondary">Secondary</button>
<button class="btn btn--success">Success</button>
<button class="btn btn--danger">Danger</button>
<button class="btn btn--info">Info</button>
<button class="btn btn--light">Light</button>
Größen
<button class="btn btn--primary btn--small">Klein</button>
<button class="btn btn--primary">Normal</button>
<button class="btn btn--primary btn--large">Groß</button>
Block (volle Breite)
<button class="btn btn--primary btn--block">Volle Breite</button>
Badges
Status-Badges
<span class="badge badge--pending">Pending</span>
<span class="badge badge--in_progress">In Progress</span>
<span class="badge badge--completed">Completed</span>
<span class="badge badge--failed">Failed</span>
<span class="badge badge--cancelled">Cancelled</span>
Andere Badges
<span class="badge badge--draft">Entwurf</span>
<span class="badge badge--published">Veröffentlicht</span>
<span class="badge badge--success">Erfolg</span>
<span class="badge badge--warning">Warnung</span>
<span class="badge badge--primary">Primary</span>
Alerts
<div class="alert alert--success">Erfolgreich gespeichert.</div>
<div class="alert alert--warning">Achtung: Ungespeicherte Änderungen.</div>
<div class="alert alert--error">Fehler beim Speichern.</div>
<div class="alert alert--info">Information verfügbar.</div>
Forms
Basis-Form
<form class="form">
<div class="form-group">
<label class="form-group__label">Name</label>
<input type="text" class="form-input">
<span class="form-group__hint">Hilfetext</span>
</div>
<div class="form-group">
<label class="form-group__label">Beschreibung</label>
<textarea class="form-textarea"></textarea>
</div>
<div class="form-group">
<label class="form-group__label">Status</label>
<select class="form-select">
<option>Aktiv</option>
<option>Inaktiv</option>
</select>
</div>
<div class="form-actions">
<button type="submit" class="btn btn--primary">Speichern</button>
<button type="button" class="btn btn--light">Abbrechen</button>
</div>
</form>
Form-Row (2 Spalten)
<div class="form-row">
<div class="form-group">
<label>Vorname</label>
<input class="form-input">
</div>
<div class="form-group">
<label>Nachname</label>
<input class="form-input">
</div>
</div>
Cards
<div class="card">
<div class="card__header">
<h2>Titel</h2>
<span class="badge badge--success">Aktiv</span>
</div>
<p>Card-Inhalt hier...</p>
</div>
Stats
<div class="stats-grid">
<div class="stat-card">
<span class="stat-card__value">42</span>
<span class="stat-card__label">Dokumente</span>
</div>
<div class="stat-card stat-card--success">
<span class="stat-card__value">98%</span>
<span class="stat-card__label">Erfolgsrate</span>
</div>
<div class="stat-card stat-card--warning">
<span class="stat-card__value">3</span>
<span class="stat-card__label">Pending</span>
</div>
</div>
Lists
<div class="list">
<div class="list-item">
<div class="list-item__main">
<h3 class="list-item__title">
<a href="#">Item Titel</a>
</h3>
<div class="list-item__meta">
<span>Erstellt: 2025-12-27</span>
<span>5 Einträge</span>
</div>
</div>
<span class="badge badge--completed">Fertig</span>
</div>
</div>
Empty State
<div class="empty-state">
<p>Keine Einträge vorhanden.</p>
<a href="/new" class="btn btn--primary">Erstellen</a>
</div>
<!-- Klein -->
<div class="empty-state empty-state--small">
<p>Keine Daten.</p>
</div>
Pagination
<div class="pagination">
<span class="pagination__info">1-10 von 42</span>
<div class="pagination__buttons">
<button class="pagination__btn" disabled>«</button>
<button class="pagination__btn pagination__btn--active">1</button>
<button class="pagination__btn">2</button>
<button class="pagination__btn">3</button>
<button class="pagination__btn">»</button>
</div>
</div>
Action Bar
<div class="action-bar">
<button class="btn btn--primary">Speichern</button>
<button class="btn btn--danger">Löschen</button>
<a href="/back" class="btn btn--light">Zurück</a>
</div>
HTMX-Integration
Loading Indicator
<button class="btn btn--primary">
<span class="htmx-content">Speichern</span>
<span class="htmx-indicator">Lade...</span>
</button>
HTMX Messages Container
<div class="htmx-messages" id="messages"></div>
Layout-Helper
Page Container
<div class="page-container">...</div>
<div class="page-container page-container--narrow">...</div>
<div class="page-container page-container--wide">...</div>
Grid Layouts
<div class="grid-2">
<div>Hauptinhalt</div>
<div>Sidebar (320px)</div>
</div>
<div class="grid-3">
<div>Spalte 1</div>
<div>Spalte 2</div>
<div>Spalte 3</div>
</div>
<div class="grid-auto">
<!-- Auto-fit mit min 140px -->
</div>
Verwandte Themen
- CSS Architektur - Design Tokens
- HTMX - Interaktivität
- HTMX Patterns - Code-Beispiele