@usercentrics/cmp-browser-sdk
Version:
Usercentrics CMP Browser SDK
182 lines (181 loc) • 5.61 kB
TypeScript
import { BUTTON_ALIGNMENT, DPS_DISPLAY_FORMAT, FIRST_LAYER_VARIANT, SECOND_LAYER_SIDE, SECOND_LAYER_TRIGGER, SECOND_LAYER_VARIANT, THEME } from '../enums';
import { PrivacyButtonURLs, SECOND_LAYER_DEFAULT_VIEW } from '../../Api/interfaces';
import { CLOSE_OPTION } from '../../Api/enums';
import { CornerPosition } from '../Core/interfaces';
export type SecondLayerUrl = string;
export interface ButtonColor {
backgroundColor: string | null;
textColor: string | null;
}
export type MaybeButton = ButtonColor | null;
export interface SaveButtonCustomization {
save: ButtonColor;
}
export interface CcpaButtonCustomization {
ok: ButtonColor;
}
export interface CommonButtonsCustomization {
accept: ButtonColor;
deny: ButtonColor;
}
export interface DefaultButtonsCustomization extends CommonButtonsCustomization, SaveButtonCustomization {
more: ButtonColor;
}
export type TcfButtonsCustomization = CommonButtonsCustomization;
export interface ButtonsCustomization {
alignment: BUTTON_ALIGNMENT;
borderRadius: string;
secondLayer: SecondLayerUrl | null;
}
interface FirstLayerCustomization {
secondLayerTrigger: SECOND_LAYER_TRIGGER;
}
export interface FontCustomization {
family: string;
size: number;
}
export interface LayerCustomization {
backgroundColor: string;
borderRadius: string;
}
export interface LinkCustomization {
fontColor: string;
iconColor: string;
}
type VerticalPosition = 'left' | 'right' | 'center';
export interface LogoCustomization {
altTag: string | null;
position: VerticalPosition;
url: string | null;
}
export interface OverlayCustomization {
backgroundColor: string;
opacity: number;
}
export interface ToggleCustomization {
active: {
backgroundColor: string;
iconColor: string;
};
disabled: {
backgroundColor: string;
iconColor: string;
};
inactive: {
backgroundColor: string;
iconColor: string;
};
}
export interface CcpaButtonsConfig extends CcpaButtonCustomization, ButtonsCustomization {
optOutNotice: {
isHidden: boolean;
label: string;
};
}
export type DefaultButtonsConfig = ButtonsCustomization & DefaultButtonsCustomization;
export interface TCFButtonsConfig extends ButtonsCustomization, TcfButtonsCustomization {
save: MaybeButton;
}
export interface PoweredBy {
partnerUrl: string | null;
url: string | null;
}
interface FirstLayerConfig {
isLanguageSelectorEnabled: boolean;
isOverlayEnabled: boolean;
showShortDescriptionOnMobile: boolean;
showShortDescriptionOnDesktop: boolean;
variant: FIRST_LAYER_VARIANT;
}
export interface CcpaFirstLayerConfig extends FirstLayerConfig, FirstLayerCustomization {
hideToggles: boolean;
}
export interface DefaultFirstLayerConfig extends FirstLayerConfig, FirstLayerCustomization {
closeOption: CLOSE_OPTION | null;
hideButtonDeny: boolean;
hideToggles: boolean;
isCategoryTogglesEnabled: boolean;
}
export interface TCFFirstLayerConfig extends FirstLayerCustomization {
hideButtonDeny: boolean;
hideCustomizationButton: boolean;
hideNonIabPurposes: boolean;
hideToggles: boolean;
isOverlayEnabled: boolean;
showDescriptions: boolean;
}
export interface SecondLayerConfig {
defaultView: SECOND_LAYER_DEFAULT_VIEW;
hideDataProcessingServices: boolean;
isLanguageSelectorEnabled: boolean;
isOverlayEnabled: boolean;
showCategoriesTab: boolean;
showServicesTab: boolean;
side: SECOND_LAYER_SIDE;
tabColor: string | null;
variant: SECOND_LAYER_VARIANT;
dpsDisplayFormat: DPS_DISPLAY_FORMAT;
}
export interface CcpaSecondLayerConfig extends SecondLayerConfig {
hideToggles: boolean;
}
export interface DefaultSecondLayerConfig extends SecondLayerConfig {
hideButtonDeny: boolean;
hideToggles: boolean;
hideTogglesForServices: boolean;
}
export interface TCFSecondLayerConfig {
dpsDisplayFormat: DPS_DISPLAY_FORMAT;
hideButtonDeny: boolean;
hideLegitimateInterestToggles: boolean;
hideToggles: boolean;
isOverlayEnabled: boolean;
showToggleAllVendors: boolean;
tabColor: string | null;
}
export interface CommonUI {
accentColor: string;
customCss: string | null;
enablePrivacyButton: boolean;
font: FontCustomization;
layer: LayerCustomization;
links: LinkCustomization;
logo: LogoCustomization;
overlay: OverlayCustomization;
primaryColor: string;
privacyButtonUrls?: PrivacyButtonURLs;
poweredBy: PoweredBy | null;
showCookieInformation: boolean;
textColor: string;
theme: THEME;
toggle: ToggleCustomization;
useBackgroundShadow: boolean;
}
export interface CcpaUI extends CommonUI {
buttons: CcpaButtonsConfig;
firstLayer: CcpaFirstLayerConfig;
secondLayer: CcpaSecondLayerConfig;
}
export interface DefaultUI extends CommonUI {
buttons: DefaultButtonsConfig;
firstLayer: DefaultFirstLayerConfig;
secondLayer: DefaultSecondLayerConfig;
}
export interface TcfUI extends CommonUI {
buttons: TCFButtonsConfig;
firstLayer: TCFFirstLayerConfig;
secondLayer: TCFSecondLayerConfig;
}
export interface PrivacyButtonUI {
customCss: string | null;
hideDataProcessingServices: boolean;
defaultView: SECOND_LAYER_DEFAULT_VIEW;
backgroundColor: string | null;
desktopSize: number | null;
iconColor: string | null;
iconUrl: string | null;
mobileSize: number | null;
position: CornerPosition;
}
export type UI = CcpaUI | DefaultUI | TcfUI | PrivacyButtonUI;
export {};