@woovi/ui 6.9.5 → 6.9.7
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 +37 -0
- package/dist/emptyState/EmptyState.d.ts +15 -0
- package/dist/emptyState/EmptyStateDefaultIcon.d.ts +3 -0
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +6 -6
- package/dist/llms.txt +200 -139
- package/package.json +23 -28
package/dist/llms.txt
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
> Biblioteca de componentes React da Woovi para construir interfaces de pagamento e dashboards financeiros.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
Documentação: https://storybook.woovi.design
|
|
6
|
+
Repositório: https://github.com/woovi/woovi-ui
|
|
7
7
|
Pacote NPM: @woovi/ui
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Instalação
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
npm install @woovi/ui
|
|
@@ -18,7 +18,7 @@ yarn add @woovi/ui
|
|
|
18
18
|
pnpm add @woovi/ui
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## Dependências
|
|
22
22
|
|
|
23
23
|
- React 18+
|
|
24
24
|
- Material-UI (MUI) v7+
|
|
@@ -28,7 +28,7 @@ pnpm add @woovi/ui
|
|
|
28
28
|
|
|
29
29
|
## Avatar
|
|
30
30
|
|
|
31
|
-
Componentes para exibir fotos de perfil e grupos de
|
|
31
|
+
Componentes para exibir fotos de perfil e grupos de usuários.
|
|
32
32
|
|
|
33
33
|
```tsx
|
|
34
34
|
import { Avatar } from '@woovi/ui';
|
|
@@ -42,13 +42,13 @@ import { Avatar } from '@woovi/ui';
|
|
|
42
42
|
|
|
43
43
|
## Banner
|
|
44
44
|
|
|
45
|
-
Componentes para exibir mensagens de alerta, erro e
|
|
45
|
+
Componentes para exibir mensagens de alerta, erro e informações.
|
|
46
46
|
|
|
47
47
|
```tsx
|
|
48
48
|
import { Banner, BannerError, BannerInfos } from '@woovi/ui';
|
|
49
49
|
|
|
50
|
-
// Banner
|
|
51
|
-
<Banner variant="solid" color="info">
|
|
50
|
+
// Banner genérico (conteúdo via children)
|
|
51
|
+
<Banner variant="solid" color="info">Informação importante</Banner>
|
|
52
52
|
|
|
53
53
|
// Banner de erro (recebe array de mensagens)
|
|
54
54
|
<BannerError
|
|
@@ -56,11 +56,11 @@ import { Banner, BannerError, BannerInfos } from '@woovi/ui';
|
|
|
56
56
|
callbackOnClose={() => {}}
|
|
57
57
|
/>
|
|
58
58
|
|
|
59
|
-
// Banner informativo com detalhes (tabela de erros/
|
|
59
|
+
// Banner informativo com detalhes (tabela de erros/informações)
|
|
60
60
|
<BannerInfos
|
|
61
61
|
errors={data}
|
|
62
62
|
columns={[{ field: 'name', headerName: 'Nome' }]}
|
|
63
|
-
titleHeader="
|
|
63
|
+
titleHeader="Atenção"
|
|
64
64
|
onClose={() => {}}
|
|
65
65
|
refColumn={{ field: 'id', headerName: 'ID' }}
|
|
66
66
|
isOpen={true}
|
|
@@ -73,7 +73,7 @@ import { Banner, BannerError, BannerInfos } from '@woovi/ui';
|
|
|
73
73
|
|
|
74
74
|
## Buttons
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
Botões para ações, copiar, pagamentos e menus.
|
|
77
77
|
|
|
78
78
|
```tsx
|
|
79
79
|
import {
|
|
@@ -87,31 +87,31 @@ import {
|
|
|
87
87
|
SplitButton
|
|
88
88
|
} from '@woovi/ui';
|
|
89
89
|
|
|
90
|
-
//
|
|
90
|
+
// Botão de ação primário
|
|
91
91
|
<ActionButton label="Salvar" onClick={handleSave} />
|
|
92
92
|
<ActionButton label="Salvar" loading={isLoading} />
|
|
93
93
|
<ActionButton label="Criar" icon="add" />
|
|
94
94
|
|
|
95
|
-
//
|
|
95
|
+
// Botão de copiar (children é o label do botão)
|
|
96
96
|
<CopyButton value="texto-para-copiar">Copiar Chave</CopyButton>
|
|
97
97
|
|
|
98
|
-
//
|
|
98
|
+
// Botão de perigo/exclusão
|
|
99
99
|
<DangerButton label="Excluir" onClick={handleDelete} />
|
|
100
100
|
|
|
101
|
-
// Menu de
|
|
102
|
-
<ButtonMenu label="
|
|
101
|
+
// Menu de botões
|
|
102
|
+
<ButtonMenu label="Opções">
|
|
103
103
|
<ButtonMenuItem onClick={handleEdit}>Editar</ButtonMenuItem>
|
|
104
104
|
<ButtonMenuItem onClick={handleDelete}>Excluir</ButtonMenuItem>
|
|
105
105
|
</ButtonMenu>
|
|
106
106
|
|
|
107
|
-
//
|
|
107
|
+
// Botão de pagamento Pix
|
|
108
108
|
<PayWithPixButton onClick={handlePixPayment} />
|
|
109
109
|
|
|
110
|
-
// Split button com
|
|
110
|
+
// Split button com opções
|
|
111
111
|
<SplitButton
|
|
112
112
|
options={[
|
|
113
|
-
{ label: '
|
|
114
|
-
{ label: '
|
|
113
|
+
{ label: 'Ação 1', onClick: () => {} },
|
|
114
|
+
{ label: 'Ação 2', onClick: () => {} },
|
|
115
115
|
]}
|
|
116
116
|
/>
|
|
117
117
|
```
|
|
@@ -126,7 +126,7 @@ import {
|
|
|
126
126
|
|
|
127
127
|
### ClickPix Buttons
|
|
128
128
|
|
|
129
|
-
|
|
129
|
+
Botões específicos para pagamentos via Pix com um clique.
|
|
130
130
|
|
|
131
131
|
```tsx
|
|
132
132
|
import {
|
|
@@ -135,13 +135,13 @@ import {
|
|
|
135
135
|
DonateWithClickButton
|
|
136
136
|
} from '@woovi/ui';
|
|
137
137
|
|
|
138
|
-
//
|
|
138
|
+
// Botão ClickPix padrão
|
|
139
139
|
<ClickPixButton onClick={handleClickPix} />
|
|
140
140
|
|
|
141
|
-
//
|
|
141
|
+
// Botão de doação ClickPix
|
|
142
142
|
<DonateClickPixButton amount={1000} correlationID="donation-123" />
|
|
143
143
|
|
|
144
|
-
//
|
|
144
|
+
// Botão de doação com click
|
|
145
145
|
<DonateWithClickButton />
|
|
146
146
|
```
|
|
147
147
|
|
|
@@ -151,7 +151,7 @@ import {
|
|
|
151
151
|
|
|
152
152
|
## Card
|
|
153
153
|
|
|
154
|
-
Containers para exibir
|
|
154
|
+
Containers para exibir conteúdo em formato de cartão.
|
|
155
155
|
|
|
156
156
|
```tsx
|
|
157
157
|
import {
|
|
@@ -168,18 +168,18 @@ import {
|
|
|
168
168
|
CardWithLinkSkeleton
|
|
169
169
|
} from '@woovi/ui';
|
|
170
170
|
|
|
171
|
-
// Card
|
|
171
|
+
// Card básico
|
|
172
172
|
<Card>
|
|
173
173
|
<CardContent>
|
|
174
|
-
<h2>
|
|
175
|
-
<p>
|
|
174
|
+
<h2>Título do Card</h2>
|
|
175
|
+
<p>Conteúdo do card</p>
|
|
176
176
|
</CardContent>
|
|
177
177
|
<CardActions>
|
|
178
|
-
<ActionButton label="
|
|
178
|
+
<ActionButton label="Ação" />
|
|
179
179
|
</CardActions>
|
|
180
180
|
</Card>
|
|
181
181
|
|
|
182
|
-
// Card com
|
|
182
|
+
// Card com ícone
|
|
183
183
|
<CardWithIcon
|
|
184
184
|
icon="payment"
|
|
185
185
|
title="Pagamentos"
|
|
@@ -192,15 +192,15 @@ import {
|
|
|
192
192
|
href="/details"
|
|
193
193
|
/>
|
|
194
194
|
|
|
195
|
-
// Card
|
|
195
|
+
// Card selecionável
|
|
196
196
|
<CardSelectable
|
|
197
197
|
isSelected={isSelected}
|
|
198
198
|
onClick={() => setSelected(!isSelected)}
|
|
199
199
|
>
|
|
200
|
-
|
|
200
|
+
Conteúdo selecionável
|
|
201
201
|
</CardSelectable>
|
|
202
202
|
|
|
203
|
-
// Card de
|
|
203
|
+
// Card de cópia (para chaves Pix, etc)
|
|
204
204
|
<CardCopy content="chave-pix@email.com" />
|
|
205
205
|
```
|
|
206
206
|
|
|
@@ -218,24 +218,24 @@ import {
|
|
|
218
218
|
|
|
219
219
|
## CardAnalytics
|
|
220
220
|
|
|
221
|
-
Componentes para exibir
|
|
221
|
+
Componentes para exibir métricas e dados analíticos.
|
|
222
222
|
|
|
223
223
|
```tsx
|
|
224
224
|
import { CardAnalytics, CardAnalyticsSmall } from '@woovi/ui';
|
|
225
225
|
|
|
226
|
-
// Card de
|
|
226
|
+
// Card de métricas
|
|
227
227
|
<CardAnalytics
|
|
228
228
|
title="Total de Vendas"
|
|
229
229
|
value="R$ 15.000,00"
|
|
230
|
-
total="150
|
|
230
|
+
total="150 transações"
|
|
231
231
|
color="success"
|
|
232
232
|
loading={false}
|
|
233
233
|
onClick={() => navigate('/sales')}
|
|
234
234
|
/>
|
|
235
235
|
|
|
236
|
-
//
|
|
236
|
+
// Versão compacta
|
|
237
237
|
<CardAnalyticsSmall
|
|
238
|
-
label="
|
|
238
|
+
label="Conversão"
|
|
239
239
|
value="3.2%"
|
|
240
240
|
/>
|
|
241
241
|
```
|
|
@@ -253,11 +253,11 @@ import { CardGrid, CardField, Grid } from '@woovi/ui';
|
|
|
253
253
|
|
|
254
254
|
// Grid de cards
|
|
255
255
|
<CardGrid>
|
|
256
|
-
<CardField label="Nome" value="
|
|
256
|
+
<CardField label="Nome" value="João Silva" />
|
|
257
257
|
<CardField label="Email" value="joao@email.com" />
|
|
258
258
|
</CardGrid>
|
|
259
259
|
|
|
260
|
-
// Grid
|
|
260
|
+
// Grid genérico
|
|
261
261
|
<Grid columns={3} gap={2}>
|
|
262
262
|
<Card>Item 1</Card>
|
|
263
263
|
<Card>Item 2</Card>
|
|
@@ -279,7 +279,7 @@ import { CardWithImage } from '@woovi/ui';
|
|
|
279
279
|
<CardWithImage
|
|
280
280
|
image="/product.jpg"
|
|
281
281
|
title="Produto"
|
|
282
|
-
description="
|
|
282
|
+
description="Descrição do produto"
|
|
283
283
|
/>
|
|
284
284
|
```
|
|
285
285
|
|
|
@@ -287,7 +287,7 @@ import { CardWithImage } from '@woovi/ui';
|
|
|
287
287
|
|
|
288
288
|
## ClickPix
|
|
289
289
|
|
|
290
|
-
Componentes da marca ClickPix para pagamentos
|
|
290
|
+
Componentes da marca ClickPix para pagamentos instantâneos.
|
|
291
291
|
|
|
292
292
|
```tsx
|
|
293
293
|
import { ClickPixButton, ClickPixLogo } from '@woovi/ui';
|
|
@@ -295,7 +295,7 @@ import { ClickPixButton, ClickPixLogo } from '@woovi/ui';
|
|
|
295
295
|
// Logo ClickPix
|
|
296
296
|
<ClickPixLogo width={120} />
|
|
297
297
|
|
|
298
|
-
//
|
|
298
|
+
// Botão ClickPix
|
|
299
299
|
<ClickPixButton variant="primary" onClick={handlePay} />
|
|
300
300
|
```
|
|
301
301
|
|
|
@@ -304,7 +304,7 @@ import { ClickPixButton, ClickPixLogo } from '@woovi/ui';
|
|
|
304
304
|
|
|
305
305
|
## Code
|
|
306
306
|
|
|
307
|
-
Componente para exibir blocos de
|
|
307
|
+
Componente para exibir blocos de código.
|
|
308
308
|
|
|
309
309
|
```tsx
|
|
310
310
|
import { Code } from '@woovi/ui';
|
|
@@ -318,7 +318,7 @@ import { Code } from '@woovi/ui';
|
|
|
318
318
|
|
|
319
319
|
## Collapsible
|
|
320
320
|
|
|
321
|
-
Componentes
|
|
321
|
+
Componentes expansíveis para organizar conteúdo em seções.
|
|
322
322
|
|
|
323
323
|
```tsx
|
|
324
324
|
import {
|
|
@@ -331,15 +331,15 @@ import {
|
|
|
331
331
|
|
|
332
332
|
// Collapsible simples
|
|
333
333
|
<Collapsible title="Ver mais detalhes">
|
|
334
|
-
<p>
|
|
334
|
+
<p>Conteúdo expandido</p>
|
|
335
335
|
</Collapsible>
|
|
336
336
|
|
|
337
337
|
// Collapsible em etapas
|
|
338
338
|
<CollapsibleStep step={1} title="Primeira etapa">
|
|
339
|
-
<p>
|
|
339
|
+
<p>Conteúdo da etapa</p>
|
|
340
340
|
</CollapsibleStep>
|
|
341
341
|
|
|
342
|
-
//
|
|
342
|
+
// Árvore collapsible
|
|
343
343
|
<CollapsibleTree>
|
|
344
344
|
<LeafCollapsible title="Item pai">
|
|
345
345
|
<LeafCollapsible title="Item filho" />
|
|
@@ -356,17 +356,17 @@ import {
|
|
|
356
356
|
|
|
357
357
|
## Content
|
|
358
358
|
|
|
359
|
-
Componentes para estruturar
|
|
359
|
+
Componentes para estruturar conteúdo e texto.
|
|
360
360
|
|
|
361
361
|
```tsx
|
|
362
362
|
import { Content, ActionMargin } from '@woovi/ui';
|
|
363
363
|
|
|
364
|
-
// Container de
|
|
364
|
+
// Container de conteúdo
|
|
365
365
|
<Content>
|
|
366
|
-
<p>Seu
|
|
366
|
+
<p>Seu conteúdo aqui</p>
|
|
367
367
|
</Content>
|
|
368
368
|
|
|
369
|
-
// Margem para
|
|
369
|
+
// Margem para ações
|
|
370
370
|
<ActionMargin>
|
|
371
371
|
<ActionButton label="Salvar" />
|
|
372
372
|
</ActionMargin>
|
|
@@ -377,12 +377,12 @@ import { Content, ActionMargin } from '@woovi/ui';
|
|
|
377
377
|
|
|
378
378
|
## Countdown
|
|
379
379
|
|
|
380
|
-
Componentes de contagem regressiva para
|
|
380
|
+
Componentes de contagem regressiva para expirações de pagamento.
|
|
381
381
|
|
|
382
382
|
```tsx
|
|
383
383
|
import { Countdown } from '@woovi/ui';
|
|
384
384
|
|
|
385
|
-
// Contagem regressiva para
|
|
385
|
+
// Contagem regressiva para expiração de cobrança Pix
|
|
386
386
|
<Countdown
|
|
387
387
|
expiresAt={new Date('2024-12-31T23:59:59')}
|
|
388
388
|
onExpire={() => console.log('Expirado!')}
|
|
@@ -394,12 +394,12 @@ import { Countdown } from '@woovi/ui';
|
|
|
394
394
|
|
|
395
395
|
## DataGrid
|
|
396
396
|
|
|
397
|
-
Tabelas de dados
|
|
397
|
+
Tabelas de dados avançadas com suporte a paginação, ordenação e filtros.
|
|
398
398
|
|
|
399
399
|
```tsx
|
|
400
400
|
import { DataGrid, DataGridLoading, DataGridDetailContainer } from '@woovi/ui';
|
|
401
401
|
|
|
402
|
-
// DataGrid
|
|
402
|
+
// DataGrid básico
|
|
403
403
|
<DataGrid
|
|
404
404
|
columns={[
|
|
405
405
|
{ field: 'id', headerName: 'ID', width: 90 },
|
|
@@ -411,7 +411,7 @@ import { DataGrid, DataGridLoading, DataGridDetailContainer } from '@woovi/ui';
|
|
|
411
411
|
onRowClick={(row) => console.log(row)}
|
|
412
412
|
/>
|
|
413
413
|
|
|
414
|
-
// DataGrid com
|
|
414
|
+
// DataGrid com exportação CSV habilitada
|
|
415
415
|
<DataGrid
|
|
416
416
|
columns={columns}
|
|
417
417
|
rows={data}
|
|
@@ -425,7 +425,7 @@ import { DataGrid, DataGridLoading, DataGridDetailContainer } from '@woovi/ui';
|
|
|
425
425
|
zebraRow
|
|
426
426
|
/>
|
|
427
427
|
|
|
428
|
-
// DataGrid com rowHref (
|
|
428
|
+
// DataGrid com rowHref (função que recebe row e retorna href)
|
|
429
429
|
<DataGrid
|
|
430
430
|
columns={columns}
|
|
431
431
|
rows={data}
|
|
@@ -443,21 +443,21 @@ import { DataGrid, DataGridLoading, DataGridDetailContainer } from '@woovi/ui';
|
|
|
443
443
|
|
|
444
444
|
## Dialog
|
|
445
445
|
|
|
446
|
-
Sistema de modais e
|
|
446
|
+
Sistema de modais e diálogos.
|
|
447
447
|
|
|
448
448
|
```tsx
|
|
449
449
|
import { DialogProvider, useDialog } from '@woovi/ui';
|
|
450
450
|
|
|
451
|
-
// Provider no root da
|
|
451
|
+
// Provider no root da aplicação
|
|
452
452
|
<DialogProvider>
|
|
453
453
|
<App />
|
|
454
454
|
</DialogProvider>
|
|
455
455
|
|
|
456
|
-
// Hook para abrir
|
|
456
|
+
// Hook para abrir diálogos
|
|
457
457
|
const { openDialog, closeDialog } = useDialog();
|
|
458
458
|
|
|
459
459
|
openDialog({
|
|
460
|
-
title: 'Confirmar
|
|
460
|
+
title: 'Confirmar ação',
|
|
461
461
|
content: 'Deseja continuar?',
|
|
462
462
|
actions: [
|
|
463
463
|
{ label: 'Cancelar', onClick: closeDialog },
|
|
@@ -470,36 +470,97 @@ openDialog({
|
|
|
470
470
|
|
|
471
471
|
## Drawer
|
|
472
472
|
|
|
473
|
-
|
|
473
|
+
Painéis laterais deslizantes.
|
|
474
474
|
|
|
475
475
|
```tsx
|
|
476
476
|
import { DrawerCard, DrawerResponsiveWrapper } from '@woovi/ui';
|
|
477
477
|
|
|
478
478
|
// Drawer com card
|
|
479
479
|
<DrawerCard open={isOpen} onClose={handleClose}>
|
|
480
|
-
<CardContent>
|
|
480
|
+
<CardContent>Conteúdo do drawer</CardContent>
|
|
481
481
|
</DrawerCard>
|
|
482
482
|
|
|
483
483
|
// Drawer responsivo (lateral em desktop, bottom sheet em mobile)
|
|
484
484
|
<DrawerResponsiveWrapper open={isOpen} onClose={handleClose}>
|
|
485
|
-
<p>
|
|
485
|
+
<p>Conteúdo adaptativo</p>
|
|
486
486
|
</DrawerResponsiveWrapper>
|
|
487
487
|
```
|
|
488
488
|
|
|
489
489
|
- DrawerCard: https://storybook.woovi.design/?path=/docs/components-drawer-drawercard--docs
|
|
490
490
|
- DrawerResponsiveWrapper: https://storybook.woovi.design/?path=/docs/components-drawer-drawerresponsivewrapper--docs
|
|
491
491
|
|
|
492
|
+
## EmptyState
|
|
493
|
+
|
|
494
|
+
Componente para exibir estados vazios — listas sem resultados, telas sem dados ou seções aguardando uma ação do usuário. Suporta até dois botões de ação: `primaryButton` (contained) e `secondaryButton` (outlined), exibidos lado a lado.
|
|
495
|
+
|
|
496
|
+
```tsx
|
|
497
|
+
import { EmptyState } from '@woovi/ui';
|
|
498
|
+
|
|
499
|
+
// Estado vazio com defaults (ícone, título e descrição padrão)
|
|
500
|
+
<EmptyState />
|
|
501
|
+
|
|
502
|
+
// Com botão primário (contained)
|
|
503
|
+
<EmptyState
|
|
504
|
+
title="Nenhum resultado encontrado."
|
|
505
|
+
description="Convide um usuário ou limpe o filtro de pesquisa."
|
|
506
|
+
primaryButton={{
|
|
507
|
+
label: "Convidar usuário",
|
|
508
|
+
onClick: () => handleInvite(),
|
|
509
|
+
}}
|
|
510
|
+
/>
|
|
511
|
+
|
|
512
|
+
// Com botão secundário (outlined)
|
|
513
|
+
<EmptyState
|
|
514
|
+
title="Nenhum resultado encontrado."
|
|
515
|
+
description="Volte para a tela anterior ou ajuste os filtros."
|
|
516
|
+
secondaryButton={{
|
|
517
|
+
label: "Voltar",
|
|
518
|
+
onClick: () => handleBack(),
|
|
519
|
+
}}
|
|
520
|
+
/>
|
|
521
|
+
|
|
522
|
+
// Com ambos os botões (secundário à esquerda, primário à direita)
|
|
523
|
+
<EmptyState
|
|
524
|
+
title="Nenhuma cobrança ainda"
|
|
525
|
+
description="Crie sua primeira cobrança Pix ou importe um arquivo CSV."
|
|
526
|
+
secondaryButton={{
|
|
527
|
+
label: "Importar CSV",
|
|
528
|
+
onClick: () => handleImport(),
|
|
529
|
+
}}
|
|
530
|
+
primaryButton={{
|
|
531
|
+
label: "Criar cobrança",
|
|
532
|
+
onClick: () => handleCreate(),
|
|
533
|
+
}}
|
|
534
|
+
/>
|
|
535
|
+
|
|
536
|
+
// Sem botões (cada botão só é renderizado se label E onClick forem fornecidos)
|
|
537
|
+
<EmptyState
|
|
538
|
+
title="Lista vazia"
|
|
539
|
+
description="Você ainda não possui itens cadastrados."
|
|
540
|
+
/>
|
|
541
|
+
|
|
542
|
+
// Com ícone customizado
|
|
543
|
+
<EmptyState
|
|
544
|
+
icon={<MyCustomIcon />}
|
|
545
|
+
title="Busca personalizada"
|
|
546
|
+
description="Você pode passar qualquer ReactNode como ícone."
|
|
547
|
+
primaryButton={{ label: "Tentar novamente", onClick: () => retry() }}
|
|
548
|
+
/>
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
- EmptyState: https://storybook.woovi.design/?path=/docs/components-emptystate-emptystate--docs
|
|
552
|
+
|
|
492
553
|
## Error
|
|
493
554
|
|
|
494
|
-
Componentes para tratamento e
|
|
555
|
+
Componentes para tratamento e exibição de erros.
|
|
495
556
|
|
|
496
557
|
```tsx
|
|
497
558
|
import { ErrorView } from '@woovi/ui';
|
|
498
559
|
|
|
499
|
-
//
|
|
560
|
+
// Visualização de erro
|
|
500
561
|
<ErrorView
|
|
501
562
|
title="Algo deu errado"
|
|
502
|
-
message="
|
|
563
|
+
message="Não foi possível carregar os dados"
|
|
503
564
|
onRetry={handleRetry}
|
|
504
565
|
/>
|
|
505
566
|
```
|
|
@@ -513,7 +574,7 @@ Sistema de filtros para busca e filtragem de dados.
|
|
|
513
574
|
```tsx
|
|
514
575
|
import { Filter, FilterRelayFormik } from '@woovi/ui';
|
|
515
576
|
|
|
516
|
-
// Filtro
|
|
577
|
+
// Filtro básico
|
|
517
578
|
<Filter
|
|
518
579
|
filters={[
|
|
519
580
|
{ field: 'status', label: 'Status', options: ['Ativo', 'Inativo'] },
|
|
@@ -527,12 +588,12 @@ import { Filter, FilterRelayFormik } from '@woovi/ui';
|
|
|
527
588
|
|
|
528
589
|
## Form
|
|
529
590
|
|
|
530
|
-
Componentes de
|
|
591
|
+
Componentes de formulário.
|
|
531
592
|
|
|
532
593
|
```tsx
|
|
533
594
|
import { FieldRow } from '@woovi/ui';
|
|
534
595
|
|
|
535
|
-
// Linha de campo de
|
|
596
|
+
// Linha de campo de formulário
|
|
536
597
|
<FieldRow label="Email" required>
|
|
537
598
|
<input type="email" />
|
|
538
599
|
</FieldRow>
|
|
@@ -542,14 +603,14 @@ import { FieldRow } from '@woovi/ui';
|
|
|
542
603
|
|
|
543
604
|
## Heading
|
|
544
605
|
|
|
545
|
-
|
|
606
|
+
Cabeçalhos e títulos de seção.
|
|
546
607
|
|
|
547
608
|
```tsx
|
|
548
609
|
import { SectionHeading } from '@woovi/ui';
|
|
549
610
|
|
|
550
611
|
<SectionHeading
|
|
551
|
-
title="
|
|
552
|
-
subtitle="
|
|
612
|
+
title="Transações"
|
|
613
|
+
subtitle="Últimas 30 dias"
|
|
553
614
|
action={<ActionButton label="Ver todas" />}
|
|
554
615
|
/>
|
|
555
616
|
```
|
|
@@ -558,7 +619,7 @@ import { SectionHeading } from '@woovi/ui';
|
|
|
558
619
|
|
|
559
620
|
## Helpers
|
|
560
621
|
|
|
561
|
-
|
|
622
|
+
Utilitários de layout e espaçamento.
|
|
562
623
|
|
|
563
624
|
```tsx
|
|
564
625
|
import { Divider, HorizontalStack } from '@woovi/ui';
|
|
@@ -568,8 +629,8 @@ import { Divider, HorizontalStack } from '@woovi/ui';
|
|
|
568
629
|
|
|
569
630
|
// Stack horizontal
|
|
570
631
|
<HorizontalStack spacing={2}>
|
|
571
|
-
<ActionButton label="
|
|
572
|
-
<ActionButton label="
|
|
632
|
+
<ActionButton label="Botão 1" />
|
|
633
|
+
<ActionButton label="Botão 2" />
|
|
573
634
|
</HorizontalStack>
|
|
574
635
|
```
|
|
575
636
|
|
|
@@ -578,7 +639,7 @@ import { Divider, HorizontalStack } from '@woovi/ui';
|
|
|
578
639
|
|
|
579
640
|
## Import
|
|
580
641
|
|
|
581
|
-
Componentes para
|
|
642
|
+
Componentes para importação de arquivos (CSV, XLSX).
|
|
582
643
|
|
|
583
644
|
```tsx
|
|
584
645
|
import { DropzoneFile } from '@woovi/ui';
|
|
@@ -596,7 +657,7 @@ import { DropzoneFile } from '@woovi/ui';
|
|
|
596
657
|
|
|
597
658
|
## Layout
|
|
598
659
|
|
|
599
|
-
Componentes para estrutura de
|
|
660
|
+
Componentes para estrutura de página.
|
|
600
661
|
|
|
601
662
|
```tsx
|
|
602
663
|
import { LayoutRoot, LayoutWrapper } from '@woovi/ui';
|
|
@@ -613,7 +674,7 @@ import { LayoutRoot, LayoutWrapper } from '@woovi/ui';
|
|
|
613
674
|
|
|
614
675
|
## Link
|
|
615
676
|
|
|
616
|
-
Componentes de
|
|
677
|
+
Componentes de navegação e links.
|
|
617
678
|
|
|
618
679
|
```tsx
|
|
619
680
|
import { Link, WooviLink } from '@woovi/ui';
|
|
@@ -625,7 +686,7 @@ import { Link, WooviLink } from '@woovi/ui';
|
|
|
625
686
|
<Link href="https://woovi.com" external>Woovi</Link>
|
|
626
687
|
|
|
627
688
|
// Link estilizado Woovi
|
|
628
|
-
<WooviLink href="/pricing">Ver
|
|
689
|
+
<WooviLink href="/pricing">Ver preços</WooviLink>
|
|
629
690
|
```
|
|
630
691
|
|
|
631
692
|
- Link: https://storybook.woovi.design/?path=/docs/components-link--docs
|
|
@@ -638,7 +699,7 @@ Logotipos da Woovi e OpenPix.
|
|
|
638
699
|
```tsx
|
|
639
700
|
import { Logo, WooviLogo } from '@woovi/ui';
|
|
640
701
|
|
|
641
|
-
// Logo
|
|
702
|
+
// Logo genérico
|
|
642
703
|
<Logo src="/logo.png" alt="Empresa" />
|
|
643
704
|
|
|
644
705
|
// Logo Woovi
|
|
@@ -657,7 +718,7 @@ import { BoxFlex, Typography } from '@woovi/ui';
|
|
|
657
718
|
|
|
658
719
|
// Box flexbox
|
|
659
720
|
<BoxFlex gap={2} alignItems="center">
|
|
660
|
-
<Typography variant="h6">
|
|
721
|
+
<Typography variant="h6">Título</Typography>
|
|
661
722
|
<Typography variant="body1">Texto</Typography>
|
|
662
723
|
</BoxFlex>
|
|
663
724
|
```
|
|
@@ -667,7 +728,7 @@ import { BoxFlex, Typography } from '@woovi/ui';
|
|
|
667
728
|
|
|
668
729
|
## MultiFactor
|
|
669
730
|
|
|
670
|
-
Componentes de
|
|
731
|
+
Componentes de autenticação multi-fator para verificação segura de usuários.
|
|
671
732
|
|
|
672
733
|
```tsx
|
|
673
734
|
import {
|
|
@@ -677,7 +738,7 @@ import {
|
|
|
677
738
|
MultiFactorPixPaymentView
|
|
678
739
|
} from '@woovi/ui';
|
|
679
740
|
|
|
680
|
-
// Modal de
|
|
741
|
+
// Modal de confirmação MFA (suporta TOTP, WhatsApp/SMS e email)
|
|
681
742
|
<MultiFactorConfirmModal
|
|
682
743
|
title="Confirm your identity"
|
|
683
744
|
isOpen={isOpen}
|
|
@@ -686,13 +747,13 @@ import {
|
|
|
686
747
|
email="user@example.com"
|
|
687
748
|
/>
|
|
688
749
|
|
|
689
|
-
//
|
|
750
|
+
// Verificação PIX com sucesso (CPF corresponde)
|
|
690
751
|
<MultiFactorPixPaymentMatch amount={0.01} />
|
|
691
752
|
|
|
692
|
-
//
|
|
753
|
+
// Verificação PIX com falha (CPF não corresponde)
|
|
693
754
|
<MultiFactorPixPaymentMismatch amount={0.01} />
|
|
694
755
|
|
|
695
|
-
// View do QR Code PIX para
|
|
756
|
+
// View do QR Code PIX para verificação
|
|
696
757
|
<MultiFactorPixPaymentView
|
|
697
758
|
pixAuthentication={{ brCode: '...', taxID: '...' }}
|
|
698
759
|
onGetResult={handleGetResult}
|
|
@@ -706,17 +767,17 @@ import {
|
|
|
706
767
|
|
|
707
768
|
## OpenPix
|
|
708
769
|
|
|
709
|
-
Componentes
|
|
770
|
+
Componentes específicos do ecossistema OpenPix.
|
|
710
771
|
|
|
711
772
|
```tsx
|
|
712
773
|
import { ChargeTagStatus, PixTransactionTypeTag, QRCodeWrapper } from '@woovi/ui';
|
|
713
774
|
|
|
714
|
-
// Tag de status de
|
|
775
|
+
// Tag de status de cobrança
|
|
715
776
|
<ChargeTagStatus status="COMPLETED" />
|
|
716
777
|
<ChargeTagStatus status="PENDING" />
|
|
717
778
|
<ChargeTagStatus status="EXPIRED" />
|
|
718
779
|
|
|
719
|
-
// Tag de tipo de
|
|
780
|
+
// Tag de tipo de transação Pix
|
|
720
781
|
<PixTransactionTypeTag type="PAYMENT" />
|
|
721
782
|
<PixTransactionTypeTag type="WITHDRAWAL" />
|
|
722
783
|
|
|
@@ -750,7 +811,7 @@ import { PaymentLinkRow } from '@woovi/ui';
|
|
|
750
811
|
|
|
751
812
|
## PinInput
|
|
752
813
|
|
|
753
|
-
Campos de entrada para PIN e
|
|
814
|
+
Campos de entrada para PIN e códigos de verificação.
|
|
754
815
|
|
|
755
816
|
```tsx
|
|
756
817
|
import { PinInput, PinInputFormik } from '@woovi/ui';
|
|
@@ -770,7 +831,7 @@ import { PinInput, PinInputFormik } from '@woovi/ui';
|
|
|
770
831
|
|
|
771
832
|
## RadioCard
|
|
772
833
|
|
|
773
|
-
Card
|
|
834
|
+
Card selecionável estilo radio button.
|
|
774
835
|
|
|
775
836
|
```tsx
|
|
776
837
|
import { RadioCard } from '@woovi/ui';
|
|
@@ -779,7 +840,7 @@ import { RadioCard } from '@woovi/ui';
|
|
|
779
840
|
selected={selectedOption === 'pix'}
|
|
780
841
|
onClick={() => setSelectedOption('pix')}
|
|
781
842
|
title="Pix"
|
|
782
|
-
description="Pagamento
|
|
843
|
+
description="Pagamento instantâneo"
|
|
783
844
|
icon="pix"
|
|
784
845
|
/>
|
|
785
846
|
```
|
|
@@ -810,7 +871,7 @@ import { Ribbon } from '@woovi/ui';
|
|
|
810
871
|
|
|
811
872
|
<Card>
|
|
812
873
|
<Ribbon label="Novo" color="primary" />
|
|
813
|
-
<CardContent>
|
|
874
|
+
<CardContent>Conteúdo</CardContent>
|
|
814
875
|
</Card>
|
|
815
876
|
```
|
|
816
877
|
|
|
@@ -818,7 +879,7 @@ import { Ribbon } from '@woovi/ui';
|
|
|
818
879
|
|
|
819
880
|
## Root
|
|
820
881
|
|
|
821
|
-
Componentes de estrutura raiz da
|
|
882
|
+
Componentes de estrutura raiz da aplicação.
|
|
822
883
|
|
|
823
884
|
```tsx
|
|
824
885
|
import { ContentBoundary } from '@woovi/ui';
|
|
@@ -832,7 +893,7 @@ import { ContentBoundary } from '@woovi/ui';
|
|
|
832
893
|
|
|
833
894
|
## Routed
|
|
834
895
|
|
|
835
|
-
Componentes com
|
|
896
|
+
Componentes com integração de rotas.
|
|
836
897
|
|
|
837
898
|
```tsx
|
|
838
899
|
import { RoutedTabs } from '@woovi/ui';
|
|
@@ -840,9 +901,9 @@ import { RoutedTabs } from '@woovi/ui';
|
|
|
840
901
|
// Tabs com rotas
|
|
841
902
|
<RoutedTabs
|
|
842
903
|
tabs={[
|
|
843
|
-
{ label: '
|
|
844
|
-
{ label: '
|
|
845
|
-
{ label: '
|
|
904
|
+
{ label: 'Visão Geral', path: '/overview' },
|
|
905
|
+
{ label: 'Transações', path: '/transactions' },
|
|
906
|
+
{ label: 'Configurações', path: '/settings' },
|
|
846
907
|
]}
|
|
847
908
|
/>
|
|
848
909
|
```
|
|
@@ -851,7 +912,7 @@ import { RoutedTabs } from '@woovi/ui';
|
|
|
851
912
|
|
|
852
913
|
## ScreenHeader
|
|
853
914
|
|
|
854
|
-
|
|
915
|
+
Cabeçalhos de tela para dashboards.
|
|
855
916
|
|
|
856
917
|
```tsx
|
|
857
918
|
import { ScreenHeaderUI, ScreenHeaderCard } from '@woovi/ui';
|
|
@@ -859,12 +920,12 @@ import { ScreenHeaderUI, ScreenHeaderCard } from '@woovi/ui';
|
|
|
859
920
|
// Header de tela
|
|
860
921
|
<ScreenHeaderUI
|
|
861
922
|
title="Dashboard"
|
|
862
|
-
subtitle="
|
|
923
|
+
subtitle="Visão geral das suas transações"
|
|
863
924
|
actions={<ActionButton label="Exportar" />}
|
|
864
925
|
/>
|
|
865
926
|
|
|
866
927
|
// Header em card
|
|
867
|
-
<ScreenHeaderCard title="
|
|
928
|
+
<ScreenHeaderCard title="Configurações" />
|
|
868
929
|
```
|
|
869
930
|
|
|
870
931
|
- ScreenHeaderUI: https://storybook.woovi.design/?path=/docs/components-screenheader-screenheaderui--docs
|
|
@@ -898,12 +959,12 @@ import { GlobalSearchField, SearchField } from '@woovi/ui';
|
|
|
898
959
|
|
|
899
960
|
## Select
|
|
900
961
|
|
|
901
|
-
Componentes de
|
|
962
|
+
Componentes de seleção.
|
|
902
963
|
|
|
903
964
|
```tsx
|
|
904
965
|
import { Select } from '@woovi/ui';
|
|
905
966
|
|
|
906
|
-
// Select
|
|
967
|
+
// Select básico
|
|
907
968
|
<Select
|
|
908
969
|
label="Status"
|
|
909
970
|
value={status}
|
|
@@ -919,7 +980,7 @@ import { Select } from '@woovi/ui';
|
|
|
919
980
|
|
|
920
981
|
## Sidebar
|
|
921
982
|
|
|
922
|
-
Sistema de
|
|
983
|
+
Sistema de navegação lateral.
|
|
923
984
|
|
|
924
985
|
```tsx
|
|
925
986
|
import { Sidebar, SidebarGroup, SidebarItem, SidebarMenuList } from '@woovi/ui';
|
|
@@ -929,7 +990,7 @@ import { Sidebar, SidebarGroup, SidebarItem, SidebarMenuList } from '@woovi/ui';
|
|
|
929
990
|
<SidebarItem icon="dashboard" label="Dashboard" href="/" />
|
|
930
991
|
<SidebarItem icon="payment" label="Pagamentos" href="/payments" />
|
|
931
992
|
</SidebarGroup>
|
|
932
|
-
<SidebarGroup title="
|
|
993
|
+
<SidebarGroup title="Configurações">
|
|
933
994
|
<SidebarItem icon="settings" label="Conta" href="/settings" />
|
|
934
995
|
</SidebarGroup>
|
|
935
996
|
</Sidebar>
|
|
@@ -942,17 +1003,17 @@ import { Sidebar, SidebarGroup, SidebarItem, SidebarMenuList } from '@woovi/ui';
|
|
|
942
1003
|
|
|
943
1004
|
## Snackbar
|
|
944
1005
|
|
|
945
|
-
|
|
1006
|
+
Notificações toast.
|
|
946
1007
|
|
|
947
1008
|
```tsx
|
|
948
1009
|
import { useSnackbar } from '@woovi/ui';
|
|
949
1010
|
|
|
950
1011
|
const { showSnackbar } = useSnackbar();
|
|
951
1012
|
|
|
952
|
-
// Mostrar
|
|
953
|
-
showSnackbar('
|
|
1013
|
+
// Mostrar notificação
|
|
1014
|
+
showSnackbar('Operação realizada com sucesso!', { variant: 'success' });
|
|
954
1015
|
showSnackbar('Erro ao processar', { variant: 'error' });
|
|
955
|
-
showSnackbar('
|
|
1016
|
+
showSnackbar('Atenção!', { variant: 'warning' });
|
|
956
1017
|
```
|
|
957
1018
|
|
|
958
1019
|
- Snackbar: https://storybook.woovi.design/?path=/docs/components-snackbar-snackbar--docs
|
|
@@ -960,7 +1021,7 @@ showSnackbar('Atencao!', { variant: 'warning' });
|
|
|
960
1021
|
|
|
961
1022
|
## Statement
|
|
962
1023
|
|
|
963
|
-
Componentes para extrato e
|
|
1024
|
+
Componentes para extrato e histórico de transações.
|
|
964
1025
|
|
|
965
1026
|
```tsx
|
|
966
1027
|
import { LedgerStatementText, TransactionTypeText } from '@woovi/ui';
|
|
@@ -969,7 +1030,7 @@ import { LedgerStatementText, TransactionTypeText } from '@woovi/ui';
|
|
|
969
1030
|
<LedgerStatementText type="credit" value={1000} />
|
|
970
1031
|
<LedgerStatementText type="debit" value={-500} />
|
|
971
1032
|
|
|
972
|
-
// Texto de tipo de
|
|
1033
|
+
// Texto de tipo de transação
|
|
973
1034
|
<TransactionTypeText type="PIX_RECEIVED" />
|
|
974
1035
|
<TransactionTypeText type="PIX_SENT" />
|
|
975
1036
|
```
|
|
@@ -993,7 +1054,7 @@ import {
|
|
|
993
1054
|
<SwipeableDialog open={isOpen} onClose={handleClose}>
|
|
994
1055
|
<SwipeableDialogTitle>Confirmar</SwipeableDialogTitle>
|
|
995
1056
|
<SwipeableDialogContent>
|
|
996
|
-
Deseja continuar com esta
|
|
1057
|
+
Deseja continuar com esta ação?
|
|
997
1058
|
</SwipeableDialogContent>
|
|
998
1059
|
<SwipeableDialogActions>
|
|
999
1060
|
<ActionButton label="Cancelar" onClick={handleClose} />
|
|
@@ -1007,7 +1068,7 @@ import {
|
|
|
1007
1068
|
|
|
1008
1069
|
## Table
|
|
1009
1070
|
|
|
1010
|
-
Componentes de tabela, listas virtualizadas,
|
|
1071
|
+
Componentes de tabela, listas virtualizadas, alternância de visualização e parser EMV.
|
|
1011
1072
|
|
|
1012
1073
|
```tsx
|
|
1013
1074
|
import {
|
|
@@ -1036,10 +1097,10 @@ import {
|
|
|
1036
1097
|
onCardClick={(card, event) => handleClick(card)}
|
|
1037
1098
|
/>
|
|
1038
1099
|
|
|
1039
|
-
// Toggle entre
|
|
1100
|
+
// Toggle entre visualização tabela e card
|
|
1040
1101
|
<TableToggleViewModel />
|
|
1041
1102
|
|
|
1042
|
-
// Tabela de dados EMV de QR Code Pix (com linhas
|
|
1103
|
+
// Tabela de dados EMV de QR Code Pix (com linhas expansíveis para tags aninhadas)
|
|
1043
1104
|
<TablePixEMV emv="00020126580014br.gov.bcb.pix0136..." />
|
|
1044
1105
|
```
|
|
1045
1106
|
|
|
@@ -1051,20 +1112,20 @@ import {
|
|
|
1051
1112
|
|
|
1052
1113
|
## MuiTable
|
|
1053
1114
|
|
|
1054
|
-
Tabela MUI com paginação, seleção de linhas e
|
|
1115
|
+
Tabela MUI com paginação, seleção de linhas e múltiplos tipos de célula. Substitui o pacote `@woovi/table` (descontinuado). Use com `useRelayPagination` de `@woovi/hooks` para consumers Relay.
|
|
1055
1116
|
|
|
1056
1117
|
```tsx
|
|
1057
1118
|
import { Table, TableRelayPagination, CELL_TYPES, useTableProps } from '@woovi/ui';
|
|
1058
1119
|
import type { TableColumn } from '@woovi/ui';
|
|
1059
1120
|
import { useRelayPagination } from '@woovi/hooks';
|
|
1060
1121
|
|
|
1061
|
-
//
|
|
1122
|
+
// Definição de colunas
|
|
1062
1123
|
const columns: TableColumn<User>[] = [
|
|
1063
1124
|
{ property: 'name', type: CELL_TYPES.STRING, header: { label: 'Nome' } },
|
|
1064
1125
|
{ property: 'email', type: CELL_TYPES.STRING, header: { label: 'E-mail' } },
|
|
1065
1126
|
{ property: 'amount', type: CELL_TYPES.CURRENCY, header: { label: 'Saldo' } },
|
|
1066
1127
|
{ property: 'createdAt', type: CELL_TYPES.DATETIME, header: { label: 'Data' } },
|
|
1067
|
-
//
|
|
1128
|
+
// Renderização customizada
|
|
1068
1129
|
{
|
|
1069
1130
|
property: 'status',
|
|
1070
1131
|
header: { label: 'Status' },
|
|
@@ -1077,7 +1138,7 @@ const columns: TableColumn<User>[] = [
|
|
|
1077
1138
|
header: { label: 'ID' },
|
|
1078
1139
|
getClickPath: (value) => `/transactions/${value}`,
|
|
1079
1140
|
},
|
|
1080
|
-
// Menu de
|
|
1141
|
+
// Menu de ações
|
|
1081
1142
|
{
|
|
1082
1143
|
property: 'id',
|
|
1083
1144
|
type: CELL_TYPES.ACTIONS,
|
|
@@ -1089,7 +1150,7 @@ const columns: TableColumn<User>[] = [
|
|
|
1089
1150
|
},
|
|
1090
1151
|
];
|
|
1091
1152
|
|
|
1092
|
-
// Table simples (dados em
|
|
1153
|
+
// Table simples (dados em memória)
|
|
1093
1154
|
const { isLoading, quantityPerPage, setQuantityPerPage } = useTableProps();
|
|
1094
1155
|
<Table
|
|
1095
1156
|
columns={columns}
|
|
@@ -1150,7 +1211,7 @@ import {
|
|
|
1150
1211
|
<Tag label="Tag 2" />
|
|
1151
1212
|
</TagsContainer>
|
|
1152
1213
|
|
|
1153
|
-
// Tags de status
|
|
1214
|
+
// Tags de status específicos
|
|
1154
1215
|
<CashbackTagStatus status="pending" />
|
|
1155
1216
|
<TransactionTagStatus status="completed" />
|
|
1156
1217
|
```
|
|
@@ -1162,7 +1223,7 @@ import {
|
|
|
1162
1223
|
|
|
1163
1224
|
## Term
|
|
1164
1225
|
|
|
1165
|
-
Componentes de termos e
|
|
1226
|
+
Componentes de termos e condições.
|
|
1166
1227
|
|
|
1167
1228
|
```tsx
|
|
1168
1229
|
import { Terms, TermsLink } from '@woovi/ui';
|
|
@@ -1187,7 +1248,7 @@ Componentes de texto.
|
|
|
1187
1248
|
```tsx
|
|
1188
1249
|
import { TextMultiline } from '@woovi/ui';
|
|
1189
1250
|
|
|
1190
|
-
<TextMultiline text="Texto com\\
|
|
1251
|
+
<TextMultiline text="Texto com\\nmúltiplas\\nlinhas" />
|
|
1191
1252
|
```
|
|
1192
1253
|
|
|
1193
1254
|
- TextMultiline: https://storybook.woovi.design/?path=/docs/components-text-textmultiline--docs
|
|
@@ -1216,7 +1277,7 @@ const { mode, toggleMode } = useThemeMode();
|
|
|
1216
1277
|
|
|
1217
1278
|
## Timeline
|
|
1218
1279
|
|
|
1219
|
-
Linha do tempo para
|
|
1280
|
+
Linha do tempo para histórico de eventos.
|
|
1220
1281
|
|
|
1221
1282
|
```tsx
|
|
1222
1283
|
import { Timeline, TimelineItem } from '@woovi/ui';
|
|
@@ -1228,7 +1289,7 @@ import { Timeline, TimelineItem } from '@woovi/ui';
|
|
|
1228
1289
|
status="success"
|
|
1229
1290
|
/>
|
|
1230
1291
|
<TimelineItem
|
|
1231
|
-
title="
|
|
1292
|
+
title="Cobrança criada"
|
|
1232
1293
|
date="2024-01-15 10:00"
|
|
1233
1294
|
status="info"
|
|
1234
1295
|
/>
|
|
@@ -1239,18 +1300,18 @@ import { Timeline, TimelineItem } from '@woovi/ui';
|
|
|
1239
1300
|
|
|
1240
1301
|
## User
|
|
1241
1302
|
|
|
1242
|
-
Componentes para exibir
|
|
1303
|
+
Componentes para exibir informações de usuários.
|
|
1243
1304
|
|
|
1244
1305
|
```tsx
|
|
1245
1306
|
import { UserChip } from '@woovi/ui';
|
|
1246
1307
|
|
|
1247
|
-
// Chip de
|
|
1308
|
+
// Chip de usuário com avatar e nome
|
|
1248
1309
|
<UserChip label="João Silva" name="João Silva" />
|
|
1249
1310
|
|
|
1250
|
-
// Chip de
|
|
1311
|
+
// Chip de usuário com CPF (formatado automaticamente)
|
|
1251
1312
|
<UserChip label="12345678909" name="Maria Souza" />
|
|
1252
1313
|
|
|
1253
|
-
// Chip de
|
|
1314
|
+
// Chip de usuário com email
|
|
1254
1315
|
<UserChip label="user@woovi.com" name="User Woovi" />
|
|
1255
1316
|
```
|
|
1256
1317
|
|
|
@@ -1258,7 +1319,7 @@ import { UserChip } from '@woovi/ui';
|
|
|
1258
1319
|
|
|
1259
1320
|
## Utility Components
|
|
1260
1321
|
|
|
1261
|
-
Componentes
|
|
1322
|
+
Componentes utilitários diversos.
|
|
1262
1323
|
|
|
1263
1324
|
```tsx
|
|
1264
1325
|
import {
|
|
@@ -1270,10 +1331,10 @@ import {
|
|
|
1270
1331
|
Row,
|
|
1271
1332
|
} from '@woovi/ui';
|
|
1272
1333
|
|
|
1273
|
-
//
|
|
1334
|
+
// Botão voltar
|
|
1274
1335
|
<BackButton onClick={() => navigate(-1)} />
|
|
1275
1336
|
|
|
1276
|
-
// Input com
|
|
1337
|
+
// Input com botão de copiar
|
|
1277
1338
|
<CopyInput value="texto-para-copiar" />
|
|
1278
1339
|
|
|
1279
1340
|
// Texto criptografado (ex: CPF mascarado)
|
|
@@ -1349,7 +1410,7 @@ function App() {
|
|
|
1349
1410
|
<Sidebar>
|
|
1350
1411
|
<SidebarGroup title="Menu">
|
|
1351
1412
|
<SidebarItem icon="dashboard" label="Dashboard" href="/" />
|
|
1352
|
-
<SidebarItem icon="payment" label="
|
|
1413
|
+
<SidebarItem icon="payment" label="Cobranças" href="/charges" />
|
|
1353
1414
|
</SidebarGroup>
|
|
1354
1415
|
</Sidebar>
|
|
1355
1416
|
|
|
@@ -1358,8 +1419,8 @@ function App() {
|
|
|
1358
1419
|
title="Dashboard"
|
|
1359
1420
|
actions={
|
|
1360
1421
|
<ActionButton
|
|
1361
|
-
label="Nova
|
|
1362
|
-
onClick={() => showSnackbar('
|
|
1422
|
+
label="Nova Cobrança"
|
|
1423
|
+
onClick={() => showSnackbar('Cobrança criada!')}
|
|
1363
1424
|
/>
|
|
1364
1425
|
}
|
|
1365
1426
|
/>
|
|
@@ -1367,7 +1428,7 @@ function App() {
|
|
|
1367
1428
|
<CardAnalytics
|
|
1368
1429
|
title="Total Recebido"
|
|
1369
1430
|
value="R$ 15.000,00"
|
|
1370
|
-
total="150
|
|
1431
|
+
total="150 transações"
|
|
1371
1432
|
color="success"
|
|
1372
1433
|
/>
|
|
1373
1434
|
|
|
@@ -1385,4 +1446,4 @@ function App() {
|
|
|
1385
1446
|
|
|
1386
1447
|
---
|
|
1387
1448
|
|
|
1388
|
-
Gerado automaticamente para
|
|
1449
|
+
Gerado automaticamente para integração com LLMs.
|