Qual é o icone certo para "compartilhar"?
Android Material Design
iOS
We all think about the world in different ways...
which leads to inconsistent user interfaces.
@emmawedekind
Todos pensamos no mundo de maneiras diferentes ...
o que leva a interfaces de usuário inconsistentes.
Design system?
Design Language
Livraria de componentes
Eu preciso de um design system?
Eu preciso de um design system?
Como criar um design system?
Como criar um design system?
Como implementar um style guide?
Descobertabilidade (discoverability)
Documentação
Isolamento
Organização
Design legal 💅
MDX support: muito simples de escrever documentação
Legal para documentação, menos como "playground"
Mais popular, time e comunidade grande
Playground totalmente isolado para desenvolver os componentes
UI nao muito flexivel,
pessimo para documentaçao (mas ta chegando!)
Descobertabilidade (discoverability)
Documentação
Isolamento
Organização
atoms/Heading.js
atoms/Text.js
atoms/Button.js
atoms/Icon.js
atoms/Image.js
🤔
Componentes basicos para criar outros componentes.
Todos os componentes começam com um primitivo.
fonte: https://rebassjs.org/
fonte: https://reakit.io/
Qualquer organização de componentes que você escolhe, o importante é a consistência.
Observe o design!
Começa simples.
Reorganiza depois (refactoring).
"Refactor-driven development"
Make it work, then make it better.
CSS Reset
ul[class], ol[class] { padding: 0; }
body, h1, h2, h3, h4, p, ul[class], ol[class], li, figure, figcaption, blockquote, dl, dd { margin: 0; }
CSS Reset
Atomic CSS,
Componente primitivo <Box />
const Header = props => <header style={{ marginBottom: "30px", padding: "0 30px" }} > <div className="inner"> <Link to="/"> <Logo className="logo" /> </Link> <Nav /> </div> </header>
👎
<body> <Box marginBottom="30px" padding="0 30px"> <Header /> </Box> <Content> // some content </Content> </body>
🤙
Menos encaixamento (nesting) possivel
Deixa o controle no usuario (nesse caso, o desenvolvedor) do ordem dos componentes
Deixa as props passar pelo componente filho
className e style props permitem uso de customizaçao de estilo
Design tokens
System UI Theme Specification
Theming
Variaveis do style-guide para usar no codigo
Standarizaçao da organizaçao dos design tokens.
Livraria CSS-in-JS:
Styled Components, Emotion e o ThemeProvider
Livraria CSS-in-JS:
Styled Components, Emotion e o ThemeProvider
Styled-System, Xstyled, ThemeUI:
Personalizaçao do estilo controlado.