Refactoring der Button-Komponente

Ein Blick hinter die Kulissen: Wie ich die Button-Komponenten von Edifire UI durch parametrische Logik, Slot-basiertes Design und Figma-Properties von 432 Varianten auf nur noch 32 reduziert habe. Diese Case Study zeigt das Konzept, die Tools und die Cleanup-Strategie hinter einem skalierbaren, Token-basierten System u2013 solo entwickelt und bereit fu00fcr Open Source.

Code für eine Button-Komponente

Überblick

Überblick

Edifire UI ist ein persönliches, Token-basiertes Design-System. Von mir allein entwickelt, mit einem klaren Ziel: komplett Open-Source zu werden. Der Button – ohne Zweifel das meistgenutzte Element in jedem UI-Kit – war einer der ersten Bausteine, an die ich mich gewagt habe. Mein Anspruch damals: an absolut alles denken. Das Ergebnis? Ein Berg von 432 Varianten. Verschiedene Status, Größen, Farben, Icons, Hierarchien und Themes. Was als Liebe zum Detail begann, wurde schnell zur reinsten Maintenance-Hölle. So wurde der Button zum perfekten Testfall für einen neuen, disziplinierten und skalierbaren Ansatz.

Wie ich meine Button-Varianten in meinem Solo Design System (Edifire UI) von 432 auf 32 reduziert habe


Als ich anfing, Edifire zu entwickeln – ein eigenes Design System, von Grund auf konzipiert mit dem Ziel, Open Source zu werden –, dachte ich, ich wäre gründlich. Sogar besonders clever. Denn was ist schon ein Design System ohne eine Button-Komponente, die jeden erdenklichen Sonderfall und jeden visuellen Wunsch abdeckt?

Ich erstellte Status für Hover, Focus, Disabled und Loading. Ich berücksichtigte verschiedene Größen, Icon-Platzierungen, Tonalitäten und Hierarchien nach Wichtigkeit.

Anfangs wirkte es überschaubar: ein simpler Frame mit einem Label. Vielleicht ein Icon. Vielleicht zwei. Dann kamen die Größen. Die Farben. Die Status. Die Icon-Ausrichtungen. Die Theme Modes. Ehe ich mich versah, hatte sich mein ordentliches Komponenten-Panel in ein unübersichtliches Chaos aus 432 Button-Varianten verwandelt.

Es war das absolute Chaos … aber es war mein Chaos.

Wie ich meine Button-Varianten in meinem Solo Design System (Edifire UI) von 432 auf 32 reduziert habe


Als ich anfing, Edifire zu entwickeln – ein eigenes Design System, von Grund auf konzipiert mit dem Ziel, Open Source zu werden –, dachte ich, ich wäre gründlich. Sogar besonders clever. Denn was ist schon ein Design System ohne eine Button-Komponente, die jeden erdenklichen Sonderfall und jeden visuellen Wunsch abdeckt?

Ich erstellte Status für Hover, Focus, Disabled und Loading. Ich berücksichtigte verschiedene Größen, Icon-Platzierungen, Tonalitäten und Hierarchien nach Wichtigkeit.

Anfangs wirkte es überschaubar: ein simpler Frame mit einem Label. Vielleicht ein Icon. Vielleicht zwei. Dann kamen die Größen. Die Farben. Die Status. Die Icon-Ausrichtungen. Die Theme Modes. Ehe ich mich versah, hatte sich mein ordentliches Komponenten-Panel in ein unübersichtliches Chaos aus 432 Button-Varianten verwandelt.

Es war das absolute Chaos … aber es war mein Chaos.

Der Ausgangspunkt

Edifire UI begann als persönliches Projekt. Ich wollte ein skalierbares, visuell ausgewogenes Design-System bauen, das ich für eigene Nebenprojekte nutzen und später veröffentlichen kann. Mein Ziel: minimalistisch, flexibel und voll tokenisiert.

Der Button ist das am häufigsten genutzte Element in jedem UI-Kit – also ging ich ihn als Erstes an. Mein Ansatz: „Bedenke einfach alles.“ Und genau das habe ich getan. Ich habe es völlig übertrieben.


Der Knackpunkt: Wenn Flexibilität zur Last wird

Es war kein optischer Fehler. Nichts war kaputt, verschoben oder technisch falsch. Aber irgendetwas fühlte sich schwerfällig an. Mein Konstrukt war total aufgebläht.

Es gab keine Fehlermeldungen, der Button funktionierte einwandfrei. Was mich stresste, war die mentale Last bei der Nutzung. Ich hatte unbewusst eines der häufigsten, aber am seltensten besprochenen Probleme in Design-Systemen geschaffen: den Varianten-Overload.

