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 🙏

© 2026 – Pkg Stats / Ryan Hefner

nemesischart

v2.0.5

Published

Lib de componentes Vue 3 para charts usando Chart.js, PrimeVue e PrimeFlex

Readme

NemesisChart

Biblioteca de componentes Vue 3 para construção rápida de cards e dashboards com gráficos, construída sobre Chart.js, PrimeVue e PrimeFlex.

Todos os componentes seguem o mesmo padrão: um cartão (Card*) que exibe legenda, sublegenda, valor de destaque, descrição e o gráfico correspondente — com suporte a temas claro/escuro, formatação automática de valores e exportação como imagem.


Sumário


Instalação

npm install nemesischart chart.js primevue primeflex primeicons

vue, chart.js, primevue e primeflex são peer-deps do bundle de lib.

Uso rápido

Como plugin

import { createApp } from 'vue'
import PrimeVue from 'primevue/config'
import NemesisChart from 'nemesischart'
import 'nemesischart/style.css'

import 'primevue/resources/themes/lara-light-blue/theme.css'
import 'primeicons/primeicons.css'
import 'primeflex/primeflex.css'

import App from './App.vue'

createApp(App)
  .use(PrimeVue)
  .use(NemesisChart)
  .mount('#app')

Importação pontual

<script setup>
import { CardLinhas } from 'nemesischart'

const data = [
  { rotulo: 'Jan', quantidade: 1200 },
  { rotulo: 'Fev', quantidade: 2800 },
  { rotulo: 'Mar', quantidade: 3200 },
]
</script>

<template>
  <CardLinhas
    legenda="Faturamento"
    sublegenda="2026"
    titulo="R$ 7.2k"
    descricao="acumulado"
    tipoValor="moeda"
    :data="data"
  />
</template>

Estrutura de dados

Todos os cards recebem uma prop data no formato:

[
  { rotulo: 'Jan', quantidade: 1200 },
  { rotulo: 'Fev', quantidade: 2800 },
]
  • rotulo (string): o nome exibido no eixo / legenda.
  • quantidade (number): o valor.

Variações específicas por componente:

| Componente | Extras | |---|---| | CardProgresso | meta, modo, valor_referencia, cor por item. Ver seção CardProgresso. | | CardLinhas / CardBarra | aceitam series: [{ nome, data: [...], cor? }] para múltiplas séries. |


Componentes

CardLinhas

Gráfico de linhas com gradiente sob a curva.

<CardLinhas
  legenda="Receita"
  sublegenda="2026"
  titulo="R$ 11M"
  descricao="acumulado no ano"
  tema="light"
  tipoValor="moeda"
  corDetalhes="#3B82F6"
  corDetalhesSecundaria="#8B5CF6"
  :data="dados"
/>

Props específicas:

| Prop | Tipo | Padrão | Descrição | |---|---|---|---| | corDetalhes | String | #3B82F6 | Cor da linha principal. | | corDetalhesSecundaria | String | — | Segunda cor para gradiente combinado. | | series | Array | — | Várias linhas. | | direcao | top | bottom | left | right | top | Posição do header em relação ao gráfico. |

CardBarra

Barras verticais ou horizontais, suporta empilhamento e múltiplas séries.

<CardBarra
  legenda="Vendas"
  titulo="1.160"
  orientacao="vertical"
  :empilhado="false"
  corDetalhes="#10B981"
  :data="dados"
/>

Props específicas:

| Prop | Tipo | Padrão | |---|---|---| | orientacao | vertical | horizontal | vertical | | empilhado | Boolean | false | | series | Array | — | | cores | Array<String> | paleta padrão | | mostrarLegendaSeries | Boolean | true |

CardPizza

Doughnut com tabela lateral opcional.

<CardPizza
  legenda="Dispositivos"
  titulo="100%"
  tipoValor="percentual"
  cutout="70%"
  :data="dados"
/>

Props específicas:

| Prop | Tipo | Padrão | |---|---|---| | cores | Array<String> | paleta padrão | | cutout | String/Number | '70%' | | direcao | left | right | top | bottom | right | | rotuloCategoria | String | 'Categoria' | | rotuloQuantidade | String | 'Quantidade' | | mostrarCabecalho | Boolean | true |

CardPolar

Polar area com grid configurável.

| Prop | Tipo | Padrão | |---|---|---| | cores | Array<String> | paleta padrão | | mostrarLinhasGrade | Boolean | true |

CardProgresso

Barras de progresso lineares ou circulares. Suporta metas de crescimento e de redução por item.

<CardProgresso
  legenda="Metas"
  formato="linear"
  :data="[
    { rotulo: 'Vendas', quantidade: 72, meta: 100 },
    { rotulo: 'Reclamações', quantidade: 320, meta: 100, valor_referencia: 500, modo: 'reducao' },
  ]"
/>

Estrutura do data

