tweakcn.com: Der visuelle Theme-Editor für shadcn/ui
tweakcn.com ist ein webbasiertes Werkzeug zur visuellen Anpassung von shadcn/ui-Themes. Es richtet sich vor allem an Entwicklerinnen, Entwickler und Design-orientierte Produktteams, die mit shadcn/ui, Tailwind CSS und CSS-Variablen arbeiten.
Die zentrale Aufgabe von tweakcn lautet:
Ein shadcn/ui-Theme visuell konfigurieren, Vorschauen prüfen und die resultierenden Design Tokens als Code in das eigene Projekt übernehmen.
Statt Farbwerte, Border-Radien, Schatten oder Schriftfamilien ausschließlich manuell in CSS-Dateien zu bearbeiten, erlaubt tweakcn eine interaktive Bearbeitung mit unmittelbarer Komponenten-Vorschau.
Es ist damit kein Ersatz für shadcn/ui, sondern eher eine ergänzende Design- und Konfigurationsoberfläche für dessen Token-basiertes Theming.
Kurz erklärt
Mit tweakcn können Teams typischerweise:
Farbpaletten für helle und dunkle Themes gestalten,
semantische shadcn/ui-Farbtokens ändern,
Border-Radien konfigurieren,
Typografie auswählen oder vorbereiten,
Schatten und Oberflächenwirkung anpassen,
UI-Komponenten in einer Live-Vorschau betrachten,
Themes importieren und exportieren,
erzeugte CSS-Variablen in ein shadcn/ui-Projekt kopieren,
Designrichtungen deutlich schneller vergleichen.
Das Tool ist insbesondere nützlich, wenn ein Team nicht beim neutralen Standard-Look von shadcn/ui bleiben möchte, aber auch kein vollständiges individuelles Design-System von Grund auf erstellen will.
Die Beziehung zwischen tweakcn und shadcn/ui
Um tweakcn richtig einzuordnen, ist die Trennung der Rollen wichtig.
shadcn/ui liefert Komponenten
shadcn/ui stellt den Komponenten-Code bereit, zum Beispiel:
Button
Input
Card
Dialog
Badge
Table
Tabs
Popover
Sidebar
Diese Komponenten verwenden in der Regel semantische Tailwind-Klassen und CSS-Variablen, etwa:
Der Button kennt dabei idealerweise keine konkrete Markenfarbe wie „Blau #2563eb“. Er verwendet vielmehr die semantische Rolle
primary.
tweakcn gestaltet die visuellen Tokens
tweakcn greift auf genau diese semantische Token-Struktur auf. Das Tool hilft dabei, die Werte hinter Rollen wie diesen festzulegen:
background
foreground
card
card-foreground
popover
popover-foreground
primary
primary-foreground
secondary
secondary-foreground
muted
muted-foreground
accent
accent-foreground
destructive
destructive-foreground
border
input
ring
Vereinfacht gesagt:
shadcn/ui beantwortet: „Welche Komponenten gibt es und wie funktionieren sie?“
tweakcn beantwortet: „Wie sollen diese Komponenten im konkreten Produkt aussehen?“
Ist tweakcn offiziell Teil von shadcn/ui?
tweakcn sollte nicht automatisch mit der offiziellen Dokumentation oder dem offiziellen CLI-Workflow von shadcn/ui gleichgesetzt werden. Es ist ein ergänzendes Werkzeug im weiteren shadcn/ui-Ökosystem.
Das ist keine Abwertung — im Gegenteil: Solche spezialisierten Tools entstehen häufig gerade deshalb, weil die technische Grundlage offen, gut dokumentiert und weit verbreitet ist.
Trotzdem gilt für produktive Projekte:
Die erzeugten Tokens sollten vor dem Einsatz geprüft werden.
Das Ergebnis sollte mit der eigenen shadcn/ui- und Tailwind-Konfiguration abgeglichen werden.
Die konkrete Kompatibilität kann von Versionen, verwendeten Komponenten und Projektstruktur abhängen.
Nicht jede visuelle Einstellung ist automatisch barrierefrei oder markenkonform.
Warum ein Tool wie tweakcn sinnvoll ist
Die Theme-Anpassung von shadcn/ui ist technisch nicht besonders schwer, aber sie kann zeitaufwendig und fehleranfällig sein.
Ein klassisches manuelles Vorgehen sieht etwa so aus:
CSS-Datei öffnen.
Variablen anpassen.
Anwendung starten oder neu laden.
Button prüfen.
Card prüfen.
Dialog prüfen.
Dark Mode prüfen.
Kontrast korrigieren.
Wiederholen.
Bei vielen Änderungen entsteht schnell ein Trial-and-Error-Prozess.
tweakcn beschleunigt diesen Ablauf durch eine unmittelbare visuelle Rückmeldung. Statt zuerst abstrakte HSL-Werte zu editieren, sehen Nutzerinnen und Nutzer direkt, wie sich eine Änderung auf typische Oberflächen auswirkt.
Das ist insbesondere bei diesen Fragen hilfreich:
Ist die Primärfarbe als Button-Hintergrund zu dominant?
Bleibt weißer Text auf der Markenfarbe lesbar?
Sind Cards im Dark Mode ausreichend vom Seitenhintergrund getrennt?
Wirkt
muted zurückhaltend, aber noch gut lesbar?
Ist ein Border-Radius zu weich oder zu technisch?
Sind destruktive Aktionen klar erkennbar?
Passt die Schriftwirkung zur Marke?
Die Grundlage: Semantische Design Tokens
Das wichtigste Konzept hinter tweakcn sind Design Tokens.
Ein Design Token ist ein wiederverwendbarer, benannter Wert für eine gestalterische Entscheidung. Statt an vielen Stellen konkrete Werte einzutragen, wird eine semantische Rolle definiert.
Beispiel:
:root {
--primary: 221 83% 53%;
--primary-foreground: 210 40% 98%;
}
Diese Variablen könnten in Tailwind dann etwa als
bg-primary und
text-primary-foreground verwendet werden.
Die konkrete Farbe ist hier austauschbar. Ihre Bedeutung bleibt erhalten:
primary steht für die wichtigste interaktive oder markennahe Aktion.
primary-foreground steht für Text oder Icons auf der Primärfarbe.
Das ist wesentlich stabiler als überall direkte Klassen zu verwenden:
Bei einer Markenänderung müssten sonst viele Komponenten manuell angepasst werden.
Semantik statt Farbnamen
Ein gutes Theme-System verwendet möglichst wenige fachlich unabhängige Farbnamen wie:
blue
green
purple
gray
red
Stattdessen sind semantische Rollen sinnvoller:
primary
secondary
accent
muted
destructive
background
foreground
border
ring
Der Vorteil ist klar: Eine Marke kann sich visuell verändern, ohne dass die Bedeutung von Komponenten neu definiert werden muss.
Beispiel:
In einem Finanzprodukt kann
primary dunkelblau sein.
In einer Gesundheits-App kann
primary türkis sein.
In einer Premium-Marke kann
primary ein dunkler Violettton sein.
In einem minimalistischen Tool kann
primary nahezu schwarz sein.
Der Button bleibt in allen Fällen semantisch ein primärer Button.
Helle und dunkle Themes
Ein zentraler Anwendungsfall von tweakcn ist die Arbeit mit Light Mode und Dark Mode.
Ein gutes Dark Theme ist nicht einfach ein invertiertes helles Theme. Es benötigt eigene gestalterische Entscheidungen.
Ein vereinfachtes helles Theme könnte so aussehen:
:root {
--background: 0 0% 100%;
--foreground: 222 47% 11%;
--card: 0 0% 100%;
--card-foreground: 222 47% 11%;
--primary: 222 47% 11%;
--primary-foreground: 210 40% 98%;
--muted: 210 40% 96%;
--muted-foreground: 215 16% 47%;
--border: 214 32% 91%;
--ring: 222 84% 5%;
}
Ein passendes dunkles Theme benötigt andere Kontraste:
.dark {
--background: 222 47% 11%;
--foreground: 210 40% 98%;
--card: 222 47% 13%;
--card-foreground: 210 40% 98%;
--primary: 210 40% 98%;
--primary-foreground: 222 47% 11%;
--muted: 217 33% 18%;
--muted-foreground: 215 20% 65%;
--border: 217 33% 18%;
--ring: 213 27% 84%;
}
tweakcn hilft dabei, beide Zustände nebeneinander oder im Wechsel zu prüfen.
Typische Fehler im Dark Mode
Ein Dark Theme wirkt schnell hochwertig, kann aber bei unzureichender Prüfung problematisch werden.
Häufige Fehler sind:
Text ist zu dunkel und kaum lesbar.
Rahmen verschwinden vollständig.
Cards heben sich nicht vom Hintergrund ab.
Schatten sind zu stark oder unsichtbar.
Deaktivierte Zustände wirken wie aktive Elemente.
Fehlermeldungen verlieren Kontrast.
Primäre Buttons sind visuell zu aggressiv.
Fokus-Ringe sind kaum sichtbar.
Grafiken und Statusfarben passen nicht mehr zum Theme.
Eine visuelle Vorschau hilft, solche Probleme früh zu erkennen. Sie ersetzt jedoch keine gezielte Accessibility-Prüfung.
Welche Designbereiche lassen sich typischerweise bearbeiten?
Die konkrete Oberfläche und der Funktionsumfang von tweakcn können sich weiterentwickeln. Inhaltlich konzentrieren sich Theme-Editoren für shadcn/ui jedoch auf mehrere wiederkehrende Bereiche.
Farben und Oberflächen
Hier werden semantische Rollen für Hintergründe, Texte und Interaktionen festgelegt:
Seitenhintergrund
Standardtext
Card-Hintergründe
Popover-Flächen
primäre Aktionen
sekundäre Aktionen
dezente Flächen
Akzentflächen
Fehlermeldungen und destruktive Aktionen
Rahmen
Eingabefelder
Fokusindikatoren
Die Herausforderung ist nicht nur, schöne Einzelfarben auszuwählen. Entscheidend ist, dass die Rollen zusammen ein kohärentes System bilden.
Typografie
Die Typografie beeinflusst die Produktwahrnehmung erheblich. Sie bestimmt unter anderem:
Seriosität,
technische oder redaktionelle Wirkung,
Informationsdichte,
Lesbarkeit,
Markencharakter,
wahrgenommene Qualität.
Ein B2B-Dashboard benötigt oft eine andere Typografie als:
ein Editorial-Produkt,
eine Kreativplattform,
ein E-Commerce-Shop,
eine Banking-Anwendung,
ein Produkt für Kinder,
ein medizinisches Portal.
Ein Theme-Editor kann helfen, die Wirkung verschiedener Schriftfamilien und Größenkonzepte im Kontext echter UI-Elemente zu prüfen.
Trotzdem sollte Typografie nicht nur anhand einer Button-Vorschau entschieden werden. Besonders wichtig sind:
lange Fließtexte,
Tabellen,
Formulare,
Fehlermeldungen,
Zahlenwerte,
kleine Beschriftungen,
mobile Geräte,
verschiedene Sprachen.
Border Radius
Der Border Radius beschreibt, wie stark Ecken abgerundet werden. In shadcn/ui-Setups wird dafür oft ein zentraler Wert wie
--radius verwendet.
Beispiel:
:root {
--radius: 0.625rem;
}
Dieser Wert beeinflusst häufig Cards, Inputs, Buttons, Dialoge und andere Oberflächen.
Die Wirkung kleiner Änderungen wird oft unterschätzt:
Radius-Stil
Typische Wirkung
Sehr klein
Technisch, präzise, sachlich
Mittel
Modern, neutral, vielseitig
Groß
Freundlich, weich, konsumorientiert
Sehr groß
Stark stilisiert, verspielt oder markant
Ein Radius sollte nicht isoliert gewählt werden. Er muss zu Typografie, Markenbild, Schatten, Abständen und Zielgruppe passen.
Schatten und Tiefenwirkung
Schatten geben Oberflächen Tiefe und trennen Ebenen visuell. Besonders relevant sind sie bei:
Dialogen,
Popovers,
Dropdowns,
Cards,
schwebenden Toolbars,
Sidebars,
Navigationsleisten.
Ein zu starker Schatten lässt ein Interface schnell überladen oder altmodisch wirken. Ein zu schwacher Schatten kann dagegen dazu führen, dass Overlays nicht klar vom Hintergrund getrennt sind.
Moderne UI-Systeme verwenden häufig eher subtile Schatten in Kombination mit:
kleinen Kontrastunterschieden,
dünnen Rahmen,
Hintergrundunschärfe,
klarer räumlicher Hierarchie.
Von tweakcn in ein shadcn/ui-Projekt
Der typische praktische Ablauf sieht ungefähr so aus.
1. Projekt mit shadcn/ui vorbereiten
Zunächst benötigt man ein Projekt mit Tailwind CSS und shadcn/ui oder einer kompatiblen Token-Struktur.
Beispielhaft:
npx shadcn@latest init
Danach existiert meist eine globale CSS-Datei, zum Beispiel:
app/globals.css
oder:
src/index.css
Dort befinden sich häufig die Theme-Variablen.
2. Theme in tweakcn konfigurieren
Im Theme-Editor werden visuelle Entscheidungen getroffen:
Primärfarbe wählen
Hintergrund und Textfarbe festlegen
neutrale Flächen abstimmen
Card- und Popover-Kontraste prüfen
destruktive Farben kontrollieren
Dark Mode gestalten
Radius und Typografie einstellen
Komponenten-Vorschau vergleichen
Hier sollte nicht nur der primäre Button betrachtet werden. Ein Theme muss auch mit weniger spektakulären Komponenten funktionieren:
Input
Select
Checkbox
Badge
Alert
Tooltip
Table
Tabs
Dialog
Disabled State
Error State
3. Theme-Code exportieren oder kopieren
Der Theme-Editor erzeugt typischerweise CSS-Variablen oder vergleichbare Konfigurationswerte.
Diese werden anschließend in die globale CSS-Datei des Projekts übernommen.
Ein möglicher Ausschnitt:
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 224 71% 4%;
--primary: 243 75% 59%;
--primary-foreground: 210 40% 98%;
--secondary: 220 14% 96%;
--secondary-foreground: 224 71% 4%;
--muted: 220 14% 96%;
--muted-foreground: 220 9% 46%;
--accent: 250 100% 97%;
--accent-foreground: 243 75% 35%;
--destructive: 0 84% 60%;
--destructive-foreground: 210 40% 98%;
--border: 220 13% 91%;
--input: 220 13% 91%;
--ring: 243 75% 59%;
--radius: 0.625rem;
}
}
Danach werden die resultierenden Styles im lokalen Projekt getestet.
4. In der realen Anwendung validieren
Die Vorschau in tweakcn ist ein wertvoller Startpunkt. Sie kann aber nicht alle Bedingungen der eigenen Anwendung abbilden.
Nach dem Übernehmen sollten Teams daher zumindest prüfen:
responsive Layouts,
eigene Komponenten,
vorhandene Diagramme,
lange Texte,
Tabellen,
Datenzustände,
Fehlerzustände,
Ladezustände,
Rechte- und Berechtigungszustände,
Browser-Unterstützung,
Screenreader-Verhalten,
Kontrastverhältnisse.
Kontrast und Barrierefreiheit
Ein attraktives Theme ist nicht automatisch barrierefrei.
Besonders bei Markenfarben entsteht oft ein Konflikt: Eine kräftige oder helle Markenfarbe kann im Marketing hervorragend aussehen, aber für normalen Button-Text ungeeignet sein.
Beispiel:
Ein leuchtendes Gelb funktioniert möglicherweise gut als dekorativer Akzent.
Weißer Text auf diesem Gelb kann jedoch einen unzureichenden Kontrast haben.
Schwarzer Text wäre lesbarer, passt aber möglicherweise nicht zum bisherigen System.
Die richtige Antwort ist nicht immer, die Markenfarbe überall als
primary einzusetzen. Es kann sinnvoll sein, zwischen mehreren Rollen zu unterscheiden:
Markenfarbe für Dekoration und Illustration,
dunklere Markenvariante für Buttons,
Akzentfarbe für Hervorhebungen,
neutraler Fokus-Ring mit gutem Kontrast.
Wichtige Kontrastfälle
Beim Testen eines Themes sollten mindestens diese Kombinationen geprüft werden:
Kombination
Warum sie kritisch ist
foreground auf
background
Standardlesbarkeit der gesamten Oberfläche
primary-foreground auf
primary
Lesbarkeit primärer Aktionen
muted-foreground auf
muted
Sekundäre Hinweise dürfen nicht verschwinden
destructive-foreground auf
destructive
Kritische Aktionen müssen klar lesbar sein
Fokus-Ring auf Hintergrund
Tastaturnutzung muss sichtbar bleiben
Input-Text auf Input-Fläche
Formulare werden sehr häufig verwendet
Border auf Hintergrund
Eingabefelder und Flächen müssen erkennbar bleiben
Für normale Textinhalte wird häufig ein Kontrastverhältnis von mindestens (4.5:1) als wichtige Orientierung verwendet. Große Schrift kann unter bestimmten Bedingungen niedrigere Anforderungen erfüllen, doch für produktive Oberflächen ist ein großzügiger Kontrast meist die robustere Entscheidung.
tweakcn als Werkzeug für Design-Systeme
tweakcn ist nicht nur für Einzelprojekte interessant. Es kann auch im Aufbau eines kleinen oder mittleren Design-Systems hilfreich sein.
Ein Design-System besteht nicht nur aus Komponenten. Es umfasst mehrere Ebenen:
Markenprinzipien
↓
Design Tokens
↓
Primitive UI-Komponenten
↓
Komponentenvarianten
↓
Produkt- und Fachkomponenten
↓
Seiten und Workflows
tweakcn arbeitet vor allem auf der Ebene der Design Tokens. Es hilft bei den grundlegenden visuellen Entscheidungen, aus denen Komponenten ihre Erscheinung ableiten.
Beispiel einer Token-Hierarchie
Eine mögliche Struktur könnte so aussehen:
Brand color
↓
Primary token
↓
Primary button
↓
Create project action
Oder konkreter:
Markenfarbe: dunkles Indigo
↓
--primary: Indigo-Wert
↓