2.7.0 • Published 6 days ago

junto-design-system v2.7.0

Weekly downloads
-
License
MIT
Repository
-
Last release
6 days ago

npm.io

Descrição

NPM

Junto-Design-System é a biblioteca de estilos (padronizados em tokens em Sass) e componentes React criados com o intuito para utilização nos projetos de front-end da Junto Seguros.

Tecnologias

  • TypeScript (v.4.3)

  • React JS (v.17)

  • Sass (SCSS)

Instalação e utilização

Para instalar a biblioteca de estilos e componentes para utilizar no seu projeto React, utilizar o comando:

npm install junto-design-system

OU usando Yarn:

yarn add junto-design-system

Importante: para que se possa utilizar os componentes e os estilos do design system em seu projeto, se faz necessário que o Sass esteja instalado e configurado no projeto.

Utilizando um componente:

Para utilizar um componente, basta realizar a sua importação normalmente via import como no exemplo:

import { Button, Alert, InputBase } from 'junto-design-system';

Utilizando os estilos

Para poder utilizar os estilos e as funcionalidades (tokens, mixins, funções) do junto-design-system, é necessário realizar a importação do arquivo styles.scss dentro do arquivo .scss em que será utilizado da seguinte forma:

@import 'junto-design-system/dist/core/scss/styles.scss';

Componentes

Nesta versão, a biblioteca possui os seguintes componentes:

  • Alert
  • Button
  • Checkbox
  • CheckboxMultiselect
  • CurrencyInput
  • CustomDropdown
  • DateInput
  • Divider
  • Dropdown
  • InputBase
  • LinkButton
  • Modal
  • NumberInput
  • Pagination
  • SearchInput
  • Tabs
  • Tag
  • TagInput
  • TextArea
  • ThemeProvider
  • Toast
  • Toggle
  • Tooltip
  • Skeleton
  • Upload

Observação: Você pode investigar todos os componentes acima, também como as suas propriedades e formas de utilizar por meio do módulo do Storybook.

Sobre os estilos do Design System

SCSS

Os estilos do novo Design System foram concebidos dentro do SASS, com uso do padrão de nomenclaturas BEM para assim facilitar a utilização do design system em projetos independente do framework utilizado, como em landing pages com HTML puro, por exemplo, ou em projetos React/Angular/Vue.

Para contribuir com o projeto e criar novos estilos, lembre sempre de utilizar somente os tokens conforme projetados, e sempre que houver atualização nestes tokens, estas devem ser imediatamente trazidas para os tokens do SASS para evitar problemas e divergências.

Ao utilizar os estilos pelo Sass, lembrar que os mixins devem sempre vir antes, para em casos extremos onde se há a necessidade de sobrescrever alguma regra, a ordem de declaração dos estilos possa ser feita de forma tranquila e sem a necessidade do !important no código.

.btn {
  @include font('base');
  @include padding('m', 'l', 'm', 'l');

  background-color: color('brand-primary');
}

Tokens

Os tokens estão em mapas do SASS, e podem ser encontrados no diretório

.
├─ ...
├─ scss
│  ├─  ...
│  └─ tokens
│     ├─ _breakpoints.scss       # Os breakpoints para responsividade
│     ├─ _colors.scss            # Os tokens de cores
│     ├─ _fonts.scss             # Os tokens de fontes
│     └─ _spacing.scss           # Os tokens de espaçamento
└─ ...

Utilitários

Os utilitários foram criados para poder servir os tokens de forma rápida e que assegure a consistência do Design System. Confira a seguir as funções e mixins implementados para facilitar o uso dos tokens:

Cores

As cores a seguir são as cores definidas no Design System:

TokenHex
color-brand-primary#9000FF
color-brand-secondary#F6EBFF
color-dark#180A33F
color-white#FFFFFFF
color-grey-600#4A5365F
color-grey-500#85909AF
color-grey-400#ACBEC7F
color-grey-300#CFDAE1F
color-grey-200#E0E7ECF
color-grey-100#F1F5F7F
color-success#00A881F
color-warning#FF884DF
color-error#FF4D4DF

Existem duas funcionalidades utilitárias para o uso dos tokens de cores: via função e via mixins.

Para utilizar como função, basta incluir a chamada color({{colorToken}}) em uma propriedade CSS, passando como string o token de cor que será utilizado (sem o prefixo "color-"), como no exemplo a seguir:

.btn {
  background-color: color('brand-primary');
}

Para utilizar como mixin, basta incluí-lo na classe desejada, passando a propriedade CSS que receberá a cor como primeiro argumento e o token de cor desejado (sem o prefixo "color-") como segundo argumento, como no exemplo abaixo:

.btn {
  @include color('background-color', 'brand-primary');
}

/* Retornará o seguinte CSS */
.btn {
  background-color: #9000ff;
}

Esse mixin possui como terceiro argumento opcional o nome de um pseudoelemento (::after, ::before, ::placeholder, etc.). Caso for fornecido, as regras de estilo retornadas apenas serão vistas caso o elemento em questão possua o pseudoelemento informado, como no exemplo:

.input {
  @include color('color', 'success-base', '::placeholder');
}

/* Retornará o seguinte CSS */
.input::placeholder {
  color: #00A881F;
}

Observe que não há necessidade de colocar o prefixo "color-".

Fontes

A seguir estão listadas as fontes definidas no Design System:

TokenFont SizeLine Height
xs-210px12px
xs12px16px
sm14px18px
base16px22px
l20px26px
xl26px34px
xl-238px44px
xl-352px56px
xl-460px64px

