react-lgpd-consent 0.5.1 → 0.5.2
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.en.md +407 -70
- package/README.md +444 -107
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,340 +1,677 @@
|
|
|
1
|
-
<div align="center"><div align="center">
|
|
1
|
+
<div align="center"><div align="center"><div align="center">
|
|
2
2
|
|
|
3
|
-
<h1>react-lgpd-consent 🍪</h1>
|
|
3
|
+
<h1>react-lgpd-consent 🍪</h1>
|
|
4
4
|
|
|
5
|
-
<p><strong>Gerenciamento de consentimento de cookies em conformidade com a LGPD</strong></p> <
|
|
5
|
+
<p><strong>Gerenciamento de consentimento de cookies em conformidade com a LGPD</strong></p> <h1>react-lgpd-consent 🍪</h1> <h1>react-lgpd-consent 🍪</h1>
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
<div> <
|
|
9
|
+
<div> <p><strong>Gerenciamento de consentimento de cookies em conformidade com a LGPD</strong></p> <p><strong>Uma biblioteca React para gerenciamento de consentimento de cookies em conformidade com a LGPD.</strong></p>
|
|
10
|
+
|
|
11
|
+
<a href="https://www.npmjs.com/package/react-lgpd-consent"><img src="https://img.shields.io/npm/v/react-lgpd-consent?style=for-the-badge&logo=npm&color=cb3837&logoColor=white" alt="NPM Version"></a>
|
|
12
|
+
|
|
13
|
+
<a href="https://www.npmjs.com/package/react-lgpd-consent"><img src="https://img.shields.io/npm/dm/react-lgpd-consent?style=for-the-badge&logo=npm&color=ff6b35&logoColor=white" alt="Downloads"></a>
|
|
14
|
+
|
|
15
|
+
<a href="https://github.com/lucianoedipo/react-lgpd-consent/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/react-lgpd-consent?style=for-the-badge&color=green&logoColor=white" alt="License"></a>
|
|
16
|
+
|
|
17
|
+
<a href="https://lucianoedipo.github.io/react-lgpd-consent/storybook/"><img src="https://img.shields.io/badge/Storybook-Playground-ff4785?style=for-the-badge&logo=storybook&logoColor=white" alt="Storybook"></a> <div> <div>
|
|
18
|
+
|
|
19
|
+
</div>
|
|
10
20
|
|
|
11
21
|
<a href="https://www.npmjs.com/package/react-lgpd-consent"><img src="https://img.shields.io/npm/v/react-lgpd-consent?style=for-the-badge&logo=npm&color=cb3837&logoColor=white" alt="NPM Version"></a> <a href="https://www.npmjs.com/package/react-lgpd-consent"><img src="https://img.shields.io/npm/v/react-lgpd-consent?style=for-the-badge&logo=npm&color=cb3837&logoColor=white" alt="NPM Version"></a>
|
|
12
22
|
|
|
13
|
-
|
|
23
|
+
<div>
|
|
24
|
+
|
|
25
|
+
<a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-Ready-3178c6?style=for-the-badge&logo=typescript&logoColor=white" alt="TypeScript Ready"></a> <a href="https://www.npmjs.com/package/react-lgpd-consent"><img src="https://img.shields.io/npm/dm/react-lgpd-consent?style=for-the-badge&logo=npm&color=ff6b35&logoColor=white" alt="Downloads"></a> <a href="https://www.npmjs.com/package/react-lgpd-consent"><img src="https://img.shields.io/npm/dm/react-lgpd-consent?style=for-the-badge&logo=npm&color=ff6b35&logoColor=white" alt="Downloads"></a>
|
|
26
|
+
|
|
27
|
+
<a href="https://reactjs.org/"><img src="https://img.shields.io/badge/React-18%2B%2019-61dafb?style=for-the-badge&logo=react&logoColor=white" alt="React 18+19"></a>
|
|
28
|
+
|
|
29
|
+
<a href="https://nextjs.org/"><img src="https://img.shields.io/badge/Next.js-Compatible-000000?style=for-the-badge&logo=next.js&logoColor=white" alt="Next.js Compatible"></a> <a href="https://github.com/lucianoedipo/react-lgpd-consent/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/react-lgpd-consent?style=for-the-badge&color=green&logoColor=white" alt="License"></a> <a href="https://github.com/lucianoedipo/react-lgpd-consent/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/react-lgpd-consent?style=for-the-badge&color=green&logoColor=white" alt="License"></a>
|
|
14
30
|
|
|
15
|
-
|
|
31
|
+
</div>
|
|
16
32
|
|
|
17
33
|
<a href="https://lucianoedipo.github.io/react-lgpd-consent/storybook/"><img src="https://img.shields.io/badge/Storybook-Playground-ff4785?style=for-the-badge&logo=storybook&logoColor=white" alt="Storybook"></a> <a href="https://lucianoedipo.github.io/react-lgpd-consent/storybook/"><img src="https://img.shields.io/badge/Storybook-Playground-ff4785?style=for-the-badge&logo=storybook&logoColor=white" alt="Storybook"></a>
|
|
18
34
|
|
|
19
|
-
|
|
35
|
+
<div>
|
|
20
36
|
|
|
37
|
+
<a href="https://codecov.io/gh/lucianoedipo/react-lgpd-consent"><img src="https://img.shields.io/codecov/c/github/lucianoedipo/react-lgpd-consent?style=for-the-badge&logo=codecov&logoColor=white" alt="Coverage"></a> </div> </div>
|
|
21
38
|
|
|
39
|
+
<a href="https://bundlephobia.com/package/react-lgpd-consent"><img src="https://img.shields.io/bundlephobia/minzip/react-lgpd-consent?style=for-the-badge&logo=webpack&logoColor=white&label=Bundle" alt="Bundle Size"></a>
|
|
22
40
|
|
|
23
|
-
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
<br /> <div> <div>
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
<p> <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-Ready-3178c6?style=for-the-badge&logo=typescript&logoColor=white" alt="TypeScript Ready"></a> <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-Ready-3178c6?style=for-the-badge&logo=typescript&logoColor=white" alt="TypeScript Ready"></a>
|
|
50
|
+
|
|
51
|
+
<a href="#-instalação"><strong>Instalação</strong></a> •
|
|
24
52
|
|
|
25
|
-
<a href="https://
|
|
53
|
+
<a href="#-início-rápido"><strong>Início Rápido</strong></a> • <a href="https://reactjs.org/"><img src="https://img.shields.io/badge/React-18%2B%2019-61dafb?style=for-the-badge&logo=react&logoColor=white" alt="React 18+19"></a> <a href="https://reactjs.org/"><img src="https://img.shields.io/badge/React-18+-61dafb?style=for-the-badge&logo=react&logoColor=white" alt="React 18+"></a>
|
|
26
54
|
|
|
27
|
-
<a href="https://
|
|
55
|
+
<a href="https://github.com/lucianoedipo/react-lgpd-consent/blob/main/QUICKSTART.md"><strong>📚 Guia Completo</strong></a> •
|
|
28
56
|
|
|
29
|
-
<a href="https://nextjs.org/"><img src="https://img.shields.io/badge/Next.js-Compatible-000000?style=for-the-badge&logo=next.js&logoColor=white" alt="Next.js Compatible"></a> <a href="https://nextjs.org/"><img src="https://img.shields.io/badge/Next.js-Compatible-000000?style=for-the-badge&logo=next.js&logoColor=white" alt="Next.js Compatible"></a>
|
|
57
|
+
<a href="#-documentação"><strong>Documentação</strong></a> • <a href="https://nextjs.org/"><img src="https://img.shields.io/badge/Next.js-Compatible-000000?style=for-the-badge&logo=next.js&logoColor=white" alt="Next.js Compatible"></a> <a href="https://nextjs.org/"><img src="https://img.shields.io/badge/Next.js-Compatible-000000?style=for-the-badge&logo=next.js&logoColor=white" alt="Next.js Compatible"></a>
|
|
30
58
|
|
|
31
|
-
|
|
59
|
+
<a href="https://github.com/lucianoedipo/react-lgpd-consent/blob/main/packages/react-lgpd-consent/README.en.md">🇺🇸 English</a>
|
|
32
60
|
|
|
61
|
+
</p> </div> </div>
|
|
33
62
|
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
---
|
|
34
68
|
|
|
35
69
|
<div> <div>
|
|
36
70
|
|
|
71
|
+
## 🎯 O que há de novo na v0.5.0
|
|
72
|
+
|
|
37
73
|
<a href="https://codecov.io/gh/lucianoedipo/react-lgpd-consent"><img src="https://img.shields.io/codecov/c/github/lucianoedipo/react-lgpd-consent?style=for-the-badge&logo=codecov&logoColor=white" alt="Coverage"></a> <a href="https://codecov.io/gh/lucianoedipo/react-lgpd-consent"><img src="https://img.shields.io/codecov/c/github/lucianoedipo/react-lgpd-consent?style=for-the-badge&logo=codecov&logoColor=white" alt="Coverage"></a>
|
|
38
74
|
|
|
75
|
+
### 🏗️ Arquitetura Modular (BREAKING CHANGE)
|
|
76
|
+
|
|
39
77
|
<a href="https://bundlephobia.com/package/react-lgpd-consent"><img src="https://img.shields.io/bundlephobia/minzip/react-lgpd-consent?style=for-the-badge&logo=webpack&logoColor=white&label=Bundle" alt="Bundle Size"></a> <a href="https://bundlephobia.com/package/react-lgpd-consent"><img src="https://img.shields.io/bundlephobia/minzip/react-lgpd-consent?style=for-the-badge&logo=webpack&logoColor=white" alt="Bundle Size"></a>
|
|
40
78
|
|
|
79
|
+
A v0.5.0 introduz uma **arquitetura monorepo** com 3 pacotes independentes:
|
|
80
|
+
|
|
41
81
|
</div> <a href="https://nodejs.org"><img src="https://img.shields.io/node/v/react-lgpd-consent?style=for-the-badge&logo=node.js&logoColor=white" alt="Node Version"></a>
|
|
42
82
|
|
|
43
|
-
|
|
83
|
+
| Pacote | Descrição | Bundle | Use quando... |
|
|
44
84
|
|
|
45
|
-
|
|
85
|
+
|--------|-----------|--------|---------------| </div>
|
|
86
|
+
|
|
87
|
+
| [`@react-lgpd-consent/core`](https://www.npmjs.com/package/@react-lgpd-consent/core) | Lógica headless sem UI | ~86 KB | Você vai criar sua própria UI customizada |
|
|
88
|
+
|
|
89
|
+
| [`@react-lgpd-consent/mui`](https://www.npmjs.com/package/@react-lgpd-consent/mui) | Componentes Material-UI prontos | ~104 KB | Você quer componentes UI prontos com MUI | <br />
|
|
90
|
+
|
|
91
|
+
| `react-lgpd-consent` | Agregador (re-exporta MUI) | ~104 KB | **Compatibilidade com v0.4.x** |
|
|
46
92
|
|
|
47
93
|
<br />
|
|
48
94
|
|
|
95
|
+
> **💡 Este pacote (`react-lgpd-consent`)** é o agregador que mantém compatibilidade retroativa. Ele re-exporta `@react-lgpd-consent/mui` e funciona exatamente como a v0.4.x, mas agora com a nova arquitetura.
|
|
96
|
+
|
|
49
97
|
<p>
|
|
50
98
|
|
|
99
|
+
### ✨ Novos Recursos v0.5.0
|
|
100
|
+
|
|
51
101
|
<a href="#-instalação"><strong>Instalação</strong></a> • <p>
|
|
52
102
|
|
|
53
|
-
|
|
103
|
+
- ✅ **Auto-injeção de Componentes**: `ConsentProvider` do MUI injeta automaticamente Banner, Modal e Floating Button
|
|
54
104
|
|
|
55
|
-
<a href="
|
|
105
|
+
- ✅ **Tema MUI Integrado**: Suporte a ThemeProvider opcional com `createDefaultConsentTheme()` <a href="#-início-rápido"><strong>Início Rápido</strong></a> • <a href="#-instalação"><strong>Instalação</strong></a> •
|
|
106
|
+
|
|
107
|
+
- ✅ **Controle Granular**: Props para desabilitar componentes individuais (`disableDefaultBanner`, `disableDefaultModal`, `disableDefaultFloatingButton`)
|
|
108
|
+
|
|
109
|
+
- ✅ **Warnings de Desenvolvedor**: Sistema inteligente que avisa quando faltam componentes UI (apenas em DEV) <a href="https://github.com/lucianoedipo/react-lgpd-consent/blob/main/QUICKSTART.md"><strong>📚 Guia Completo</strong></a> • <a href="#-uso-básico"><strong>Uso Básico</strong></a> •
|
|
110
|
+
|
|
111
|
+
- ✅ **Monorepo TypeScript**: Paths configurados para melhor DX em IDEs
|
|
56
112
|
|
|
57
113
|
<a href="#-documentação"><strong>Documentação</strong></a> • <a href="./QUICKSTART.md"><strong>📚 Guia de Início Rápido</strong></a> •
|
|
58
114
|
|
|
115
|
+
### 📦 Migração de v0.4.x → v0.5.0
|
|
116
|
+
|
|
59
117
|
<a href="https://github.com/lucianoedipo/react-lgpd-consent/blob/main/README.en.md">🇺🇸 English</a> <a href="#-documentação-completa"><strong>Documentação</strong></a> •
|
|
60
118
|
|
|
119
|
+
**Se você usa `react-lgpd-consent` (este pacote):**
|
|
120
|
+
|
|
61
121
|
</p> <a href="./README.en.md">🇺🇸 🇬🇧 English</a> •
|
|
62
122
|
|
|
123
|
+
✅ **Nenhuma mudança necessária!** A API é 100% retrocompatível.
|
|
124
|
+
|
|
63
125
|
</div> <a href="#-como-contribuir"><strong>Contribuir</strong></a>
|
|
64
126
|
|
|
65
|
-
|
|
127
|
+
```tsx
|
|
128
|
+
|
|
129
|
+
// v0.4.x - continua funcionando </p>
|
|
130
|
+
|
|
131
|
+
import { ConsentProvider, useConsent } from 'react-lgpd-consent'
|
|
66
132
|
|
|
67
133
|
---
|
|
68
134
|
|
|
69
|
-
|
|
135
|
+
// v0.5.0 - mesma API, mesmos componentes
|
|
136
|
+
|
|
137
|
+
import { ConsentProvider, useConsent } from 'react-lgpd-consent' <!-- Quickstart callout (mantido) -->
|
|
138
|
+
|
|
139
|
+
```
|
|
70
140
|
|
|
71
141
|
## 🎯 O que há de novo na v0.5.0 <p align="center">
|
|
72
142
|
|
|
143
|
+
**Se você quer otimizar o bundle:**
|
|
144
|
+
|
|
73
145
|
<a href="./QUICKSTART.md"><img src="https://img.shields.io/badge/Quickstart-Iniciar%20R%C3%A1pido-blue?style=for-the-badge&logo=book" alt="Quickstart"></a>
|
|
74
146
|
|
|
75
|
-
|
|
147
|
+
```tsx
|
|
76
148
|
|
|
149
|
+
// Opção 1: Core (headless) + sua própria UI (~86 KB)### 🏗️ Arquitetura Modular (BREAKING CHANGE) </p>
|
|
77
150
|
|
|
151
|
+
import { ConsentProvider } from '@react-lgpd-consent/core'
|
|
78
152
|
|
|
79
|
-
A v0.5.0 introduz uma **arquitetura monorepo** com 3 pacotes independentes: <p align="center"><strong>Comece por aqui:</strong> siga o <a href="./QUICKSTART.md">Guia de Início Rápido (QUICKSTART.md)</a> para um tutorial passo-a-passo, exemplos TypeScript, tabela de props e integração com MUI — recomendado para usuários novos.</p>
|
|
80
153
|
|
|
81
|
-
</div>
|
|
82
154
|
|
|
83
|
-
|
|
155
|
+
// Opção 2: MUI com componentes prontos (~104 KB)
|
|
84
156
|
|
|
85
|
-
|
|
157
|
+
import { ConsentProvider } from '@react-lgpd-consent/mui'A v0.5.0 introduz uma **arquitetura monorepo** com 3 pacotes independentes: <p align="center"><strong>Comece por aqui:</strong> siga o <a href="./QUICKSTART.md">Guia de Início Rápido (QUICKSTART.md)</a> para um tutorial passo-a-passo, exemplos TypeScript, tabela de props e integração com MUI — recomendado para usuários novos.</p>
|
|
86
158
|
|
|
87
|
-
| **`@react-lgpd-consent/core`** | Lógica headless sem UI | ~86 KB | Você vai criar sua própria UI customizada |
|
|
88
159
|
|
|
89
|
-
| **`@react-lgpd-consent/mui`** | Componentes Material-UI prontos | ~104 KB | Você quer componentes UI prontos com MUI |## 🚀 Instalação
|
|
90
160
|
|
|
91
|
-
|
|
161
|
+
// Opção 3: Agregador (compatibilidade) (~104 KB)</div>
|
|
92
162
|
|
|
93
|
-
|
|
163
|
+
import { ConsentProvider } from 'react-lgpd-consent' // Este pacote
|
|
94
164
|
|
|
95
|
-
|
|
165
|
+
```| Pacote | Descrição | Bundle | Use quando... |
|
|
96
166
|
|
|
97
|
-
```
|
|
98
167
|
|
|
99
|
-
### ✨ Novos Recursos v0.5.0
|
|
100
168
|
|
|
101
|
-
|
|
169
|
+
---|--------|-----------|--------|---------------|---
|
|
102
170
|
|
|
103
|
-
- ✅ **Auto-injeção de Componentes**: `ConsentProvider` do MUI injeta automaticamente Banner, Modal e Floating Button
|
|
104
171
|
|
|
105
|
-
|
|
172
|
+
|
|
173
|
+
## 🚀 Instalação| **`@react-lgpd-consent/core`** | Lógica headless sem UI | ~86 KB | Você vai criar sua própria UI customizada |
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
```bash| **`@react-lgpd-consent/mui`** | Componentes Material-UI prontos | ~104 KB | Você quer componentes UI prontos com MUI |## 🚀 Instalação
|
|
178
|
+
|
|
179
|
+
npm install react-lgpd-consent
|
|
180
|
+
|
|
181
|
+
```| **`react-lgpd-consent`** | Agregador (re-exporta MUI) | ~104 KB | **Compatibilidade com v0.4.x** |
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
### Dependências Peer (instaladas automaticamente se não existirem)```bash
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
```bash> **💡 Este pacote (`react-lgpd-consent`)** é o agregador que mantém compatibilidade retroativa. Ele re-exporta `@react-lgpd-consent/mui` e funciona exatamente como a v0.4.x, mas agora com a nova arquitetura.npm install react-lgpd-consent @mui/material @emotion/react @emotion/styled js-cookie
|
|
190
|
+
|
|
191
|
+
npm install react react-dom @mui/material @emotion/react @emotion/styled
|
|
192
|
+
|
|
193
|
+
``````
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
---### ✨ Novos Recursos v0.5.0
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
## ⚡ Início Rápido**Dependências peer:** `react`, `react-dom`, `@mui/material` e `js-cookie`.
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
### Setup Básico (3 linhas de código)- ✅ **Auto-injeção de Componentes**: `ConsentProvider` do MUI injeta automaticamente Banner, Modal e Floating Button
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
```tsx- ✅ **Tema MUI Integrado**: Suporte a ThemeProvider opcional com `createDefaultConsentTheme()`---
|
|
210
|
+
|
|
211
|
+
import { ConsentProvider } from 'react-lgpd-consent'
|
|
106
212
|
|
|
107
213
|
- ✅ **Controle Granular**: Props para desabilitar componentes individuais (`disableDefaultBanner`, `disableDefaultModal`, `disableDefaultFloatingButton`)
|
|
108
214
|
|
|
109
|
-
|
|
215
|
+
export default function App() {
|
|
110
216
|
|
|
111
|
-
- ✅ **
|
|
217
|
+
return (- ✅ **Warnings de Desenvolvedor**: Sistema inteligente que avisa quando faltam componentes UI (apenas em DEV)## ✨ Novidades v0.4.5
|
|
218
|
+
|
|
219
|
+
<ConsentProvider categories={{ enabledCategories: ['analytics', 'marketing'] }}>
|
|
220
|
+
|
|
221
|
+
<YourApp />- ✅ **Monorepo TypeScript**: Paths configurados para melhor DX em IDEs
|
|
222
|
+
|
|
223
|
+
</ConsentProvider>
|
|
112
224
|
|
|
113
|
-
### 📊 DataLayer Events para Google Tag Manager
|
|
225
|
+
)### 📊 DataLayer Events para Google Tag Manager
|
|
114
226
|
|
|
115
|
-
|
|
227
|
+
}
|
|
116
228
|
|
|
117
|
-
|
|
229
|
+
```### 📦 Migração de v0.4.x → v0.5.0- **Eventos Padronizados**: `consent_initialized` e `consent_updated` disparados automaticamente
|
|
118
230
|
|
|
119
|
-
**Se você usa `react-lgpd-consent` (este pacote):**- **Auditoria LGPD**: Histórico completo de mudanças com `changed_categories` e timestamps ISO 8601
|
|
120
231
|
|
|
121
|
-
|
|
232
|
+
|
|
233
|
+
**Isso já inclui:**- **Rastreamento de Origem**: Identifica se decisão veio do banner, modal, reset ou API programática
|
|
234
|
+
|
|
235
|
+
- ✅ Banner de cookies
|
|
236
|
+
|
|
237
|
+
- ✅ Modal de preferências**Se você usa `react-lgpd-consent` (este pacote):**- **Auditoria LGPD**: Histórico completo de mudanças com `changed_categories` e timestamps ISO 8601
|
|
238
|
+
|
|
239
|
+
- ✅ Botão flutuante para reabrir preferências
|
|
240
|
+
|
|
241
|
+
- ✅ Persistência em cookies- **Integração GTM**: Documentação completa com exemplos de triggers e tags
|
|
242
|
+
|
|
243
|
+
- ✅ SSR-safe (Next.js, Remix)
|
|
122
244
|
|
|
123
245
|
✅ **Nenhuma mudança necessária!** A API é 100% retrocompatível.- **API Pública**: Funções `pushConsentInitializedEvent` e `pushConsentUpdatedEvent` exportadas
|
|
124
246
|
|
|
247
|
+
### Acessar Estado de Consentimento
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
```tsx
|
|
252
|
+
|
|
253
|
+
import { useConsent } from 'react-lgpd-consent'```tsx### 🔧 Melhorias de CI/CD
|
|
254
|
+
|
|
125
255
|
|
|
126
256
|
|
|
127
|
-
|
|
257
|
+
function MyComponent() {// v0.4.x - continua funcionando- **Migração para pnpm**: Workflows atualizados de npm para pnpm, resolvendo conflitos de dependências
|
|
128
258
|
|
|
129
|
-
|
|
259
|
+
const { preferences, acceptCategory, rejectCategory } = useConsent()
|
|
130
260
|
|
|
131
261
|
import { ConsentProvider, useConsent } from 'react-lgpd-consent'- **Build Otimizado**: Pipeline mais rápido e confiável
|
|
132
262
|
|
|
263
|
+
if (preferences.analytics) {
|
|
133
264
|
|
|
265
|
+
// Analytics está permitido, carregue scripts
|
|
266
|
+
|
|
267
|
+
}
|
|
134
268
|
|
|
135
269
|
// v0.5.0 - mesma API, mesmos componentes---
|
|
136
270
|
|
|
137
|
-
|
|
271
|
+
return (
|
|
138
272
|
|
|
139
|
-
|
|
273
|
+
<button onClick={() => acceptCategory('marketing')}>import { ConsentProvider, useConsent } from 'react-lgpd-consent'
|
|
140
274
|
|
|
275
|
+
Aceitar Marketing
|
|
141
276
|
|
|
277
|
+
</button>```## ✨ Novidades v0.4.4
|
|
278
|
+
|
|
279
|
+
)
|
|
280
|
+
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
```
|
|
142
284
|
|
|
143
285
|
**Se você quer otimizar o bundle:**### 🔧 CI/CD e Publicação
|
|
144
286
|
|
|
287
|
+
### Carregar Scripts Condicionados ao Consentimento
|
|
288
|
+
|
|
145
289
|
- **Workflow de Publicação**: Corrigido bug que impedia publicação automática no npm quando tags eram criadas após merge para `main`
|
|
146
290
|
|
|
147
|
-
```tsx
|
|
291
|
+
```tsx
|
|
148
292
|
|
|
149
|
-
|
|
293
|
+
import { ConsentScriptLoader } from 'react-lgpd-consent'```tsx- **Codecov Integration**: Adicionado upload automático de coverage reports para melhor visualização de cobertura de testes
|
|
150
294
|
|
|
151
|
-
import { ConsentProvider } from '@react-lgpd-consent/core'
|
|
152
295
|
|
|
153
|
-
### 📊 Qualidade e Confiabilidade
|
|
154
296
|
|
|
155
|
-
// Opção
|
|
297
|
+
function Analytics() {// Opção 1: Core (headless) + sua própria UI (~86 KB)- **Badge de Coverage**: Agora atualizado em tempo real via Codecov
|
|
156
298
|
|
|
157
|
-
|
|
299
|
+
return (
|
|
158
300
|
|
|
301
|
+
<ConsentScriptLoaderimport { ConsentProvider } from '@react-lgpd-consent/core'
|
|
159
302
|
|
|
303
|
+
category="analytics"
|
|
160
304
|
|
|
161
|
-
|
|
305
|
+
src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"### 📊 Qualidade e Confiabilidade
|
|
162
306
|
|
|
163
|
-
|
|
307
|
+
strategy="afterInteractive"
|
|
308
|
+
|
|
309
|
+
>// Opção 2: MUI com componentes prontos (~104 KB)- **Publicação Confiável**: Tags agora são publicadas corretamente quando commit está no histórico da `main`
|
|
310
|
+
|
|
311
|
+
{`
|
|
312
|
+
|
|
313
|
+
window.dataLayer = window.dataLayer || [];import { ConsentProvider } from '@react-lgpd-consent/mui'- **Visibilidade de Cobertura**: Integração completa com Codecov para tracking de qualidade
|
|
314
|
+
|
|
315
|
+
function gtag(){dataLayer.push(arguments);}
|
|
316
|
+
|
|
317
|
+
gtag('js', new Date());
|
|
318
|
+
|
|
319
|
+
gtag('config', 'GA_MEASUREMENT_ID');
|
|
320
|
+
|
|
321
|
+
`}// Opção 3: Agregador (compatibilidade) (~104 KB)---
|
|
322
|
+
|
|
323
|
+
</ConsentScriptLoader>
|
|
324
|
+
|
|
325
|
+
)import { ConsentProvider } from 'react-lgpd-consent' // Este pacote
|
|
164
326
|
|
|
165
|
-
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
``````## ✨ Novidades v0.4.1
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
---
|
|
166
334
|
|
|
167
335
|
|
|
168
336
|
|
|
169
|
-
---### 🎨 Design Tokens Expandidos
|
|
337
|
+
## 🎨 Customização---### 🎨 Design Tokens Expandidos
|
|
170
338
|
|
|
171
|
-
- **200+ pontos de customização** (cores, tipografia, espaçamento, layout)
|
|
172
339
|
|
|
173
|
-
|
|
340
|
+
|
|
341
|
+
### Tema Material-UI- **200+ pontos de customização** (cores, tipografia, espaçamento, layout)
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
```tsx## 🚀 Instalação- **Sistema responsivo** com breakpoints e variações
|
|
346
|
+
|
|
347
|
+
import { ConsentProvider, createDefaultConsentTheme } from 'react-lgpd-consent'
|
|
174
348
|
|
|
175
349
|
- **Acessibilidade nativa** com contrast ratios e focus states
|
|
176
350
|
|
|
177
|
-
|
|
351
|
+
<ConsentProvider
|
|
178
352
|
|
|
179
|
-
|
|
353
|
+
theme={createDefaultConsentTheme({```bash- **Temas light/dark/auto** com transições suaves
|
|
180
354
|
|
|
181
|
-
|
|
355
|
+
palette: {
|
|
182
356
|
|
|
183
|
-
|
|
357
|
+
primary: { main: '#your-brand-color' }npm install react-lgpd-consent
|
|
184
358
|
|
|
185
|
-
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
})}```### 📝 Sistema Avançado de Textos
|
|
362
|
+
|
|
363
|
+
categories={{ enabledCategories: ['analytics'] }}
|
|
364
|
+
|
|
365
|
+
>- **Templates pré-configurados** para ecommerce, SaaS e governo
|
|
366
|
+
|
|
367
|
+
<App />
|
|
368
|
+
|
|
369
|
+
</ConsentProvider>### Dependências Peer (instaladas automaticamente se não existirem)- **Internacionalização completa** (pt, en, es)
|
|
370
|
+
|
|
371
|
+
```
|
|
186
372
|
|
|
187
373
|
- **Variações de tom** (formal, casual, técnico)
|
|
188
374
|
|
|
375
|
+
### Desabilitar Componentes Padrão
|
|
376
|
+
|
|
189
377
|
```bash- **Resolução automática** baseada em contexto
|
|
190
378
|
|
|
191
|
-
|
|
379
|
+
```tsx
|
|
192
380
|
|
|
193
|
-
|
|
381
|
+
import { ConsentProvider, CookieBanner, PreferencesModal } from 'react-lgpd-consent'npm install react react-dom @mui/material @emotion/react @emotion/styled
|
|
194
382
|
|
|
195
|
-
- **Detecção automática** de cookies em runtime
|
|
196
383
|
|
|
197
|
-
---- **Categorização inteligente** usando padrões LGPD
|
|
198
384
|
|
|
199
|
-
|
|
385
|
+
<ConsentProvider```### 🔍 Descoberta de Cookies (Experimental)
|
|
200
386
|
|
|
201
|
-
|
|
387
|
+
categories={{ enabledCategories: ['analytics'] }}
|
|
202
388
|
|
|
203
|
-
|
|
389
|
+
disableDefaultBanner- **Detecção automática** de cookies em runtime
|
|
204
390
|
|
|
205
|
-
|
|
391
|
+
disableDefaultModal
|
|
206
392
|
|
|
207
|
-
|
|
393
|
+
>---- **Categorização inteligente** usando padrões LGPD
|
|
208
394
|
|
|
209
|
-
|
|
395
|
+
{/* Use seus próprios componentes */}
|
|
210
396
|
|
|
211
|
-
|
|
397
|
+
<CookieBanner position="bottom-left" />- **Integração nativa** com sistema de override
|
|
212
398
|
|
|
213
|
-
|
|
399
|
+
<PreferencesModal showBranding={false} />
|
|
214
400
|
|
|
215
|
-
|
|
401
|
+
<App />## ⚡ Início Rápido
|
|
216
402
|
|
|
217
|
-
|
|
403
|
+
</ConsentProvider>
|
|
218
404
|
|
|
219
|
-
|
|
405
|
+
```### ⚠️ Breaking Changes
|
|
220
406
|
|
|
221
|
-
<YourApp />Envolva sua aplicação com o `ConsentProvider` (exemplo mínimo):
|
|
222
407
|
|
|
223
|
-
</ConsentProvider>
|
|
224
408
|
|
|
225
|
-
|
|
409
|
+
### Design Tokens Avançados### Setup Básico (3 linhas de código)- **Suporte a categorias customizadas**: `setPreference` e `ScriptIntegration.category` agora usam `string` ao invés de `Category`
|
|
226
410
|
|
|
227
|
-
}import { ConsentProvider } from 'react-lgpd-consent'
|
|
228
411
|
|
|
229
|
-
```
|
|
230
412
|
|
|
231
|
-
|
|
413
|
+
```tsx- **Impacto mínimo**: Código usando strings literais continua funcionando sem alterações
|
|
414
|
+
|
|
415
|
+
<ConsentProvider
|
|
416
|
+
|
|
417
|
+
categories={{ enabledCategories: ['analytics'] }}```tsx- **Consulte**: [CHANGELOG.md](./CHANGELOG.md) para guia de migração completo
|
|
418
|
+
|
|
419
|
+
designTokens={{
|
|
420
|
+
|
|
421
|
+
colors: {import { ConsentProvider } from 'react-lgpd-consent'
|
|
422
|
+
|
|
423
|
+
primary: '#1976d2',
|
|
424
|
+
|
|
425
|
+
secondary: '#dc004e',---
|
|
426
|
+
|
|
427
|
+
background: '#ffffff',
|
|
428
|
+
|
|
429
|
+
},export default function App() {
|
|
430
|
+
|
|
431
|
+
layout: {
|
|
232
432
|
|
|
233
|
-
|
|
433
|
+
backdropColor: 'rgba(0, 0, 0, 0.8)', return (## 📖 Uso Básico
|
|
234
434
|
|
|
235
|
-
|
|
435
|
+
bannerPosition: 'bottom-center',
|
|
436
|
+
|
|
437
|
+
}, <ConsentProvider categories={{ enabledCategories: ['analytics', 'marketing'] }}>
|
|
438
|
+
|
|
439
|
+
typography: {
|
|
440
|
+
|
|
441
|
+
fontFamily: 'Inter, sans-serif', <YourApp />Envolva sua aplicação com o `ConsentProvider` (exemplo mínimo):
|
|
236
442
|
|
|
237
|
-
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
}} </ConsentProvider>
|
|
238
446
|
|
|
239
|
-
|
|
447
|
+
>
|
|
448
|
+
|
|
449
|
+
<App /> )```tsx
|
|
450
|
+
|
|
451
|
+
</ConsentProvider>
|
|
452
|
+
|
|
453
|
+
```}import { ConsentProvider } from 'react-lgpd-consent'
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
---```
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
## 📚 Documentaçãoexport default function App() {
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
### 📖 Guias Completos (GitHub)**Isso já inclui:** return (
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
- [**📚 Quickstart**](https://github.com/lucianoedipo/react-lgpd-consent/blob/main/QUICKSTART.md): Tutorial passo-a-passo com exemplos TypeScript- ✅ Banner de cookies <ConsentProvider categories={{ enabledCategories: ['analytics'] }}>
|
|
470
|
+
|
|
471
|
+
- [**🏗️ API Reference**](https://github.com/lucianoedipo/react-lgpd-consent/blob/main/API.md): Referência completa de componentes, hooks e tipos
|
|
472
|
+
|
|
473
|
+
- [**⚖️ Conformidade LGPD**](https://github.com/lucianoedipo/react-lgpd-consent/blob/main/CONFORMIDADE.md): Detalhes sobre compliance e auditoria- ✅ Modal de preferências <YourApp />
|
|
474
|
+
|
|
475
|
+
- [**🔌 Integrações**](https://github.com/lucianoedipo/react-lgpd-consent/blob/main/INTEGRACOES.md): Google Analytics, GTM, Facebook Pixel, Hotjar, etc.
|
|
476
|
+
|
|
477
|
+
- [**🏛️ Arquitetura**](https://github.com/lucianoedipo/react-lgpd-consent/blob/main/ARCHITECTURE.md): Detalhes da arquitetura monorepo v0.5.0- ✅ Botão flutuante para reabrir preferências </ConsentProvider>
|
|
478
|
+
|
|
479
|
+
- [**📝 Changelog**](https://github.com/lucianoedipo/react-lgpd-consent/blob/main/CHANGELOG.md): Histórico completo de versões
|
|
240
480
|
|
|
241
481
|
- ✅ Persistência em cookies )
|
|
242
482
|
|
|
483
|
+
### 🎨 Documentação Interativa (GitHub Pages)
|
|
484
|
+
|
|
243
485
|
- ✅ SSR-safe (Next.js, Remix)}
|
|
244
486
|
|
|
245
|
-
|
|
487
|
+
- [**🎭 Storybook - Playground Interativo**](https://lucianoedipo.github.io/react-lgpd-consent/storybook/): Explore e teste todos os componentes em tempo real
|
|
488
|
+
|
|
489
|
+
- [**⚙️ TypeDoc - API Docs**](https://lucianoedipo.github.io/react-lgpd-consent/docs/): Documentação da API gerada automaticamente```
|
|
490
|
+
|
|
491
|
+
- [**🏠 Portal de Documentação**](https://lucianoedipo.github.io/react-lgpd-consent/): Navegação central entre todas as docs
|
|
246
492
|
|
|
247
493
|
### Acessar Estado de Consentimento
|
|
248
494
|
|
|
495
|
+
---
|
|
496
|
+
|
|
249
497
|
## Nota sobre ThemeProvider e tema padrão
|
|
250
498
|
|
|
499
|
+
## 🔌 Integrações Nativas
|
|
500
|
+
|
|
251
501
|
```tsx
|
|
252
502
|
|
|
503
|
+
A biblioteca possui integrações prontas para:
|
|
504
|
+
|
|
253
505
|
import { useConsent } from 'react-lgpd-consent'A biblioteca não cria um `ThemeProvider` global automaticamente. Ela tenta herdar o tema do seu app quando você já possui um `ThemeProvider` do MUI. Se você quiser aplicar explicitamente um tema de fallback para os componentes de consentimento, use a fábrica exportada `createDefaultConsentTheme()` e passe via prop `theme`:
|
|
254
506
|
|
|
507
|
+
- ✅ **Google Analytics 4** (GA4)
|
|
255
508
|
|
|
509
|
+
- ✅ **Google Tag Manager** (GTM)
|
|
256
510
|
|
|
257
|
-
|
|
511
|
+
- ✅ **Facebook Pixel**
|
|
258
512
|
|
|
259
|
-
|
|
513
|
+
- ✅ **Hotjar**function MyComponent() {```tsx
|
|
260
514
|
|
|
515
|
+
- ✅ **Microsoft Clarity**
|
|
261
516
|
|
|
517
|
+
- ✅ **Mixpanel** const { preferences, acceptCategory, rejectCategory } = useConsent()import { ConsentProvider, createDefaultConsentTheme } from 'react-lgpd-consent'
|
|
518
|
+
|
|
519
|
+
- ✅ **Intercom**
|
|
520
|
+
|
|
521
|
+
- ✅ **Zendesk**
|
|
522
|
+
|
|
523
|
+
- ✅ **UserWay** (Acessibilidade)
|
|
262
524
|
|
|
263
525
|
if (preferences.analytics) {// Aplica um tema de fallback somente para os componentes da lib
|
|
264
526
|
|
|
265
|
-
|
|
527
|
+
```tsx
|
|
528
|
+
|
|
529
|
+
import { ConsentScriptLoader, createGoogleAnalyticsIntegration } from 'react-lgpd-consent' // Analytics está permitido, carregue scripts;<ConsentProvider
|
|
530
|
+
|
|
531
|
+
|
|
266
532
|
|
|
267
|
-
} theme={createDefaultConsentTheme()}
|
|
533
|
+
<ConsentScriptLoader integration={createGoogleAnalyticsIntegration('GA_ID')} /> } theme={createDefaultConsentTheme()}
|
|
534
|
+
|
|
535
|
+
```
|
|
268
536
|
|
|
269
537
|
categories={{ enabledCategories: ['analytics'] }}
|
|
270
538
|
|
|
539
|
+
[**Ver guia completo de integrações →**](https://github.com/lucianoedipo/react-lgpd-consent/blob/main/INTEGRACOES.md)
|
|
540
|
+
|
|
271
541
|
return (>
|
|
272
542
|
|
|
543
|
+
---
|
|
544
|
+
|
|
273
545
|
<button onClick={() => acceptCategory('marketing')}> <App />
|
|
274
546
|
|
|
547
|
+
## 🧩 Ecossistema de Pacotes
|
|
548
|
+
|
|
275
549
|
Aceitar Marketing</ConsentProvider>
|
|
276
550
|
|
|
277
|
-
|
|
551
|
+
```
|
|
278
552
|
|
|
279
|
-
|
|
553
|
+
react-lgpd-consent (este pacote - agregador) </button>```
|
|
554
|
+
|
|
555
|
+
├── @react-lgpd-consent/core # Headless (86 KB)
|
|
556
|
+
|
|
557
|
+
└── @react-lgpd-consent/mui # MUI Components (104 KB) )
|
|
558
|
+
|
|
559
|
+
```
|
|
280
560
|
|
|
281
561
|
}Evite depender de criação de tema no import (isso evita side-effects e problemas em SSR). Se você precisar de compatibilidade retroativa com quem importava `defaultConsentTheme`, entre em contato para adicionarmos um export compatível com deprecação documentada.
|
|
282
562
|
|
|
563
|
+
### Quando usar cada pacote?
|
|
564
|
+
|
|
283
565
|
```
|
|
284
566
|
|
|
285
|
-
|
|
567
|
+
| Cenário | Pacote Recomendado |
|
|
286
568
|
|
|
287
|
-
|
|
569
|
+
|---------|-------------------|## 📚 Documentação Completa
|
|
570
|
+
|
|
571
|
+
| **Migração de v0.4.x** | `react-lgpd-consent` (este) |
|
|
288
572
|
|
|
289
|
-
|
|
573
|
+
| **UI customizada completa** | `@react-lgpd-consent/core` |### Carregar Scripts Condicionados ao Consentimento
|
|
574
|
+
|
|
575
|
+
| **Componentes MUI prontos** | `@react-lgpd-consent/mui` |
|
|
576
|
+
|
|
577
|
+
| **Novo projeto com MUI** | `@react-lgpd-consent/mui` |Para mais detalhes sobre customização, hooks e funcionalidades, consulte os seguintes guias:
|
|
578
|
+
|
|
579
|
+
| **Bundle otimizado** | `@react-lgpd-consent/core` |
|
|
290
580
|
|
|
291
581
|
```tsx
|
|
292
582
|
|
|
583
|
+
---
|
|
584
|
+
|
|
293
585
|
import { ConsentScriptLoader } from 'react-lgpd-consent'### 📋 Documentação Principal
|
|
294
586
|
|
|
587
|
+
## 🌟 Características
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
- ✅ **TypeScript First**: Tipos completos e inferência automática
|
|
592
|
+
|
|
593
|
+
- ✅ **SSR-Safe**: Compatível com Next.js (App Router + Pages Router), Remixfunction Analytics() {- **[📚 Guia de Início Rápido (`QUICKSTART.md`)](./QUICKSTART.md)**: Tutorial passo a passo com exemplos práticos, tabela completa de props, debugging e integrações.
|
|
594
|
+
|
|
595
|
+
- ✅ **Zero Config**: Funciona out-of-the-box com defaults sensatos
|
|
295
596
|
|
|
597
|
+
- ✅ **Acessível**: WCAG 2.1 AA compliance, keyboard navigation, screen readers return ( - Seção recomendada: “SSR/Next.js (App Router) — Padrões seguros” com boas práticas de `'use client'`, `dynamic({ ssr: false })` e ordem dos provedores/estilos (MUI/Emotion) para evitar hydration mismatch.
|
|
296
598
|
|
|
297
|
-
|
|
599
|
+
- ✅ **Responsivo**: Mobile-first design com breakpoints adaptativos
|
|
298
600
|
|
|
299
|
-
|
|
601
|
+
- ✅ **Tree-shakeable**: Import apenas o que você usa <ConsentScriptLoader - Novo na v0.4.0: suporte a `customCategories` — veja a seção “Categorias customizadas (customCategories)” no Quickstart.
|
|
300
602
|
|
|
301
|
-
|
|
603
|
+
- ✅ **Temas**: Light/Dark/Auto com transições suaves
|
|
302
604
|
|
|
303
|
-
category="analytics" - Novo na v0.4.1: integrações nativas para Facebook Pixel, Hotjar, Mixpanel, Clarity, Intercom e Zendesk — veja o guia [INTEGRACOES.md](./INTEGRACOES.md).
|
|
605
|
+
- ✅ **i18n**: Suporte a múltiplos idiomas (pt-BR, en, es) category="analytics" - Novo na v0.4.1: integrações nativas para Facebook Pixel, Hotjar, Mixpanel, Clarity, Intercom e Zendesk — veja o guia [INTEGRACOES.md](./INTEGRACOES.md).
|
|
606
|
+
|
|
607
|
+
- ✅ **Auditável**: Logs de desenvolvedor e eventos DataLayer para GTM
|
|
304
608
|
|
|
305
609
|
src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID" - Dica: use `designTokens.layout.backdrop: 'auto'` para backdrop sensível ao tema no banner bloqueante.
|
|
306
610
|
|
|
611
|
+
---
|
|
612
|
+
|
|
307
613
|
strategy="afterInteractive" - Auto-config de categorias: a biblioteca detecta categorias requeridas pelas integrações e exibe os toggles mesmo se você esquecer de habilitar (valor inicial sempre rejeitado). Recomendamos explicitar em `categories.enabledCategories` para clareza.
|
|
308
614
|
|
|
615
|
+
## 🤝 Contribuindo
|
|
616
|
+
|
|
309
617
|
> - Páginas de Política/Termos não bloqueadas: se `policyLinkUrl` e/ou `termsLinkUrl` apontarem para a página atual, o overlay bloqueante não é aplicado — garantindo legibilidade destas páginas.
|
|
310
618
|
|
|
619
|
+
Contribuições são bem-vindas! Veja o [Guia de Desenvolvimento](https://github.com/lucianoedipo/react-lgpd-consent/blob/main/DEVELOPMENT.md).
|
|
620
|
+
|
|
311
621
|
{`- **[Guia da API (`API.md`)](./API.md)**: Referência completa de todos os componentes, hooks e tipos.
|
|
312
622
|
|
|
313
|
-
|
|
623
|
+
1. Fork o repositório
|
|
624
|
+
|
|
625
|
+
2. Crie uma branch: `git checkout -b feature/minha-feature` window.dataLayer = window.dataLayer || [];- **[Guia de Conformidade (`CONFORMIDADE.md`)](./CONFORMIDADE.md)**: Detalhes sobre as funcionalidades de conformidade com a LGPD.
|
|
626
|
+
|
|
627
|
+
3. Commit: `git commit -m 'feat: minha nova feature'`
|
|
628
|
+
|
|
629
|
+
4. Push: `git push origin feature/minha-feature` function gtag(){dataLayer.push(arguments);}- **[Guia de Integrações (`INTEGRACOES.md`)](./INTEGRACOES.md)**: Como usar as integrações nativas e criar as suas.
|
|
314
630
|
|
|
315
|
-
|
|
631
|
+
5. Abra um Pull Request
|
|
316
632
|
|
|
317
633
|
gtag('js', new Date());
|
|
318
634
|
|
|
635
|
+
---
|
|
636
|
+
|
|
319
637
|
gtag('config', 'GA_MEASUREMENT_ID');### 🎨 Documentação Interativa (GitHub Pages)
|
|
320
638
|
|
|
639
|
+
## 📄 Licença
|
|
640
|
+
|
|
321
641
|
`}
|
|
322
642
|
|
|
643
|
+
MIT © [Luciano Edipo](https://github.com/lucianoedipo)
|
|
644
|
+
|
|
323
645
|
</ConsentScriptLoader>- **[📖 Storybook - Playground Interativo](https://lucianoedipo.github.io/react-lgpd-consent/storybook/)**: Explore e teste todos os componentes em tempo real com controles interativos.
|
|
324
646
|
|
|
647
|
+
---
|
|
648
|
+
|
|
325
649
|
)- **[⚙️ TypeDoc - Referência de API](https://lucianoedipo.github.io/react-lgpd-consent/docs/)**: Documentação completa da API gerada automaticamente.
|
|
326
650
|
|
|
651
|
+
## 🔗 Links Úteis
|
|
652
|
+
|
|
327
653
|
}- **[🏠 Portal de Documentação](https://lucianoedipo.github.io/react-lgpd-consent/)**: Página inicial com navegação entre todas as documentações.
|
|
328
654
|
|
|
329
|
-
|
|
655
|
+
- [**GitHub Repository**](https://github.com/lucianoedipo/react-lgpd-consent)
|
|
330
656
|
|
|
331
|
-
|
|
657
|
+
- [**NPM Package**](https://www.npmjs.com/package/react-lgpd-consent)```
|
|
332
658
|
|
|
333
|
-
|
|
659
|
+
- [**Issues & Bugs**](https://github.com/lucianoedipo/react-lgpd-consent/issues)
|
|
660
|
+
|
|
661
|
+
- [**Changelog**](https://github.com/lucianoedipo/react-lgpd-consent/blob/main/CHANGELOG.md)---
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
------
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
<div align="center">## 🤝 Como Contribuir
|
|
670
|
+
|
|
671
|
+
<sub>Feito com ❤️ para a comunidade React brasileira</sub>
|
|
334
672
|
|
|
335
|
-
|
|
673
|
+
</div>## 🎨 Customização
|
|
336
674
|
|
|
337
|
-
## 🎨 Customização
|
|
338
675
|
|
|
339
676
|
1. Abra uma [Issue](https://github.com/lucianoedipo/react-lgpd-consent/issues) para bugs ou melhorias.
|
|
340
677
|
|