react-lgpd-consent 0.2.1 → 0.2.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/COMPLIANCE.md +231 -87
- package/README.md +118 -20
- package/dist/{PreferencesModal-4WHKT67T.js → PreferencesModal-UMNANMVX.js} +1 -1
- package/dist/{chunk-QCERRRSC.js → chunk-E763JXNL.js} +307 -121
- package/dist/index.cjs +315 -116
- package/dist/index.d.cts +236 -24
- package/dist/index.d.ts +236 -24
- package/dist/index.js +9 -3
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -284,41 +284,192 @@ interface ConsentCookieOptions {
|
|
|
284
284
|
path: string;
|
|
285
285
|
}
|
|
286
286
|
/**
|
|
287
|
-
* Propriedades
|
|
287
|
+
* Propriedades do componente ConsentProvider - configuração principal da biblioteca.
|
|
288
|
+
*
|
|
289
|
+
* @example Uso básico (configuração mínima):
|
|
290
|
+
* ```tsx
|
|
291
|
+
* <ConsentProvider
|
|
292
|
+
* categories={{ enabledCategories: ['analytics'] }}
|
|
293
|
+
* >
|
|
294
|
+
* <App />
|
|
295
|
+
* </ConsentProvider>
|
|
296
|
+
* ```
|
|
297
|
+
*
|
|
298
|
+
* @example Configuração completa com textos ANPD:
|
|
299
|
+
* ```tsx
|
|
300
|
+
* <ConsentProvider
|
|
301
|
+
* categories={{
|
|
302
|
+
* enabledCategories: ['analytics', 'functional'],
|
|
303
|
+
* customCategories: [{
|
|
304
|
+
* id: 'governo',
|
|
305
|
+
* name: 'Cookies Governamentais',
|
|
306
|
+
* description: 'Coleta para estatísticas públicas',
|
|
307
|
+
* essential: false
|
|
308
|
+
* }]
|
|
309
|
+
* }}
|
|
310
|
+
* texts={{
|
|
311
|
+
* bannerMessage: 'Utilizamos cookies conforme LGPD...',
|
|
312
|
+
* controllerInfo: 'Controlado por: Ministério XYZ - CNPJ: 00.000.000/0001-00',
|
|
313
|
+
* dataTypes: 'Coletamos: dados de navegação para análise estatística',
|
|
314
|
+
* userRights: 'Direitos: acessar, corrigir, excluir dados',
|
|
315
|
+
* contactInfo: 'DPO: dpo@ministerio.gov.br'
|
|
316
|
+
* }}
|
|
317
|
+
* onConsentGiven={(state) => console.log('Consentimento:', state)}
|
|
318
|
+
* >
|
|
319
|
+
* <App />
|
|
320
|
+
* </ConsentProvider>
|
|
321
|
+
* ```
|
|
288
322
|
*/
|
|
289
323
|
interface ConsentProviderProps {
|
|
290
|
-
/**
|
|
324
|
+
/**
|
|
325
|
+
* Estado inicial do consentimento para hidratação SSR.
|
|
326
|
+
*
|
|
327
|
+
* @example
|
|
328
|
+
* ```tsx
|
|
329
|
+
* // Em Next.js para evitar flash do banner
|
|
330
|
+
* <ConsentProvider initialState={{ consented: true, preferences: {...} }}>
|
|
331
|
+
* ```
|
|
332
|
+
*/
|
|
291
333
|
initialState?: ConsentState;
|
|
292
|
-
/**
|
|
334
|
+
/**
|
|
335
|
+
* Configuração das categorias de cookies utilizadas no projeto.
|
|
336
|
+
* Define quais categorias padrão serão habilitadas e categorias customizadas.
|
|
337
|
+
*
|
|
338
|
+
* @example Apenas analytics:
|
|
339
|
+
* ```tsx
|
|
340
|
+
* categories={{ enabledCategories: ['analytics'] }}
|
|
341
|
+
* ```
|
|
342
|
+
*
|
|
343
|
+
* @example Com categoria customizada:
|
|
344
|
+
* ```tsx
|
|
345
|
+
* categories={{
|
|
346
|
+
* enabledCategories: ['analytics', 'marketing'],
|
|
347
|
+
* customCategories: [{
|
|
348
|
+
* id: 'pesquisa',
|
|
349
|
+
* name: 'Cookies de Pesquisa',
|
|
350
|
+
* description: 'Coleta feedback e opinião dos usuários',
|
|
351
|
+
* essential: false
|
|
352
|
+
* }]
|
|
353
|
+
* }}
|
|
354
|
+
* ```
|
|
355
|
+
*/
|
|
293
356
|
categories?: ProjectCategoriesConfig;
|
|
294
|
-
/**
|
|
357
|
+
/**
|
|
358
|
+
* Textos customizados da interface (banner e modal).
|
|
359
|
+
* Todos os campos são opcionais - valores não fornecidos usam o padrão em português.
|
|
360
|
+
*
|
|
361
|
+
* @example Textos básicos:
|
|
362
|
+
* ```tsx
|
|
363
|
+
* texts={{
|
|
364
|
+
* bannerMessage: 'We use cookies...',
|
|
365
|
+
* acceptAll: 'Accept All',
|
|
366
|
+
* declineAll: 'Reject'
|
|
367
|
+
* }}
|
|
368
|
+
* ```
|
|
369
|
+
*
|
|
370
|
+
* @example Textos ANPD para compliance:
|
|
371
|
+
* ```tsx
|
|
372
|
+
* texts={{
|
|
373
|
+
* controllerInfo: 'Controlado por: Empresa XYZ - CNPJ: 12.345.678/0001-90',
|
|
374
|
+
* dataTypes: 'Coletamos: endereço IP, preferências de navegação',
|
|
375
|
+
* userRights: 'Você pode solicitar acesso, correção ou exclusão dos dados'
|
|
376
|
+
* }}
|
|
377
|
+
* ```
|
|
378
|
+
*/
|
|
295
379
|
texts?: Partial<ConsentTexts>;
|
|
296
|
-
/**
|
|
380
|
+
/**
|
|
381
|
+
* Tema customizado Material-UI aplicado aos componentes.
|
|
382
|
+
* Aceita qualquer objeto que será passado para ThemeProvider.
|
|
383
|
+
*
|
|
384
|
+
* @example
|
|
385
|
+
* ```tsx
|
|
386
|
+
* theme={{
|
|
387
|
+
* palette: { primary: { main: '#1976d2' } },
|
|
388
|
+
* components: { MuiButton: { styleOverrides: { root: { borderRadius: 8 } } } }
|
|
389
|
+
* }}
|
|
390
|
+
* ```
|
|
391
|
+
*/
|
|
297
392
|
theme?: any;
|
|
298
393
|
/**
|
|
299
|
-
* @deprecated
|
|
300
|
-
*
|
|
394
|
+
* @deprecated Usar `categories.customCategories` em vez disso.
|
|
395
|
+
* Mantido para compatibilidade com v0.1.x
|
|
301
396
|
*/
|
|
302
397
|
customCategories?: CategoryDefinition[];
|
|
303
|
-
/**
|
|
398
|
+
/**
|
|
399
|
+
* Integrações nativas de scripts terceiros (Google Analytics, etc.).
|
|
400
|
+
* Scripts são carregados automaticamente baseado no consentimento.
|
|
401
|
+
*
|
|
402
|
+
* @example
|
|
403
|
+
* ```tsx
|
|
404
|
+
* import { createGoogleAnalyticsIntegration } from 'react-lgpd-consent'
|
|
405
|
+
*
|
|
406
|
+
* scriptIntegrations={[
|
|
407
|
+
* createGoogleAnalyticsIntegration('GA_MEASUREMENT_ID')
|
|
408
|
+
* ]}
|
|
409
|
+
* ```
|
|
410
|
+
*/
|
|
304
411
|
scriptIntegrations?: ScriptIntegration[];
|
|
305
|
-
/**
|
|
412
|
+
/**
|
|
413
|
+
* Componente customizado para substituir o modal padrão de preferências.
|
|
414
|
+
* Deve implementar a lógica de consentimento usando os hooks da biblioteca.
|
|
415
|
+
*/
|
|
306
416
|
PreferencesModalComponent?: React.ComponentType<any>;
|
|
307
|
-
/** Props adicionais para o modal customizado. */
|
|
417
|
+
/** Props adicionais passadas para o modal customizado. */
|
|
308
418
|
preferencesModalProps?: Record<string, any>;
|
|
309
|
-
/**
|
|
419
|
+
/**
|
|
420
|
+
* Desabilita o modal automático de preferências.
|
|
421
|
+
* Útil quando se quer controle total sobre quando/como exibir as opções.
|
|
422
|
+
*/
|
|
310
423
|
disableAutomaticModal?: boolean;
|
|
311
|
-
/**
|
|
424
|
+
/**
|
|
425
|
+
* Comportamento do banner de consentimento:
|
|
426
|
+
* - `false` (padrão): Banner não-intrusivo, usuário pode navegar livremente
|
|
427
|
+
* - `true`: Banner bloqueia interação até decisão (compliance rigorosa)
|
|
428
|
+
*/
|
|
312
429
|
blocking?: boolean;
|
|
313
|
-
/**
|
|
430
|
+
/** Oculta o branding "fornecido por LÉdipO.eti.br" dos componentes. */
|
|
314
431
|
hideBranding?: boolean;
|
|
315
|
-
/**
|
|
432
|
+
/**
|
|
433
|
+
* Callback executado quando usuário dá consentimento pela primeira vez.
|
|
434
|
+
* Útil para inicializar analytics, registrar evento, etc.
|
|
435
|
+
*
|
|
436
|
+
* @example
|
|
437
|
+
* ```tsx
|
|
438
|
+
* onConsentGiven={(state) => {
|
|
439
|
+
* console.log('Consentimento registrado:', state)
|
|
440
|
+
* // Inicializar Google Analytics, etc.
|
|
441
|
+
* }}
|
|
442
|
+
* ```
|
|
443
|
+
*/
|
|
316
444
|
onConsentGiven?: (state: ConsentState) => void;
|
|
317
|
-
/**
|
|
445
|
+
/**
|
|
446
|
+
* Callback executado quando usuário modifica preferências.
|
|
447
|
+
* Executado após salvar as mudanças.
|
|
448
|
+
*
|
|
449
|
+
* @example
|
|
450
|
+
* ```tsx
|
|
451
|
+
* onPreferencesSaved={(prefs) => {
|
|
452
|
+
* console.log('Novas preferências:', prefs)
|
|
453
|
+
* // Reconfigurar scripts baseado nas preferências
|
|
454
|
+
* }}
|
|
455
|
+
* ```
|
|
456
|
+
*/
|
|
318
457
|
onPreferencesSaved?: (prefs: ConsentPreferences) => void;
|
|
319
|
-
/**
|
|
458
|
+
/**
|
|
459
|
+
* Configurações do cookie de consentimento.
|
|
460
|
+
* Valores não fornecidos usam padrões seguros para LGPD.
|
|
461
|
+
*
|
|
462
|
+
* @example
|
|
463
|
+
* ```tsx
|
|
464
|
+
* cookie={{
|
|
465
|
+
* name: 'meuAppConsent',
|
|
466
|
+
* maxAgeDays: 180,
|
|
467
|
+
* sameSite: 'Strict'
|
|
468
|
+
* }}
|
|
469
|
+
* ```
|
|
470
|
+
*/
|
|
320
471
|
cookie?: Partial<ConsentCookieOptions>;
|
|
321
|
-
/** Elementos filhos
|
|
472
|
+
/** Elementos filhos - toda a aplicação que precisa de contexto de consentimento. */
|
|
322
473
|
children: React.ReactNode;
|
|
323
474
|
}
|
|
324
475
|
/**
|
|
@@ -362,7 +513,9 @@ interface ConsentContextValue {
|
|
|
362
513
|
* <App />
|
|
363
514
|
* </ConsentProvider>
|
|
364
515
|
*/
|
|
365
|
-
declare function ConsentProvider({ initialState,
|
|
516
|
+
declare function ConsentProvider({ initialState, categories, // NOVO: configuração completa de categorias
|
|
517
|
+
texts: textsProp, theme, customCategories, // LEGACY: compatibilidade
|
|
518
|
+
scriptIntegrations, PreferencesModalComponent, preferencesModalProps, disableAutomaticModal, hideBranding, onConsentGiven, onPreferencesSaved, cookie: cookieOpts, children, }: Readonly<ConsentProviderProps>): react_jsx_runtime.JSX.Element;
|
|
366
519
|
|
|
367
520
|
/**
|
|
368
521
|
* Hook principal para acessar e manipular o estado de consentimento de cookies.
|
|
@@ -398,14 +551,73 @@ declare function useConsentTexts(): ConsentTexts;
|
|
|
398
551
|
declare function useConsentHydration(): boolean;
|
|
399
552
|
|
|
400
553
|
/**
|
|
401
|
-
*
|
|
402
|
-
*
|
|
554
|
+
* Sistema de orientações para developers sobre configuração de categorias.
|
|
555
|
+
* Ajuda a manter coerência entre configuração da lib e componentes customizados.
|
|
556
|
+
*/
|
|
557
|
+
interface DeveloperGuidance {
|
|
558
|
+
/** Avisos sobre configuração inconsistente */
|
|
559
|
+
warnings: string[];
|
|
560
|
+
/** Sugestões de melhoria */
|
|
561
|
+
suggestions: string[];
|
|
562
|
+
/** Informações sobre categorias ativas */
|
|
563
|
+
activeCategoriesInfo: {
|
|
564
|
+
id: string;
|
|
565
|
+
name: string;
|
|
566
|
+
description: string;
|
|
567
|
+
essential: boolean;
|
|
568
|
+
uiRequired: boolean;
|
|
569
|
+
}[];
|
|
570
|
+
/** Se usa configuração padrão (não explícita) */
|
|
571
|
+
usingDefaults: boolean;
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Configuração padrão quando developer não especifica categorias.
|
|
575
|
+
* Baseado nas necessidades mais comuns em conformidade LGPD.
|
|
403
576
|
*/
|
|
404
|
-
declare
|
|
577
|
+
declare const DEFAULT_PROJECT_CATEGORIES: ProjectCategoriesConfig;
|
|
405
578
|
/**
|
|
406
|
-
*
|
|
579
|
+
* Analisa configuração do projeto e retorna orientações para o developer.
|
|
407
580
|
*/
|
|
408
|
-
declare function
|
|
581
|
+
declare function analyzeDeveloperConfiguration(config?: ProjectCategoriesConfig): DeveloperGuidance;
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* Context para informações sobre categorias ativas no projeto.
|
|
585
|
+
* Fornece orientações e validações para components UI.
|
|
586
|
+
*/
|
|
587
|
+
interface CategoriesContextValue {
|
|
588
|
+
/** Configuração final das categorias (com padrão aplicado) */
|
|
589
|
+
config: ProjectCategoriesConfig;
|
|
590
|
+
/** Análise e orientações para developers */
|
|
591
|
+
guidance: DeveloperGuidance;
|
|
592
|
+
/** Categorias que precisam de toggle na UI */
|
|
593
|
+
toggleableCategories: DeveloperGuidance['activeCategoriesInfo'];
|
|
594
|
+
/** Todas as categorias ativas */
|
|
595
|
+
allCategories: DeveloperGuidance['activeCategoriesInfo'];
|
|
596
|
+
/** LEGACY: Apenas categorias customizadas (backward compatibility) */
|
|
597
|
+
legacyCategories: CategoryDefinition[];
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* Hook para acessar informações sobre categorias ativas.
|
|
601
|
+
* Usado por componentes UI para renderizar adequadamente.
|
|
602
|
+
*/
|
|
603
|
+
declare function useCategories(): CategoriesContextValue;
|
|
604
|
+
/**
|
|
605
|
+
* Hook de conveniência para verificar se uma categoria específica está ativa.
|
|
606
|
+
*/
|
|
607
|
+
declare function useCategoryStatus(categoryId: string): {
|
|
608
|
+
isActive: boolean;
|
|
609
|
+
isEssential: boolean;
|
|
610
|
+
needsToggle: boolean;
|
|
611
|
+
name: string | undefined;
|
|
612
|
+
description: string | undefined;
|
|
613
|
+
};
|
|
614
|
+
/**
|
|
615
|
+
* LEGACY: Hook para acessar as categorias customizadas.
|
|
616
|
+
* Mantido para backward compatibility.
|
|
617
|
+
*
|
|
618
|
+
* @deprecated Use useCategories() ao invés disso para acesso completo às categorias.
|
|
619
|
+
*/
|
|
620
|
+
declare function useCustomCategories(): CategoryDefinition[];
|
|
409
621
|
|
|
410
622
|
declare function ConsentGate(props: Readonly<{
|
|
411
623
|
category: string;
|
|
@@ -482,4 +694,4 @@ declare function ConsentScriptLoader({ integrations, reloadOnChange, }: Readonly
|
|
|
482
694
|
*/
|
|
483
695
|
declare function useConsentScriptLoader(): (integration: ScriptIntegration) => Promise<boolean>;
|
|
484
696
|
|
|
485
|
-
export { COMMON_INTEGRATIONS, type Category, type CategoryDefinition, type ConsentCookieOptions, ConsentGate, type ConsentPreferences, ConsentProvider, ConsentScriptLoader, type ConsentState, type ConsentTexts, CookieBanner, FloatingPreferencesButton, type GoogleAnalyticsConfig, type GoogleTagManagerConfig, PreferencesModal, type ScriptIntegration, type UserWayConfig, createGoogleAnalyticsIntegration, createGoogleTagManagerIntegration, createUserWayIntegration, defaultConsentTheme, loadScript,
|
|
697
|
+
export { COMMON_INTEGRATIONS, type Category, type CategoryDefinition, type ConsentCookieOptions, ConsentGate, type ConsentPreferences, ConsentProvider, ConsentScriptLoader, type ConsentState, type ConsentTexts, CookieBanner, DEFAULT_PROJECT_CATEGORIES, type DeveloperGuidance, FloatingPreferencesButton, type GoogleAnalyticsConfig, type GoogleTagManagerConfig, PreferencesModal, type ProjectCategoriesConfig, type ScriptIntegration, type UserWayConfig, analyzeDeveloperConfiguration, createGoogleAnalyticsIntegration, createGoogleTagManagerIntegration, createUserWayIntegration, defaultConsentTheme, loadScript, useCategories, useCategoryStatus, useConsent, useConsentHydration, useConsentScriptLoader, useConsentTexts, useCustomCategories };
|
package/dist/index.d.ts
CHANGED
|
@@ -284,41 +284,192 @@ interface ConsentCookieOptions {
|
|
|
284
284
|
path: string;
|
|
285
285
|
}
|
|
286
286
|
/**
|
|
287
|
-
* Propriedades
|
|
287
|
+
* Propriedades do componente ConsentProvider - configuração principal da biblioteca.
|
|
288
|
+
*
|
|
289
|
+
* @example Uso básico (configuração mínima):
|
|
290
|
+
* ```tsx
|
|
291
|
+
* <ConsentProvider
|
|
292
|
+
* categories={{ enabledCategories: ['analytics'] }}
|
|
293
|
+
* >
|
|
294
|
+
* <App />
|
|
295
|
+
* </ConsentProvider>
|
|
296
|
+
* ```
|
|
297
|
+
*
|
|
298
|
+
* @example Configuração completa com textos ANPD:
|
|
299
|
+
* ```tsx
|
|
300
|
+
* <ConsentProvider
|
|
301
|
+
* categories={{
|
|
302
|
+
* enabledCategories: ['analytics', 'functional'],
|
|
303
|
+
* customCategories: [{
|
|
304
|
+
* id: 'governo',
|
|
305
|
+
* name: 'Cookies Governamentais',
|
|
306
|
+
* description: 'Coleta para estatísticas públicas',
|
|
307
|
+
* essential: false
|
|
308
|
+
* }]
|
|
309
|
+
* }}
|
|
310
|
+
* texts={{
|
|
311
|
+
* bannerMessage: 'Utilizamos cookies conforme LGPD...',
|
|
312
|
+
* controllerInfo: 'Controlado por: Ministério XYZ - CNPJ: 00.000.000/0001-00',
|
|
313
|
+
* dataTypes: 'Coletamos: dados de navegação para análise estatística',
|
|
314
|
+
* userRights: 'Direitos: acessar, corrigir, excluir dados',
|
|
315
|
+
* contactInfo: 'DPO: dpo@ministerio.gov.br'
|
|
316
|
+
* }}
|
|
317
|
+
* onConsentGiven={(state) => console.log('Consentimento:', state)}
|
|
318
|
+
* >
|
|
319
|
+
* <App />
|
|
320
|
+
* </ConsentProvider>
|
|
321
|
+
* ```
|
|
288
322
|
*/
|
|
289
323
|
interface ConsentProviderProps {
|
|
290
|
-
/**
|
|
324
|
+
/**
|
|
325
|
+
* Estado inicial do consentimento para hidratação SSR.
|
|
326
|
+
*
|
|
327
|
+
* @example
|
|
328
|
+
* ```tsx
|
|
329
|
+
* // Em Next.js para evitar flash do banner
|
|
330
|
+
* <ConsentProvider initialState={{ consented: true, preferences: {...} }}>
|
|
331
|
+
* ```
|
|
332
|
+
*/
|
|
291
333
|
initialState?: ConsentState;
|
|
292
|
-
/**
|
|
334
|
+
/**
|
|
335
|
+
* Configuração das categorias de cookies utilizadas no projeto.
|
|
336
|
+
* Define quais categorias padrão serão habilitadas e categorias customizadas.
|
|
337
|
+
*
|
|
338
|
+
* @example Apenas analytics:
|
|
339
|
+
* ```tsx
|
|
340
|
+
* categories={{ enabledCategories: ['analytics'] }}
|
|
341
|
+
* ```
|
|
342
|
+
*
|
|
343
|
+
* @example Com categoria customizada:
|
|
344
|
+
* ```tsx
|
|
345
|
+
* categories={{
|
|
346
|
+
* enabledCategories: ['analytics', 'marketing'],
|
|
347
|
+
* customCategories: [{
|
|
348
|
+
* id: 'pesquisa',
|
|
349
|
+
* name: 'Cookies de Pesquisa',
|
|
350
|
+
* description: 'Coleta feedback e opinião dos usuários',
|
|
351
|
+
* essential: false
|
|
352
|
+
* }]
|
|
353
|
+
* }}
|
|
354
|
+
* ```
|
|
355
|
+
*/
|
|
293
356
|
categories?: ProjectCategoriesConfig;
|
|
294
|
-
/**
|
|
357
|
+
/**
|
|
358
|
+
* Textos customizados da interface (banner e modal).
|
|
359
|
+
* Todos os campos são opcionais - valores não fornecidos usam o padrão em português.
|
|
360
|
+
*
|
|
361
|
+
* @example Textos básicos:
|
|
362
|
+
* ```tsx
|
|
363
|
+
* texts={{
|
|
364
|
+
* bannerMessage: 'We use cookies...',
|
|
365
|
+
* acceptAll: 'Accept All',
|
|
366
|
+
* declineAll: 'Reject'
|
|
367
|
+
* }}
|
|
368
|
+
* ```
|
|
369
|
+
*
|
|
370
|
+
* @example Textos ANPD para compliance:
|
|
371
|
+
* ```tsx
|
|
372
|
+
* texts={{
|
|
373
|
+
* controllerInfo: 'Controlado por: Empresa XYZ - CNPJ: 12.345.678/0001-90',
|
|
374
|
+
* dataTypes: 'Coletamos: endereço IP, preferências de navegação',
|
|
375
|
+
* userRights: 'Você pode solicitar acesso, correção ou exclusão dos dados'
|
|
376
|
+
* }}
|
|
377
|
+
* ```
|
|
378
|
+
*/
|
|
295
379
|
texts?: Partial<ConsentTexts>;
|
|
296
|
-
/**
|
|
380
|
+
/**
|
|
381
|
+
* Tema customizado Material-UI aplicado aos componentes.
|
|
382
|
+
* Aceita qualquer objeto que será passado para ThemeProvider.
|
|
383
|
+
*
|
|
384
|
+
* @example
|
|
385
|
+
* ```tsx
|
|
386
|
+
* theme={{
|
|
387
|
+
* palette: { primary: { main: '#1976d2' } },
|
|
388
|
+
* components: { MuiButton: { styleOverrides: { root: { borderRadius: 8 } } } }
|
|
389
|
+
* }}
|
|
390
|
+
* ```
|
|
391
|
+
*/
|
|
297
392
|
theme?: any;
|
|
298
393
|
/**
|
|
299
|
-
* @deprecated
|
|
300
|
-
*
|
|
394
|
+
* @deprecated Usar `categories.customCategories` em vez disso.
|
|
395
|
+
* Mantido para compatibilidade com v0.1.x
|
|
301
396
|
*/
|
|
302
397
|
customCategories?: CategoryDefinition[];
|
|
303
|
-
/**
|
|
398
|
+
/**
|
|
399
|
+
* Integrações nativas de scripts terceiros (Google Analytics, etc.).
|
|
400
|
+
* Scripts são carregados automaticamente baseado no consentimento.
|
|
401
|
+
*
|
|
402
|
+
* @example
|
|
403
|
+
* ```tsx
|
|
404
|
+
* import { createGoogleAnalyticsIntegration } from 'react-lgpd-consent'
|
|
405
|
+
*
|
|
406
|
+
* scriptIntegrations={[
|
|
407
|
+
* createGoogleAnalyticsIntegration('GA_MEASUREMENT_ID')
|
|
408
|
+
* ]}
|
|
409
|
+
* ```
|
|
410
|
+
*/
|
|
304
411
|
scriptIntegrations?: ScriptIntegration[];
|
|
305
|
-
/**
|
|
412
|
+
/**
|
|
413
|
+
* Componente customizado para substituir o modal padrão de preferências.
|
|
414
|
+
* Deve implementar a lógica de consentimento usando os hooks da biblioteca.
|
|
415
|
+
*/
|
|
306
416
|
PreferencesModalComponent?: React.ComponentType<any>;
|
|
307
|
-
/** Props adicionais para o modal customizado. */
|
|
417
|
+
/** Props adicionais passadas para o modal customizado. */
|
|
308
418
|
preferencesModalProps?: Record<string, any>;
|
|
309
|
-
/**
|
|
419
|
+
/**
|
|
420
|
+
* Desabilita o modal automático de preferências.
|
|
421
|
+
* Útil quando se quer controle total sobre quando/como exibir as opções.
|
|
422
|
+
*/
|
|
310
423
|
disableAutomaticModal?: boolean;
|
|
311
|
-
/**
|
|
424
|
+
/**
|
|
425
|
+
* Comportamento do banner de consentimento:
|
|
426
|
+
* - `false` (padrão): Banner não-intrusivo, usuário pode navegar livremente
|
|
427
|
+
* - `true`: Banner bloqueia interação até decisão (compliance rigorosa)
|
|
428
|
+
*/
|
|
312
429
|
blocking?: boolean;
|
|
313
|
-
/**
|
|
430
|
+
/** Oculta o branding "fornecido por LÉdipO.eti.br" dos componentes. */
|
|
314
431
|
hideBranding?: boolean;
|
|
315
|
-
/**
|
|
432
|
+
/**
|
|
433
|
+
* Callback executado quando usuário dá consentimento pela primeira vez.
|
|
434
|
+
* Útil para inicializar analytics, registrar evento, etc.
|
|
435
|
+
*
|
|
436
|
+
* @example
|
|
437
|
+
* ```tsx
|
|
438
|
+
* onConsentGiven={(state) => {
|
|
439
|
+
* console.log('Consentimento registrado:', state)
|
|
440
|
+
* // Inicializar Google Analytics, etc.
|
|
441
|
+
* }}
|
|
442
|
+
* ```
|
|
443
|
+
*/
|
|
316
444
|
onConsentGiven?: (state: ConsentState) => void;
|
|
317
|
-
/**
|
|
445
|
+
/**
|
|
446
|
+
* Callback executado quando usuário modifica preferências.
|
|
447
|
+
* Executado após salvar as mudanças.
|
|
448
|
+
*
|
|
449
|
+
* @example
|
|
450
|
+
* ```tsx
|
|
451
|
+
* onPreferencesSaved={(prefs) => {
|
|
452
|
+
* console.log('Novas preferências:', prefs)
|
|
453
|
+
* // Reconfigurar scripts baseado nas preferências
|
|
454
|
+
* }}
|
|
455
|
+
* ```
|
|
456
|
+
*/
|
|
318
457
|
onPreferencesSaved?: (prefs: ConsentPreferences) => void;
|
|
319
|
-
/**
|
|
458
|
+
/**
|
|
459
|
+
* Configurações do cookie de consentimento.
|
|
460
|
+
* Valores não fornecidos usam padrões seguros para LGPD.
|
|
461
|
+
*
|
|
462
|
+
* @example
|
|
463
|
+
* ```tsx
|
|
464
|
+
* cookie={{
|
|
465
|
+
* name: 'meuAppConsent',
|
|
466
|
+
* maxAgeDays: 180,
|
|
467
|
+
* sameSite: 'Strict'
|
|
468
|
+
* }}
|
|
469
|
+
* ```
|
|
470
|
+
*/
|
|
320
471
|
cookie?: Partial<ConsentCookieOptions>;
|
|
321
|
-
/** Elementos filhos
|
|
472
|
+
/** Elementos filhos - toda a aplicação que precisa de contexto de consentimento. */
|
|
322
473
|
children: React.ReactNode;
|
|
323
474
|
}
|
|
324
475
|
/**
|
|
@@ -362,7 +513,9 @@ interface ConsentContextValue {
|
|
|
362
513
|
* <App />
|
|
363
514
|
* </ConsentProvider>
|
|
364
515
|
*/
|
|
365
|
-
declare function ConsentProvider({ initialState,
|
|
516
|
+
declare function ConsentProvider({ initialState, categories, // NOVO: configuração completa de categorias
|
|
517
|
+
texts: textsProp, theme, customCategories, // LEGACY: compatibilidade
|
|
518
|
+
scriptIntegrations, PreferencesModalComponent, preferencesModalProps, disableAutomaticModal, hideBranding, onConsentGiven, onPreferencesSaved, cookie: cookieOpts, children, }: Readonly<ConsentProviderProps>): react_jsx_runtime.JSX.Element;
|
|
366
519
|
|
|
367
520
|
/**
|
|
368
521
|
* Hook principal para acessar e manipular o estado de consentimento de cookies.
|
|
@@ -398,14 +551,73 @@ declare function useConsentTexts(): ConsentTexts;
|
|
|
398
551
|
declare function useConsentHydration(): boolean;
|
|
399
552
|
|
|
400
553
|
/**
|
|
401
|
-
*
|
|
402
|
-
*
|
|
554
|
+
* Sistema de orientações para developers sobre configuração de categorias.
|
|
555
|
+
* Ajuda a manter coerência entre configuração da lib e componentes customizados.
|
|
556
|
+
*/
|
|
557
|
+
interface DeveloperGuidance {
|
|
558
|
+
/** Avisos sobre configuração inconsistente */
|
|
559
|
+
warnings: string[];
|
|
560
|
+
/** Sugestões de melhoria */
|
|
561
|
+
suggestions: string[];
|
|
562
|
+
/** Informações sobre categorias ativas */
|
|
563
|
+
activeCategoriesInfo: {
|
|
564
|
+
id: string;
|
|
565
|
+
name: string;
|
|
566
|
+
description: string;
|
|
567
|
+
essential: boolean;
|
|
568
|
+
uiRequired: boolean;
|
|
569
|
+
}[];
|
|
570
|
+
/** Se usa configuração padrão (não explícita) */
|
|
571
|
+
usingDefaults: boolean;
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Configuração padrão quando developer não especifica categorias.
|
|
575
|
+
* Baseado nas necessidades mais comuns em conformidade LGPD.
|
|
403
576
|
*/
|
|
404
|
-
declare
|
|
577
|
+
declare const DEFAULT_PROJECT_CATEGORIES: ProjectCategoriesConfig;
|
|
405
578
|
/**
|
|
406
|
-
*
|
|
579
|
+
* Analisa configuração do projeto e retorna orientações para o developer.
|
|
407
580
|
*/
|
|
408
|
-
declare function
|
|
581
|
+
declare function analyzeDeveloperConfiguration(config?: ProjectCategoriesConfig): DeveloperGuidance;
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* Context para informações sobre categorias ativas no projeto.
|
|
585
|
+
* Fornece orientações e validações para components UI.
|
|
586
|
+
*/
|
|
587
|
+
interface CategoriesContextValue {
|
|
588
|
+
/** Configuração final das categorias (com padrão aplicado) */
|
|
589
|
+
config: ProjectCategoriesConfig;
|
|
590
|
+
/** Análise e orientações para developers */
|
|
591
|
+
guidance: DeveloperGuidance;
|
|
592
|
+
/** Categorias que precisam de toggle na UI */
|
|
593
|
+
toggleableCategories: DeveloperGuidance['activeCategoriesInfo'];
|
|
594
|
+
/** Todas as categorias ativas */
|
|
595
|
+
allCategories: DeveloperGuidance['activeCategoriesInfo'];
|
|
596
|
+
/** LEGACY: Apenas categorias customizadas (backward compatibility) */
|
|
597
|
+
legacyCategories: CategoryDefinition[];
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* Hook para acessar informações sobre categorias ativas.
|
|
601
|
+
* Usado por componentes UI para renderizar adequadamente.
|
|
602
|
+
*/
|
|
603
|
+
declare function useCategories(): CategoriesContextValue;
|
|
604
|
+
/**
|
|
605
|
+
* Hook de conveniência para verificar se uma categoria específica está ativa.
|
|
606
|
+
*/
|
|
607
|
+
declare function useCategoryStatus(categoryId: string): {
|
|
608
|
+
isActive: boolean;
|
|
609
|
+
isEssential: boolean;
|
|
610
|
+
needsToggle: boolean;
|
|
611
|
+
name: string | undefined;
|
|
612
|
+
description: string | undefined;
|
|
613
|
+
};
|
|
614
|
+
/**
|
|
615
|
+
* LEGACY: Hook para acessar as categorias customizadas.
|
|
616
|
+
* Mantido para backward compatibility.
|
|
617
|
+
*
|
|
618
|
+
* @deprecated Use useCategories() ao invés disso para acesso completo às categorias.
|
|
619
|
+
*/
|
|
620
|
+
declare function useCustomCategories(): CategoryDefinition[];
|
|
409
621
|
|
|
410
622
|
declare function ConsentGate(props: Readonly<{
|
|
411
623
|
category: string;
|
|
@@ -482,4 +694,4 @@ declare function ConsentScriptLoader({ integrations, reloadOnChange, }: Readonly
|
|
|
482
694
|
*/
|
|
483
695
|
declare function useConsentScriptLoader(): (integration: ScriptIntegration) => Promise<boolean>;
|
|
484
696
|
|
|
485
|
-
export { COMMON_INTEGRATIONS, type Category, type CategoryDefinition, type ConsentCookieOptions, ConsentGate, type ConsentPreferences, ConsentProvider, ConsentScriptLoader, type ConsentState, type ConsentTexts, CookieBanner, FloatingPreferencesButton, type GoogleAnalyticsConfig, type GoogleTagManagerConfig, PreferencesModal, type ScriptIntegration, type UserWayConfig, createGoogleAnalyticsIntegration, createGoogleTagManagerIntegration, createUserWayIntegration, defaultConsentTheme, loadScript,
|
|
697
|
+
export { COMMON_INTEGRATIONS, type Category, type CategoryDefinition, type ConsentCookieOptions, ConsentGate, type ConsentPreferences, ConsentProvider, ConsentScriptLoader, type ConsentState, type ConsentTexts, CookieBanner, DEFAULT_PROJECT_CATEGORIES, type DeveloperGuidance, FloatingPreferencesButton, type GoogleAnalyticsConfig, type GoogleTagManagerConfig, PreferencesModal, type ProjectCategoriesConfig, type ScriptIntegration, type UserWayConfig, analyzeDeveloperConfiguration, createGoogleAnalyticsIntegration, createGoogleTagManagerIntegration, createUserWayIntegration, defaultConsentTheme, loadScript, useCategories, useCategoryStatus, useConsent, useConsentHydration, useConsentScriptLoader, useConsentTexts, useCustomCategories };
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Branding,
|
|
3
3
|
ConsentProvider,
|
|
4
|
+
DEFAULT_PROJECT_CATEGORIES,
|
|
4
5
|
PreferencesModal,
|
|
6
|
+
analyzeDeveloperConfiguration,
|
|
5
7
|
defaultConsentTheme,
|
|
6
|
-
|
|
8
|
+
useCategories,
|
|
9
|
+
useCategoryStatus,
|
|
7
10
|
useConsent,
|
|
8
11
|
useConsentHydration,
|
|
9
12
|
useConsentTexts,
|
|
10
13
|
useCustomCategories
|
|
11
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-E763JXNL.js";
|
|
12
15
|
|
|
13
16
|
// src/components/CookieBanner.tsx
|
|
14
17
|
import Button from "@mui/material/Button";
|
|
@@ -361,14 +364,17 @@ export {
|
|
|
361
364
|
ConsentProvider,
|
|
362
365
|
ConsentScriptLoader,
|
|
363
366
|
CookieBanner,
|
|
367
|
+
DEFAULT_PROJECT_CATEGORIES,
|
|
364
368
|
FloatingPreferencesButton,
|
|
365
369
|
PreferencesModal,
|
|
370
|
+
analyzeDeveloperConfiguration,
|
|
366
371
|
createGoogleAnalyticsIntegration,
|
|
367
372
|
createGoogleTagManagerIntegration,
|
|
368
373
|
createUserWayIntegration,
|
|
369
374
|
defaultConsentTheme,
|
|
370
375
|
loadScript,
|
|
371
|
-
|
|
376
|
+
useCategories,
|
|
377
|
+
useCategoryStatus,
|
|
372
378
|
useConsent,
|
|
373
379
|
useConsentHydration,
|
|
374
380
|
useConsentScriptLoader,
|
package/package.json
CHANGED