react-lgpd-consent 0.4.0 → 0.4.3
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 +226 -0
- package/QUICKSTART.en.md +34 -0
- package/QUICKSTART.md +562 -1
- package/README.en.md +25 -0
- package/README.md +37 -0
- package/dist/FloatingPreferencesButton-4AGBXNHH.cjs +11 -0
- package/dist/FloatingPreferencesButton-IY7TFD7D.js +2 -0
- package/dist/PreferencesModal-5KNHWW57.js +2 -0
- package/dist/PreferencesModal-YBCWCVUI.cjs +11 -0
- package/dist/chunk-25XEI2DZ.cjs +193 -0
- package/dist/chunk-FJKRAERJ.cjs +119 -0
- package/dist/chunk-N3QOW4SA.js +178 -0
- package/dist/chunk-ORI4PLVG.cjs +1899 -0
- package/dist/chunk-PJFGQMCI.js +92 -0
- package/dist/chunk-RWT2ORFE.js +1840 -0
- package/dist/index.cjs +872 -1560
- package/dist/index.d.cts +1794 -232
- package/dist/index.d.ts +1794 -232
- package/dist/index.js +707 -65
- package/package.json +73 -39
- package/dist/PreferencesModal-D2SEVH3N.js +0 -6
- package/dist/chunk-B5FNONG3.js +0 -1362
package/CHANGELOG.md
CHANGED
|
@@ -4,9 +4,202 @@ Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.
|
|
|
4
4
|
|
|
5
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
6
|
|
|
7
|
+
## [0.4.3] - 2025-10-06 — Otimizações de Performance e Qualidade
|
|
8
|
+
|
|
9
|
+
### 🚀 **Melhorias de Performance**
|
|
10
|
+
|
|
11
|
+
- **React.memo**: Adicionado memoização em componentes puros (`Branding`, `FloatingPreferencesButton`)
|
|
12
|
+
- **useMemo**: Otimizado cálculo de `positionStyles` no `FloatingPreferencesButton`
|
|
13
|
+
- **Lazy Loading Expandido**: `FloatingPreferencesButton` agora é carregado sob demanda
|
|
14
|
+
- **Logger em Produção**: `warn()`, `info()`, `debug()` suprimidos em `NODE_ENV=production`
|
|
15
|
+
- Reduz overhead em bundle de produção
|
|
16
|
+
- `error()` permanece ativo para debugging crítico
|
|
17
|
+
|
|
18
|
+
### 🐛 **Correções Críticas**
|
|
19
|
+
|
|
20
|
+
- **ConsentProvider Suspense Bug**: Corrigido crash silencioso quando `consented=true`
|
|
21
|
+
- Adicionado `<React.Suspense>` ausente ao redor do `FloatingPreferencesButton` lazy
|
|
22
|
+
- Sintoma: Provider renderizava `<div />` vazio ao invés de `children`
|
|
23
|
+
- Impacto: Testes com `initialState.consented=true` agora passam
|
|
24
|
+
|
|
25
|
+
### 🧪 **Testes de Acessibilidade (A11y)**
|
|
26
|
+
|
|
27
|
+
- **jest-axe**: Integração completa com validação WCAG automática
|
|
28
|
+
- **CookieBanner.a11y.test.tsx**: 3 cenários de acessibilidade validados
|
|
29
|
+
- **PreferencesModal.a11y.test.tsx**: 3 cenários de acessibilidade validados
|
|
30
|
+
- **TypeScript**: Definições `jest-axe.d.ts` para matcher `toHaveNoViolations()`
|
|
31
|
+
- **Script**: Adicionado `npm run test:a11y` para testes focados
|
|
32
|
+
|
|
33
|
+
### 📦 **Exports Modulares**
|
|
34
|
+
|
|
35
|
+
- **`./integrations`**: Novo export separado para tree-shaking otimizado
|
|
36
|
+
- Permite `import { createGoogleAnalyticsIntegration } from 'react-lgpd-consent/integrations'`
|
|
37
|
+
- Reduz bundle para consumidores que não usam integrações
|
|
38
|
+
- Suporte ESM + CJS + TypeScript definitions
|
|
39
|
+
|
|
40
|
+
### 🔧 **CI/CD**
|
|
41
|
+
|
|
42
|
+
- **Node.js 20**: Atualizado de Node 18 para Node 20 LTS em todos os workflows
|
|
43
|
+
- **Cache TypeScript**: Adicionado cache de builds para acelerar CI (~20% mais rápido)
|
|
44
|
+
- Cache de `.tsbuildinfo`, `node_modules/.cache`, `.eslintcache`
|
|
45
|
+
- Workflows atualizados: `ci.yml`, `codeql.yml`, `deploy-docs.yml`, `package-check.yml`
|
|
46
|
+
|
|
47
|
+
### 📚 **Documentação**
|
|
48
|
+
|
|
49
|
+
- **Badges**: Adicionados 3 badges ao README (Coverage, Bundle Size, Node Version)
|
|
50
|
+
- Codecov para visualização de cobertura
|
|
51
|
+
- Bundlephobia para tamanho de bundle
|
|
52
|
+
- Node.js badge para requisitos de ambiente
|
|
53
|
+
|
|
54
|
+
### ✅ **Validação de Qualidade**
|
|
55
|
+
|
|
56
|
+
- **222 testes passando**: 100% de sucesso sem skips
|
|
57
|
+
- **94.85% cobertura**: Mantida cobertura alta
|
|
58
|
+
- **0 warnings de lint**: ESLint limpo
|
|
59
|
+
- **Build otimizado**: ESM 32.52 KB + lazy chunks (95B + 86B)
|
|
60
|
+
|
|
61
|
+
### 📦 **Otimizações de Bundle**
|
|
62
|
+
|
|
63
|
+
- **tsup.config.ts**: Configuração otimizada para tree-shaking e code-splitting
|
|
64
|
+
- **ESM Bundle**: 33.26 KB → 32.52 KB (-740B, -2.2%)
|
|
65
|
+
- **CJS Bundle**: 118.51 KB → 37.71 KB (CJS principal) + chunks (-68%, muito mais eficiente!)
|
|
66
|
+
- **Brotli Compressed**:
|
|
67
|
+
- ESM: 17.06 KB → 16.95 KB (-110B)
|
|
68
|
+
- CJS: 68.72 KB → 18.02 KB (-74%, -50.7 KB!)
|
|
69
|
+
- **Side-effects**: Configuração refinada para preservar code-splitting sem warnings
|
|
70
|
+
- **Tree-shaking**: Agressivo com external de peer dependencies
|
|
71
|
+
|
|
72
|
+
### 🎯 **Decisões de Design**
|
|
73
|
+
|
|
74
|
+
- **ConsentGate não usa memo**: Decisão intencional - estado de preferências é dinâmico
|
|
75
|
+
- Re-renders necessários quando usuário altera consentimento
|
|
76
|
+
- Lógica leve o suficiente para não justificar memoização
|
|
77
|
+
|
|
78
|
+
### 📋 **Dependências**
|
|
79
|
+
|
|
80
|
+
- **Adicionadas**:
|
|
81
|
+
- `@axe-core/react@^4.10.2` (dev)
|
|
82
|
+
- `jest-axe@^10.0.0` (dev)
|
|
83
|
+
- `@types/jest-axe@^3.5.9` (dev)
|
|
84
|
+
|
|
85
|
+
## [0.4.1] - 2025-09-21 — Expansão das Integrações Nativas de Scripts
|
|
86
|
+
|
|
87
|
+
### 🚀 **Integrações Nativas Expandidas**
|
|
88
|
+
|
|
89
|
+
- **Facebook Pixel**: `createFacebookPixelIntegration()` com auto-tracking e advanced matching
|
|
90
|
+
- **Hotjar**: `createHotjarIntegration()` para heatmaps e session recordings
|
|
91
|
+
- **Mixpanel**: `createMixpanelIntegration()` com configuração avançada de eventos
|
|
92
|
+
- **Microsoft Clarity**: `createClarityIntegration()` para analytics de comportamento
|
|
93
|
+
- **Intercom**: `createIntercomIntegration()` para chat e suporte ao cliente
|
|
94
|
+
- **Zendesk Chat**: `createZendeskChatIntegration()` para atendimento integrado
|
|
95
|
+
- **Drift**: `createDriftIntegration()` para conversational marketing
|
|
96
|
+
- **Freshchat**: `createFreshchatIntegration()` para customer support
|
|
97
|
+
|
|
98
|
+
### 🎯 **Sistema de Configuração em Lote**
|
|
99
|
+
|
|
100
|
+
- **Templates de negócio**: `createECommerceIntegrations()`, `createSaaSIntegrations()`, `createCorporateIntegrations()`
|
|
101
|
+
- **Categorização inteligente**: `suggestCategoryForScript()` para sugestão automática de categorias
|
|
102
|
+
- **Configuração unificada**: Setup simplificado para múltiplas ferramentas com um comando
|
|
103
|
+
- **Padrões de mercado**: Templates baseados em necessidades reais do mercado brasileiro
|
|
104
|
+
|
|
105
|
+
### 🔧 **Melhorias no Sistema de Scripts**
|
|
106
|
+
|
|
107
|
+
- **Validação robusta**: `validateNecessaryClassification()` corrigida para evitar falsos positivos
|
|
108
|
+
- **Auto-configuração**: `autoConfigureCategories()` com detecção inteligente de categorias necessárias
|
|
109
|
+
- **Error handling**: Melhor tratamento de erros em carregamento de scripts
|
|
110
|
+
- **Performance**: Carregamento otimizado e lazy loading de integrações
|
|
111
|
+
|
|
112
|
+
### 🔍 **Descoberta Automática de Cookies (Experimental)**
|
|
113
|
+
|
|
114
|
+
- **discoverRuntimeCookies()**: Escaneamento de cookies em tempo real no navegador
|
|
115
|
+
- **detectConsentCookieName()**: Detecção automática do cookie de consentimento
|
|
116
|
+
- **categorizeDiscoveredCookies()**: Categorização inteligente usando padrões LGPD
|
|
117
|
+
- **Integração nativa**: Suporte a `setCookieCatalogOverrides` automático
|
|
118
|
+
- **SSR-safe**: Funciona corretamente em ambientes server-side rendering
|
|
119
|
+
|
|
120
|
+
### 🎨 **Design Tokens Expandidos**
|
|
121
|
+
|
|
122
|
+
- **200+ pontos de customização**: Expansão dramática do sistema de design tokens
|
|
123
|
+
- **Sistema responsivo**: Breakpoints, spacing responsivo, typography hierarchy
|
|
124
|
+
- **Acessibilidade nativa**: Contrast ratios, focus states, motion preferences
|
|
125
|
+
- **Tokens por componente**: Customização granular para cada elemento UI
|
|
126
|
+
|
|
127
|
+
### 📝 **Sistema Avançado de Textos**
|
|
128
|
+
|
|
129
|
+
- **Templates pré-configurados**: Ecommerce, SaaS, Governo com contextos específicos
|
|
130
|
+
- **Multilingual**: Português, inglês, espanhol com fallbacks inteligentes
|
|
131
|
+
- **Função resolveTexts**: Resolução automática de textos baseada em contexto
|
|
132
|
+
|
|
133
|
+
### 🧪 **Melhorias de Testes e Qualidade**
|
|
134
|
+
|
|
135
|
+
- **193 testes passando**: Cobertura substancialmente melhorada
|
|
136
|
+
- **19 novos testes**: Especificamente para `cookieRegistry` (antes 45.83% → 100% branches)
|
|
137
|
+
- **Test realism**: Testes adaptados ao comportamento real vs ideal
|
|
138
|
+
- **Edge cases**: Performance, boundary testing, state management
|
|
139
|
+
- **Lint compliance**: Configuração ESLint mais rigorosa e aderente
|
|
140
|
+
|
|
141
|
+
### 🔧 **Melhorias de API e Developer Experience**
|
|
142
|
+
|
|
143
|
+
- **Exports organizados**: Melhor estruturação das exportações públicas
|
|
144
|
+
- **TypeScript strict**: Tipagem mais rigorosa e descritiva
|
|
145
|
+
- **Documentação TSDoc**: Comentários expandidos com exemplos práticos
|
|
146
|
+
- **Error handling**: Tratamento de erros mais robusto e informativo
|
|
147
|
+
- **Performance**: Otimizações em carregamento e renderização
|
|
148
|
+
|
|
149
|
+
### 📚 **Exemplos e Migração**
|
|
150
|
+
|
|
151
|
+
- **MigrationDemo-v0.4.1.tsx**: Exemplo completo mostrando todas as novidades
|
|
152
|
+
- **Remoção**: TestV0.3.1.tsx removido (obsoleto)
|
|
153
|
+
- **Compatibilidade**: Guias de migração antes/depois
|
|
154
|
+
- **Best practices**: Demonstrações de uso avançado
|
|
155
|
+
|
|
156
|
+
### 🏗️ **Build e Infraestrutura**
|
|
157
|
+
|
|
158
|
+
- **Bundle otimizado**: ESM 34.36 KB, CJS 102.74 KB
|
|
159
|
+
- **Tree-shaking**: Configuração `sideEffects: false` otimizada
|
|
160
|
+
- **Docs geradas**: TypeDoc atualizado com novas funcionalidades
|
|
161
|
+
- **Pipeline robusto**: Type-check + tests + lint + build + docs
|
|
162
|
+
|
|
163
|
+
### ⚠️ **Breaking Changes**
|
|
164
|
+
|
|
165
|
+
#### 🔧 **`setPreference` Type Change**
|
|
166
|
+
|
|
167
|
+
- **Mudança**: `setPreference(cat: Category, value: boolean)` → `setPreference(cat: string, value: boolean)`
|
|
168
|
+
- **Motivo**: Suporte a categorias customizadas além das predefinidas
|
|
169
|
+
- **Impacto**: Código TypeScript com tipo `Category` explícito pode precisar ajustes
|
|
170
|
+
- **Migração**:
|
|
171
|
+
- ✅ **Nenhuma mudança necessária** se usando strings literais (`'analytics'`, `'marketing'`)
|
|
172
|
+
- ⚠️ **Ajuste necessário** apenas se estava usando explicitamente o tipo `Category`
|
|
173
|
+
- 📚 **Guia**: Use `string` para suportar categorias customizadas ou continue usando os valores padrão
|
|
174
|
+
|
|
175
|
+
#### 🔧 **`ScriptIntegration.category` Type Change**
|
|
176
|
+
|
|
177
|
+
- **Mudança**: `category: Category` → `category: string`
|
|
178
|
+
- **Motivo**: Suporte a categorias customizadas nas integrações de script
|
|
179
|
+
- **Impacto**: Integrações customizadas com tipo `Category` explícito
|
|
180
|
+
- **Migração**: Mesmas diretrizes do `setPreference` acima
|
|
181
|
+
|
|
182
|
+
### 🎯 **Categorias Suportadas**
|
|
183
|
+
|
|
184
|
+
- `necessary` (sempre ativo)
|
|
185
|
+
- `analytics` (Google Analytics, etc.)
|
|
186
|
+
- `marketing` (Facebook Pixel, Google Ads)
|
|
187
|
+
- `functional` (Chat, mapas, widgets)
|
|
188
|
+
- `social` (Redes sociais, compartilhamento)
|
|
189
|
+
- `personalization` (Preferências, customização)
|
|
190
|
+
|
|
191
|
+
### 📈 **Estatísticas de Melhoria**
|
|
192
|
+
|
|
193
|
+
- **Design Tokens**: 4 → 200+ pontos de customização (+4900%)
|
|
194
|
+
- **Testes**: 174 → 193 testes (+11% cobertura)
|
|
195
|
+
- **Funcionalidades**: +15 novas funções exportadas
|
|
196
|
+
- **Documentação**: +3 templates de texto, +6 contextos específicos
|
|
197
|
+
- **Developer APIs**: +8 utilitários para descoberta de cookies
|
|
198
|
+
|
|
7
199
|
## [0.4.0] - 2025-09-09 — Custom categories
|
|
8
200
|
|
|
9
201
|
### Added
|
|
202
|
+
|
|
10
203
|
- Support for `customCategories` in `ConsentProvider.categories`.
|
|
11
204
|
- Included in preferences initialization and validation.
|
|
12
205
|
- Shown in the Preferences modal (with name/description).
|
|
@@ -15,6 +208,7 @@ O formato é baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.0.
|
|
|
15
208
|
- Storybook story: WithCustomCategories.
|
|
16
209
|
|
|
17
210
|
### Notes
|
|
211
|
+
|
|
18
212
|
- Non-breaking change; existing configurations continue to work.
|
|
19
213
|
|
|
20
214
|
## [0.3.7] - 2025-09-08 - Testes de UI e carregamento de scripts
|
|
@@ -556,3 +750,35 @@ A v0.2.1 introduz um **sistema inteligente de orientações** que guia desenvolv
|
|
|
556
750
|
- [ ] Base legal por categoria
|
|
557
751
|
- [ ] Relatórios de compliance
|
|
558
752
|
- [ ] Templates por setor
|
|
753
|
+
|
|
754
|
+
## [0.4.2] - 06/10/2025 — Quickstarts + SSR Guide + Validação (DEV)
|
|
755
|
+
|
|
756
|
+
### ✨ Quickstarts executáveis
|
|
757
|
+
|
|
758
|
+
- Next.js (App Router) e Vite com Consent Mode v2 integrado e bloqueio real de scripts (GTM/GA4 não carregam antes do consentimento).
|
|
759
|
+
- Seções no QUICKSTART.md com passos copy‑paste e validação do comportamento esperado.
|
|
760
|
+
|
|
761
|
+
### 🧱 Guia SSR/Next.js (App Router)
|
|
762
|
+
|
|
763
|
+
- Padrões seguros para evitar hydration mismatch: wrapper client‑only com `'use client'` e `dynamic({ ssr: false })`, efeitos que acessam `window/document` apenas no cliente.
|
|
764
|
+
- Ordem de provedores/estilos (Emotion/MUI) e z-index/portals documentados (overlay 1299, modais ≥ 1300).
|
|
765
|
+
|
|
766
|
+
### ✅ Validação de configuração do ConsentProvider (DEV)
|
|
767
|
+
|
|
768
|
+
- Validação com Zod em desenvolvimento (import dinâmico) e sanitização leve em produção.
|
|
769
|
+
- Mensagens amigáveis: alerta quando `categories` não é fornecida; remove `'necessary'` de `enabledCategories`; detecta duplicidades/valores inválidos; valida `customCategories`.
|
|
770
|
+
- Testes cobrindo casos inválidos e asserts de mensagens.
|
|
771
|
+
|
|
772
|
+
### 📚 Categorias — definição, uso e exemplos
|
|
773
|
+
|
|
774
|
+
- Fonte única de verdade: `ConsentProvider.categories`. UI, hooks e integrações leem a mesma definição.
|
|
775
|
+
- Esclarecimento: apenas “necessários” é obrigatório; demais categorias são opcionais conforme o negócio.
|
|
776
|
+
- Exemplos mínimo (somente necessários) e completo (analytics/marketing/functional).
|
|
777
|
+
|
|
778
|
+
### 🔧 Dependências
|
|
779
|
+
|
|
780
|
+
- Adicionado: `zod@^3.23.8` (usado somente em DEV via import dinâmico; não impacta o bundle de produção).
|
|
781
|
+
|
|
782
|
+
### 🧩 Sem breaking changes
|
|
783
|
+
|
|
784
|
+
- Alterações são compatíveis; padrões seguros preservados.
|
package/QUICKSTART.en.md
CHANGED
|
@@ -42,6 +42,40 @@ export default App
|
|
|
42
42
|
## 🧩 Custom categories (customCategories)
|
|
43
43
|
Available since v0.4.0.
|
|
44
44
|
|
|
45
|
+
## 🎨 Style tip: Theme-aware backdrop
|
|
46
|
+
|
|
47
|
+
In blocking mode, the banner uses a backdrop to focus user attention. You can control it via design tokens:
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
<ConsentProvider
|
|
51
|
+
categories={{ enabledCategories: ['analytics'] }}
|
|
52
|
+
designTokens={{
|
|
53
|
+
layout: {
|
|
54
|
+
// false: transparent | 'auto': adapts to theme | string: custom color (e.g., '#00000088')
|
|
55
|
+
backdrop: 'auto',
|
|
56
|
+
},
|
|
57
|
+
colors: {
|
|
58
|
+
// If omitted, MUI theme palette is used (background.paper, text.primary)
|
|
59
|
+
// background: '#1e1e1e',
|
|
60
|
+
// text: '#ffffff',
|
|
61
|
+
},
|
|
62
|
+
}}
|
|
63
|
+
>
|
|
64
|
+
<App />
|
|
65
|
+
</ConsentProvider>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
If `colors.background` or `colors.text` are omitted, the library falls back to `theme.palette.background.paper` and `theme.palette.text.primary`, ensuring dark mode compatibility.
|
|
69
|
+
|
|
70
|
+
## 🧑🏫 Developer Guidance (console)
|
|
71
|
+
|
|
72
|
+
In development, the console shows a helpful guidance panel:
|
|
73
|
+
- Warns when using defaults; suggests making categories explicit
|
|
74
|
+
- Lists active categories and which require UI toggles
|
|
75
|
+
- Detects integrations that require categories and suggests enabling them
|
|
76
|
+
- Shares Brazilian LGPD best practices and flags UX issues (too many categories)
|
|
77
|
+
- Silenced automatically in production; SSR-safe
|
|
78
|
+
|
|
45
79
|
Add project-specific categories (e.g., support chat, video players, A/B testing):
|
|
46
80
|
|
|
47
81
|
```tsx
|