UNPKG

@use-cookie-consent/core

Version:

React hook for managing GDPR cookie consent state.

68 lines (67 loc) 2.67 kB
import { CookieAttributes } from 'js-cookie'; export interface DurationCookieTypes { session?: boolean; persistent?: boolean; } export interface PurposeCookieTypes { necessary?: boolean; preferences?: boolean; statistics?: boolean; marketing?: boolean; } export interface ProvenanceCookieTypes { firstParty?: boolean; thirdParty?: boolean; } declare type CookieTypes = PurposeCookieTypes & DurationCookieTypes & ProvenanceCookieTypes; export declare type AllCookieTypeKeys = keyof CookieTypes; export declare type CookieDurationType = keyof DurationCookieTypes; export declare type CookiePurposeType = keyof PurposeCookieTypes; export declare type CookieProvenanceType = keyof ProvenanceCookieTypes; export interface SetCookieProps { purpose: CookiePurposeType; duration: CookieDurationType; provenance: CookieProvenanceType; } export interface CookieWrapper { set: <T extends object = object>(name: string, value: string | T, props: SetCookieProps, options?: Cookies.CookieAttributes) => string | undefined; get: (name: string) => string | undefined; getAll: () => Record<string, string>; getJSON: (name: string) => any; getAllJSON: () => Record<string, any>; remove: (name: string, options?: CookieAttributes) => void; } export declare type DidDeclineAllHandler = (opts?: { includingNecessary: boolean; }) => boolean; export interface ConsentHookActions { acceptCookies: (cookies: CookieTypes, options?: AcceptCookiesOptions) => void; declineAllCookies: () => void; acceptAllCookies: () => void; didAcceptAll: () => boolean; didDeclineAll: DidDeclineAllHandler; } export declare type ConsentState = CookieTypes; export interface CookieConsentHookState extends ConsentHookActions { cookies?: CookieWrapper; consent: ConsentState; } export interface StorageConsentHookState extends ConsentHookActions { storage: Storage; consent: ConsentState; } export declare type UseCookieConsentHookType = (options?: CookieConsentHookOptions) => CookieConsentHookState; export declare type UseStorageConsentHookType = (options?: StorageConsentHookOptions) => StorageConsentHookState; export declare type UseConsentHookType = UseCookieConsentHookType | UseStorageConsentHookType; export interface CookieConsentHookOptions { defaultConsent?: ConsentState; consentCookieAttributes?: CookieAttributes; } export interface StorageConsentHookOptions { defaultConsent?: ConsentState; storage?: Storage; } export interface AcceptCookiesOptions { allowChangingNecessary?: boolean; } export {};