Núcleo da biblioteca de consentimento LGPD para React - Estado, hooks e utilitários sem dependências de UI
O pacote @react-lgpd-consent/core contém toda a lógica de negócio e gerenciamento de estado da biblioteca react-lgpd-consent, sem dependências de componentes UI.
npm install @react-lgpd-consent/core
# ou
pnpm add @react-lgpd-consent/core
Peer Dependencies: react@^18.2.0 || ^19.0.0, react-dom@^18.2.0 || ^19.0.0
import { ConsentProvider, useConsent } from '@react-lgpd-consent/core'
function App() {
return (
<ConsentProvider categories={{ enabledCategories: ['analytics'] }}>
<MyCustomBanner />
<YourApp />
</ConsentProvider>
)
}
function MyCustomBanner() {
const { consented, acceptAll, rejectAll } = useConsent()
if (consented) return null
return (
<div>
<p>Usamos cookies para melhorar sua experiência</p>
<button onClick={acceptAll}>Aceitar</button>
<button onClick={rejectAll}>Rejeitar</button>
</div>
)
}
ConsentProvider, CategoriesContext, DesignContextuseConsent, useCategories, useConsentHydration, e maisConsentScriptLoader, ConsentGate, logging, cookiesnecessary rodam imediatamente; os demais só executam após consentimento explícito.registerScript: registre callbacks inline ou integrações que não usam <script src> e deixe a fila disparar no momento correto. Estados da fila: pending → running → executed (recarrega apenas se allowReload=true).const cleanup = registerScript({
id: 'ga-consent-mode',
category: 'analytics',
priority: 10, // maior roda antes dentro da categoria
execute: bootstrapConsentMode,
onConsentUpdate: ({ preferences }) => pushConsentSignals(preferences),
})
createGoogleAnalyticsIntegration e createGoogleTagManagerIntegration inicializam consent=default (denied) e enviam consent=update conforme as preferências do usuário, sem snippet manual.import { ConsentProvider } from '@react-lgpd-consent/core'
<ConsentProvider
onConsentInit={(state) => console.log('Init:', state)}
onConsentChange={(current, previous) => {
console.log('Mudou:', { current, previous })
}}
onAuditLog={(entry) => {
// Enviar para backend
fetch('/api/audit', { method: 'POST', body: JSON.stringify(entry) })
}}
>
import { createAnpdCategoriesConfig, ANPD_CATEGORY_PRESETS } from '@react-lgpd-consent/core'
// Preset BÁSICO
const basic = createAnpdCategoriesConfig({ include: ['analytics'] })
// Preset COMPLETO
const full = createAnpdCategoriesConfig({
include: ['analytics', 'marketing', 'functional', 'social', 'personalization']
})
import { createConsentAuditEntry } from '@react-lgpd-consent/core'
const audit = createConsentAuditEntry(
{ consented: true, preferences: { analytics: true } },
{ action: 'update', storageKey: 'lgpd-consent__v1' }
)
📖 Saiba mais: TROUBLESHOOTING.md
Para documentação completa, exemplos e API reference:
@react-lgpd-consent/mui - Componentes prontos usando Material-UIreact-lgpd-consent - Pacote agregador (core + mui)MIT © Luciano Édipo