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

@zydon/common

v2.2.11

Published

## Instalação no seu projeto

Downloads

3,207

Readme

Design system da Zydon

Instalação no seu projeto

  • instalação pacote: yarn add @zydon/common
  • instalação dependências necessárias: yarn add @emotion/react @emotion/styled @mui/lab @mui/material @mui/x-data-grid-premium @mui/x-date-pickers-pro @mui/x-license-pro react-hook-form

Configuração @zydon/common

Basta fazer a seguinte configuração no arquivo main.ts:

import React from 'react';
import { LicenseInfo } from '@mui/x-license-pro';
import { Common } from '@zydon/common';
import ReactDOM from 'react-dom/client';

import '@zydon/common/styles.css';

import App from './App';

LicenseInfo.setLicenseKey(import.meta.env.VITE_MUI_PREMIUM_KEY);

ReactDOM.createRoot(document.getElementById('root')!).render(
  <React.StrictMode>
    <Common themeColor="cor_hexadecimal_aqui">
      <App />
    </Common>
  </React.StrictMode>,
);

Recursos disponíveis

Esse pacote tem os seguintes recursos disponiveis (components, hooks, utils e types):

Componentes

  • animate: recursos construídos utilizando framer-motion
  • Autocomplete: componente dropdown de seleção única/múltipla
  • ColorPickerInput: componente de seleção de cor
  • Common: componente wrapper/provider que faz esse pacote funcionar
  • CommonSSR: componente wrapper/provider que faz esse pacote funcionar em aplicações NextJS (SSR)
  • ConfirmDelete: mensagem de confirmação de exclusão
  • CustomAvatar e CustomAvatarGroup: avatares customizados
  • DataGrid: componente de tabela construido em cima do MUI-Datagrid
  • Delayed: componente que renderiza um children com um delay
  • Drawer: componente Drawer construido em cima do MUI-Drawer
  • FixedProgressBar: barra de progresso de loading que é apresentado fixo no topo da tela
  • Iconify: componente de ícones SVG construido em cima do @iconify/react
  • Incrementer: input numérico com botões laterais para incrementar/decrementar o valor
  • ImageCrop: componente para cortar imagens
  • Label: componente que renderiza uma tag bonitinha
  • MaskedInput: input com máscara. Util para campos como CPF, CNPJ, Telefone
  • MenuPopover: menu flutuante com setinha apontado para um ponto escolhido
  • Modal: componente de modal
  • NumberInput: input que aceita somente números
  • Portal: componente que renderiza o children em outro local desejado React Portals
  • Scrollbar: Scrollbar bonitinha construido em cima do simplebar-react
  • SearchInput: componente para busca/filtros. Funciona com onChange e como click na tecla enter
  • snackbar: componente para mostrar mensagens [sucesso | alerta | informação | erro] para o usuário
const { enqueueSnackbar } = useSnackbar();
enqueueSnackbar('Mensagem', { variant: 'error' });
  • Steps: componente que indica etapas e o progresso. Construido em cima do MUI-Stepper
  • TabPanel: componente para renderizar o conteúdos de uma Tab. Todas as tabs são rendreziadas, mas somente o conteúdo da Tab ativa será exibido
  • ThemeProvider: wrapper/provider para configuração do tema. (Provavelmente vc nunca vai precisar usá-lo, já que ele já está includo no component <Common />)
  • upload (Upload, UploadAvatar, UplaodBox e UploadWithCrop): componentes para uploads de arquivos

Componentes de formulário (react-hook-form)

  • Form: componente de formulário construido em cima do react-hook-form. (Todos os componentes abaixo funcionam somente dentro desse componente:) <Form />
  • Autocomplete: componente dropdown de seleção única/múltipla
  • Checkbox / MultiCheckbox: caixa seleção
  • Codes: campos para inserção de código. Ex: código recebido por e-email
  • ColorPicker: componente de seleção de cor
  • DatePicker: componente de seleção de data. Construido em cima do MUI-DatePicker
  • DateRangePicker: componente de seleção de intervalo de data. Construido em cima do MUI-DateRangePicker
  • DateTimePicker: componente de seleção de data e hora. Construido em cima do MUI-DateTimePicker
  • Field: componente de inserção de texto. Construido em cima do MUI-TextField
  • MaskedInput: componente de input com máscara. Util para campos como CPF, CNPJ, Telefone
  • Password: componente para inserção de senha com um olhinho para visualização da senha no canto direito.
  • RadioGroup: componente de seleção única. Construido em cima do MUI-RadioGroup
  • Switch: componente de ativação/desativação. Construido em cima do MUI-Switch
  • TimePicker: componente de seleção hora. Construido em cima do MUI-TimePicker
  • UploadWithCrop: componente para upload/crop de imagem
  • UploadAvatarWithCrop: componente para upload/crop de avatar
  • Webhook: componente criação e edição de um webhook, necessário estar envolvido de um form
  • MultipleChip: componente de texto que permite adicionar multiplas opçoes em formato de chip

