Code Monkey home page Code Monkey logo

saturn's Introduction

Saturn

Repositório de componentes React baseado no design system da Nave.

stability-wip NPM JavaScript Style Guide PRs Welcome ci All Contributors

❗️ Motivação

Diversas vezes precisamos prototipar rapidamente novas aplicações e sempre precisamos recorrer à libs de componentes de layout como Material UI ou Ant Design.

A criação de um design system próprio pode aumentar a familiaridade da equipe com determinado padrão de código, fazendo com que gradativamente esses protótipos sejam criados de forma mais rápida e homogênea, abstraindo a necessidade de se preocupar com o layout que a aplicação terá.

🛠 Tecnologias utilizadas

Baseamos nosso desenvolvimento em:

🚀 Instalação

No terminal, execute

yarn add @naveteam/saturn
// ou npm install @naveteam/saturn

💡 Utilização

Com a lib instalada, o seguinte código já é o suficiente para iniciar o desenvolvimento da aplicação

import React from 'react'
import ReactDOM from 'react-dom'
import { ThemeProvider, TextField } from '@naveteam/saturn'

const App = () => {
  return (
    <SaturnProvider>
      <TextField name='base' label='Label' message='Message' placeholder='Placeholder' />
    </SaturnProvider>
  )
}

ReactDOM.render(<App />, document.getElementById('root'))

Você pode encontrar em nosso Storybook a documentação necessária de todos os componentes disponíveis no projeto.

🤝 Contribuição

Sinta-se livre para contribuir com o projeto, criando novos componentes, abrindo PRs para ajustar bugs ou mesmo levantando dúvidas, sugestões ou pedidos de ajustes através de issues. Para contribuir com nosso projeto, por favor siga nosso guia de CONTRIBUTING.

📚 Links úteis

  • Figma: Onde todo o design do projeto se encontra
  • Chromatic: Local onde ocorre a revisão dos componentes pelo time de degisn
  • NPM: Acesso ao pacote NPM do projeto
  • Github: Repositório da lib
  • Storybook: Página com o projeto mais atualizado para referência
  • Miro: Resumo do Workflow de desenvolvimento de um componente
  • Roadmap: Link do projeto do GitHub com o andamento do desenvolvimento

🐛 Bugs Conhecidos

O Storybook não renderiza PropTypes passadas dinamicamente para meu componente

Isso é uma limitação do Addon do Storybook responsável por criar a tela de Docs. Esse comportamento já foi reportado e existe uma issue aberta para tratar essa questão aqui. Enquanto esse problema não é resolvido, você pode declarar as PropTypes do Styled System de forma estática, ou informar na descrição do componente quais módulos do Design System estão importados no componente.

Contribuidores ✨

Obrigado a essas maravilhosas pessoas que contribuíram de alguma maneira para o desenvolvimento da lib (emoji key):


Eduardo Bittencourt

📖 💻 🤔 🚧 👀 🐛 💡 🚇 📢

Daniel Pôrto Nuñez

💻 🐛 📖 💡 🤔 🚧 👀 🔬 📆

Matheus Figueiredo

💻 🤔 🚧 👀

Gabriel Do Couto Santos

📖

Caio Silva

🐛 📖 🖋

Thiago Nunes Batista

💻 📖 💡

Rafael Schumacher

💻 📖 💡 👀

Juliano Reis

👀

Ítalo Nolasco

💻 🚧 📢 📆 👀 💡 🤔

Matheus Cruz

💻 📖 💡 🚧 👀 💼 🤔 📆 📢 🚇 🔬 🐛

Vítor Tavares

💻 🚧 👀 📖

Mariana Coelho

💻 📖

Eduarda Eisfeld Conde

💻 📖

João Pedro Bretanha

💻 📖 🤔 🚧 🐛

Glauber Brack

💻 🚧 🐛

Giuliane

🚧 🐛

Igor Casconi de Oliveira

💻 📖 👀 📆 🚧 🔬 🤔 🐛

Gustavo Pinho

💻 📖 👀 🚧 🤔 🐛

Ricky Almeida

👀

Gabriel Oliveira Carrilhos

💻 🚧 👀

Gabriel Ribeiro

💻 🚧 👀

William Porto

💻 🚧 👀

Samanta Tessmer

💻 🚧 👀

Felipe Frantz Zanini

💻 🚧 👀

Yuri Farnesio

💻 🚧 🐛

Matheus do É Santos

💻 🚧 🐛

Esse projeto segue a especificação de all-contributors. Qualquer tipo de contribuição será bem-vinda!

Licença

MIT © Nave Team

saturn's People

Contributors

allcontributors[bot] avatar caaiosb avatar carrilhos avatar coelhomariana avatar cristianojr9 avatar dependabot[bot] avatar devsiso avatar dpnunez avatar eduardaconde avatar eduardobittencourt avatar ffzanini avatar gcdpinho avatar ghblue avatar giulianeoliveira avatar glauberbrack avatar igorcasconi avatar italonolasco avatar jpbretanha avatar julianoddreis avatar matheusdoedev avatar matheusdoenave avatar mathfigue avatar rbschumacher avatar tessmer avatar thaua97 avatar thiagonunesbatista avatar vitorwtavares avatar yurifarnesio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