In Figma artete das Komponenten-Panel in endlose Scrollerrei aus. Jedes Mal, wenn ich einen einfachen Button brauchte, versank ich in verschachtelten Menüs und komplizierten Varianten-Namen. Als ob Sie einen Kaffee bestellen wollen und eine Karte mit über 400 Kombinationen vorgesetzt bekommen.

Figma kam damit klar – ich nicht. Die Erkenntnis daraus? Komponenten-Overload ist der stille Killer in vielen Design-Systemen.


Die Inspiration

Ich stieß auf einen Vortrag des Uber-Design-System-Teams. Sie erklärten, wie sie ihr Badge-Element von dutzenden starren Varianten auf wenige hochdynamische Konfigurationen reduzierten – durch den Wechsel zu einem parametrischen Design-Modell.

Ihr Badge konnte jede Form, Farbe oder jeden Status annehmen, ohne die Variantenliste aufzublähen. Es nutzte nur wenige Props wie tone, size, icon und message, gesteuert durch Tokens und kontextabhängige Logik. Einfach, intelligent und skalierbar.
Das blieb hängen.

Als ich meinen eigenen Button betrachtete, sah ich ihn plötzlich nicht mehr als starre visuelle Option, sondern als parametrisches System. Dieser Perspektivenwechsel – weg vom Aussehen, hin zum Verhalten – veränderte alles.


Inspiriert von Ubers „Parametric Components“-Ansatz

Hier anschauen: https://youtu.be/-z9JX8Lz5lI?si=9l5XZCbpWZF0OQee

In diesem Talk zeigt Uber, wie sie das Badge-Element reduzierten, indem sie von Permutationen auf parametrische Steuerungen über Tokens und Props umstellten.

Der Ausgangspunkt

Edifire UI begann als persönliches Projekt. Ich wollte ein skalierbares, visuell ausgewogenes Design-System bauen, das ich für eigene Nebenprojekte nutzen und später veröffentlichen kann. Mein Ziel: minimalistisch, flexibel und voll tokenisiert.

Der Button ist das am häufigsten genutzte Element in jedem UI-Kit – also ging ich ihn als Erstes an. Mein Ansatz: „Bedenke einfach alles.“ Und genau das habe ich getan. Ich habe es völlig übertrieben.


Der Knackpunkt: Wenn Flexibilität zur Last wird

Es war kein optischer Fehler. Nichts war kaputt, verschoben oder technisch falsch. Aber irgendetwas fühlte sich schwerfällig an. Mein Konstrukt war total aufgebläht.

Es gab keine Fehlermeldungen, der Button funktionierte einwandfrei. Was mich stresste, war die mentale Last bei der Nutzung. Ich hatte unbewusst eines der häufigsten, aber am seltensten besprochenen Probleme in Design-Systemen geschaffen: den Varianten-Overload.

In Figma artete das Komponenten-Panel in endlose Scrollerrei aus. Jedes Mal, wenn ich einen einfachen Button brauchte, versank ich in verschachtelten Menüs und komplizierten Varianten-Namen. Als ob Sie einen Kaffee bestellen wollen und eine Karte mit über 400 Kombinationen vorgesetzt bekommen.

Figma kam damit klar – ich nicht. Die Erkenntnis daraus? Komponenten-Overload ist der stille Killer in vielen Design-Systemen.


Die Inspiration

Ich stieß auf einen Vortrag des Uber-Design-System-Teams. Sie erklärten, wie sie ihr Badge-Element von dutzenden starren Varianten auf wenige hochdynamische Konfigurationen reduzierten – durch den Wechsel zu einem parametrischen Design-Modell.

Ihr Badge konnte jede Form, Farbe oder jeden Status annehmen, ohne die Variantenliste aufzublähen. Es nutzte nur wenige Props wie tone, size, icon und message, gesteuert durch Tokens und kontextabhängige Logik. Einfach, intelligent und skalierbar.
Das blieb hängen.

Als ich meinen eigenen Button betrachtete, sah ich ihn plötzlich nicht mehr als starre visuelle Option, sondern als parametrisches System. Dieser Perspektivenwechsel – weg vom Aussehen, hin zum Verhalten – veränderte alles.


Inspiriert von Ubers „Parametric Components“-Ansatz

Hier anschauen: https://youtu.be/-z9JX8Lz5lI?si=9l5XZCbpWZF0OQee

In diesem Talk zeigt Uber, wie sie das Badge-Element reduzierten, indem sie von Permutationen auf parametrische Steuerungen über Tokens und Props umstellten.

Der Audit: Ordnung im Chaos


Ich habe einen Schritt zurückgemacht und jede erdenkliche Kombination visualisiert.

Dazu habe ich die Anatomie der Buttons inklusive aller Größen genau analysiert. Ziel war es herauszufinden, welche Eigenschaften wir in parametrische Variablen umwandeln können.

