SlideShare a Scribd company logo
1 of 28
Download to read offline
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

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

The Language of the Web - HTML and CSS
The Language of the Web - HTML and CSSThe Language of the Web - HTML and CSS
The Language of the Web - HTML and CSS
kcasavale
 

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

Responsive Web Design & Typography
Responsive Web Design & TypographyResponsive Web Design & Typography
Responsive Web Design & Typography
 
Write LESS. DO more.
Write LESS. DO more.Write LESS. DO more.
Write LESS. DO more.
 
Design for developers (april 25, 2017)
Design for developers (april 25, 2017)Design for developers (april 25, 2017)
Design for developers (april 25, 2017)
 
Team styles
Team stylesTeam styles
Team styles
 
Responsive Process HOW Interactive
Responsive Process HOW InteractiveResponsive Process HOW Interactive
Responsive Process HOW Interactive
 
2h landing page
2h landing page 2h landing page
2h landing page
 
Bridging the gap between designers and developers at theguardian.com
Bridging the gap between designers and developers at theguardian.comBridging the gap between designers and developers at theguardian.com
Bridging the gap between designers and developers at theguardian.com
 
The Language of the Web - HTML and CSS
The Language of the Web - HTML and CSSThe Language of the Web - HTML and CSS
The Language of the Web - HTML and CSS
 
WEB DEVELOPMENT
WEB DEVELOPMENTWEB DEVELOPMENT
WEB DEVELOPMENT
 
Introducing J2ME Polish
Introducing J2ME PolishIntroducing J2ME Polish
Introducing J2ME Polish
 
Shaping Up Theme Roller Beyond Universal Theme
Shaping Up Theme Roller Beyond Universal ThemeShaping Up Theme Roller Beyond Universal Theme
Shaping Up Theme Roller Beyond Universal Theme
 
Creating a CSS and JS design system from the ground up
Creating a CSS and JS design system from the ground upCreating a CSS and JS design system from the ground up
Creating a CSS and JS design system from the ground up
 
WEB and FONTS
WEB and FONTSWEB and FONTS
WEB and FONTS
 
presentation
presentationpresentation
presentation
 
ActiveTM - A Topic Maps - Object Mapper
ActiveTM - A Topic Maps - Object MapperActiveTM - A Topic Maps - Object Mapper
ActiveTM - A Topic Maps - Object Mapper
 
Xuedong Huang - Deep Learning and Intelligent Applications
Xuedong Huang - Deep Learning and Intelligent ApplicationsXuedong Huang - Deep Learning and Intelligent Applications
Xuedong Huang - Deep Learning and Intelligent Applications
 
Design stunning user experience with expression blend
Design stunning user experience with expression blendDesign stunning user experience with expression blend
Design stunning user experience with expression blend
 
Avoiding Checkmate: Strategies for Design Systems - Stephanie Rewis - Codemot...
Avoiding Checkmate: Strategies for Design Systems - Stephanie Rewis - Codemot...Avoiding Checkmate: Strategies for Design Systems - Stephanie Rewis - Codemot...
Avoiding Checkmate: Strategies for Design Systems - Stephanie Rewis - Codemot...
 
Omeka css
Omeka cssOmeka css
Omeka css
 
Managing and Using Assets in Rich Flash Experiences
Managing and Using Assets in Rich Flash ExperiencesManaging and Using Assets in Rich Flash Experiences
Managing and Using Assets in Rich Flash Experiences
 

More from Czech Design Systems Community

More from Czech Design Systems Community (13)

Making Kiwi.com's design system accessible
Making Kiwi.com's design system accessibleMaking Kiwi.com's design system accessible
Making Kiwi.com's design system accessible
 
How we sold design systems to internal team and then to our clients
How we sold design systems to internal team and then to our clientsHow we sold design systems to internal team and then to our clients
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
Exploration of the new visual look for Seznam.cz products and servicesExploration of the new visual look for Seznam.cz products and services
Exploration of the new visual look for Seznam.cz products and services
 
