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