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/dist/index.d.cts CHANGED
@@ -284,41 +284,192 @@ interface ConsentCookieOptions {
284
284
  path: string;
285
285
  }
286
286
  /**
287
- * Propriedades aceitas pelo componente ConsentProvider.
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
- /** Estado inicial do consentimento (para SSR). */
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
- /** Configuração de categorias ativas no projeto. */
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
- /** Textos customizados para a interface. */
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
- /** Tema customizado para os componentes MUI. Aceita qualquer propriedade. */
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 Use `categories.customCategories` em vez disso.
300
- * Categorias customizadas de cookies (complementa as padrão).
394
+ * @deprecated Usar `categories.customCategories` em vez disso.
395
+ * Mantido para compatibilidade com v0.1.x
301
396
  */
302
397
  customCategories?: CategoryDefinition[];
303
- /** Integrações nativas de scripts (Google Analytics, etc.). */
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
- /** Componente customizado para modal de preferências. */
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
- /** Desabilita o modal automático (para usar componente totalmente customizado). */
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
- /** Comportamento do banner: true = bloqueia até decisão, false = não bloqueia */
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
- /** Esconde branding "fornecido por LÉdipO.eti.br". */
430
+ /** Oculta o branding "fornecido por LÉdipO.eti.br" dos componentes. */
314
431
  hideBranding?: boolean;
315
- /** Callback chamado quando o consentimento é dado. */
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
- /** Callback chamado ao salvar preferências. */
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
- /** Configurações customizadas do cookie. */
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 do provider. */
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, texts: textsProp, theme, customCategories, scriptIntegrations, PreferencesModalComponent, preferencesModalProps, disableAutomaticModal, hideBranding, onConsentGiven, onPreferencesSaved, cookie: cookieOpts, children, }: Readonly<ConsentProviderProps>): react_jsx_runtime.JSX.Element;
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
- * Hook para acessar as categorias customizadas.
402
- * Retorna apenas as categorias customizadas (não as padrão analytics/marketing).
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 function useCustomCategories(): CategoryDefinition[];
577
+ declare const DEFAULT_PROJECT_CATEGORIES: ProjectCategoriesConfig;
405
578
  /**
406
- * Hook para obter todas as categorias (padrão + customizadas).
579
+ * Analisa configuração do projeto e retorna orientações para o developer.
407
580
  */
408
- declare function useAllCategories(): CategoryDefinition[];
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, useAllCategories, useConsent, useConsentHydration, useConsentScriptLoader, useConsentTexts, useCustomCategories };
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 aceitas pelo componente ConsentProvider.
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
- /** Estado inicial do consentimento (para SSR). */
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
- /** Configuração de categorias ativas no projeto. */
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
- /** Textos customizados para a interface. */
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
- /** Tema customizado para os componentes MUI. Aceita qualquer propriedade. */
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 Use `categories.customCategories` em vez disso.
300
- * Categorias customizadas de cookies (complementa as padrão).
394
+ * @deprecated Usar `categories.customCategories` em vez disso.
395
+ * Mantido para compatibilidade com v0.1.x
301
396
  */
302
397
  customCategories?: CategoryDefinition[];
303
- /** Integrações nativas de scripts (Google Analytics, etc.). */
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
- /** Componente customizado para modal de preferências. */
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
- /** Desabilita o modal automático (para usar componente totalmente customizado). */
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
- /** Comportamento do banner: true = bloqueia até decisão, false = não bloqueia */
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
- /** Esconde branding "fornecido por LÉdipO.eti.br". */
430
+ /** Oculta o branding "fornecido por LÉdipO.eti.br" dos componentes. */
314
431
  hideBranding?: boolean;
315
- /** Callback chamado quando o consentimento é dado. */
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
- /** Callback chamado ao salvar preferências. */
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
- /** Configurações customizadas do cookie. */
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 do provider. */
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, texts: textsProp, theme, customCategories, scriptIntegrations, PreferencesModalComponent, preferencesModalProps, disableAutomaticModal, hideBranding, onConsentGiven, onPreferencesSaved, cookie: cookieOpts, children, }: Readonly<ConsentProviderProps>): react_jsx_runtime.JSX.Element;
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
- * Hook para acessar as categorias customizadas.
402
- * Retorna apenas as categorias customizadas (não as padrão analytics/marketing).
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 function useCustomCategories(): CategoryDefinition[];
577
+ declare const DEFAULT_PROJECT_CATEGORIES: ProjectCategoriesConfig;
405
578
  /**
406
- * Hook para obter todas as categorias (padrão + customizadas).
579
+ * Analisa configuração do projeto e retorna orientações para o developer.
407
580
  */
408
- declare function useAllCategories(): CategoryDefinition[];
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, useAllCategories, useConsent, useConsentHydration, useConsentScriptLoader, useConsentTexts, useCustomCategories };
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
- useAllCategories,
8
+ useCategories,
9
+ useCategoryStatus,
7
10
  useConsent,
8
11
  useConsentHydration,
9
12
  useConsentTexts,
10
13
  useCustomCategories
11
- } from "./chunk-QCERRRSC.js";
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
- useAllCategories,
376
+ useCategories,
377
+ useCategoryStatus,
372
378
  useConsent,
373
379
  useConsentHydration,
374
380
  useConsentScriptLoader,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-lgpd-consent",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Biblioteca completa de consentimento LGPD com 6 categorias ANPD, integrações nativas e sistema extensível para React.",
5
5
  "keywords": [
6
6
  "lgpd",