Ich höre in letzter Zeit viel von Design Tokens und obwohl ich noch nie an einem Projekt arbeiten musste, das sie benötigte, finde ich sie super interessant und es lohnt sich, ein paar Notizen dazu zu machen. So wie ich es verstehe, ist die allgemeine Idee folgende: Design Tokens sind eine agnostische Methode zur Speicherung von Variablen wie Typografie, Farbe und Abständen, damit Ihr Designsystem über Plattformen wie iOS, Android und normale Websites hinweg geteilt werden kann.
Design Tokens gewinnen in der Community der Designsysteme an Fahrt, sind aber kein völlig neues Konzept. Es gibt einen tollen Vortrag mit Jina Anne und Jon Levine aus dem Jahr 2016, in dem sie darüber sprechen, wie Design Tokens im Lightning Design System von Salesforce verwendet werden. Sie beschreiben die Komplexität der Welt, in der wir leben, wo eine einzelne Organisation, die mehrere Web-Apps und native Anwendungen entwickelt, gleich aussehen und sich gleich anfühlen muss, ohne das Entwicklungsteam zu verlangsamen. Jina hat auch einen ausführlichen Videokurs über Design Tokens erstellt, in dessen Vorschau sie schreibt:
Mit Design Tokens können Sie Low-Level-Werte erfassen und diese dann verwenden, um die Stile für Ihr Produkt oder Ihre App zu erstellen. Sie können ein skalierbares und konsistentes visuelles System für die UI-Entwicklung aufrechterhalten.
Nehmen wir nur ein Beispiel: Sie haben wahrscheinlich eine typografische Skala, die auf allen Plattformen identisch sein soll. Anstatt die Werte für diese Skala in einer CSS-Datei zu speichern und sie in jeder App oder Website zu replizieren, können sie in einer JSON-Datei gespeichert werden, die dann in den Code umgewandelt wird, der für all diese anderen Plattformen benötigt wird. Etwas wie das hier:
{
"global": {
"type": "token",
"category": "typography"
},
"aliases": {
"TYPE_SIZE_SM": {
"value": "14px"
},
"TYPE_SIZE_MD": {
"value": "25px"
},
"TYPE_SIZE_LG": {
"value": "44px"
}
},
Sie könnten Ihren eigenen Code schreiben, um diese JSON-Datei zu nehmen und sie in alle benötigten Variablen umzuwandeln, z. B. würde eine Sass-Datei von diesen Tokens abhängen und sie als Variablen konsumieren, die an anderer Stelle in einer Web-App verwendet werden. Ein Beispiel für ein Tool, das viel Arbeit für uns erledigen kann, ist Amazons Style Dictionary, und hier ist ein Beispiel dafür, wie das in der Praxis funktioniert:
Ich finde das unglaublich raffiniert. Und ich kann sehen, wie es eine Menge doppelten Code und Verwirrung über mehrere Teams hinweg spart, da es als einzige Quelle der Wahrheit dient und nicht mehrere Codebasen mit denselben Designanforderungen und eigenen Stylesheets, die gepflegt werden müssen. Cristiano Rastelli schrieb auch vor einiger Zeit über das Verwalten von Design Tokens mit Style Dictionary und geht viel tiefer darauf ein, wie man anfängt.
Ihre Quelle der Wahrheit muss nicht einmal eine JSON-Datei sein! In einem Beitrag von Anfang dieses Jahres zeigt uns Pavel Laptev, wie man diese Design Tokens in Figma erstellt und durch die Verwendung ihrer API diese Werte aus Design-Mockups abstrahiert und in einer Codebasis verwendet.
Pavel hat sein Figma-Dokument in separate Seiten für sein Raster, Spacer, Palette und Typografie unterteilt, so:

Im Moment scheint dies viel Aufwand für die Einrichtung zu erfordern, aber ich schätze, dass Tools wie Sketch und Figma solche Dinge in naher Zukunft für uns viel einfacher machen werden – sie möchten wahrscheinlich, dass die Quelle der Wahrheit in ihrem spezifischen Designtool liegt und nicht in einem anderen Tool.
Das Letzte, was ich erwähnen möchte, ist dieser Beitrag von Brent Jackson, in dem er einige Gedanken zur Interoperabilität im Zusammenhang mit Designsystemen aufgeschrieben hat. Insbesondere argumentiert er, dass es eine Spezifikation für Design Tokens geben sollte, damit jede CSS-in-JS-Bibliothek diesen Code in jedem Format oder Stil konsumieren kann.
Designsystem-Tokens sollen flexibel und plattformübergreifend sein, was bedeutet, dass verschiedene Teams, Implementierungen und Bibliotheken Dinge unterschiedlich benennen werden. Hier würde diese Spezifikation passen. Viel Interoperabilität könnte erreicht werden, wenn wir zum Beispiel alle unsere Farbpalette
colorsund die verwendeten SchriftgrößenfontSizesnennen. Was Sie darüber hinaus tun und welches Datenformat Sie zur Speicherung dieser Werte verwenden, bleibt Ihnen überlassen. Es ist trivial, JSON in ES-Module, YAML oder sogar TOML zu konvertieren, wenn das Ihr Ding ist. Es ist auch nur eine Datenstruktur, sodass die Transformation zwischen anderen Datenstrukturen (z. B. Design-Tools oder einer GraphQL-API) ebenfalls möglich sein sollte. Dieser Standard würde auch nicht versuchen, die extrem komplexen Probleme der Benennung der Farben selbst zu lösen.
Brent hat dann eine Theme-Spezifikation erstellt, um genau dieses Problem zu lösen. Es scheint, dass ein einziger Standard für das Schreiben all unserer Variablen und Einstellungen uns helfen würde, wenn wir von einer CSS-in-JS-Bibliothek zu einer anderen wechseln wollten oder zu einem anderen System, das wir uns noch nicht vorgestellt haben.
Auf jeden Fall glaube ich, dass Design Tokens erst jetzt mainstream werden und ihre Popularität zunehmen wird, wenn diese Tools, Workflows und Standards mit der Zeit besser werden – das ist alles sehr aufregend!
Was ist der Vorteil, dies so zu tun, anstatt eine separate .scss-Datei mit dem CSS-Code zu haben und diese als Standardbestandteil des von Ihnen verwendeten SASS beizubehalten?
Weil die JSON- oder YAML-Datei sprachunabhängig ist, wenn Ihr System Web- und native Plattformen unterstützen muss. Sie können den Prozess automatisieren, um SCSS-/iOS-/Android-Variablen zu erstellen. Salesforce hat auch Theo dafür gebaut: https://github.com/salesforce-ux/theo
Sass wird nicht auf native iOS oder Android skalieren. Diese Methode skaliert auf diese und jede andere Plattform, die Sie benötigen.
Nun, was ist, wenn Sass eines Tages verschwindet? Soweit ich weiß, haben Sie Ihre globalen Stilinformationen in einer separaten Datei, die dort verwendet werden kann, wo Sass nicht verfügbar ist, vielleicht? Es ist eine ziemlich coole Idee, aber es ist nur eine weitere Datei, die in einem Meer von Textdateien verwaltet werden muss, wie der Autor sagt, es ist wahrscheinlich etwas, das Sie mit einer Art Skriptautomatisierung oder so verwalten würden.
Das ist das erste Mal, dass ich den eigentlichen Zweck von Design Tokens über Text verstehen konnte. Danke, Robin!
Nachdem ich jahrelang die Kontrolle über Designmuster und Markenkonsistenz an nicht so freundliche Entwicklerteams verloren hatte, stieß ich vor etwa 2 Jahren auf die Idee, Design Tokens zu verwenden. Seitdem integriere ich Design Tokens in alle meine Projekte, und das ist ein Game-Changer für Designer und Maintainer von Designsystemen.
Design Tokens bieten Designern eine Möglichkeit, die vollständige Kontrolle über die Werte in ihrem Designsystem zu behalten. Ihre Tokens sind Ihre einzige Quelle der Wahrheit, um die Werte Ihres Designsystems mit jedem anderen Projekt in Ihrer Organisation synchron zu halten.
Ich habe ursprünglich Salesforces Theo verwendet, stellte aber schnell fest, dass es komplex, unflexibel und ehrlich gesagt übertrieben ist. Es gibt eine Menge Artikel über Design Tokens, aber fast keine Informationen darüber, wie man sie tatsächlich in Projekten implementiert, was die Einführung dieses Workflows erschwert – und es ist tatsächlich wirklich, wirklich einfach. Schauen Sie sich den grundlegenden Workflow für Design Tokens an, den ich in meinen Projekten verwende: https://github.com/MindSculpt/design-tokens
Abhängig von der Anwendung, die Ihre Design Tokens bezieht, können Sie verschiedene Gulp-Aufgaben verwenden, um das gewünschte Format (JSON, CSS, YAML, SCSS usw.) für alle Ihre aktuellen oder zukünftigen Anwendungsfälle auszugeben.
Theorie der dunklen Zeitlinie der Nutzung…
Könnten diese Tokens hinter einer Paywall, Firewall oder verschlüsselt gesperrt werden? Ich dachte sofort an Kopierschutz für Konzerne und Marken. Das Sperren von Markenfarben, Schriftarten und sogar Layoutschemata.
Ich erinnere mich an eine Zeit Ende der neunziger/Anfang der 2000er Jahre, als jeder Apples Bubble-Buttons und sogar den streng linigen Look seiner Website kopierte. Es gab Nachahmer-Websites, die schrecklich aussahen, aber diese Elemente hatten, die die Website und das Betriebssystem nachahmten. Ich kann mir vorstellen, wie diese Tokens verwendet werden könnten, um diese Arten von Nachahmern in Zukunft anzufechten. Wenn Ihre Website oder Anwendung ein "geschütztes" Designelement enthält und es nicht aus einem bekannten Depot bezieht... könnte dies ein Beweis dafür sein, dass Sie "geistige Eigentumsrechte" stehlen.
Aber im gleichen Sinne könnten Depots von Open-Source-Designs und -Elementen aufgebaut werden, die analytische Entwickler mit visuellen Designern zusammenbringen.
Das Konzept ist interessant und ich sehe den Wert in diesen Tokens.
Persönlich halte ich dieses Konzept für übermäßig komplexe Anstrengungen, um „Dinge einfach zu halten“. Mir gefällt die Idee, dass Figma die Wahrheitsversion speichert, weil es das sehr gut macht und es für jeden leicht zu übernehmen und zu nutzen ist, aber die Verwendung von JSON und CSS zusammen klingt gefährlich streng und was ist mit der Wartbarkeit? Vielleicht macht das für große Teams Sinn, weil ich weiß, dass manche Leute in Konzernen besessen von "Pixel Perfektion" sind, aber ich bin nicht überzeugt, dass dies ein guter Weg für Designer ist, denn es könnte unrealistische Erwartungen an das Ergebnis verschiedener Anwendungen setzen.
Außerdem scheint eine spezifische Reihe von Schriftgrößen für mehrere Plattformen eine schlechte Idee zu sein und ein seltsames Beispiel, um dieses Konzept darzustellen. Theoretisch klingt es praktisch, alles konsistent zu halten, aber in der Praxis sollten diese Größen je nach Kontext, auf dem das Design basiert, geändert werden können. Ich.e. Tablet-Bildschirme, HD-Bildschirme, Telefone beeinflussen alle, wie wir eine 14px-Schriftgröße wahrnehmen.
Ich glaube, Entwickler und Konzerne arbeiten gerne mit Absolutwerten, deshalb reizen Designsysteme/Tokens/welche Buzzwords es auch immer gibt, so viele Leute. Aber meine 2 Cents als Designer und Entwickler sind, dass ich persönlich lieber mit dem eigentlichen CSS arbeite und nicht mit dessen Abstraktionen, und wir sollten den Entwicklern mehr vertrauen und die Entwickler sich selbst mehr vertrauen, die richtigen Entscheidungen zu treffen. Gute Frontend-Entwickler sollten Design verstehen, meiner Meinung nach. Und das gilt für beide Seiten, wenn Sie ein Webdesigner sind.
So funktionieren Design Tokens aber nicht, Jaclyn. Das Schöne an Tokens ist, dass sie auch erweiterbar sind und Sie bei Bedarf verschiedene Formfaktor-Kontexte festlegen können. Für viele ist es jedoch richtig, dass es mehr Aufwand bedeuten kann, als sie benötigen. Aber für einige Unternehmen wie Salesforce – wo sie entstanden sind – ist diese Komplexität entscheidend, um ihren Anforderungen gerecht zu werden.