Die Texte in diesem Artikel wurden teilweise mit Hilfe künstlicher Intelligenz erarbeitet und von uns korrigiert und überarbeitet. Für die Generierung wurden folgende Dienste verwendet:
Wie wir maschinelles Lernen bei der Erstellung unserer Artikel einsetzenWo wir aufgehört haben
Bisher haben wir gelernt, wie man eine Komponentenbibliothek für Designer- und Entwickler:innen erstellt, indem wir eine relativ einfache Button-Komponente implementiert haben. In diesem Artikel werden wir die zuvor erarbeitete Grundlage erweitern und zeigen, wie man mit umfangreicheren Komponenten umgeht.
Um das gewünschte Ergebnis zu erzielen, bauen wir auf einigen der Ideen auf, die in Entwickeln von Designsystemen unter Berücksichtigung der Barrierefreiheit vorgestellt wurden, und implementieren Design-Token, um die Farben und das Aussehen unserer Komponenten während des Designs und der Entwicklung zu verwalten.
Neue Anforderungen
Bevor wir uns mit den Details der Design-Token befassen, fügen wir der vorherigen Anforderung unserer Button-Komponente einige neue Anforderungen hinzu. In diesem Fall soll die Button-Komponente mehrere Farbvarianten umfassen, um ihre möglichen Aktionen zu verdeutlichen.
Anforderungen der Designer:innen
- Farben
- Brand
- Neutral
- Informative
- Successful
- Cautionary
- Destructive
Diese zusätzliche Anforderung erhöht die Anzahl der Varianten der Komponente auf 24. Obwohl dies immer noch innerhalb von Figma mit Multi Edit verwaltbar ist, erfordert die zunehmende Komplexität eine strukturiertere Vorgehensweise zur Handhabung der Varianten und ihres Aussehens.
Design Tokens in Figma
Design Tokens, oder Variablen in Figma genannt, helfen uns, eine konsistente Designsprache für unsere Komponenten zu definieren. Um zukünftig präziser und flexibler zu sein, werden die Tokens in zwei Gruppen aufgeteilt: primitive und semantische Tokens.
Primitive Tokens
Primitive Tokens dienen als Grundlage unserer Designsprache. Sie definieren Basisfarben und andere Einheiten, auf denen unsere Komponenten aufbauen. Um zu beginnen, füge die gewünschten Farben zur Lokalen Variablen Tabelle hinzu. In diesem Beispiel verwenden wir die Tailwind CSS Farbpalette um die Farben zu definieren.
Semantische Tokens
Semantische Tokens bauen auf Primitiven auf, um verständliche Tokens für unsere Layouts, Seiten und Komponenten zu erstellen. Sie referenzieren die Primitiven und dienen als Schnittstelle, um die Komponenten mit den in der Designsprache definierten Farben zu füllen.
Zusammengefasst können rohe Werte wie #e4e4e7 als Primitive wie Indigo 600 definiert werden. Dieses Primitive wird dann von einem oder mehreren semantischen Token wie Brand referenziert. In voller Ausprägung könnte das folgende Form annehmen:
Semantic Token | Primitive Token | Raw Value | ||
---|---|---|---|---|
Border/Width | ← | 1 | ||
Color/Neutral/Subtle | ← | Primitive/Zinc/200 | ← | #e4e4e7 |
Color/Neutral | ← | Primitive/Zinc/950 | ← | #09090b |
Color/Brand/Subtle | ← | Primitive/Indigo/100 | ← | #e0e7ff |
Color/Brand | ← | Primitive/Indigo/600 | ← | #4f46e5 |
Color/Informative/Subtle | ← | Primitive/Sky/100 | ← | #e0f2fe |
Color/Informative | ← | Primitive/Sky/600 | ← | #0284c7 |
Color/Successful/Subtle | ← | Primitive/Emerald/100 | ← | #d1fae5 |
Color/Successful | ← | Primitive/Emerald/600 | ← | #059669 |
Color/Cautionary/Subtle | ← | Primitive/Amber/100 | ← | #fef3c7 |
Color/Cautionary | ← | Primitive/Amber/600 | ← | #d97706 |
Color/Destructive/Subtle | ← | Primitive/Rose/100 | ← | #ffe4e6 |
Color/Destructive | ← | Primitive/Rose/600 | ← | #e11d48 |
Plugins wie variables2css exportieren die definierten Design-Token in verschiedenen Formaten für die Verwendung in unserem Projekt. Ab hier geht es in die Entwicklungsphase und wir beginnen mit der Definition der primitive und semantischen Tokens in CSS.
Design Tokens in der Entwicklung
Sobald die Design-Token in den jeweiligen Formaten exportiert und in das Projekt implementiert wurden, können wir sie in unserer Button-Komponente verwenden, um die Farben und ihre Varianten zu definieren. Eine Möglichkeit, dies zu tun, ist es, die Tokens als CSS-Variablen zu definieren.
Um Kompatibilität zwischen Design und Entwicklung zu gewährleisten, implementieren wir die gleiche Trennung von Tokens und Naming-Konventionen. So können Design-Token sowohl in Figma als auch im Projekt verwendet und synchron gehalten werden.
Programmatische Komponenten
Die Rigidität unserer Design-Token erlaubt es uns, CSS-Klassen programmatisch für alle Farben zu generieren. Anstelle der manuellen Definition von Klassen, verwenden wir SCSS um die Klassen für uns zu generieren und deren Werte mit gebundenen CSS-Variablen zu zuordnen.
Weitere Optimierungen der Stil-Generierung und der CSS-Bundle-Größe können mit Hilfe von Tools wie PurgeCSS oder Tailwind CSS Layers erreicht werden, die unbenutzte Klassen und Stile automatisch entfernen und die Menge generierter Klassen reduzieren.
Um die betreffende Komponente zu aktualisieren, definieren wir die Property color
und fügen SCSS hinzu, um die notwendigen Klassen zu generieren. Dann aktualisieren wir die Komponente, um die aktualisierten Klassen und Poperties zu verwenden, und dann ist es soweit, die Dokumentation zu aktualisieren, um den Änderungen gerecht zu werden.
Aktualisiere die Dokumentation
Properties und ihre Werte werden automatisch von Storybook’s Autodocs Feature hinzugefügt und aktualisiert. Wir können auch die Benutzbarkeit von Komponenten in Storybook verbessern, indem wir Argument-Typen für unsere Komponente festlegen, um Interaktionen zu verbessern.
Diese Argument-Typen sind Teil des meta
Objekts in der Story-Definition und werden verwendet, um die Steuerungen für die Komponente in Storybook zu generieren. So können wir leicht zwischen den verschiedenen Farbvarianten der Button-Komponente wechseln.
Nächster Artikel
In dem nächsten Artikel werden wir die Button-Komponente um Zustände erweitern. Insbesondere werden wir Interaktionszustände wie :hover
, :focus
, :active
und :disabled
behandeln und zeigen, wie man sie in Kombination mit den bereits vorhandenen Farben und Varianten umsetzt.
TL;DR
Erweitere eine Komponentenbibliothek mit Design-Token für konsistente Farbvarianten. Implementiere primitive und semantische Token in Figma und aktualisiere die Storybook-Dokumentation für verbesserte Zusammenarbeit zwischen Designer- und Entwickler:innen.