How we handled breaking changes when our design system changed
How we handled breaking changes when our design system changedHow we handled breaking changes when our design system changed
How we handled breaking changes when our design system changed
 
Design Systems Digest – June 2019
Design Systems Digest – June 2019Design Systems Digest – June 2019
Design Systems Digest – June 2019
 
Building strong visual foundations for your design system
Building strong visual foundations for your design systemBuilding strong visual foundations for your design system
Building strong visual foundations for your design system
 
Three pillars of components in the design system
Three pillars of components in the design systemThree pillars of components in the design system
Three pillars of components in the design system
 
CSS for design systems
CSS for design systemsCSS for design systems
CSS for design systems
 
Workshop – UI audit of Mall.cz – May 2019, Brno
Workshop – UI audit of Mall.cz – May 2019, BrnoWorkshop – UI audit of Mall.cz – May 2019, Brno
Workshop – UI audit of Mall.cz – May 2019, Brno
 
Mobile design system in Figma for Kiwi.com
Mobile design system in Figma for Kiwi.comMobile design system in Figma for Kiwi.com
Mobile design system in Figma for Kiwi.com
 
Coding reusable components for MUNI
Coding reusable components for MUNICoding reusable components for MUNI
Coding reusable components for MUNI
 
Design system for new O2 CRM and web apps
Design system for new O2 CRM and web appsDesign system for new O2 CRM and web apps
Design system for new O2 CRM and web apps
 
Component-based Design System and Development - CzechDSC
Component-based Design System and Development - CzechDSCComponent-based Design System and Development - CzechDSC
Component-based Design System and Development - CzechDSC
 

Recently uploaded

一比一原版谢菲尔德大学毕业证成绩单如何办理
一比一原版谢菲尔德大学毕业证成绩单如何办理一比一原版谢菲尔德大学毕业证成绩单如何办理
一比一原版谢菲尔德大学毕业证成绩单如何办理
cyebo
 
Presentation on 3D Printing.pptx presentation
Presentation on 3D Printing.pptx presentationPresentation on 3D Printing.pptx presentation
Presentation on 3D Printing.pptx presentation
ajroy0196
 
Heuristic Evaluation of System & Application
Heuristic Evaluation of System & ApplicationHeuristic Evaluation of System & Application
Heuristic Evaluation of System & Application
Jaime Brown
 
一比一原版格林威治大学毕业证成绩单如何办理
一比一原版格林威治大学毕业证成绩单如何办理一比一原版格林威治大学毕业证成绩单如何办理
一比一原版格林威治大学毕业证成绩单如何办理
cyebo
 
Knowing, Understanding and Planning Cities- Role and Relevance Physical Plan...
Knowing, Understanding and Planning Cities- Role and Relevance  Physical Plan...Knowing, Understanding and Planning Cities- Role and Relevance  Physical Plan...
Knowing, Understanding and Planning Cities- Role and Relevance Physical Plan...
JIT KUMAR GUPTA
 

Recently uploaded (20)

一比一原版谢菲尔德大学毕业证成绩单如何办理
一比一原版谢菲尔德大学毕业证成绩单如何办理一比一原版谢菲尔德大学毕业证成绩单如何办理
一比一原版谢菲尔德大学毕业证成绩单如何办理
 
Design lessons from Singapore | Volume 3
Design lessons from Singapore | Volume 3Design lessons from Singapore | Volume 3
Design lessons from Singapore | Volume 3
 
CADD 141 - BIRD Scooter - Cup Holder Photos.pdf
CADD 141 - BIRD Scooter - Cup Holder Photos.pdfCADD 141 - BIRD Scooter - Cup Holder Photos.pdf
CADD 141 - BIRD Scooter - Cup Holder Photos.pdf
 
Webhost NVME Cloud VPS Hosting1234455678
Webhost NVME Cloud VPS Hosting1234455678Webhost NVME Cloud VPS Hosting1234455678
Webhost NVME Cloud VPS Hosting1234455678
 
