nemesischart 0.1.21 → 1.0.1

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 CHANGED
@@ -1,58 +1,277 @@
1
- # nemesischart
1
+ # NemesisChart
2
2
 
3
- Biblioteca de componentes Vue 3 para dashboards. Cards de estatísticas e gráficos prontos para usar, com suporte a temas e tree-shaking.
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
- ## Requisitos
11
+ ## Setup
14
12
 
15
- ```bash
16
- npm install primeflex primeicons chart.js
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
- ## Como usar
23
+ ---
20
24
 
21
- ### Plugin global
25
+ ## Componentes
22
26
 
23
- ```js
24
- import { createApp } from 'vue'
25
- import 'primeflex/primeflex.css'
26
- import 'primeicons/primeicons.css'
27
- import NemesisChart from 'nemesischart'
28
- import 'nemesischart/dist/nemesischart.css'
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
- const app = createApp(App)
31
- app.use(NemesisChart)
32
- app.mount('#app')
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
- ### Named imports (tree-shaking)
50
+ **Props:**
36
51
 
37
- ```js
38
- import { Cards, CardColumn } from 'nemesischart'
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
- ## Componentes
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
- | Componente | Descrição |
44
- |---|---|
45
- | `Cards` | Card de estatística com título, valor, descrição e botão opcional |
46
- | `Polar` | Gráfico Polar Area com legenda e paleta automática |
47
- | `CardColumn` | Card com valor em destaque e gráfico de barras |
48
- | `CardLines` | Card com gráfico de linha para tendências e séries temporais |
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
- Todos os componentes aceitam a prop `cor`: `'light'` | `'dark'` | `'transparent'`.
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
- Consulte a [documentação completa](https://neemias-renan.github.io/nemesischart/) para props, exemplos e playground interativo.
129
+ ### CardLinhas Gráfico de linhas
55
130
 
56
- ## Licença
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
- MIT
276
+ - Vue 3.x
277
+ - Chart.js 4.x