Utils

  • file: utils para lidar com arquivos (downloadFile)
  • formatNumber: utils para formatar números (fNumber, fCurrency, fPercent, fShortenNumber, fData result, fWithDecimalPlacesOrNot)
  • formatTime: utils para lidar com datas (fDate, fDateTime format, fTimestamp, fToNow) (Construido utilizando date-fns)
  • cssStyles: utils para lidar com estilos CSS (bgBlur, bgGradient, textGradient, filterStyles, hideScrollbarY, hideScrollbarX)
  • routes: utils para lidar com rotas (getRoot)
  • sort: utils para lidar com ordenação de arrys de objetos (sort, updatePosition)
  • validators: utils para validação de dados (cpfIsValid, cnpjIsValid)
  • number: utils para lidar com números (isMultiple, roundIfNecessary)
  • uuidv4: utils para gerar um UUID v4
  • loadable: util para utilizar com code split. Ele irá carregar o compomente e exibirá um loading fixo no topo da tela
  • mask: utils para aplicação de máscaras em strings (applyMask, cpfMask, cnpjMask, cepMask, phoneMask)

Hooks

  • useActiveElement: hook que indicar qual compnente (input, button, etc.) está com foco ativo
  • useCopyToClipboard: hook para copiar algum texto para a área de transferência. Equivalente a ctrl+c
  • useDatagrid: hook com recursos utéis para serem usados por um <Datagrid />
  • useDeepCompareEffect: hook semelhante ao useEffect do React, mas que lida melhor com objetos complexos
  • useEventListener: hook para lidar com eventos JavaScript
  • useIsMounting: hook que retorna um booleano indicando se é a primeira renderezição do componente
  • useResponsive: hook que retorna qual a media-query está ativa (xs, sm, md, lg, xl)
  • useTabs: hook com recursos utéis para lidar com tabs (currentTab, onChangeTab, setCurrentTab)
  • useToggle: hook que alterna o estado que uma variável boolean. Ex:
const [detailsOpen, toggleDetailsOpen] = useToggle(true);
  • usePagination: hook para paginar dados de um array (currentPage, totalPages, currentItems, goToPage, nextPage, prevPage,): Ex:
const { currentItems, totalPages, goToPage } = usePagination({
    items,
    itemsPerPage: 5,
  });

Types

  • PagedRequest interface para tipar requisições paginadas. Ex: PagedRequest<{userId: string}> (agora o userId também vai estar disponivel no objeto)
export type PagedRequest<T = unknown> = T & {
  search?: string;
  page?: number;
  perPage?: number;
  sort?: string;
  dir?: 'asc' | 'desc';
};
  • PagedResponse interface para tipar respostas paginadas. Ex: PagedResponse<User[]> (agora sabemos que no 'items' temos um array de usuários)
export interface PagedResponse<T> {
  currentPage: number;
  perPage: number;
  total: number;
  items: T;
}
  • ListResponse interface para tipar listas com uma prop contendo o total de itens da lista. Ex: ListResponse<User[]> (agora sabemos que no 'items' temos um array de usuários)
export interface ListResponse<T> {
  total: number;
  items: T;
}

Como fazer implementações/correções nesse pacote?

Para realizar implementações ou correções neste pacote, siga os passos abaixo:

  • Clone o repositório: Faça um clone do repositório do projeto na sua máquina local.
  • Crie uma branch: Crie uma nova branch para suas alterações. Isso mantém o trabalho organizado e facilita a revisão do código.
  • Realize as implementações/correções: Faça as modificações necessárias no código. Certifique-se de seguir as práticas de codificação estabelecidas no projeto.
  • Teste localmente: Para testar suas alterações, execute os seguintes comandos no diretório do projeto: yarn build para construir o pacote. npm link para criar um link simbólico do pacote na sua máquina.
  • Teste em um projeto separado: Em outro projeto local, use o comando npm link @zydon/common-csr para conectar o pacote localmente e verificar se as alterações funcionam conforme o esperado.

Dica: Você pode utilizar o componente App.tsx para testar suas implementações/correções de forma prática

  • Suba suas alterações: Após testar e validar as mudanças, faça o push da sua branch para o repositório remoto.
  • Solicite um merge: Abra um pull request para a branch main. Após a revisão e aprovação, as mudanças serão mescladas.
  • Publicação automática: As alterações aprovadas serão publicadas automaticamente no npm após alguns minutos.