import type { Snippet } from 'svelte'; import type { SelectOption } from '../../molecules/Select/Select.svelte'; export type MapExplorerBounds = { south: number; west: number; north: number; east: number; }; export type MapExplorerItem = { id: string; lat: number; lng: number; title: string; subtitle?: string; meta?: string; priceLabel?: string; imageUrl?: string | null; /** Fallback when `imageUrl` fails (e.g. thumb → full original). */ imageFallbackUrl?: string | null; /** Portrait flyer for flyer view; falls back to `imageUrl`. */ flyerImageUrl?: string | null; flyerImageFallbackUrl?: string | null; href?: string; badge?: string; chip?: string; }; export type MapExplorerCluster = { id: string; lat: number; lng: number; count: number; }; export type MapExplorerFilter = { id: string; label: string; placeholder?: string; value: string; options: SelectOption[]; type?: 'select' | 'chips'; searchable?: boolean; }; export type MapExplorerPanel = 'list' | 'map'; export type MapExplorerListView = 'list' | 'grid' | 'flyer' | 'calendar'; export type MapExplorerCardContext = { select: () => void; selected: boolean; layout: MapExplorerListView; }; interface MapExplorerProps { items?: MapExplorerItem[]; pins?: MapExplorerItem[]; clusters?: MapExplorerCluster[]; selectedId?: string | null; query?: string; filters?: MapExplorerFilter[]; total?: number; loading?: boolean; title?: string; description?: string; resultLabel?: string; searchPlaceholder?: string; filtersTitle?: string; filtersHint?: string; clearFiltersLabel?: string; searchAreaLabel?: string; locateLabel?: string; listLabel?: string; mapLabel?: string; emptyTitle?: string; emptyDescription?: string; detailCtaLabel?: string; listViewLabel?: string; gridViewLabel?: string; flyerViewLabel?: string; calendarViewLabel?: string; listView?: MapExplorerListView; locateOnLoad?: boolean; showSearchArea?: boolean; fitToken?: string; defaultCenter?: [number, number]; defaultZoom?: number; tileUrl?: string; darkTileUrl?: string; tileAttribution?: string; class?: string; card?: Snippet<[MapExplorerItem, MapExplorerCardContext]>; /** Si se pasa, habilita la vista 'calendar' (ocupa el lugar de lista + mapa). */ calendar?: Snippet; detail?: Snippet<[MapExplorerItem]>; emptyAction?: Snippet; onsearch?: (query: string) => void; onfilterchange?: (id: string, value: string) => void; onclearfilters?: () => void; onselect?: (item: MapExplorerItem | null) => void; onboundschange?: (bounds: MapExplorerBounds, zoom: number) => void; onsearcharea?: (bounds: MapExplorerBounds, zoom: number) => void; onclusterclick?: (cluster: MapExplorerCluster) => void; onlocate?: (coords: { lat: number; lng: number; }) => void; } declare const MapExplorer: import("svelte").Component; type MapExplorer = ReturnType; export default MapExplorer;