Design System Deep Dive
Olex Ponomarenko
Presented 2025-03-10
Eng Manager: "We are partway through a migration from MUI to Chakra, what's the status? Can we gain some velocity by closing it out?"
Introductory conversations with designers:
- Kevin (Lead designer): "Mobile and Web design are using separate components in Figma, but we are currently working on converging"
- Other folks: "We often find mismatches between Figma intent and web" incl. "things drift after getting shipped"
- 4-5 Vertical squads
- 1 "platform squad" with devopsy eng, myself, and a mobile contractor
- This specific DS effort was ~ 1/2 of my time
- Kevin (design lead) was responsible / accountable to the design work, and had a lot of ongoing product work as well
- JPMC was doing a large-scale Accessibility audit of The Infatuation, with vague timelines
- Effort kicks off as Design System V1 with myself and Kevin as owners. Started a weekly project check-in that continues to this day as Design Systems Monthly
- Code had many different "H4", plus bad use of html tags (a11y)
- Figma had doubles of H2, H3, H4 styles
secondary: {
pink: '#FD6FCE',
pink700: '#ff8eda',
orange: '#FC9B21',
yellow: '#FFE34C',
yellow700: '#ffec87',
green: '#2DC791',
green700: '#7ddbba',
lightBlue: '#87D7FF',
blue: '#87D7FF',
blue100: '#0E54BC',
blue500: '#4DA1F7',
transparent: 'transparent',
},
neutral: {
almostBlack: '#181818',
grey200: '#B8B8B8',
dark: '#181818',
white: '#FFFFFF',
100: '#EBECF0',
200: '#999999',
300: '#757575',
},
~20 variables omitted (DSv1)
$blue100: #0e54bc;
$blue300: #136aed;
$blue500: $blue40;
$blue700: #87d7ff;
$neutral-blue100: $coolgray100;
$neutral-blue300: #344563;
$neutral-blue400: #42526e;
$neutral-blue500: $coolgray60;
$neutral-blue600: #5e6c84;
$neutral-blue700: #6b778c;
$neutral-blue900: #8993a4;
$neutral-blue1000: $coolgray40;
$neutral-blue1100: #a5adba;
$neutral-blue1200: #b3bac5;
$neutral-blue1300: #c1c7d0;
$neutral-blue1400: $coolgray20;
$neutral-blue1500: #ebecf0;
$neutral-blue1600: #f4f5f7;
$neutral-blue1700: $coolgray10;
$neutral-grey300: #757575;
"New" Chakra code:
neutralBlue: {
100: '#091E42',
200: '#8993A4',
300: '#B3BAC5',
400: '#091E42',
700: '#6B778C',
1000: '#97A0AF',
1700: '#FAFBFC',
},
semantic: {
error: '#BF2600',
success: '#006644',
information: '#0747A6',
},
Custom CSS:
+ MUI color scheme...
+ one-offs
ack --ignore-file="ext:snap" --ignore-file="ext:svg" --match "(#[0-9a-f]{6}|(?:rgba?|hsla?)\((?:\d+%?(?:deg|rad|grad|turn)?(?:,|\s)+){2,3}[\s\/]*[\d\.]+%?\))" --output="$&" --no-filename | sort | uniq
"What are all the hex, rgba, hsla colors mentioned in this web, app?
BEFORE
AFTER
30+ styles defined in Figma, many more in code
Similar process to colors:
* - specific combos of (font X weight X letter-spacing X etc)
One of two galleries to drive size + letter-spacing conversations; this one for smallest "caption" size. Used core component to show responsive issues; and present potential solutions:
- Slack communications
- Synchronous meeting with in-depth walkthrough of design-engineering rationale, video recorded
- Documentation with first PRs that introduce variants
olex.pono@gmail.com