Folgende Elemente habe ich dabei genau untersucht:

  • Buttongröße

  • Schriftgröße

  • Zeilenhöhe

  • Abstand zwischen den Elementen

  • Vertikales Padding

  • Horizontales Padding

  • Eckenradius


Der Audit: Ordnung im Chaos


Ich habe einen Schritt zurückgemacht und jede erdenkliche Kombination visualisiert.

Dazu habe ich die Anatomie der Buttons inklusive aller Größen genau analysiert. Ziel war es herauszufinden, welche Eigenschaften wir in parametrische Variablen umwandeln können.

Folgende Elemente habe ich dabei genau untersucht:

  • Buttongröße

  • Schriftgröße

  • Zeilenhöhe

  • Abstand zwischen den Elementen

  • Vertikales Padding

  • Horizontales Padding

  • Eckenradius


Der Relaunch

Der Relaunch

Dieses Mal bin ich an den Button herangegangen wie ein Entwickler an eine Komponenten-API.

Ich habe die visuellen und funktionalen Aspekte in Eigenschaften zerlegt, die sich umschalten und skalieren lassen. Dafür habe ich Token-Variablen definiert und diese dem Button zugewiesen – natürlich passend für Light und Dark Mode.

Statt Hunderten von starren Varianten gibt es jetzt eine Kernstruktur mit 32 intelligenten Konfigurationen. Jede Entscheidung beruhte auf zwei Fragen:

„Lässt sich das ohne Duplikate skalieren?“

„Reduziert das den Denkaufwand für alle, die damit arbeiten – mich selbst in der Zukunft eingeschlossen?“

Dieses Mal bin ich an den Button herangegangen wie ein Entwickler an eine Komponenten-API.

Ich habe die visuellen und funktionalen Aspekte in Eigenschaften zerlegt, die sich umschalten und skalieren lassen. Dafür habe ich Token-Variablen definiert und diese dem Button zugewiesen – natürlich passend für Light und Dark Mode.

Statt Hunderten von starren Varianten gibt es jetzt eine Kernstruktur mit 32 intelligenten Konfigurationen. Jede Entscheidung beruhte auf zwei Fragen:

„Lässt sich das ohne Duplikate skalieren?“

„Reduziert das den Denkaufwand für alle, die damit arbeiten – mich selbst in der Zukunft eingeschlossen?“

Das Ergebnis: Vom Chaos zur Brillanz


Die Reduzierung von 432 auf 32 Varianten brachte nicht nur Ordnung. Sie schuf echten Freiraum – für Speed, Fokus und Konsistenz.

  • Schnellere Performance in Figma

  • Weniger Risiko für Fehler oder Abweichungen

  • Einfaches Theming durch Token-Hooks

  • Verlässliches Verhalten über alle Breakpoints hinweg

Wenn ich jetzt einen Button brauche, passe ich kurz ein paar Eigenschaften an. Das war’s. Keine endlosen Listen an Varianten mehr, kein visuelles oder mentales Chaos.

Das Ergebnis: Vom Chaos zur Brillanz


Die Reduzierung von 432 auf 32 Varianten brachte nicht nur Ordnung. Sie schuf echten Freiraum – für Speed, Fokus und Konsistenz.

  • Schnellere Performance in Figma

  • Weniger Risiko für Fehler oder Abweichungen

  • Einfaches Theming durch Token-Hooks

  • Verlässliches Verhalten über alle Breakpoints hinweg

Wenn ich jetzt einen Button brauche, passe ich kurz ein paar Eigenschaften an. Das war’s. Keine endlosen Listen an Varianten mehr, kein visuelles oder mentales Chaos.

Barrierefreiheit


Komplexität reduzieren – aber nicht auf Kosten der Usability. Barrierefreiheit war von Anfang an ein zentraler Design-Faktor, kein nachträgliches Add-on. Das hatte direkten Einfluss auf den Button-Rebuild:

Jeder Farb-Token, ob Text oder Hintergrund, wurde streng auf die WCAG AA Kontrast-Standards geprüft – im Light und Dark Mode. Was nicht bestand, flog rigoros raus.

Barrierefreiheit


Komplexität reduzieren – aber nicht auf Kosten der Usability. Barrierefreiheit war von Anfang an ein zentraler Design-Faktor, kein nachträgliches Add-on. Das hatte direkten Einfluss auf den Button-Rebuild:

Jeder Farb-Token, ob Text oder Hintergrund, wurde streng auf die WCAG AA Kontrast-Standards geprüft – im Light und Dark Mode. Was nicht bestand, flog rigoros raus.

Was ich gelernt habe


Allein an Edifire zu arbeiten, gab mir die volle Kontrolle – bedeutete aber auch die volle Verantwortung. Keine Team-Reviews, keine gemeinsamen Standards. Das System musste von Grund auf resilient sein.

