Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IJS Munich - Design systems from a developer point of view

IJS Munich - Design systems from a developer point of view

Yael Balla

October 22, 2019
Tweet

More Decks by Yael Balla

Other Decks in Programming

Transcript

  1. Hello! I am Yael Balla You can find me at

    [email protected] www.linkedin.com/in/yael-oshri-balla-6b56686 2
  2. Agenda - The concept behind design systems - The steps

    for implementing a design system - What’s next? 6
  3. “ the complete set of design standards, documentation, and principles

    along with the toolkit (UI patterns and code components) to achieve those standards 7 https://www.uxpin.com/studio/blog/design-systems-vs-pattern-libraries-vs-style-guides-whats-difference/
  4. “ Before this ... Designers and developers were trying their

    best to make good decisions about which components or patterns to use, but their main reference point was the existing product — which was decidedly inconsistent. Giorgio Lefeber, Xebia Studio
  5. Design Systems Examples ▪ Salesforce - Lightning ▪ IBM -

    Carbon ▪ Google - Material Design ▪ Shopify - Polaris And many others… https:/ /designsystemsrepo.com/design-systems/ 10
  6. 1. Create Alignment 2. Scope the project 3. Define Building

    Blocks 4. Implement the UI components 5. Share across the organization Steps for implementing a design system
  7. Meaningful CSS Variables My green -> success My grey ->

    body font color $color-pink: #f36; $color-green: #09baa6; $color-yellow: #ffb631; $color-gray: #dee0e4; $color-success: $color-green; $color-warning: $color-yellow; $color-brand: $color-pink;
  8. Meaningful CSS Variables $xxs: 4px; $xs: 8px; $s: 16px; $m:

    24px; $l: 32px; $xl: 48px; $xxl: 64px;
  9. Utilities CSS classes $sizes: (xxs:$xxs, xs:$xs, s:$s, m:$m, l:$l, xl:$xl,

    xxl:$xxl); @each $size, $value in $sizes { .u-m-#{$size} { margin: #{$value}; } .u-m-#{$size} { margin: #{$value}; } .u-mt-#{$size} { margin-top: #{$value}; } .u-mr-#{$size} { margin-right: #{$value}; } .u-mb-#{$size} { margin-bottom: #{$value}; } .u-ml-#{$size} { margin-left: #{$value}; } .u-mx-#{$size} { margin-left: #{$value}; margin-right: #{$value}; } .u-my-#{$size} { margin-top: #{$value}; margin-bottom: #{$value}; } ...
  10. Styled System import styled from '@emotion/styled' import { typography, space,

    color } from 'styled-system' const Box = styled('div')( typography, space, color )
  11. If you choose to use an existing components implementation Make

    sure to: - Find the one that best match your design - Put all the customization in one place
  12. If you choose to create a new library You probably

    still don’t have to start from scratch -> - Seperate Your Visual Layer - Combine standalone components implementations - Have an abstraction so you can control what is being used
  13. Who are the users? 1. Developers 2. Designers 3. Product

    \ Technical writers \ any other person
  14. webpack.config.js module.exports = { … output: { path: path.resolve(__dirname, './dist/lib'),

    filename: 'index.js', library: 'MyDesignSystem', libraryTarget: 'commonjs' },
  15. Version Management with semantic-release package, releases are handled by commit

    messages. Examples: “fix(button): change over color“ => Patch Release “major(button): change property name“ => Major Release And you can also integrate it into your CI...
  16. Code as source of truth Convert React to sketch https:/

    /github.com/airbnb/react-sketchapp Convert HTML to sketch https:/ /github.com/brainly/html-sketchapp
  17. Storybook is a UI component development environment Allows you to

    define ‘stories’ for your components Generate static website with live components https:/ /storybook-design-system.netlify.com/?path=/docs/design-system-intro--page
  18. What is a story? Each story represent one state of

    the component ▪ Render one component with different props ▪ Combine it with other components ▪ Build a form
  19. ✓ Create Alignment ✓ Scope the project ✓ Define Building

    Blocks ✓ Implement the UI components ✓ Share across the organization What is next? We implemented a design system!
  20. Design Ops Tools for design, collaboration, developer hands off Assets

    management Training and onboarding Research & user testing
  21. To recap - The concept behind design systems - The

    steps for implementing a design system - Create Alignment - Scope the project - Define Building Blocks - Implement the UI components - Share across the organization - What’s next?
  22. Useful links ▪ Design Systems: ▫ https:/ /www.carbondesignsystem.com ▫ https:/

    /www.lightningdesignsystem.com ▫ https:/ /material.io/design/introduction/# ▪ Extra reading: ▫ https:/ /uxdesign.cc/can-design-systems-fix-the-relationship-between-designers-developers-eb12fc9329ab ▫ https:/ /medium.com/@nthgergo/lessons-learned-from-working-on-a-design-system-as-an-engineering-mana ger-2f199cd4aac2 ▫ http:/ /bradfrost.com/blog/post/atomic-web-design/ ▫ https:/ /www.designbetter.co/design-systems-handbook/introducing-design-systems ▫ https:/ /medium.com/amplify-design/operationalizing-design-operations-7846a23bc99b ▫ https:/ /medium.com/storybookjs/introducing-storybook-design-system-23fd9b1ac3c0 69