// Villa Mesochori — "Getting here": step-by-step directions with photos and the exact pin.
const ghNS = window.VillaMesochoriDesignSystem_9e1a21;
const { Button: GhButton, LucideIcon: GhIcon } = ghNS;
function GhMap({ lat, lng, steps }) {
const ref = React.useRef(null);
React.useEffect(() => {
if (!window.L || !ref.current) return;
const map = L.map(ref.current, { scrollWheelZoom: false });
L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", {
attribution: '© OpenStreetMap contributors',
}).addTo(map);
const pts = [];
(steps || []).forEach((s, i) => {
if (!s.lat || !s.lng) return;
L.marker([s.lat, s.lng], {
icon: L.divIcon({
className: "",
html: `
${i + 1}
`,
iconSize: [24, 24], iconAnchor: [12, 12],
}),
}).addTo(map).bindPopup(`${i + 1}. ${s.title}
${s.body || ""}`);
pts.push([s.lat, s.lng]);
});
L.circleMarker([lat, lng], { radius: 10, color: "#FAF6EF", weight: 2, fillColor: "#C05E37", fillOpacity: 1 })
.addTo(map).bindPopup("Villa Mesochori
The house").openPopup();
pts.push([lat, lng]);
if (pts.length > 1) {
L.polyline(pts, { color: "#C05E37", weight: 3, opacity: 0.55, dashArray: "6 8" }).addTo(map);
map.fitBounds(L.latLngBounds(pts).pad(0.25));
} else {
map.setView([lat, lng], 15);
}
return () => map.remove();
}, [lat, lng]);
return ;
}
function GhStepPhoto({ src, n }) {
const [failed, setFailed] = React.useState(false);
if (!src || failed) {
return (
Photo of step {n} — coming soon
);
}
return
setFailed(true)} style={{ width: "100%", height: "100%", objectFit: "cover", display: "block", background: "var(--surface-sunken)" }} />;
}
function GettingHere() {
const c = window.VMContent.get();
const steps = c.arriveSteps || [];
const mapsUrl = `https://www.google.com/maps/search/?api=1&query=${c.houseLat},${c.houseLng}`;
return (
Getting here
{c.arriveTitle}
{c.arriveIntro}
window.open(mapsUrl, "_blank")}>Open in Google Maps
{c.arriveAddress}
{/* Step-by-step photo trail */}
{steps.map((s, i) => (
))}
The exact spot
Right here
The green numbers are the turns from the cards above; the terracotta dot is the house.
Kalos irthate — welcome. — Maria & the family
);
}
window.VMGettingHere = GettingHere;