npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

junto-design-system

v2.7.3

Published

Design system Junto Seguros

Downloads

461

Readme

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:

| Token | Hex | | --------------------- | -------- | | 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:

| Token | Font Size | Line Height | | ----- | --------- | ----------- | | xs-2 | 10px | 12px | | xs | 12px | 16px | | sm | 14px | 18px | | base | 16px | 22px | | l | 20px | 26px | | xl | 26px | 34px | | xl-2 | 38px | 44px | | xl-3 | 52px | 56px | | xl-4 | 60px | 64px |

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:

| Token | Tamanho | | ----- | ------- | | xs | 4px | | s | 8px | | m | 16px | | l | 24px | | xl | 32px | | xxl | 40px | | xxl-2 | 48px | | xxl-3 | 56px | | xxl-4 | 64px | | xxl-5 | 72px | | xxl-6 | 80px | | xxl-7 | 88px | | xxl-8 | 96px |

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:

| Token | Largura da tela | | ----- | --------------- | | xs | 576px | | md | 768px | | lg | 992px | | xl | 1200px |

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'.