Presentation on 3D Printing.pptx presentation
Presentation on 3D Printing.pptx presentationPresentation on 3D Printing.pptx presentation
Presentation on 3D Printing.pptx presentation
 
The Journey of Fashion Designer Sketches - From Concept to Catwalk
The Journey of Fashion Designer Sketches - From Concept to CatwalkThe Journey of Fashion Designer Sketches - From Concept to Catwalk
The Journey of Fashion Designer Sketches - From Concept to Catwalk
 
Heuristic Evaluation of System & Application
Heuristic Evaluation of System & ApplicationHeuristic Evaluation of System & Application
Heuristic Evaluation of System & Application
 
一比一原版格林威治大学毕业证成绩单如何办理
一比一原版格林威治大学毕业证成绩单如何办理一比一原版格林威治大学毕业证成绩单如何办理
一比一原版格林威治大学毕业证成绩单如何办理
 
NO1 Popular kala jadu karne wale ka contact number kala jadu karne wale baba ...
NO1 Popular kala jadu karne wale ka contact number kala jadu karne wale baba ...NO1 Popular kala jadu karne wale ka contact number kala jadu karne wale baba ...
NO1 Popular kala jadu karne wale ka contact number kala jadu karne wale baba ...
 
Naer VR: Advanced Research and Usability Testing Project
Naer VR: Advanced Research and Usability Testing ProjectNaer VR: Advanced Research and Usability Testing Project
Naer VR: Advanced Research and Usability Testing Project
 
Knowing, Understanding and Planning Cities- Role and Relevance Physical Plan...
Knowing, Understanding and Planning Cities- Role and Relevance  Physical Plan...Knowing, Understanding and Planning Cities- Role and Relevance  Physical Plan...
Knowing, Understanding and Planning Cities- Role and Relevance Physical Plan...
 
Heidi Livengood's Professional CADD Portfolio
Heidi Livengood's Professional CADD PortfolioHeidi Livengood's Professional CADD Portfolio
Heidi Livengood's Professional CADD Portfolio
 
Week of Action 2022_EIT Climate-KIC_Headers
Week of Action 2022_EIT Climate-KIC_HeadersWeek of Action 2022_EIT Climate-KIC_Headers
Week of Action 2022_EIT Climate-KIC_Headers
 
Design Portofolios - Licensed Architect / BIM Specialist
Design Portofolios - Licensed Architect / BIM SpecialistDesign Portofolios - Licensed Architect / BIM Specialist
Design Portofolios - Licensed Architect / BIM Specialist
 
Eric Parein CV. Parein in English is best pronounced as PARE-IN
Eric Parein CV. Parein in English is best pronounced as PARE-INEric Parein CV. Parein in English is best pronounced as PARE-IN
Eric Parein CV. Parein in English is best pronounced as PARE-IN
 
Claire's designing portfolio presentation
Claire's designing portfolio presentationClaire's designing portfolio presentation
Claire's designing portfolio presentation
 
Bit Dhrumi shah Graphic Designer portfolio
Bit Dhrumi shah Graphic Designer portfolioBit Dhrumi shah Graphic Designer portfolio
Bit Dhrumi shah Graphic Designer portfolio
 
And that's about to change! (Service Design Drinks Berlin May 2024)
And that's about to change! (Service Design Drinks Berlin May 2024)And that's about to change! (Service Design Drinks Berlin May 2024)
And that's about to change! (Service Design Drinks Berlin May 2024)
 
Spring 2024 wkrm_Enhancing Campus Mobility.pdf
Spring 2024 wkrm_Enhancing Campus Mobility.pdfSpring 2024 wkrm_Enhancing Campus Mobility.pdf
Spring 2024 wkrm_Enhancing Campus Mobility.pdf
 
The Impact of Artificial Intelligence on Modern Healthcare.pptx
The Impact of Artificial Intelligence on Modern Healthcare.pptxThe Impact of Artificial Intelligence on Modern Healthcare.pptx
The Impact of Artificial Intelligence on Modern Healthcare.pptx
 

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