Das habe ich aus diesem Prozess gelernt:

  • Eine Komponente sollte sich wie ein Werkzeug anfühlen, nicht wie eine Falle.

  • Flexibilität entsteht durch klare Grenzen, nicht durch Chaos.

  • Wer allein designt, macht sein zukünftiges Ich zum härtesten Stakeholder.

  • Komponenten-Logik schlägt visuelles Stapeln.

  • Design-Systeme sollen Entscheidungen reduzieren, nicht nur Dinge wiederverwendbar machen.

  • Tokens, Slots und Props sind Ihre besten Freunde.

  • Sobald es sich schwerfällig anfühlt: Zeit für ein Refactoring.

Was ich gelernt habe


Allein an Edifire zu arbeiten, gab mir die volle Kontrolle – bedeutete aber auch die volle Verantwortung. Keine Team-Reviews, keine gemeinsamen Standards. Das System musste von Grund auf resilient sein.

Das habe ich aus diesem Prozess gelernt:

  • Eine Komponente sollte sich wie ein Werkzeug anfühlen, nicht wie eine Falle.

  • Flexibilität entsteht durch klare Grenzen, nicht durch Chaos.

  • Wer allein designt, macht sein zukünftiges Ich zum härtesten Stakeholder.

  • Komponenten-Logik schlägt visuelles Stapeln.

  • Design-Systeme sollen Entscheidungen reduzieren, nicht nur Dinge wiederverwendbar machen.

  • Tokens, Slots und Props sind Ihre besten Freunde.

  • Sobald es sich schwerfällig anfühlt: Zeit für ein Refactoring.

Wie es weitergeht


Der Button-Refactor war nur der erste Schritt. Wir machen Edifire zu einem durchdeckten, skalierbaren System, das einfach Spaß macht.

Als Nächstes übertragen wir diesen Ansatz auf Modale, Dropdowns, Tabs und Inputs. Logik statt komplexer Ebenen führt hier das Design.

Edifire wird bald Open Source. Und dann ist es weit mehr als nur eine Sammlung von UX/UI-Teilen. Klein bauen. In Systemen denken. Reibung reduzieren. Raum für Wachstum lassen.

Mein Fokus liegt darauf, Design und Development perfekt zu verbinden. So können Sie das System sofort nutzen. Die React-Code-Snippets der Edifire-UI-Komponenten binde ich direkt via Figma MCP und Cursor in Zeroheight ein.

Wie es weitergeht


Der Button-Refactor war nur der erste Schritt. Wir machen Edifire zu einem durchdeckten, skalierbaren System, das einfach Spaß macht.

Als Nächstes übertragen wir diesen Ansatz auf Modale, Dropdowns, Tabs und Inputs. Logik statt komplexer Ebenen führt hier das Design.

Edifire wird bald Open Source. Und dann ist es weit mehr als nur eine Sammlung von UX/UI-Teilen. Klein bauen. In Systemen denken. Reibung reduzieren. Raum für Wachstum lassen.

Mein Fokus liegt darauf, Design und Development perfekt zu verbinden. So können Sie das System sofort nutzen. Die React-Code-Snippets der Edifire-UI-Komponenten binde ich direkt via Figma MCP und Cursor in Zeroheight ein.

Schreiben Sie uns

Schreiben Sie uns

Angebot anfordern

Gespräch buchen

Schreiben Sie uns

Angebot anfordern

Gespräch buchen

Schreiben Sie uns

Lieber per E-Mail?

hello@jayhans.design

hello@jayhans.design

Folgen Sie uns auf

© 2026 Joyce Hanson

© 2026 Joyce Hanson

Designt & entwickelt in Framer · Hamburg, DE

Designt & entwickelt in Framer · Hamburg, DE

Zertifizierter Framer Pro Expert

Premium-Websites und Branding für Unternehmen, die Kunden lieber gewinnen als ihnen hinterherzulaufen. Hamburg → weltweit.

RECHTLICHES

STATUS

2 spots — June 2026

Antwort innerhalb von 4 Stunden

© 2026 StudioHans

Kreiert & geschmiedet in 🔥 · Hamburg, DE

Zertifizierter Framer Pro Expert

Premium-Websites und Branding für Unternehmen, die Kunden lieber gewinnen als ihnen hinterherzulaufen. Hamburg → weltweit.

RECHTLICHES

STATUS

2 spots — June 2026

Antwort innerhalb von 4 Stunden

© 2026 StudioHans

Kreiert & geschmiedet in 🔥 · Hamburg, DE

Zertifizierter Framer Pro Expert

Premium-Websites und Branding für Unternehmen, die Kunden lieber gewinnen als ihnen hinterherzulaufen. Hamburg → weltweit.

RECHTLICHES

STATUS

2 spots — June 2026

Antwort innerhalb von 4 Stunden

© 2026 StudioHans

Kreiert & geschmiedet in 🔥 · Hamburg, DE