| Campo | Tipo | Obrigatório | Descrição | |---|---|---|---| | rotulo | String | sim | Label exibido. | | quantidade | Number | sim | Valor atual. | | meta | Number | não | Valor alvo. Usa metaPadrao se omitido. | | modo | 'crescimento' | 'reducao' | não | Omitir = 'crescimento'. | | valor_referencia | Number | não (obrigatório em reducao) | Ponto de partida para metas de redução (equivale a 0% de progresso). | | cor | String | não | Cor hex da barra, sobrescreve a paleta automática. |

Modo crescimento — percentual = quantidade / meta. A barra cresce em direção à meta.

Modo redução — percentual = (valor_referencia − quantidade) / (valor_referencia − meta). A barra representa o progresso de redução; o fundo da trilha usa corExcesso.

Props específicas

| Prop | Tipo | Padrão | Descrição | |---|---|---|---| | formato | linear | circular | linear | Exibe barras ou gráfico de rosca. | | direcao | top | bottom | left | right | top | Posição do gráfico circular em relação à lista. | | metaPadrao | Number | 100 | Meta aplicada a itens sem meta. | | mostrarValor | Boolean | true | Exibe quantidade / meta. | | mostrarPercentual | Boolean | true | Exibe o percentual de progresso. | | alturaBarra | Number/String | 8 | Altura das barras em px. | | raioBarra | String/Number | '999px' | Border-radius das barras. | | cutout | String/Number | '78%' | Espessura do anel no modo circular. | | corDetalhes | String | '#3B82F6' | Cor do gráfico circular em modo crescimento. | | corExcesso | String | '#EF4444' | Cor de alerta usada em itens com modo reducao. | | cores | Array<String> | paleta padrão | Cores automáticas dos itens. |

CardBase

Esqueleto sem gráfico. Útil para criar visualizações customizadas mantendo o visual da biblioteca.

<CardBase legenda="Custom" titulo="R$ 1k" descricao="exemplo">
  <template #footer>
    <MeuConteudoCustomizado />
  </template>
</CardBase>

ChartBase

Wrapper fino sobre Chart.js.

<ChartBase
  type="line"
  :data="chartData"
  :options="chartOptions"
  :height="280"
/>

Props comuns

Todas as variantes de Card* aceitam estas props:

| Prop | Tipo | Padrão | Descrição | |---|---|---|---| | legenda | String | — | Título superior. | | sublegenda | String | — | Texto auxiliar abaixo da legenda. | | titulo | String | — | Valor de destaque. | | descricao | String | — | Texto complementar do título. | | tema | light | dark | light | Paleta base. | | corFundo | String | — | Sobrescreve fundo. | | corTexto | String | — | Sobrescreve texto. | | corBorda | String | #EAE8E8 | Borda externa. | | borderRadius | String/Number | '1rem' | Raio da borda. | | sombra | String | box-shadow padrão | Sombra. | | tipoValor | numero | moeda | percentual | 'numero' | Formatação. | | locale | String | 'pt-BR' | Locale do Intl. | | moeda | String | 'BRL' | Código ISO da moeda. | | height | Number/String | varia | Altura do gráfico. | | botaoVisivel | Boolean | false | Mostra botão "Ver mais". | | textoBotao | String | 'Ver mais' | Texto do botão. | | exportar | Boolean | false | Mostra botão de exportação. | | nomeArquivoExport | String | 'card-*.png' | Nome do PNG. | | data | Array | amostra | Dados. |

Slots

| Slot | Onde aparece | |---|---| | legenda | Substitui a legenda. | | sublegenda | Substitui a sublegenda. | | titulo | Substitui o titulo. | | descricao | Substitui a descricao. | | actions | Área superior direita do card (substitui o botão padrão). | | footer | Conteúdo extra abaixo do gráfico. |

Eventos

| Evento | Quando | |---|---| | botaoAcao | Clique no botão "Ver mais". | | exportado | Após o PNG ser gerado e baixado. |

Composables internos

Disponíveis para customizar gráficos sob medida:

  • useTema(props) — calcula palette (bg, text, muted, …) e cardStyle.
  • useFormatadorValor(props) — retorna formatar(valor) com base em tipoValor/locale/moeda.
  • useTooltipExterno — utilitários para tooltip HTML customizado (criarTooltipEl, prepararTooltipParent, clampHorizontal).
  • useExportarImagemexportarElementoComoImagem(el, opções) e o ícone SVG padrão.

Playground & Dashboard

Este repositório já vem com um app de demonstração com 3 rotas (vue-router):

| Rota | Conteúdo | |---|---| | /playground | Exemplos estáticos lado a lado. | | /dashboard | Dashboard interativo: arraste cards pelo cabeçalho, redimensione pelo canto inferior direito e adicione novos cards pela barra lateral. O layout é persistido no localStorage. | | /docs | Documentação navegável dentro do próprio app. |

Comandos:

npm install
npm run dev       # roda o playground em modo dev
npm run build:lib # gera o bundle distribuível em dist/
npm run storybook # abre o Storybook

Licença

MIT.