react-lgpd-consent v0.9.1
    Preparing search index...

    Interface ConsentState

    Estado interno completo do sistema de consentimento.

    Types

    0.1.0

    Estende ConsentCookieData com informações de estado da interface que não são persistidas no cookie, como o estado de abertura do modal.

    Este é o estado completo mantido em memória pelo React Context e utilizado por todos os componentes da biblioteca.

    • Persistidos: Herdados de ConsentCookieData - salvos no cookie
    • Temporários: isModalOpen - apenas em memória durante a sessão
    1. Inicialização: Estado padrão ou lido do cookie
    2. Hidratação: Restauração do cookie no lado cliente (SSR)
    3. Interação: Usuário modifica preferências via UI
    4. Persistência: Estado é salvo no cookie automaticamente
    5. Sincronização: Componentes reagem às mudanças via Context
    • Estado é imutável - mudanças criam novo objeto
    • Optimized com useMemo para evitar re-renders desnecessários
    • Subscriber pattern para notificações de mudança
    • Integração automática com React DevTools
    const state: ConsentState = {
    version: '1.0',
    consented: true,
    preferences: { necessary: true, analytics: true, marketing: false },
    consentDate: '2024-01-15T10:30:00.000Z',
    lastUpdate: '2024-01-15T10:30:00.000Z',
    source: 'banner',
    projectConfig: { enabledCategories: ['analytics', 'marketing'] },
    isModalOpen: false // Estado da UI não persistido
    };
    const initialState: ConsentState = {
    version: '1.0',
    consented: false,
    preferences: { necessary: true }, // Apenas essenciais
    isModalOpen: false
    // consentDate, lastUpdate, source serão definidos após consentimento
    };
    function ConsentAwareComponent() {
    const { consented, preferences, isModalOpen } = useConsent();

    if (!consented) {
    return <div>Aguardando decisão do usuário sobre cookies...</div>;
    }

    if (isModalOpen) {
    return <div>Modal de preferências está aberto</div>;
    }

    return (
    <div>
    Analytics ativo: {preferences.analytics ? 'Sim' : 'Não'}
    Marketing ativo: {preferences.marketing ? 'Sim' : 'Não'}
    </div>
    );
    }
    interface ConsentState {
        consentDate: string;
        consented: boolean;
        isModalOpen?: boolean;
        lastUpdate: string;
        preferences: ConsentPreferences;
        projectConfig?: ProjectCategoriesConfig;
        source: "banner" | "modal" | "programmatic";
        version: string;
    }

    Hierarchy (View Summary)

    Index

    Properties

    consentDate: string

    Timestamp ISO 8601 da primeira interação com o banner de consentimento.

    '2024-01-15T10:30:00.000Z'
    
    consented: boolean

    Indica se o usuário já prestou consentimento explícito.

    true
    
    isModalOpen?: boolean

    Estado de abertura do modal de preferências. Esta informação não é persistida no cookie, apenas mantida em memória.

    false
    
    lastUpdate: string

    Timestamp ISO 8601 da última modificação das preferências. Atualizado sempre que o usuário muda suas preferências.

    '2024-01-15T10:30:00.000Z'
    
    preferences: ConsentPreferences

    Preferências detalhadas por categoria de cookies. Contém apenas as categorias ativas no projeto.

    projectConfig?: ProjectCategoriesConfig

    Snapshot da configuração de categorias no momento do consentimento. Útil para detectar mudanças na configuração e solicitar novo consentimento.

    source: "banner" | "modal" | "programmatic"

    Origem da decisão de consentimento para auditoria.

    • 'banner': Decisão tomada no banner principal
    • 'modal': Decisão tomada no modal de preferências
    • 'programmatic': Decisão tomada via API programática
    version: string

    Versão do esquema do cookie para compatibilidade e migração futura.

    '1.0'