nemesischart 0.1.21 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +254 -35
- package/dist/nemesischart.js +3485 -0
- package/dist/nemesischart.umd.cjs +15 -0
- package/dist/style.css +1 -0
- package/package.json +78 -53
- package/dist/nemesischart.css +0 -1
- package/dist/nemesischart.es.js +0 -9136
- package/dist/nemesischart.umd.js +0 -3
- package/types/index.d.ts +0 -354
package/README.md
CHANGED
|
@@ -1,58 +1,277 @@
|
|
|
1
|
-
#
|
|
1
|
+
# NemesisChart
|
|
2
2
|
|
|
3
|
-
Biblioteca
|
|
4
|
-
|
|
5
|
-
**[Documentação →](https://neemias-renan.github.io/nemesischart/)**
|
|
3
|
+
Biblioteca Vue 3 de componentes de gráficos com animações GSAP, construída sobre Chart.js.
|
|
6
4
|
|
|
7
5
|
## Instalação
|
|
8
6
|
|
|
9
7
|
```bash
|
|
10
|
-
npm install nemesischart
|
|
8
|
+
npm install nemesischart chart.js
|
|
11
9
|
```
|
|
12
10
|
|
|
13
|
-
##
|
|
11
|
+
## Setup
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
Importe o componente e o CSS no seu `main.js` (ou equivalente):
|
|
14
|
+
|
|
15
|
+
```js
|
|
16
|
+
import { createApp } from 'vue'
|
|
17
|
+
import App from './App.vue'
|
|
18
|
+
import 'nemesischart/style.css'
|
|
19
|
+
|
|
20
|
+
createApp(App).mount('#app')
|
|
17
21
|
```
|
|
18
22
|
|
|
19
|
-
|
|
23
|
+
---
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
## Componentes
|
|
22
26
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
import
|
|
28
|
-
|
|
27
|
+
### CardColuna — Gráfico de colunas verticais
|
|
28
|
+
|
|
29
|
+
```vue
|
|
30
|
+
<script setup>
|
|
31
|
+
import { CardColuna } from 'nemesischart'
|
|
32
|
+
|
|
33
|
+
const dados = [
|
|
34
|
+
{ rotulo: 'Jan', quantidade: 40 },
|
|
35
|
+
{ rotulo: 'Fev', quantidade: 65 },
|
|
36
|
+
{ rotulo: 'Mar', quantidade: 30 },
|
|
37
|
+
]
|
|
38
|
+
</script>
|
|
29
39
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
40
|
+
<template>
|
|
41
|
+
<CardColuna
|
|
42
|
+
titulo="Vendas"
|
|
43
|
+
descricao="Últimos 3 meses"
|
|
44
|
+
:dados="dados"
|
|
45
|
+
corPaleta="#1D4ED8"
|
|
46
|
+
/>
|
|
47
|
+
</template>
|
|
33
48
|
```
|
|
34
49
|
|
|
35
|
-
|
|
50
|
+
**Props:**
|
|
36
51
|
|
|
37
|
-
|
|
38
|
-
|
|
52
|
+
| Prop | Tipo | Padrão | Descrição |
|
|
53
|
+
|------|------|--------|-----------|
|
|
54
|
+
| `dados` | `Array<{ rotulo, quantidade }>` | exemplos | Dados do gráfico |
|
|
55
|
+
| `corPaleta` | `String` | `'#1D4ED8'` | Cor base da paleta |
|
|
56
|
+
| `moeda` | `Boolean` | `false` | Formata valores como BRL no tooltip |
|
|
57
|
+
| `modo` | `'simples' \| 'dual'` | `'simples'` | Modo dual renderiza barras sobrepostas |
|
|
58
|
+
| `segmentos` | `Array<{ key, label }>` | — | Segmentos no modo dual |
|
|
59
|
+
| `segmentoTooltip` | `{ key, label }` | `null` | Campo extra só no tooltip (modo dual) |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
### CardBarra — Gráfico de barras horizontais
|
|
64
|
+
|
|
65
|
+
```vue
|
|
66
|
+
<script setup>
|
|
67
|
+
import { CardBarra } from 'nemesischart'
|
|
68
|
+
|
|
69
|
+
const dados = [
|
|
70
|
+
{ rotulo: 'Produto A', quantidade: 80 },
|
|
71
|
+
{ rotulo: 'Produto B', quantidade: 65 },
|
|
72
|
+
{ rotulo: 'Produto C', quantidade: 50 },
|
|
73
|
+
]
|
|
74
|
+
</script>
|
|
75
|
+
|
|
76
|
+
<template>
|
|
77
|
+
<CardBarra
|
|
78
|
+
titulo="Produtos"
|
|
79
|
+
:dados="dados"
|
|
80
|
+
corPaleta="#7C3AED"
|
|
81
|
+
/>
|
|
82
|
+
</template>
|
|
39
83
|
```
|
|
40
84
|
|
|
41
|
-
|
|
85
|
+
**Props:** mesmas do `CardColuna` (suporta `modo` dual e `segmentos`).
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### CardRosquinha — Gráfico de rosca (doughnut)
|
|
90
|
+
|
|
91
|
+
```vue
|
|
92
|
+
<script setup>
|
|
93
|
+
import { CardRosquinha } from 'nemesischart'
|
|
42
94
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
| `CardPizza` | Card com gráfico doughnut e legenda lateral |
|
|
50
|
-
| `CardColumnDual` | Card com barras empilhadas e múltiplos segmentos |
|
|
95
|
+
const dados = [
|
|
96
|
+
{ rotulo: 'Aprovado', quantidade: 60 },
|
|
97
|
+
{ rotulo: 'Pendente', quantidade: 25 },
|
|
98
|
+
{ rotulo: 'Reprovado', quantidade: 15 },
|
|
99
|
+
]
|
|
100
|
+
</script>
|
|
51
101
|
|
|
52
|
-
|
|
102
|
+
<template>
|
|
103
|
+
<CardRosquinha
|
|
104
|
+
titulo="Status"
|
|
105
|
+
descricao="Solicitações"
|
|
106
|
+
:dados="dados"
|
|
107
|
+
corPaleta="#059669"
|
|
108
|
+
valor="60%"
|
|
109
|
+
valorDescricao="aprovados"
|
|
110
|
+
/>
|
|
111
|
+
</template>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Props:**
|
|
115
|
+
|
|
116
|
+
| Prop | Tipo | Padrão | Descrição |
|
|
117
|
+
|------|------|--------|-----------|
|
|
118
|
+
| `dados` | `Array<{ rotulo, quantidade }>` | exemplos | Dados do gráfico |
|
|
119
|
+
| `corPaleta` | `String` | `'#1D4ED8'` | Cor base da paleta |
|
|
120
|
+
| `valor` | `String` | `''` | Texto exibido no centro da rosca |
|
|
121
|
+
| `valorDescricao` | `String` | `''` | Subtexto no centro |
|
|
122
|
+
| `labelRotulo` | `String` | `'Rótulo'` | Cabeçalho da coluna de rótulos na legenda |
|
|
123
|
+
| `labelQuantidade` | `String` | `'Qtd.'` | Cabeçalho da coluna de quantidades |
|
|
124
|
+
| `legendaGraficoVisivel` | `Boolean` | `true` | Exibe/oculta a legenda lateral |
|
|
125
|
+
| `opcoes` | `Object` | `{}` | Opções extras passadas ao Chart.js |
|
|
126
|
+
|
|
127
|
+
---
|
|
53
128
|
|
|
54
|
-
|
|
129
|
+
### CardLinhas — Gráfico de linhas
|
|
55
130
|
|
|
56
|
-
|
|
131
|
+
```vue
|
|
132
|
+
<script setup>
|
|
133
|
+
import { CardLinhas } from 'nemesischart'
|
|
134
|
+
|
|
135
|
+
const dados = [
|
|
136
|
+
{ rotulo: 'Jan', quantidade: 30 },
|
|
137
|
+
{ rotulo: 'Fev', quantidade: 55 },
|
|
138
|
+
{ rotulo: 'Mar', quantidade: 40 },
|
|
139
|
+
{ rotulo: 'Abr', quantidade: 70 },
|
|
140
|
+
]
|
|
141
|
+
</script>
|
|
142
|
+
|
|
143
|
+
<template>
|
|
144
|
+
<CardLinhas
|
|
145
|
+
titulo="Receita"
|
|
146
|
+
descricao="Evolução mensal"
|
|
147
|
+
:dados="dados"
|
|
148
|
+
corDetalhe="#0EA5E9"
|
|
149
|
+
:moeda="true"
|
|
150
|
+
/>
|
|
151
|
+
</template>
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**Props:**
|
|
155
|
+
|
|
156
|
+
| Prop | Tipo | Padrão | Descrição |
|
|
157
|
+
|------|------|--------|-----------|
|
|
158
|
+
| `dados` | `Array<{ rotulo, quantidade }>` | exemplos | Dados do gráfico |
|
|
159
|
+
| `corDetalhe` | `String` | — | Cor da linha e área |
|
|
160
|
+
| `moeda` | `Boolean` | `false` | Formata valores como BRL |
|
|
161
|
+
| `legendaGraficoVisivel` | `Boolean` | `false` | Exibe legenda do Chart.js |
|
|
162
|
+
| `opcoes` | `Object` | `{}` | Opções extras passadas ao Chart.js |
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
### CardSemiCirculo — Gráfico semicircular (meio donut)
|
|
167
|
+
|
|
168
|
+
```vue
|
|
169
|
+
<script setup>
|
|
170
|
+
import { CardSemiCirculo } from 'nemesischart'
|
|
171
|
+
</script>
|
|
172
|
+
|
|
173
|
+
<template>
|
|
174
|
+
<CardSemiCirculo
|
|
175
|
+
titulo="Execução"
|
|
176
|
+
:total="120"
|
|
177
|
+
:executado="90"
|
|
178
|
+
corPaleta="#F59E0B"
|
|
179
|
+
:moeda="false"
|
|
180
|
+
/>
|
|
181
|
+
</template>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Props:**
|
|
185
|
+
|
|
186
|
+
| Prop | Tipo | Padrão | Descrição |
|
|
187
|
+
|------|------|--------|-----------|
|
|
188
|
+
| `dados` | `Array<{ rotulo, quantidade }>` | exemplos | Dados das fatias |
|
|
189
|
+
| `corPaleta` | `String` | `'#1D4ED8'` | Cor base |
|
|
190
|
+
| `valor` | `String` | `''` | Texto central |
|
|
191
|
+
| `valorDescricao` | `String` | `''` | Subtexto central |
|
|
192
|
+
| `legendaGraficoVisivel` | `Boolean` | `true` | Exibe legenda lateral |
|
|
193
|
+
| `opcoes` | `Object` | `{}` | Opções extras Chart.js |
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
### CardProgresso — Barra de progresso
|
|
198
|
+
|
|
199
|
+
```vue
|
|
200
|
+
<script setup>
|
|
201
|
+
import { CardProgresso } from 'nemesischart'
|
|
202
|
+
</script>
|
|
203
|
+
|
|
204
|
+
<template>
|
|
205
|
+
<CardProgresso
|
|
206
|
+
titulo="Meta mensal"
|
|
207
|
+
:total="100000"
|
|
208
|
+
:executado="73500"
|
|
209
|
+
rotulo="Faturamento"
|
|
210
|
+
:moeda="true"
|
|
211
|
+
/>
|
|
212
|
+
</template>
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
**Props:**
|
|
216
|
+
|
|
217
|
+
| Prop | Tipo | Padrão | Descrição |
|
|
218
|
+
|------|------|--------|-----------|
|
|
219
|
+
| `total` | `Number` | `100` | Valor máximo |
|
|
220
|
+
| `executado` | `Number` | `0` | Valor atual |
|
|
221
|
+
| `rotulo` | `String` | `''` | Rótulo exibido abaixo da barra |
|
|
222
|
+
| `exibirValores` | `Boolean` | `true` | Exibe executado/total |
|
|
223
|
+
| `moeda` | `Boolean` | `false` | Formata valores como BRL |
|
|
224
|
+
| `animado` | `Boolean` | `true` | Anima a barra na entrada |
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Props comuns (todos os componentes)
|
|
229
|
+
|
|
230
|
+
Todos os componentes aceitam as seguintes props herdadas do `CardBase`:
|
|
231
|
+
|
|
232
|
+
| Prop | Tipo | Padrão | Descrição |
|
|
233
|
+
|------|------|--------|-----------|
|
|
234
|
+
| `tema` | `'Light' \| 'Dark' \| 'Transparent'` | `'Light'` | Tema visual |
|
|
235
|
+
| `titulo` | `String` | `''` | Título principal |
|
|
236
|
+
| `descricao` | `String` | `''` | Subtítulo abaixo do título |
|
|
237
|
+
| `legenda` | `String` | — | Label no topo esquerdo |
|
|
238
|
+
| `sublegenda` | `String` | — | Sublabel no topo esquerdo |
|
|
239
|
+
| `tituloVisivel` | `Boolean` | `true` | Exibe/oculta bloco de título |
|
|
240
|
+
| `botaoVisivel` | `Boolean` | `false` | Exibe link de ação |
|
|
241
|
+
| `textoBotao` | `String` | `'Ver Todos'` | Texto do link de ação |
|
|
242
|
+
| `direcao` | `'vertical' \| 'horizontal'` | `'vertical'` | Layout do card |
|
|
243
|
+
| `carregamento` | `Boolean` | `false` | Estado de loading |
|
|
244
|
+
| `corFundo` | `String` | — | Cor de fundo personalizada (hex/rgb) |
|
|
245
|
+
|
|
246
|
+
## Eventos comuns
|
|
247
|
+
|
|
248
|
+
| Evento | Descrição |
|
|
249
|
+
|--------|-----------|
|
|
250
|
+
| `@botao-click` | Emitido ao clicar no botão/link de ação |
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Exemplo com tema Dark e layout horizontal
|
|
255
|
+
|
|
256
|
+
```vue
|
|
257
|
+
<CardRosquinha
|
|
258
|
+
tema="Dark"
|
|
259
|
+
direcao="horizontal"
|
|
260
|
+
titulo="R$ 84.200"
|
|
261
|
+
descricao="Total faturado"
|
|
262
|
+
legenda="FATURAMENTO"
|
|
263
|
+
sublegenda="Março 2025"
|
|
264
|
+
:dados="dados"
|
|
265
|
+
corPaleta="#6366F1"
|
|
266
|
+
valor="84k"
|
|
267
|
+
valorDescricao="faturado"
|
|
268
|
+
:botaoVisivel="true"
|
|
269
|
+
textoBotao="Ver detalhes"
|
|
270
|
+
@botao-click="abrirDetalhes"
|
|
271
|
+
/>
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Requisitos
|
|
57
275
|
|
|
58
|
-
|
|
276
|
+
- Vue 3.x
|
|
277
|
+
- Chart.js 4.x
|