Interfaces
ThemeData
interface ThemeData {
breakPoints?: {
desktop: number;
tablet: number;
mobile: number;
};
layers?: ScreenTypes<LayerTheme>;
privacyButton?: ScreenTypes<Partial<PrivacyButtonTheme>>;
embeddings?: ScreenTypes<EmbeddingsTheme>;
}
Screentypes
interface ScreenTypes<ThemeType> {
desktop?: ThemeType;
tablet?: ThemeType;
mobile?: ThemeType;
xs?: ThemeType;
}
LayerTheme
interface LayerTheme {
base?: Partial<CmpTheme>;
first?: Partial<CmpTheme>;
second?: Partial<CmpTheme>;
}
CmpTheme
interface CmpTheme {
border: {
radius: string;
};
borderRadiusLayer: OptionalSettingsData;
borderRadiusButton: OptionalSettingsData;
buttons: CmpButtonsType[][];
colors: {
acceptBg?: OptionalSettingsData;
acceptTxt?: OptionalSettingsData;
background?: OptionalSettingsData;
border?: OptionalSettingsData;
denyBg?: OptionalSettingsData;
denyTxt?: OptionalSettingsData;
link?: OptionalSettingsData;
moreBg?: OptionalSettingsData;
moreTxt?: OptionalSettingsData;
neutral?: OptionalSettingsData;
overlay?: OptionalSettingsData;
primary?: OptionalSettingsData;
privacyBg?: OptionalSettingsData;
privacyIcon?: OptionalSettingsData;
saveBg?: OptionalSettingsData;
saveTxt?: OptionalSettingsData;
tabActive?: OptionalSettingsData;
tabInactive?: OptionalSettingsData;
toggleActive?: OptionalSettingsData;
toggleInactive?: OptionalSettingsData;
toggleDisabled?: OptionalSettingsData;
toggleActiveIcon?: OptionalSettingsData;
toggleInactiveIcon?: OptionalSettingsData;
toggleDisabledIcon?: OptionalSettingsData;
tertiary?: OptionalSettingsData;
text?: OptionalSettingsData;
ccpaButtonColor?: OptionalSettingsData;
ccpaButtonTextColor?: OptionalSettingsData;
};
scrollbar: {
thumbColor?: OptionalSettingsData;
};
direction: 'ltr' | 'rtl';
fonts: {
family: string;
};
hideDenyBtn: boolean;
hideLanguageSwitch: boolean;
logo: {
url: string;
alt: string;
position: 'left' | 'center' | 'right';
};
footer: {
isCentered: boolean;
};
maxBannerWidth: string;
name: string;
overlayOpacity: string;
position: 'left' | 'center' | 'right' | 'bottom';
removeCcpaToggle?: boolean;
secondLayerTrigger: string;
spacing: Spacing;
typography: {
color?: OptionalSettingsData;
font?: OptionalSettingsData;
size?: number | undefined;
};
useBackgroundShadow: boolean;
useOverlay?: boolean;
closeOption?: CLOSE_OPTION | null;
tcf?: {
showDescriptions?: boolean;
hideNonIab?: boolean;
hideToggles?: boolean;
showSharedOutsideEu?: boolean;
};
showCategoriesToggles: boolean;
showMoreInformationLink?: boolean;
hideDataProcessingServices?: boolean;
hideServicesToggles?: boolean;
defaultTab: 'FIRST' | 'SECOND';
}
interface PrivacyButtonTheme {
position: 'left' | 'right';
size: number;
backgroundColor: string;
pages: string[];
iconUrl: string;
iconColor: string;
}
ConsentDetails
interface ConsentDetails {
consent: ConsentData;
services: Record<string, ServiceData>;
categories: Record<string, CategoryData>;
}
ConsentData
interface ConsentData {
status: 'ALL_ACCEPTED' | 'ALL_DENIED' | 'SOME_ACCEPTED' | 'SOME_DENIED';
serviceIds?: string[];
required: boolean;
version: number;
controllerId: string;
language: string;
createdAt: number;
updatedAt: number;
updatedBy: ConsentActionType;
setting: SettingData;
type: ConsentType;
hash: string;
gpcSignal?: boolean;
isBot?: true;
isOutsideEu?: true;
}
SettingData
interface SettingData {
id: string;
type: SettingType;
version: string;
abVariant?: string;
sandbox?: true;
}
ServiceData
interface ServiceData {
name: string;
version: string;
category: string;
essential: boolean;
consent?: {
given: boolean;
type: 'IMPLICIT' | 'EXPLICIT';
};
gcm?: {
analyticsStorage?: true;
adStorage?: true;
};
subservices?: Record<string, ServiceData>;
thirdCountryDataTransfer?: boolean;
status?: 'added';
}
CategoryData
interface CategoryData {
essential?: boolean;
state: 'ALL_DENIED' | 'SOME_ACCEPTED' | 'ALL_ACCEPTED';
dps: Record<string, boolean> | null;
hidden?: boolean;
}