import type { ButtonVariant, ContainerWidth, ImageField, SectionElement } from './page-config.types'; export declare enum ButtonRounding { Unset = "", None = "no-rounding", Small = "small", Medium = "medium", Large = "large", Full = "full" } export interface GlobalConfig { _id: string | null; agencyId: number | null; domain: string; theme?: string; mainNav: { variant: string; }; searchForm: SearchForm; externalScripts: { analytics: { gtmId?: string; gtmCustomEventNames: { viewingEnquiry?: string; instantValuation?: string; expertValuation?: string; branchEnquiry?: string; mortgageEnquiry?: string; sendPropertyToFriend?: string; staffEnquiry?: string; userRegistration?: string; emailPortal?: string; }; items: AnalyticsScriptItem[]; }; standalone: { items: ScriptItem[]; }; }; generalSettings: { enableGoogleStaticMaps: boolean; disableHomeflowCookieConsent: boolean; useLegacyArticles: boolean; disableStaffPages?: boolean; buttonRounding?: ButtonRounding; defaultCanonicalDomain?: string; cookiePolicyLink?: string; }; propertyCard: { variant: string; }; sectionPadding: number; typography: Typography; footer: Footer; urls?: { article?: string; articleList?: string; branch?: string; branchList?: string; }; customVariables?: { [name: string]: string; }; buttons?: { [variant: string]: { backgroundColor?: string; textColor?: string; hoverBackgroundColor?: string; hoverTextColor?: string; }; }; } export declare enum FooterNodeType { Link = "link", SocialLink = "socialLink", Heading = "heading", Divider = "divider", Text = "text", Image = "image", List = "list" } export declare enum SocialType { X = "x", Facebook = "facebook", Instagram = "instagram", Pinterest = "pintereset", LinkedIn = "linkedIn", TikTok = "tikTok", YouTube = "youTube" } export interface FooterItem { id: string; type: FooterNodeType; marginTop?: number; marginBottom?: number; color?: string; orientation: 'columns' | 'rows'; mobileOrientation: 'columns' | 'rows' | 'reverse-rows' | 'collapse'; justify: Justify; mobileJustify: Justify; gap: number; nodes: (FooterItem | FooterElement)[]; } export declare enum Justify { Start = "start", End = "end", Center = "center", SpaceBetween = "between", SpaceAround = "around" } export interface FooterElement { id: string; type: FooterNodeType; marginTop?: number; marginBottom?: number; link?: FooterLink; socialLink?: FooterSocialLink; heading?: FooterHeading; divider?: FooterDivider; text?: FooterText; image?: FooterImage; } export interface FooterLink { content: string; url: string; target: '_blank' | '_self'; color?: string; } export interface FooterSocialLink { socialType: SocialType; url: string; target: '_blank' | '_self'; content?: string; color?: string; } export interface FooterHeading { content: string; level?: number; color?: string; } export interface FooterDivider { color?: string; } export interface FooterImage { image?: ImageField; width?: number; height?: number; url: string; target: '_blank' | '_self'; } export interface FooterText { content: string; color?: string; } export interface FooterSection { id: string; nodes: FooterItem[]; paddingTop?: number; paddingBottom?: number; justify: Justify; mobileJustify: Justify; verticalAlign: 'start' | 'center' | 'end'; color?: string; orientation: 'columns' | 'rows'; mobileOrientation: 'columns' | 'rows' | 'reverse-rows'; gap: number; containerWidth: ContainerWidth; } export interface Footer { footerType: 'default' | 'custom'; html?: string; css?: string; sections: FooterSection[]; } export declare enum TypographyCase { Normal = "normal", Upper = "upper", Lower = "lower" } export declare enum Overlap { None = "none", Small = "small", Large = "large" } export interface SearchFormItem { type: 'select' | 'checkbox' | 'radio' | 'search-input' | 'input'; labels: string[]; options?: { value: string; label: string; }[]; } export declare enum ChannelOption { DefaultSales = "defaultSales", DefaultLettings = "defaultLettings", SalesOnly = "salesOnly", LettingsOnly = "lettingsOnly", Hidden = "hidden" } export interface SearchForm { channel?: ChannelOption; minPrice?: boolean; maxPrice?: boolean; minBeds?: boolean; maxBeds?: boolean; geolocate?: boolean; expanded?: boolean; distance?: boolean; items?: SearchFormItem[]; backgroundOpacity?: number; locationInputPlaceholder?: string; color?: string; buttonVariant?: ButtonVariant; /** If passed, any searches from this type of search form should be scoped to these tags */ scopedTags?: string; activeSearchType?: string; customSearchForms?: { [name: string]: SectionElement; }; overrideGlobal?: boolean; } export interface ScriptItem { id: string; content: string; } export interface AnalyticsScriptItem extends ScriptItem { category: 'analytics' | 'marketing'; service: string; } export declare enum FontSource { Google = "google", Link = "link" } type FontSourceOrThemeGeneratorDefaultFontSources = FontSource | '{{headingsFontSource}}' | '{{bodyFontSource}}'; export interface Font { source: FontSourceOrThemeGeneratorDefaultFontSources; names: string[]; default: boolean; url?: string; } export interface GlobalConfigTypographyElement { font: { name: string; source: FontSourceOrThemeGeneratorDefaultFontSources; }; case: TypographyCase; bold: boolean; italic: boolean; underline: boolean; size: number; } export interface Typography { fonts: Font[]; body: GlobalConfigTypographyElement; h1: GlobalConfigTypographyElement; h2: GlobalConfigTypographyElement; h3: GlobalConfigTypographyElement; h4: GlobalConfigTypographyElement; h5: GlobalConfigTypographyElement; h6: GlobalConfigTypographyElement; nav: GlobalConfigTypographyElement; button: GlobalConfigTypographyElement; } export {}; //# sourceMappingURL=global-config.types.d.ts.map