Como as declarações de estilos das fontes envolvem não só um valor mas múltiplas propriedades e valores, como font-size, line-height, por exemplo, devemos utilizar o mixin font({{fontToken}}) passando o token da fonte sem o prefixo "font-size-", como mostram os exemplos abaixo:

.btn {
  @include font('base');

  &--sm {
    @include font('s');
  }

  &--lg {
    @include font('l');
  }
}

Atenção: ao aplicar o mixin da fonte, fique atento pois também a família de fontes padrão Metropolis será aplicada ao seu elemento.

Esse mixin, assim como o color, também tem como terceiro argumento opcional o nome de um pseudoelemento (::after, ::before, ::placeholder, etc.). Aqui se aplica o mesmo funcionamento do outro mixin, porém afetando somente os textos, como no exemplo:

.input {
  @include font('sm', '::placeholder');
}

/* Retornará o seguinte CSS */
.input::placeholder {
  font-size: 14px;
  line-heigth: 18px;
  /*...*/
}

Espaçamentos

Os tokens de espaçamentos disponíveis no Design System são os seguintes:

TokenTamanho
xs4px
s8px
m16px
l24px
xl32px
xxl40px
xxl-248px
xxl-356px
xxl-464px
xxl-572px
xxl-680px
xxl-788px
xxl-896px

Os espaçamentos são amplamente utilizados, e para facilitar temos três opções, divididas entre mixins e uma função. São elas: | Tipo | Snippet | Descrição | | -- | -- | -- | | Mixin | @include padding() | Mixing que inclui a propriedade e valores atribuídos ao padding. | | Mixin | @include margin() | Mixing que inclui a propriedade e valores atribuídos às margens. | | Função | spacing() | Função que retorna a unidade do token especificado. |

Os mixins padding() e margin() recebem como parâmetro os valores dos quatro lados de um elemento, seguindo a ordem do CSS: topo, direita, baixo, esquerda. Veja o exemplo abaixo para entender melhor:

.button {
  @include padding('s', 'm', 's', 'm');
}

// retorna
.button {
  padding-top: 8px;
  padding-right: 16px;
  padding-bottom: 8px;
  padding-left: 16px;
}

Breakpoints (responsivo)

Os breakpoints são bem simples, em uma media query @media você pode utilizar o mixin media() passando como parâmetro a sigla de um dos brakpoints, conforme a tabela abaixo:

TokenLargura da tela
xs576px
md768px
lg992px
xl1200px

Temas

O módulo junto-design-system possui a funcionalidade de troca de temas, que afetam o visual de todos os componentes que forem renderizados dentro da árvore de um <ThemeProvider />. Este componente recebe como propriedade o tema desejado sendo os seguintes valores possíveis:

  • default
  • marsh

Os temas também podem ser utilizados a nível de estilos (via Sass) apenas. Os principais mixins disponíveis (font, color, border, box-shadow, rounded) irão retornar, além da regra de estilos no tema padrão, uma classe extra para cada tema, com o nome de cada, para serem incluidas na utilização em elementos JSX diretamente pela propriedade className, em conjunto com as demais classes do elemento. Exemplo: ao usar qualquer um dos mixins citados acima em uma classe .container, caso seja incluída uma classe com o nome de um tema (ex: .marsh), as regras de estilos padrão serão sobreescritas pelas regras de estilos do tema 'marsh'.

2.6.0

7 days ago

2.7.0

6 days ago

2.4.1

2 months ago

2.4.0

4 months ago

2.3.7

5 months ago

2.3.6

5 months ago

2.3.0

6 months ago

2.3.2

6 months ago

2.3.1

6 months ago

2.3.4

5 months ago

2.3.3

6 months ago

2.3.5

5 months ago

2.2.0

12 months ago

2.0.1

12 months ago

2.0.0

12 months ago

2.1.0

12 months ago

1.22.1

1 year ago

1.22.2

1 year ago

1.18.0

1 year ago

1.16.0

1 year ago

1.21.0

1 year ago

1.15.0

1 year ago

1.19.0

1 year ago

1.17.0

1 year ago

1.19.4

1 year ago

1.19.3

1 year ago

1.19.2

1 year ago

1.19.1

1 year ago

1.19.5

1 year ago

1.22.0

1 year ago

1.20.0

1 year ago

1.14.1

1 year ago

1.13.2

1 year ago

1.14.0

1 year ago

1.13.1

2 years ago

1.13.0

2 years ago

1.12.1

2 years ago

1.12.0

2 years ago

1.8.2

2 years ago

1.9.0

2 years ago

1.8.1

2 years ago

1.8.0

2 years ago

1.7.0

2 years ago

1.6.6

2 years ago

1.11.0

2 years ago

1.10.0

2 years ago

1.6.4

2 years ago

1.6.3

2 years ago

1.6.5

2 years ago

1.6.2

2 years ago

1.6.1

2 years ago

1.5.2

2 years ago

1.6.0

2 years ago

1.5.1

2 years ago

1.5.0

2 years ago

1.4.1

2 years ago

1.4.0

2 years ago

1.2.0

2 years ago

1.3.0

2 years ago

1.1.12

3 years ago

1.1.11

3 years ago

1.1.10

3 years ago

1.1.9

3 years ago

1.1.8

3 years ago

1.1.7

3 years ago

1.1.6

3 years ago

1.1.5

3 years ago

1.1.4

3 years ago

1.1.3

3 years ago

1.1.2

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.0

3 years ago