saturn's Issues

[Componente] Input

[Core] Input com todos os estados e possibilidade de adicionar prefixo e sufixo

[Componente] Paginação

Comportamento Esperado: O comportamento completo do componente está disponível na Documentação

Critérios de Aceite:

O componente está seguindo os padrões de design definidos no Figma do projeto;

O componente está seguindo os padrões de código definidos pelo Nave Guides;

O componente precisa utilizar as propriedades definidas na Descrição do Componente;

Descrição do Componente:

Esse componente geralmente andará junto com o componente de tabela, mas pode ser aplicado também em páginas completas ou qualquer outra estrutura que receba uma paginação. A ideia do componente Pagination é entender (juntamente com o back-end) como a paginação é retornada por padrão pelo boilerplate de back da Nave e fazer com que o controle de paginação no front seja condizente com esse padrão. Ele vai possuir duas variants, uma apenas com botões com a numeração das páginas e outra com um input onde o usuário pode digitar a página que ele quiser

Propriedades necessárias para definição do componente: As seguintes props devem existir no componente

page

pageSize

onPageChange

onPageSizeChange

variant

[Componente] Link

Comportamento Esperado: O comportamento completo do componente está disponível na Documentação

Critérios de Aceite:

O componente está seguindo os padrões de design definidos no Figma do projeto;

O componente está seguindo os padrões de código definidos pelo Nave Guides;

O componente precisa utilizar as propriedades definidas na Descrição do Componente;

Descrição do Componente:

O componente de Link é uma das variações do componente de Typography, com um grande diferencial: ele precisa ser utilizado com qualquer tipo de link, seja ele um a, ou um Link do Gatsby ou do Next. Pra isso, o importante é criarmos a estilização desse componente dentro do Design System, e passarmos qual componente deve ser renderizado com essa estilização. Para isso, teremos:

Propriedades necessárias para definição do componente: As seguintes props devem existir no componente

component: Essa prop receberá o componente que deve ser renderizado (por exemplo, o Link do Gatsby). Por default, o link renderizado será uma tag a, mas caso ele receba algum componente nessa prop, o comportamento deverá ser sobrescrito.

path: A prop path definirá para onde o link deve redirecionar (similar ao href da tag a e ao to do componente Link).

propPath: Essa prop será necessária para que o componente saiba qual propriedade deve receber o valor de path. (para a tag a, o valor de propPath deve ser href, por exemplo, indicando que o valor que for passado para path será aplicado em href ao final da criação do componente).

Por se tratar de uma variação do componente Typography, é importante que as demais props de estilização sejam passadas adiante para ele, para que todas as mudanças de tamanho de fonte, cor, e etc. sejam aplicadas

[component] Label + Text

Feature
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Create Label + Text component

Figma

[docs] Add documentation for more props in the Select component

Foram adicionadas algumas props no componente de select que não foram documentadas no storybook. É importante que se mantenha a documentação atualizada para que os próximos devs que forem usar o saturn terem noção do poder do componente. Atualmente ele está recebendo as seguintes props:

{
      clearValue,
      onClearSelect,
      name,
      label,
      options,
      optionLabel,
      optionValue,
      onOptionSelected,
      placeholder,
      caption,
      error,
      disabled,
      quiet,
      defaultValue,
      resetValue,
}

O que está documentado é:

image

É necessário que seja adicionado as novas props e que também seja documentado com um exemplo e descrição a funcionalidade de cada uma.

Inconsistência no README.md

Descrição da inconsistência
Saturn não possuí mais o elemento Input, o mesmo é TextField, e no README.md está alegando que deve ser utilizado o Input

Para reproduzir
Siga as etapas a seguir:

  1. Vá até o README.md
  2. Observe o código e veja a inconsistência

Resultado esperado
Que o README.md oriente a usar o TextField.

[Componente] Attachment

Comportamento Esperado: O comportamento completo do componente está disponível na Documentação

Critérios de Aceite:

O componente está seguindo os padrões de design definidos no Figma do projeto;

O componente está seguindo os padrões de código definidos pelo Nave Guides;

O componente precisa utilizar as propriedades definidas na Descrição do Componente;

Descrição do Componente:

Propriedades necessárias para definição do componente: As seguintes props devem existir no componente

  • name
  • link
  • onDownload
  • onView
  • onDelete
  • file
  • backgroundColor
  • error: responsável pela cor vermelha do texto
  • variant

Pontos importantes a serem destacados:

  • Não necessita do tooltip de erro
  • Não necessita da variação de loading

O campo de file é opcional. Caso ele seja passado, usar o file.name e o size baseado nesse arquivo

Definição das variações no Storybook: As seguintes variantes do componente devem estar documentadas no Storybook

  • Variação com file
  • Variação sem file
  • Variação com file e error
  • Variação sem file error

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.