react-lgpd-consent - v0.3.4
    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'