import { D as SharedCopyOverrides, k as Voice, r as RentalCardOptions, s as ExternalLoad, v as CopyTable, w as Locale$1 } from "./RentalCard-CBH3jXNk.js"; import * as React from "react"; import { ClusterOptions, FitOptions, MapPlace, PinLabelOptions, RentalAddressMode, RentalDetail, SameSpotMode, Template } from "@v-office/website-headless"; //#region src/map/copy.d.ts /** The results map (SearchResultsMap). */ interface SearchResultsMapCopy { /** Accessible name of the map. */ mapLabel: string; /** Accessible name of the fullscreen layer. */ fullscreenLabel: Template<"name">; /** The expand button. */ expand: string; /** The fullscreen layer's close button. */ close: string; /** The zoom-in button's name ("Hineinzoomen"). */ zoomIn: string; /** The zoom-out button's name ("Herauszoomen"). */ zoomOut: string; /** A cluster bubble: `{count}` rentals. */ cluster: Template<"count">; /** A same-spot group bubble ("group" mode): `{count}` rentals at one address. */ group: Template<"count">; /** A priced pin: `{name}`, `{price}`. An unpriced pin is named by `{name}` alone. */ pin: Template<"name" | "price">; /** The popup's close button. */ popupClose: string; /** The word before the popup's price. */ popupTotal: string; /** The popup's stay length, `{count}` nights. */ nightsOne: Template<"count">; /** Default "{count} Nächte". */ nightsMany: Template<"count">; /** No result of the search can be pinned. */ empty: string; /** The placeholder's notice: `{provider}` is the tile host. */ consentNotice: Template<"provider">; /** The placeholder's load button. */ consentLoad: string; /** The placeholder's privacy link. */ consentPrivacy: string; /** The tile host named in the notice (set it when a brand style uses another host). */ provider: string; } /** The place maps (RentalMap, LocationMap). */ interface PlaceMapCopy { /** Accessible name of a location map. */ mapLabel: string; /** Accessible name of a rental map: `{name}`. */ rentalLabel: Template<"name">; /** The same with the town: `{name}`, `{town}`. */ rentalLabelInTown: Template<"name" | "town">; /** Accessible name of the fullscreen layer: `{name}` (the rental, or the places). */ fullscreenLabel: Template<"name">; /** The expand button. */ expand: string; /** The fullscreen layer's close button. */ close: string; /** The zoom-in button's name ("Hineinzoomen"). */ zoomIn: string; /** The zoom-out button's name ("Herauszoomen"). */ zoomOut: string; /** The placeholder's notice: `{provider}` is the tile host. */ consentNotice: Template<"provider">; /** The placeholder's load button. */ consentLoad: string; /** The placeholder's privacy link. */ consentPrivacy: string; /** The tile host named in the notice. */ provider: string; } /** The mobile map button (SearchMapPill). */ interface SearchMapPillCopy { /** The button's word. */ label: string; } /** Default copy of SearchResultsMap. */ type SearchResultsMapCopyTable = CopyTable; /** Default copy of RentalMap and LocationMap. */ type PlaceMapCopyTable = CopyTable; /** Default copy of SearchMapPill. */ type SearchMapPillCopyTable = CopyTable; export declare const DEFAULT_SEARCH_RESULTS_MAP_COPY: SearchResultsMapCopyTable; export declare const DEFAULT_PLACE_MAP_COPY: PlaceMapCopyTable; export declare const DEFAULT_SEARCH_MAP_PILL_COPY: SearchMapPillCopyTable; //#endregion //#region src/map/types.d.ts /** Props every map component takes. */ interface MapCommonProps { /** Default "de-DE". */ locale?: Locale$1; /** Default "neutral" (German only). */ voice?: Voice; /** MapLibre style URL. Default DEFAULT_MAP_STYLE_URL (OpenFreeMap "Bright"); a brand style is a * JSON file the site hosts. */ styleUrl?: string; /** When tiles may load. Default "click": a placeholder with a load button, nothing reaches the * tile host before the click, and one click loads every map on the page. "near": once the map * comes within a screen of the viewport, for a site whose consent manager already covers the * tile vendor. "consent": the click placeholder, which also loads by itself once * `consentCategory` is granted (lib/consent.ts); it carries `data-consent-embed`. */ loadOn?: ExternalLoad; /** Required with loadOn "consent" (the render throws without it): the site's consent category * for the tile vendor. */ consentCategory?: string; /** "click"/"consent": a site asset shown in the placeholder (never a third-party URL). */ previewImage?: string; /** "click"/"consent": the privacy page linked from the placeholder. */ privacyHref?: string; /** Classes on the root. */ className?: string; } /** Props the place maps (RentalMap, LocationMap) share. */ interface PlaceMapProps extends MapCommonProps { /** "button" (default): inline with an expand button. "none": inline only. "only": no inline map; * the fullscreen layer opens from every element with `data-map-open` whose value is the map's * `name` (empty for an unnamed map). */ fullscreen?: "button" | "none" | "only"; /** "pin" (default; a teardrop, its tip on the spot) or "dot" (centred; a square is a dot * restyled through `[data-part="map-marker"]`). */ marker?: "pin" | "dot"; /** Zoom levels. Default { inline: 12, fullscreen: 14 }. The inline map never wheel-zooms (the * page scroll wins); the fullscreen map does. */ zoom?: { inline?: number; fullscreen?: number; }; /** Activating the marker shows the place name(s). Default "name"; "none" = a silent marker. */ popup?: "name" | "none"; /** Distinguishes several maps on one page: `data-map-open=""` opens this one, and the * layer's URL hash is `#map-` (default `#map-fullscreen`). */ name?: string; /** Site overrides of the copy. */ copy?: Partial; } //#endregion //#region src/map/SearchResultsMap.d.ts /** Props of the results map. */ interface SearchResultsMapProps extends MapCommonProps { /** The page's search store (the same key as SearchResults). Default "search". */ storeKey?: string; /** The list shows only the results in the visible map area once the guest moved the map * ("search as you move"). Default true. */ listFollowsMap?: boolean; /** Default { radius: 54, maxZoom: 11 } (count-only bubbles); `whenPriced` widens priced sets; * false turns clustering off. */ cluster?: false | ClusterOptions; /** How results on one spot are drawn. Default "fan"; "group" for single-building portfolios. */ sameSpot?: SameSpotMode; /** The first frame. Default { padding: 56, maxZoom: 12, excludeOutliers: true }. */ fit?: FitOptions; /** Camera for a search with nothing to pin. Unset: the empty notice, no map, no tiles. */ emptyView?: { center: readonly [lng: number, lat: number]; zoom: number; }; /** Wheel zoom on the inline map. Default true (a sticky column beside a scrolling list); false * when the map sits in the page flow. The fullscreen map always zooms. */ scrollZoom?: boolean; /** "release-on-move": the guest's first move drops the ?region= scope, so the neighbouring * results come back. Default "keep". */ regionScope?: "keep" | "release-on-move"; /** The site's CARD: pins and the popup state the price as the cards do. */ card?: RentalCardOptions; /** Overrides the pin labels derived from `card` (e.g. `{ cents: "round" }`: whole-unit pins so * dense pins do not overlap, while the cards and the popup keep the exact total). */ pins?: PinLabelOptions; /** Site overrides of the map copy. */ copy?: Partial; /** Overrides of the shared card copy the popup renders (the same object the cards get). */ shared?: SharedCopyOverrides; } /** The results map. Renders the inline surface (or the placeholder, or the empty notice) on the * server; the fullscreen layer, the markers and the popup exist after hydration. */ type SearchResultsMapComponent = (props: SearchResultsMapProps) => React.JSX.Element; declare const SearchResultsMap: SearchResultsMapComponent; //#endregion //#region src/map/SearchMapPill.d.ts /** Props of the map button. */ interface SearchMapPillProps { /** The page's search store. Default "search". */ storeKey?: string; /** Default "de-DE". */ locale?: Locale$1; /** Default "neutral". */ voice?: Voice; /** Site overrides of the copy. */ copy?: Partial; /** Selector of where the results start: the pill stays hidden until that element's top has * risen past the pill (and stays shown beyond). Unset (a page that opens on its results): from * the first frame. A selector that matches nothing leaves the rule off. */ showFrom?: string; /** Selector of what the pill yields to once it reaches the pill's top edge. Default "footer". */ yieldTo?: string; /** Classes on the button. */ className?: string; } /** A `