SlideShare a Scribd company logo
Building full-proof design tokens to
support Kiwi.com’s visual identity
Luděk Vepřek
@elvepor
Luděk Vepřek
• Frontend Developer at Kiwi.com
• Working on our Design System called Orbit
• 5+ years of experience with design and frontend development
• I used to be a graphic designer
Kiwi.com is fast growing company
How might we support our product teams to be able to
deliver new projects quickly and in perfect quality?
Main challenge
Cross-platform design system
that supports different brands
The solution
Collection of guidelines and components synchronized
between different teams and platforms
What is a design system?
• be customizable for more than 25 B2B partners
• being able to change Kiwi.com’s visual look easily in the near future
Our requirements
Design Tokens
The solution
Design tokens are atomic pieces that store visual design attributes.
We could define them in: SASS, JSON, JS and other formats.
What are design tokens?
Every token name starts with its related CSS property, like color,
background or font-size. This help us to use them more naturally.
property_usage-type--state
propertyUsageTypeState: value
We also divided tokens into two types: generic and specific
Naming taxonomy
const tokens = {
// font-family
fontFamily: value,
// colors
colorTextPrimary: value,
colorTextSecondary: value,
colorTextAttention: value,
// font-size
fontSizeTextNormal: value,
fontSizeTextLarge: value,
fontSizeTextSmall: value,
};
Generic design tokens
Component specific design tokens
Design tokens are like variables, but they are more than that.
They are visual design attributes that are stored & centralised,
organised and propagated.
const tokens = {
// font-family
fontFamily: "Roboto",
// colors
colorTextPrimary: "#46515e",
colorTextSecondary: "#7f91a8",
colorTextAttention: "#7f91a8",
// font-size
fontSizeTextSmall: "12px",
fontSizeTextNormal: "14px",
fontSizeTextLarge: "16px",
};
Defining our first tokens
const tokens = {
// font-family
fontFamily: "Roboto",
// colors
colorTextPrimary: palette.ink.normal,
colorTextSecondary: palette.ink.light,
colorTextAttention: palette.ink.dark,
// font-size
fontSizeTextSmall: "12px",
fontSizeTextNormal: "14px",
fontSizeTextLarge: "16px",
};
Defining a color palette
const tokens = {
// font-family
fontFamily: foundation.base.fontFamily,
// colors
colorTextPrimary: foundation.palette.ink.normal,
colorTextSecondary: foundation.palette.ink.light,
colorTextAttention: foundation.palette.ink.dark,
// font-size
fontSizeTextSmall: foundation.base.fontSizeSm,
fontSizeTextNormal: foundation.base.fontSizeMd,
fontSizeTextLarge: foundation.base.fontSizeLg,
};
Defining a foundation
What do we have in our foundation?
• 23 colors (we have hover/active colors also = 55 colors)
• 37 base tokens:
• fontFamily, fontWeight, fontSize, borderRadius, sizing, spacing,
opacity, transitions, lineHeight and boxShadows
Branding requirements
By definition of foundation, it’s pretty easy to add functionality in Javascript
to be able support branding.
Branding function
import { palette, base } from "./foundation"
function getTokens(custom) {
// merge defaults with custom
const foundation = {
palette: Object.assign({}, palette, custom.palette),
base: Object.assign({}, base, custom.base),
};
return {
// font-size
fontSizeButtonSmall: foundation.base.fontSizeSm, // 12px
fontSizeTextSmall: foundation.base.fontSizeSm, // 12px
...
};
Branding function
const brand = {
base: {
fontSizeSm: "10px",
},
};
const tokens = getTokens(brand);
console.log(tokens); // what will be the output?
The result
tokens = {
fontSizeButtonSmall: "10px", // 12px before
fontSizeTextSmall: "10px", // 12px before
...
}
This offers us possibility to…
Single source of truth for visual design
getTokens()
Single source of truth for visual design
getTokens()
Single source of truth for visual design
getTokens()
Summary
Design tokens can help us:
• to be able to change Kiwi.com's visual look easily
• to be able to adjust our product for different partners
• keep visual design consistent across different platforms
The best thing?
All that is managed from one place!
Thank you for your attention.
Any questions?
Luděk Vepřek
@elvepor

More Related Content

ODP
Wire It Presentation
PDF
Customizability in Design Systems
PDF
Understanding Design Tokens, from UX tool to production - Débora Barreto Orne...
PDF
Stratos tokens presentation 2020
PDF
Danny Banks - Building consistent Cross-Platform interfaces - Codemotion Amst...
PDF
A Shared Language Through Design Systems
PDF
Cristiano Rastelli - Atomic Design, Design Systems and React. Cool, but... - ...
PDF
Cristiano Rastelli - Atomic Design, Design Systems and React. Cool, but... - ...
Wire It Presentation
Customizability in Design Systems
Understanding Design Tokens, from UX tool to production - Débora Barreto Orne...
Stratos tokens presentation 2020
Danny Banks - Building consistent Cross-Platform interfaces - Codemotion Amst...
A Shared Language Through Design Systems
Cristiano Rastelli - Atomic Design, Design Systems and React. Cool, but... - ...
Cristiano Rastelli - Atomic Design, Design Systems and React. Cool, but... - ...

Similar to Building full-proof design tokens to support Kiwi.com's visual identity (20)

PDF
Design Token & Figma Variables.pdf
PPTX
User interface (UI) for mobile applications
PDF
Creating a CSS and JS design system from the ground up
KEY
CSS Framework + Progressive Enhacements
PDF
Designing a Design System - Shai Mishali, Gett
PDF
Building an Enterprise Design System for 2024
PDF
Refactoring ui by letruongan.com
PDF
Theming in React
PDF
Turku loves-storybook-styleguidist-styled-components
KEY
CSS Frameworks
PDF
Ruter Design System - A design system for public transport
PPTX
Building strong visual foundations for your design system
PPTX
Zeeto Tech Exchange: Design for Scalability - UX
PDF
Design System Ops
KEY
CSS3 for web designer - How to design a visually appealing website
PDF
Design Tokens For Dummies
PDF
Design Systems Operations
PDF
Technology of ant group
PDF
Design systems - Razvan Rosu
PDF
Teams, styles and scalable applications
Design Token & Figma Variables.pdf
User interface (UI) for mobile applications
Creating a CSS and JS design system from the ground up
CSS Framework + Progressive Enhacements
Designing a Design System - Shai Mishali, Gett
Building an Enterprise Design System for 2024
Refactoring ui by letruongan.com
Theming in React
Turku loves-storybook-styleguidist-styled-components
CSS Frameworks
Ruter Design System - A design system for public transport
Building strong visual foundations for your design system
Zeeto Tech Exchange: Design for Scalability - UX
Design System Ops
CSS3 for web designer - How to design a visually appealing website
Design Tokens For Dummies
Design Systems Operations
Technology of ant group
Design systems - Razvan Rosu
Teams, styles and scalable applications
Ad

More from Czech Design Systems Community (12)

PDF
Making Kiwi.com's design system accessible
PDF
How we sold design systems to internal team and then to our clients
PDF
Exploration of the new visual look for Seznam.cz products and services
PDF
How we handled breaking changes when our design system changed
PDF
Design Systems Digest – June 2019
PDF
Three pillars of components in the design system
PDF
CSS for design systems
PDF
Workshop – UI audit of Mall.cz – May 2019, Brno
PDF
Mobile design system in Figma for Kiwi.com
PDF
Coding reusable components for MUNI
PDF
Design system for new O2 CRM and web apps
PDF
Component-based Design System and Development - CzechDSC
Making Kiwi.com's design system accessible
How we sold design systems to internal team and then to our clients
Exploration of the new visual look for Seznam.cz products and services
How we handled breaking changes when our design system changed
Design Systems Digest – June 2019
Three pillars of components in the design system
CSS for design systems
Workshop – UI audit of Mall.cz – May 2019, Brno
Mobile design system in Figma for Kiwi.com
Coding reusable components for MUNI
Design system for new O2 CRM and web apps
Component-based Design System and Development - CzechDSC
Ad

Recently uploaded (20)

PDF
GSH-Vicky1-Complete-Plans on Housing.pdf
PPTX
Introduction to Building Information Modeling
PPTX
timber basics in structure mechanics (dos)
PDF
Strengthening Tamil Identity A. Swami Durai’s Legacy
PPTX
CLASSIFICATION OF YARN- process, explanation
PPTX
CLASS_11_BUSINESS_STUDIES_PPT_CHAPTER_1_Business_Trade_Commerce.pptx
PPTX
Media And Information Literacy for Grade 12
PPT
pump pump is a mechanism that is used to transfer a liquid from one place to ...
PPTX
LITERATURE CASE STUDY DESIGN SEMESTER 5.pptx
PPTX
Tenders & Contracts Works _ Services Afzal.pptx
PPTX
UNIT III - GRAPHICS AND AUDIO FOR MOBILE
PDF
Test slideshare presentation for blog post
PPTX
Presentation.pptx anemia in pregnancy in
PPTX
DOC-20250430-WA0014._20250714_235747_0000.pptx
PPTX
2. Competency Based Interviewing - September'16.pptx
PDF
Interior Structure and Construction A1 NGYANQI
PPTX
22CDH01-V3-UNIT III-UX-UI for Immersive Design
PPT
aksharma-dfs.pptgfgfgdfgdgdfgdfgdgdrgdgdgdgdgdgadgdgd
PDF
UNIT 1 Introduction fnfbbfhfhfbdhdbdto Java.pptx.pdf
PPT
EthicsNotesSTUDENTCOPYfghhnmncssssx sjsjsj
GSH-Vicky1-Complete-Plans on Housing.pdf
Introduction to Building Information Modeling
timber basics in structure mechanics (dos)
Strengthening Tamil Identity A. Swami Durai’s Legacy
CLASSIFICATION OF YARN- process, explanation
CLASS_11_BUSINESS_STUDIES_PPT_CHAPTER_1_Business_Trade_Commerce.pptx
Media And Information Literacy for Grade 12
pump pump is a mechanism that is used to transfer a liquid from one place to ...
LITERATURE CASE STUDY DESIGN SEMESTER 5.pptx
Tenders & Contracts Works _ Services Afzal.pptx
UNIT III - GRAPHICS AND AUDIO FOR MOBILE
Test slideshare presentation for blog post
Presentation.pptx anemia in pregnancy in
DOC-20250430-WA0014._20250714_235747_0000.pptx
2. Competency Based Interviewing - September'16.pptx
Interior Structure and Construction A1 NGYANQI
22CDH01-V3-UNIT III-UX-UI for Immersive Design
aksharma-dfs.pptgfgfgdfgdgdfgdfgdgdrgdgdgdgdgdgadgdgd
UNIT 1 Introduction fnfbbfhfhfbdhdbdto Java.pptx.pdf
EthicsNotesSTUDENTCOPYfghhnmncssssx sjsjsj

Building full-proof design tokens to support Kiwi.com's visual identity

  • 1. Building full-proof design tokens to support Kiwi.com’s visual identity Luděk Vepřek @elvepor
  • 2. Luděk Vepřek • Frontend Developer at Kiwi.com • Working on our Design System called Orbit • 5+ years of experience with design and frontend development • I used to be a graphic designer
  • 3. Kiwi.com is fast growing company
  • 4. How might we support our product teams to be able to deliver new projects quickly and in perfect quality? Main challenge
  • 5. Cross-platform design system that supports different brands The solution
  • 6. Collection of guidelines and components synchronized between different teams and platforms What is a design system?
  • 7. • be customizable for more than 25 B2B partners • being able to change Kiwi.com’s visual look easily in the near future Our requirements
  • 9. Design tokens are atomic pieces that store visual design attributes. We could define them in: SASS, JSON, JS and other formats. What are design tokens?
  • 10. Every token name starts with its related CSS property, like color, background or font-size. This help us to use them more naturally. property_usage-type--state propertyUsageTypeState: value We also divided tokens into two types: generic and specific Naming taxonomy
  • 11. const tokens = { // font-family fontFamily: value, // colors colorTextPrimary: value, colorTextSecondary: value, colorTextAttention: value, // font-size fontSizeTextNormal: value, fontSizeTextLarge: value, fontSizeTextSmall: value, }; Generic design tokens
  • 13. Design tokens are like variables, but they are more than that. They are visual design attributes that are stored & centralised, organised and propagated.
  • 14. const tokens = { // font-family fontFamily: "Roboto", // colors colorTextPrimary: "#46515e", colorTextSecondary: "#7f91a8", colorTextAttention: "#7f91a8", // font-size fontSizeTextSmall: "12px", fontSizeTextNormal: "14px", fontSizeTextLarge: "16px", }; Defining our first tokens
  • 15. const tokens = { // font-family fontFamily: "Roboto", // colors colorTextPrimary: palette.ink.normal, colorTextSecondary: palette.ink.light, colorTextAttention: palette.ink.dark, // font-size fontSizeTextSmall: "12px", fontSizeTextNormal: "14px", fontSizeTextLarge: "16px", }; Defining a color palette
  • 16. const tokens = { // font-family fontFamily: foundation.base.fontFamily, // colors colorTextPrimary: foundation.palette.ink.normal, colorTextSecondary: foundation.palette.ink.light, colorTextAttention: foundation.palette.ink.dark, // font-size fontSizeTextSmall: foundation.base.fontSizeSm, fontSizeTextNormal: foundation.base.fontSizeMd, fontSizeTextLarge: foundation.base.fontSizeLg, }; Defining a foundation
  • 17. What do we have in our foundation? • 23 colors (we have hover/active colors also = 55 colors) • 37 base tokens: • fontFamily, fontWeight, fontSize, borderRadius, sizing, spacing, opacity, transitions, lineHeight and boxShadows
  • 19. By definition of foundation, it’s pretty easy to add functionality in Javascript to be able support branding.
  • 20. Branding function import { palette, base } from "./foundation" function getTokens(custom) { // merge defaults with custom const foundation = { palette: Object.assign({}, palette, custom.palette), base: Object.assign({}, base, custom.base), }; return { // font-size fontSizeButtonSmall: foundation.base.fontSizeSm, // 12px fontSizeTextSmall: foundation.base.fontSizeSm, // 12px ... };
  • 21. Branding function const brand = { base: { fontSizeSm: "10px", }, }; const tokens = getTokens(brand); console.log(tokens); // what will be the output?
  • 22. The result tokens = { fontSizeButtonSmall: "10px", // 12px before fontSizeTextSmall: "10px", // 12px before ... }
  • 23. This offers us possibility to…
  • 24. Single source of truth for visual design getTokens()
  • 25. Single source of truth for visual design getTokens()
  • 26. Single source of truth for visual design getTokens()
  • 27. Summary Design tokens can help us: • to be able to change Kiwi.com's visual look easily • to be able to adjust our product for different partners • keep visual design consistent across different platforms The best thing? All that is managed from one place!
  • 28. Thank you for your attention. Any questions? Luděk Vepřek @elvepor