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 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