react-lgpd-consent 0.3.0 → 0.3.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/CHANGELOG.md +481 -0
- package/README.md +646 -79
- package/dist/{PreferencesModal-XCTM6WJN.js → PreferencesModal-J27W5XAJ.js} +1 -1
- package/dist/{chunk-R3IKVZBC.js → chunk-VFAOBR3X.js} +392 -82
- package/dist/index.cjs +437 -105
- package/dist/index.d.cts +53 -1
- package/dist/index.d.ts +53 -1
- package/dist/index.js +11 -3
- package/package.json +5 -4
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.
|
|
4
|
+
|
|
5
|
+
O formato é baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.0.0/),
|
|
6
|
+
e este projeto segue [Semantic Versioning](https://semver.org/lang/pt-BR/).
|
|
7
|
+
|
|
8
|
+
## [0.3.1] - 2025-08-13 - CORREÇÕES DE PRODUÇÃO E MELHORIAS DE COMPATIBILIDADE
|
|
9
|
+
|
|
10
|
+
### 🛡️ **Corrigido - Critical Production Fixes**
|
|
11
|
+
|
|
12
|
+
#### A) Compatibilidade com ThemeProvider
|
|
13
|
+
|
|
14
|
+
- **Erro "Cannot read properties of undefined (reading 'duration')"**: Implementado sistema de fallbacks seguros para propriedades de tema MUI inexistentes ou indefinidas
|
|
15
|
+
- **Componentes internos não renderizavam**: Adicionado `SafeThemeProvider` interno que garante compatibilidade com diferentes configurações de ThemeProvider do usuário
|
|
16
|
+
- **Conflitos de tema**: `FloatingPreferencesButton` e outros componentes agora usam `useThemeWithFallbacks()` para acessar propriedades de tema com valores padrão
|
|
17
|
+
|
|
18
|
+
#### B) API do FloatingPreferencesButton
|
|
19
|
+
|
|
20
|
+
- **"Element type is invalid: expected string but got object"**: Corrigido erro de renderização no `FloatingPreferencesButton`
|
|
21
|
+
- **Falta de controle sobre botão flutuante**: Adicionada prop `disableFloatingPreferencesButton?: boolean` no `ConsentProvider`
|
|
22
|
+
- **Sem API para abrir modal programaticamente**:
|
|
23
|
+
- Novo hook `useOpenPreferencesModal()` para componentes React
|
|
24
|
+
- Nova função `openPreferencesModal()` para uso em JavaScript puro
|
|
25
|
+
- Integração automática com sistema global para acesso fora do contexto React
|
|
26
|
+
|
|
27
|
+
#### C) Exports de TypeScript Ausentes
|
|
28
|
+
|
|
29
|
+
- Adicionados exports públicos para melhor Developer Experience:
|
|
30
|
+
- `CustomCookieBannerProps` - para componentes de banner customizados
|
|
31
|
+
- `CustomPreferencesModalProps` - para modal de preferências customizado
|
|
32
|
+
- `CustomFloatingPreferencesButtonProps` - para botão flutuante customizado
|
|
33
|
+
- `ConsentProviderProps` - para tipagem das props do provider principal
|
|
34
|
+
|
|
35
|
+
### ✨ **Novas Funcionalidades**
|
|
36
|
+
|
|
37
|
+
#### Sistema de Debug e Troubleshooting
|
|
38
|
+
|
|
39
|
+
- **`setDebugLogging(enabled: boolean, level?: LogLevel)`**: Função para habilitar logs detalhados em produção quando necessário
|
|
40
|
+
- **Logs automáticos**: Sistema de logging que inclui:
|
|
41
|
+
- Compatibilidade de tema (detection de propriedades MUI faltantes)
|
|
42
|
+
- Mudanças de estado de consentimento
|
|
43
|
+
- Operações de cookie (leitura/escrita/remoção)
|
|
44
|
+
- Renderização de componentes (props e estados)
|
|
45
|
+
- Integrações de scripts (carregamento/falhas)
|
|
46
|
+
- Chamadas de API internas
|
|
47
|
+
- **Detecção automática de ambiente**: Logs desabilitados automaticamente em produção, habilitados em desenvolvimento
|
|
48
|
+
|
|
49
|
+
#### API Melhorada para Controle Programático
|
|
50
|
+
|
|
51
|
+
- **`useOpenPreferencesModal()`**: Hook que retorna função para abrir modal de preferências
|
|
52
|
+
- **`openPreferencesModal()`**: Função utilitária para acesso global (fora de componentes React)
|
|
53
|
+
- **Integração com AccessibilityDock**: Exemplos de uso em dock de acessibilidade customizado
|
|
54
|
+
|
|
55
|
+
### 📚 **Documentação**
|
|
56
|
+
|
|
57
|
+
#### Guia de API v0.3.1
|
|
58
|
+
|
|
59
|
+
- **Novo arquivo**: `docs/API-v0.3.1.md` com exemplos completos
|
|
60
|
+
- **Casos de uso**: Next.js 14+, Material-UI, componentes totalmente customizados
|
|
61
|
+
- **Troubleshooting**: Guia de resolução dos problemas mais comuns
|
|
62
|
+
- **Migration Guide**: Instruções de atualização (sem breaking changes)
|
|
63
|
+
|
|
64
|
+
#### Exemplos de Implementação
|
|
65
|
+
|
|
66
|
+
- **Componentes customizados**: Exemplos completos de `CustomCookieBanner`, `CustomPreferencesModal`
|
|
67
|
+
- **Integração com AccessibilityDock**: Implementação de botão de preferências em dock customizado
|
|
68
|
+
- **SSR/Next.js**: Configuração para evitar flash de conteúdo e hidratação adequada
|
|
69
|
+
- **Debug em produção**: Como habilitar logs para troubleshooting quando necessário
|
|
70
|
+
|
|
71
|
+
### 🔧 **Melhorias Técnicas**
|
|
72
|
+
|
|
73
|
+
#### Robustez e Estabilidade
|
|
74
|
+
|
|
75
|
+
- **SafeThemeProvider**: Componente interno que evita erros de tema em diferentes configurações de Material-UI
|
|
76
|
+
- **Fallbacks automáticos**: Valores padrão para todas as propriedades de tema acessadas pelos componentes
|
|
77
|
+
- **Detecção de ambiente**: Melhorada para funcionar em diferentes build systems e ambientes de execução
|
|
78
|
+
- **Compatibilidade**: Testado com Material-UI v5 e Next.js 14+
|
|
79
|
+
|
|
80
|
+
#### Developer Experience
|
|
81
|
+
|
|
82
|
+
- **Tipos mais precisos**: Exports de todos os tipos necessários para customização
|
|
83
|
+
- **Logs informativos**: Sistema de debug que facilita identificação de problemas
|
|
84
|
+
- **Documentação expandida**: Exemplos práticos e casos de uso reais
|
|
85
|
+
- **Zero breaking changes**: Atualização segura desde v0.3.0
|
|
86
|
+
|
|
87
|
+
### 🛠️ **Contexto de Correção**
|
|
88
|
+
|
|
89
|
+
Estas correções abordam problemas identificados em produção com:
|
|
90
|
+
|
|
91
|
+
- **Apps Next.js 14+ usando Material-UI**: Conflitos de ThemeProvider resolvidos
|
|
92
|
+
- **Componentes customizados**: APIs claras para substituição completa da UI
|
|
93
|
+
- **AccessibilityDock integrations**: Controle programático do modal de preferências
|
|
94
|
+
- **Troubleshooting**: Sistema de logs para diagnóstico de problemas em produção
|
|
95
|
+
|
|
96
|
+
### 📋 **Migration from v0.3.0**
|
|
97
|
+
|
|
98
|
+
✅ **Zero Breaking Changes**: Atualização direta sem modificações necessárias
|
|
99
|
+
|
|
100
|
+
**Novos recursos opcionais**:
|
|
101
|
+
|
|
102
|
+
```tsx
|
|
103
|
+
// Desabilitar botão flutuante padrão
|
|
104
|
+
;<ConsentProvider
|
|
105
|
+
disableFloatingPreferencesButton={true}
|
|
106
|
+
// ... outras props
|
|
107
|
+
/>
|
|
108
|
+
|
|
109
|
+
// Usar controle programático
|
|
110
|
+
const openModal = useOpenPreferencesModal()
|
|
111
|
+
|
|
112
|
+
// Habilitar debug se necessário
|
|
113
|
+
setDebugLogging(true, LogLevel.DEBUG)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## [0.3.0] - 2025-08-12 - DX APRIMORADA E UI AUTOMÁTICA
|
|
117
|
+
|
|
118
|
+
### 🚨 **MUDANÇAS QUE QUEBRAM A COMPATIBILIDADE**
|
|
119
|
+
|
|
120
|
+
- **Remoção de Exports Diretos de Componentes UI**: `CookieBanner` e `FloatingPreferencesButton` não são mais exportados diretamente. Eles agora são gerenciados e renderizados automaticamente pelo `ConsentProvider`.
|
|
121
|
+
- **Remoção da Prop `disableAutomaticModal`**: Esta prop foi removida do `ConsentProvider`. O modal de preferências agora é sempre renderizado (seja o padrão ou um componente customizado fornecido) e sua visibilidade é controlada internamente pelo estado `isModalOpen`.
|
|
122
|
+
- **Tipagem Estrita para Componentes UI Customizados**: As props para `PreferencesModalComponent`, `CookieBannerComponent` e `FloatingPreferencesButtonComponent` agora exigem tipos específicos (`CustomPreferencesModalProps`, `CustomCookieBannerProps`, `CustomFloatingPreferencesButtonProps`). Componentes customizados que usavam `React.ComponentType<any>` precisarão ser atualizados.
|
|
123
|
+
- **Remoção do Hook `useConsentComponentProps`**: Este hook utilitário foi removido, pois os componentes internos agora usam `useConsent` e `useConsentTexts` diretamente.
|
|
124
|
+
|
|
125
|
+
### ✨ **Novas Funcionalidades e Melhorias**
|
|
126
|
+
|
|
127
|
+
- **Renderização Automática de Componentes UI Padrão**: O `ConsentProvider` agora renderiza automaticamente o `CookieBanner` (quando necessário) e o `FloatingPreferencesButton` (após consentimento), reduzindo o boilerplate.
|
|
128
|
+
- **Componentes UI Sobrescrevíveis com Tipagem Clara**: Permite que desenvolvedores forneçam seus próprios componentes de banner, modal e botão flutuante com total segurança de tipo.
|
|
129
|
+
- **Controle Simplificado do Modal**: A visibilidade do modal é controlada exclusivamente pelo estado interno, eliminando a necessidade da prop `disableAutomaticModal`.
|
|
130
|
+
- **Carregamento Imediato de Banner e Botão Flutuante**: Removido o lazy loading para `CookieBanner` e `FloatingPreferencesButton` para garantir visibilidade imediata e evitar falhas de carregamento.
|
|
131
|
+
- **Prop `disableDeveloperGuidance`**: Permite desabilitar os avisos e sugestões para desenvolvedores no console.
|
|
132
|
+
- **Prop `reloadOnChange` para `ConsentScriptLoader`**: Permite recarregar scripts de integração quando as preferências de consentimento mudam.
|
|
133
|
+
- **Ajuste de Posição da Marca**: A marca "fornecido por LÉdipO.eti.br" agora é exibida no canto inferior direito do banner e modal.
|
|
134
|
+
|
|
135
|
+
## [0.2.6] - 2025-08-12 - ESTABILIZAÇÃO E CONFORMIDADE
|
|
136
|
+
|
|
137
|
+
### 🛡️ **Modificado**
|
|
138
|
+
|
|
139
|
+
- **Gerenciamento de Estado Unificado**: O `ConsentProvider` foi refatorado para usar uma lógica centralizada (`categoryUtils.ts`) para criar e validar as preferências de consentimento. Isso elimina inconsistências e garante que o estado do consentimento sempre reflita a configuração do projeto (`ProjectCategoriesConfig`).
|
|
140
|
+
- **Validação na Hidratação**: Ao carregar o estado de um cookie existente, as preferências agora são validadas contra a configuração atual do projeto. Categorias que não existem mais na configuração são removidas, evitando estados inválidos.
|
|
141
|
+
|
|
142
|
+
### ✨ **Adicionado**
|
|
143
|
+
|
|
144
|
+
- **Metadados de Auditoria no Cookie**: O cookie de consentimento agora armazena um snapshot da configuração de categorias (`projectConfig`) que estava ativa no momento em que o consentimento foi dado. Isso fortalece a capacidade de auditoria e a conformidade com a LGPD.
|
|
145
|
+
|
|
146
|
+
### 📚 **Documentação**
|
|
147
|
+
|
|
148
|
+
- **Consolidação**: A pasta `docs` foi significativamente limpa, com a remoção de múltiplos arquivos redundantes e temporários.
|
|
149
|
+
- **README.md Melhorado**: O arquivo `README.md` principal foi completamente reescrito para seguir um padrão profissional, com estrutura clara, exemplos de código atualizados e badges de status do projeto.
|
|
150
|
+
- **Guia de Conformidade Unificado**: O arquivo `COMPLIANCE.md` agora centraliza as informações sobre as funcionalidades de conformidade da biblioteca e as orientações para desenvolvedores, incorporando conteúdo de outros documentos que foram removidos.
|
|
151
|
+
|
|
152
|
+
### 🐛 **Corrigido**
|
|
153
|
+
|
|
154
|
+
- **Consistência do Consentimento**: Corrigido o problema onde as ações `ACCEPT_ALL` e `REJECT_ALL` não consideravam a configuração completa do projeto, podendo levar a um estado de preferências incorreto.
|
|
155
|
+
|
|
156
|
+
## [0.2.2] - 2025-08-12 - SISTEMA DE ORIENTAÇÕES PARA DESENVOLVEDORES
|
|
157
|
+
|
|
158
|
+
### ✨ **Adicionado**
|
|
159
|
+
|
|
160
|
+
#### **🚨 Sistema Inteligente de Orientações**
|
|
161
|
+
|
|
162
|
+
- **Console de Desenvolvimento**: Avisos automáticos sobre configuração
|
|
163
|
+
- ⚠️ **Avisos**: Detecta configuração faltante, inconsistente ou problemática
|
|
164
|
+
- 💡 **Sugestões**: Recomendações para melhor compliance e UX
|
|
165
|
+
- 🔧 **Tabela de Categorias**: Lista categorias ativas para orientar UI customizada
|
|
166
|
+
|
|
167
|
+
- **Novos Hooks para Componentes Customizados**:
|
|
168
|
+
- `useCategories()`: Informações completas sobre categorias ativas no projeto
|
|
169
|
+
- `useCategoryStatus(id)`: Verifica se categoria específica está configurada
|
|
170
|
+
- **Prevenção de Bugs**: Evita inconsistências entre configuração e UI
|
|
171
|
+
|
|
172
|
+
#### **🎨 UI Dinâmica e Inteligente**
|
|
173
|
+
|
|
174
|
+
- **PreferencesModal Aprimorado**: Renderiza automaticamente apenas categorias configuradas
|
|
175
|
+
- **Componentes Adaptativos**: UI se ajusta dinamicamente à configuração do projeto
|
|
176
|
+
- **Renderização Condicional**: Não exibe categorias não utilizadas no projeto
|
|
177
|
+
|
|
178
|
+
#### **📋 Configuração Padrão Defensiva**
|
|
179
|
+
|
|
180
|
+
- **Padrão Inteligente**: Quando nenhuma categoria especificada, usa `necessary + analytics`
|
|
181
|
+
- **Orientação Automática**: Avisa sobre uso de configuração padrão em desenvolvimento
|
|
182
|
+
- **Migração Transparente**: API de categorias funciona perfeitamente
|
|
183
|
+
|
|
184
|
+
#### **🔍 Análise e Validação de Configuração**
|
|
185
|
+
|
|
186
|
+
- **Função `analyzeDeveloperConfiguration()`**: Valida e orienta sobre configuração
|
|
187
|
+
- **Constante `DEFAULT_PROJECT_CATEGORIES`**: Configuração padrão baseada em casos reais
|
|
188
|
+
- **Detecção Automática**: Identifica muitas categorias, descrições inadequadas, etc.
|
|
189
|
+
|
|
190
|
+
### 🔧 **Modificado**
|
|
191
|
+
|
|
192
|
+
#### **ConsentProvider Expandido**
|
|
193
|
+
|
|
194
|
+
- **Suporte Completo**: Prop `categories` com configuração de categorias padrão e personalizadas
|
|
195
|
+
- **Sistema de Orientações**: Log automático de orientações em modo desenvolvimento
|
|
196
|
+
- **Configuração Moderna**: Nova estrutura da prop `categories` para maior flexibilidade
|
|
197
|
+
|
|
198
|
+
#### **Componentes UI Inteligentes**
|
|
199
|
+
|
|
200
|
+
- **Inicialização Segura**: `tempPreferences` inicializado corretamente com valores padrão
|
|
201
|
+
- **Sincronização Dinâmica**: Estado local sincroniza apenas com categorias ativas
|
|
202
|
+
- **Renderização Otimizada**: Loops baseados em `toggleableCategories` ao invés de hardcode
|
|
203
|
+
|
|
204
|
+
### 🐛 **Corrigido**
|
|
205
|
+
|
|
206
|
+
- **React Warning**: Eliminado "A component is changing an uncontrolled input to be controlled"
|
|
207
|
+
- **Estado de Input**: `PreferencesModal` inicializa switches com valores controlados
|
|
208
|
+
- **Sincronização**: Preferências temporárias sincronizam corretamente com categorias ativas
|
|
209
|
+
- **Performance**: Não renderiza componentes para categorias não configuradas
|
|
210
|
+
|
|
211
|
+
### 📚 **Documentação**
|
|
212
|
+
|
|
213
|
+
- **Novo arquivo**: `docs/ORIENTACOES-DESENVOLVIMENTO.md` - Guia completo do sistema
|
|
214
|
+
- **README expandido**: Exemplos práticos da nova API e componentes dinâmicos
|
|
215
|
+
- **Exemplos de uso**: Demonstração de hooks para validação condicional de categorias
|
|
216
|
+
- **Guias de migração**: Como usar nova API mantendo compatibilidade
|
|
217
|
+
|
|
218
|
+
### 🎯 **Benefícios da v0.2.2**
|
|
219
|
+
|
|
220
|
+
#### **Para Desenvolvedores**
|
|
221
|
+
|
|
222
|
+
- 🚨 **Orientação Proativa**: Console indica exatamente quais categorias implementar na UI
|
|
223
|
+
- 🐛 **Prevenção de Bugs**: Validação automática de consistência Configuração ↔ UI
|
|
224
|
+
- 🔧 **Flexibilidade Total**: APIs antigas funcionam, nova API oferece mais controle
|
|
225
|
+
- 📋 **TypeScript Completo**: Tipos específicos para cada hook e configuração
|
|
226
|
+
|
|
227
|
+
#### **Para Compliance LGPD**
|
|
228
|
+
|
|
229
|
+
- 🎯 **Configuração Consciente**: Sistema força reflexão sobre quais dados realmente coletar
|
|
230
|
+
- 📝 **Documentação Automática**: Orientações baseadas na configuração real do projeto
|
|
231
|
+
- 🔍 **Auditabilidade**: Logs claros mostram decisões de configuração
|
|
232
|
+
- 🛡️ **Conformidade Ativa**: Alinhamento dinâmico com princípios da ANPD
|
|
233
|
+
|
|
234
|
+
#### **Para Usuários Finais**
|
|
235
|
+
|
|
236
|
+
- ⚡ **Performance Superior**: Interface otimizada mostra apenas categorias relevantes
|
|
237
|
+
- 🎯 **Experiência Focada**: Usuários não veem opções irrelevantes para o projeto
|
|
238
|
+
- 🔒 **Transparência Máxima**: Descrições claras apenas de categorias realmente utilizadas
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
as mudanças notáveis neste projeto serão documentadas neste arquivo.
|
|
243
|
+
|
|
244
|
+
O formato é baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.0.0/),
|
|
245
|
+
e este projeto segue [Semantic Versioning](https://semver.org/lang/pt-BR/).
|
|
246
|
+
|
|
247
|
+
## [0.2.1] - 2025-08-12 - CONFORMIDADE LGPD RIGOROSA + SISTEMA DE ORIENTAÇÕES
|
|
248
|
+
|
|
249
|
+
### 🚨 **NOVO: Sistema de Orientações para Desenvolvedores**
|
|
250
|
+
|
|
251
|
+
A v0.2.1 introduz um **sistema inteligente de orientações** que guia desenvolvedores sobre configuração adequada e previne inconsistências entre configuração e UI customizada.
|
|
252
|
+
|
|
253
|
+
### 🛡️ **BREAKING CHANGES - Conformidade ANPD**
|
|
254
|
+
|
|
255
|
+
#### **Cookie de Consentimento Reestruturado**
|
|
256
|
+
|
|
257
|
+
- **� Estrutura do Cookie**: Novo formato com campos obrigatórios para compliance
|
|
258
|
+
- `version`: Controle de migração de schema
|
|
259
|
+
- `consentDate`: Timestamp da primeira interação
|
|
260
|
+
- `lastUpdate`: Timestamp da última modificação
|
|
261
|
+
- `source`: Origem da decisão (`banner`, `modal`, `programmatic`)
|
|
262
|
+
- **Removido**: `isModalOpen` (estado de UI não deve ser persistido)
|
|
263
|
+
|
|
264
|
+
#### **Sistema de Categorias por Projeto**
|
|
265
|
+
|
|
266
|
+
- **🔧 Nova Prop**: `categories` no `ConsentProvider` para especificar apenas categorias ativas
|
|
267
|
+
- **📦 Principio da Minimização**: Cookie contém apenas categorias realmente utilizadas
|
|
268
|
+
- **⚡ Performance**: Redução significativa do tamanho do cookie
|
|
269
|
+
|
|
270
|
+
### ✨ **Adicionado**
|
|
271
|
+
|
|
272
|
+
#### **Configuração de Categorias Ativas**
|
|
273
|
+
|
|
274
|
+
```tsx
|
|
275
|
+
<ConsentProvider
|
|
276
|
+
categories={{
|
|
277
|
+
enabledCategories: ['analytics', 'functional'], // Apenas essas + necessary
|
|
278
|
+
}}
|
|
279
|
+
>
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
#### **Comportamento LGPD Rigoroso**
|
|
283
|
+
|
|
284
|
+
- **🚫 Banner Bloqueante**: Prop `blocking={true}` para exigir decisão explícita
|
|
285
|
+
- **📵 Padrão "Rejeitar Todos"**: Conformidade com interpretação rigorosa da LGPD
|
|
286
|
+
- **⏰ Timestamps Automáticos**: Auditoria completa de interações
|
|
287
|
+
|
|
288
|
+
#### **Utilitários de Compliance**
|
|
289
|
+
|
|
290
|
+
- **🔧 `validateCategoriesConfig()`**: Validação de configuração de categorias
|
|
291
|
+
- **📊 `createProjectPreferences()`**: Geração de preferências baseada na config
|
|
292
|
+
- **🧹 Migração Automática**: Cookies v0.2.0 migrados automaticamente
|
|
293
|
+
|
|
294
|
+
### 🔧 **Corrigido**
|
|
295
|
+
|
|
296
|
+
- **README.md**: Badges duplicados e links quebrados corrigidos
|
|
297
|
+
- **TypeScript**: Tipos mais rigorosos para `ConsentState` e `ConsentCookieData`
|
|
298
|
+
- **Cookie Utils**: Separação clara entre dados persistidos e estado de UI
|
|
299
|
+
- **Conformidade**: Remoção automática de campos não-compliance do cookie
|
|
300
|
+
|
|
301
|
+
### 📋 **Documentação**
|
|
302
|
+
|
|
303
|
+
- **📋 CONFORMIDADE-LGPD.md**: Guia completo de implementação conforme ANPD
|
|
304
|
+
- **🔄 Migração**: Instruções detalhadas v0.2.0 → v0.2.1
|
|
305
|
+
- **🏛️ Exemplos**: Casos de uso governamentais e corporativos
|
|
306
|
+
|
|
307
|
+
### ⚠️ **Migração v0.2.0 → v0.2.1**
|
|
308
|
+
|
|
309
|
+
#### **Automática (Recomendada)**
|
|
310
|
+
|
|
311
|
+
- Cookies existentes migrados automaticamente
|
|
312
|
+
- API v0.2.0 mantém compatibilidade
|
|
313
|
+
|
|
314
|
+
#### **Manual (Para Máxima Conformidade)**
|
|
315
|
+
|
|
316
|
+
```tsx
|
|
317
|
+
// Especificar apenas categorias necessárias
|
|
318
|
+
<ConsentProvider
|
|
319
|
+
categories={{ enabledCategories: ['analytics'] }}
|
|
320
|
+
blocking={true} // Para compliance rigorosa
|
|
321
|
+
>
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### 📊 **Impacto**
|
|
325
|
+
|
|
326
|
+
- **📦 Bundle Size**: Mantido (~11KB ESM)
|
|
327
|
+
- **🔄 Backward Compatibility**: 95% (quebras apenas em casos edge)
|
|
328
|
+
- **🛡️ Compliance**: 100% LGPD/ANPD conforme Guia Orientativo
|
|
329
|
+
- **⚡ Performance**: Cookies até 70% menores em projetos típicos
|
|
330
|
+
|
|
331
|
+
## [0.2.0] - 2025-08-12
|
|
332
|
+
|
|
333
|
+
### 🎉 MAJOR UPDATE - Adequação ANPD Completa
|
|
334
|
+
|
|
335
|
+
### ✨ Adicionado
|
|
336
|
+
|
|
337
|
+
- **🍪 Categorias ANPD Expandidas**: Sistema baseado no Guia Orientativo da ANPD
|
|
338
|
+
- `necessary`: Cookies essenciais (sempre ativos)
|
|
339
|
+
- `analytics`: Análise e estatísticas
|
|
340
|
+
- `functional`: Funcionalidades extras
|
|
341
|
+
- `marketing`: Publicidade e marketing
|
|
342
|
+
- `social`: Integração com redes sociais
|
|
343
|
+
- `personalization`: Personalização de conteúdo
|
|
344
|
+
|
|
345
|
+
- **🔧 Sistema de Categorias Flexível**
|
|
346
|
+
- Nova interface `CategoryDefinition` para definições de categorias
|
|
347
|
+
- Suporte a categorias essenciais vs opcionais
|
|
348
|
+
- Prop `categories` com configuração granular
|
|
349
|
+
|
|
350
|
+
- **📝 Textos ANPD Expandidos** (todos opcionais para backward compatibility)
|
|
351
|
+
- `controllerInfo`: Identificação do controlador dos dados
|
|
352
|
+
- `dataTypes`: Tipos de dados coletados
|
|
353
|
+
- `thirdPartySharing`: Compartilhamento com terceiros
|
|
354
|
+
- `userRights`: Direitos do titular dos dados
|
|
355
|
+
- `contactInfo`: Contato do DPO/responsável
|
|
356
|
+
- `retentionPeriod`: Prazo de armazenamento
|
|
357
|
+
- `lawfulBasis`: Base legal (consentimento/interesse legítimo)
|
|
358
|
+
- `transferCountries`: Países de transferência internacional
|
|
359
|
+
|
|
360
|
+
- **🚀 Integrações Nativas de Scripts**
|
|
361
|
+
- `createGoogleAnalyticsIntegration()`: GA4 configurado automaticamente
|
|
362
|
+
- `createGoogleTagManagerIntegration()`: GTM configurado automaticamente
|
|
363
|
+
- `createUserWayIntegration()`: UserWay para acessibilidade
|
|
364
|
+
- `ConsentScriptLoader`: Componente para carregamento automático
|
|
365
|
+
- `useConsentScriptLoader`: Hook para carregamento programático
|
|
366
|
+
- Interface `ScriptIntegration` para scripts customizados
|
|
367
|
+
|
|
368
|
+
- **🎛️ Sistema de Categorias Dinâmico**
|
|
369
|
+
- Context `CategoriesProvider` separado para melhor organização
|
|
370
|
+
- Preferências expandidas com suporte a `[key: string]: boolean`
|
|
371
|
+
- Reducer atualizado para categorias customizadas
|
|
372
|
+
|
|
373
|
+
### 🔧 Melhorado
|
|
374
|
+
|
|
375
|
+
- **Preferências padrão**: Agora incluem todas as 6 categorias ANPD
|
|
376
|
+
- **Tipagem expandida**: `Category` type agora inclui todas as categorias
|
|
377
|
+
- **Context arquitetura**: Separação de responsabilidades mais clara
|
|
378
|
+
- **Documentação**: Guias detalhados para cada nova funcionalidade
|
|
379
|
+
|
|
380
|
+
### 📦 Interno
|
|
381
|
+
|
|
382
|
+
- Context `CategoriesCtx` para categorias customizadas
|
|
383
|
+
- Função `createInitialPreferences()` para inicialização dinâmica
|
|
384
|
+
- Reducer com suporte a ações com categorias customizadas
|
|
385
|
+
- Exports expandidos no `index.ts`
|
|
386
|
+
|
|
387
|
+
### 🎯 Compatibilidade
|
|
388
|
+
|
|
389
|
+
- ✅ **100% Backward Compatible**: Todas as APIs existentes funcionam
|
|
390
|
+
- ✅ **Opt-in Features**: Novas funcionalidades são opcionais
|
|
391
|
+
- ✅ **Progressive Enhancement**: Funciona do simples ao complexo
|
|
392
|
+
|
|
393
|
+
### 📊 Bundle Size
|
|
394
|
+
|
|
395
|
+
- **Antes**: 6.65 KB ESM + 14.08 KB chunk
|
|
396
|
+
- **Agora**: 10.84 KB ESM + 15.90 KB chunk
|
|
397
|
+
- **Crescimento**: +4.19 KB (+64% de funcionalidades)
|
|
398
|
+
|
|
399
|
+
## [0.1.3] - 2025-08-09
|
|
400
|
+
|
|
401
|
+
### 🎉 Adicionado
|
|
402
|
+
|
|
403
|
+
- **Banner bloqueante**: Nova prop `blocking` no `CookieBanner` (padrão: `true`)
|
|
404
|
+
- Quando `blocking=true`, exibe overlay escuro que impede interação até decisão
|
|
405
|
+
- Quando `blocking=false`, usa o comportamento Snackbar não intrusivo
|
|
406
|
+
- **Sistema de temas**: Suporte completo a temas Material-UI
|
|
407
|
+
- Tema padrão institucional (`defaultConsentTheme`) baseado nas cores da ANPD
|
|
408
|
+
- Prop `theme` no `ConsentProvider` para temas customizados
|
|
409
|
+
- ThemeProvider automático para todos os componentes filhos
|
|
410
|
+
- **Modal de preferências funcional**:
|
|
411
|
+
- Estado `isModalOpen` agora conectado ao contexto
|
|
412
|
+
- Botão "Preferências" no banner abre corretamente o modal
|
|
413
|
+
- Hook `useConsent()` expõe `isModalOpen`
|
|
414
|
+
- **Script loader aprimorado**:
|
|
415
|
+
- Nova função `loadConditionalScript()` que aguarda consentimento
|
|
416
|
+
- Callbacks com delay de 150ms para permitir animações de fechamento
|
|
417
|
+
- Melhor integração com `ConsentGate`
|
|
418
|
+
- **Hook adicional**: `useConsentTexts()` para acessar textos customizados
|
|
419
|
+
|
|
420
|
+
### 🔧 Corrigido
|
|
421
|
+
|
|
422
|
+
- **Textos customizados**: Props `texts` do `ConsentProvider` agora funcionam corretamente
|
|
423
|
+
- Componentes `CookieBanner` e `PreferencesModal` usam textos do contexto
|
|
424
|
+
- Remoção da dependência direta de `defaultTexts`
|
|
425
|
+
- **Estado do modal**: `isModalOpen` integrado ao reducer e hooks
|
|
426
|
+
- **Conexão de ações**: Todas as ações (`openPreferences`, `closePreferences`, etc.) funcionais
|
|
427
|
+
|
|
428
|
+
### 📦 Interno
|
|
429
|
+
|
|
430
|
+
- Context `TextsCtx` para disponibilizar textos customizados
|
|
431
|
+
- Reducer atualizado com estado `isModalOpen`
|
|
432
|
+
- ThemeProvider integrado ao ConsentProvider
|
|
433
|
+
- Delays nos callbacks para melhor UX
|
|
434
|
+
|
|
435
|
+
### 🎨 Design
|
|
436
|
+
|
|
437
|
+
- Banner bloqueante com overlay `rgba(0, 0, 0, 0.5)`
|
|
438
|
+
- zIndex 1300 (acima de modais MUI)
|
|
439
|
+
- Tema padrão com bordas arredondadas e sombras suaves
|
|
440
|
+
- Transições suaves para melhor experiência visual
|
|
441
|
+
|
|
442
|
+
## [0.1.0] - 2025-08-09
|
|
443
|
+
|
|
444
|
+
### 🎉 Lançamento Inicial
|
|
445
|
+
|
|
446
|
+
- **Contexto de consentimento** com `ConsentProvider`
|
|
447
|
+
- **Banner básico** com botões Aceitar/Recusar/Preferências
|
|
448
|
+
- **Modal de preferências** para categorias analytics e marketing
|
|
449
|
+
- **Hook `useConsent()`** para interação com estado
|
|
450
|
+
- **Componente `ConsentGate`** para renderização condicional
|
|
451
|
+
- **Utilitários**:
|
|
452
|
+
- `loadScript()` para carregamento dinâmico de scripts
|
|
453
|
+
- `cookieUtils` para persistência
|
|
454
|
+
- **Suporte SSR** via prop `initialState`
|
|
455
|
+
- **Acessibilidade** com ARIA e navegação por teclado
|
|
456
|
+
- **TypeScript** completo com tipos exportados
|
|
457
|
+
|
|
458
|
+
### 🏗️ Arquitetura
|
|
459
|
+
|
|
460
|
+
- Context API com reducer pattern
|
|
461
|
+
- Cookies seguros (`SameSite=Lax`, `secure=true`)
|
|
462
|
+
- API pública em inglês, UI padrão em português
|
|
463
|
+
- Zero dependências extras (apenas `js-cookie`)
|
|
464
|
+
|
|
465
|
+
---
|
|
466
|
+
|
|
467
|
+
## [Unreleased]
|
|
468
|
+
|
|
469
|
+
### 🚀 Planejado para v0.2.0
|
|
470
|
+
|
|
471
|
+
- [ ] Textos ANPD expandidos (campos opcionais)
|
|
472
|
+
- [ ] Validação robusta de cookies com versioning
|
|
473
|
+
- [ ] Logs de consentimento básicos
|
|
474
|
+
- [ ] Mais categorias de cookies
|
|
475
|
+
|
|
476
|
+
### 🔮 Futuro (v0.3.0+)
|
|
477
|
+
|
|
478
|
+
- [ ] Modal detalhado com lista de cookies
|
|
479
|
+
- [ ] Base legal por categoria
|
|
480
|
+
- [ ] Relatórios de compliance
|
|
481
|
+
- [ ] Templates por setor
|