export interface Settings { officeId: number; catalogueId: number; agentId?: number; basePath: string; language: string; includeFlights?: boolean; priceMode: number; icons?: string; apiUrl?: string; apiKey?: string; addProductToQuery?: boolean; isOffer?: boolean; displayMode?: 'list' | 'calendar'; searchType?: number; /** * When true, hides the "Rooms" heading, the number-of-rooms stepper, * the per-room "Room N" sub-heading and the Edit/Apply gate. The * adults/children inputs are then always visible and editable. The * component still tracks a single room internally so the request payload * to the Tide API is unchanged. */ disableRooms?: boolean; /** * Icon name shown next to the price whenever a price is available. * Defaults to `'ui-bed'` for backwards compatibility. Customers booking * non-accommodation products (courses, rentals, excursions, ...) can set * this to a more appropriate icon. */ mainIcon?: string; /** * URL of a JSON translation file that will be fetched at runtime and * deep-merged over the built-in translations for the active language. * The `{language}` token in the URL is replaced with the active language * code, so a single setting can serve multiple languages by dropping * files like `en-GB.json`, `nl-BE.json` side by side. * * Only the keys present in the host file are overridden; everything else * falls back to the built-in translations. If the file 404s or fails to * load, the component logs a warning and silently uses the built-ins. */ customTranslationsUrl?: string; /** * Escape hatch for callers that already have the translation overrides * as a JS object in memory (e.g. SSR, pre-fetched, in-tree dictionaries). * Takes precedence over `customTranslationsUrl` when both are set. * Most consumers should use `customTranslationsUrl` instead. */ customTranslations?: any; alternativeActionText?: string; alternativeAction?: () => void; } export interface ProductRoom { adults: number; children: number; childAges: number[]; } export interface DateRange { fromDate?: Date; toDate?: Date; }