"use client"; import dynamic from "next/dynamic"; import Link from "next/link"; import { useState } from "react"; import { MapFilterBar } from "@/components/site-finder/entry/MapFilterBar"; import { ParcelDrawer } from "@/components/site-finder/entry/ParcelDrawer"; import { ParcelLegend } from "@/components/site-finder/entry/ParcelLegend"; import { RecentParcels } from "@/components/site-finder/entry/RecentParcels"; import { useParcelsBboxQuery } from "@/lib/site-finder-api"; import type { ParcelBboxFilters, ParcelBboxItem, BboxCoords, } from "@/lib/site-finder-api"; // EntryMap uses Leaflet — must load without SSR const EntryMap = dynamic( () => import("@/components/site-finder/entry/EntryMap").then((m) => m.EntryMap), { ssr: false, loading: () => (
Загрузка карты...
), }, ); // ── FilterCountBridge ────────────────────────────────────────────────────────── // Reads parcel counts for current bbox without re-mounting EntryMap. interface FilterBarBridgeProps { filters: ParcelBboxFilters; onChange: (f: ParcelBboxFilters) => void; bbox: BboxCoords | null; } function FilterBarBridge({ filters, onChange, bbox }: FilterBarBridgeProps) { const { data: allInBbox } = useParcelsBboxQuery(bbox, {}); const { data: filtered } = useParcelsBboxQuery(bbox, filters); return ( ); } // ── Page ────────────────────────────────────────────────────────────────────── export default function SiteFinderPage() { const [filters, setFilters] = useState({}); const [selectedParcel, setSelectedParcel] = useState( null, ); const [bbox, setBbox] = useState(null); function handleParcelSelect(parcel: ParcelBboxItem) { setSelectedParcel(parcel); } function handleParcelDeselect() { setSelectedParcel(null); } return (
{/* Header */}
← Главная ·

SiteFinder · карта участков

{/* Filter bar */}
{/* Main layout */}
{/* Map area */}
{/* Right sidebar */}
{/* Parcel drawer (slide-in from right) */}
); }