diff --git a/src/components/PlaceCard.jsx b/src/components/PlaceCard.jsx
index 1167217..4860a37 100644
--- a/src/components/PlaceCard.jsx
+++ b/src/components/PlaceCard.jsx
@@ -1,7 +1,7 @@
import { useEffect, useState, useRef, useCallback } from "react"
import {
X, Navigation, Plus, Bookmark, ChevronDown, ChevronUp, Copy, LogIn,
- Clock, Phone, Globe, Mail, BookOpen, Info, Trees, GripVertical,
+ Clock, Phone, Globe, Mail, BookOpen, Info, Trees, GripVertical, Map, Users,
} from "lucide-react"
import OpeningHours from "opening_hours"
import toast from "react-hot-toast"
@@ -158,6 +158,60 @@ function PrivateLandIndicator({ data }) {
)
}
+
+function WikiSummarySection({ details }) {
+ // Gate on has_kiwix_wiki feature flag
+ if (!hasFeature('has_kiwix_wiki')) return null
+ if (!details || !details.wiki_summary) return null
+
+ return (
+
+ {/* Summary text */}
+
+ {details.wiki_summary}
+
+
+ {/* Population */}
+ {details.wiki_population && (
+
+
+ Pop. {details.wiki_population.toLocaleString ? details.wiki_population.toLocaleString() : details.wiki_population}
+
+ )}
+
+ {/* Wiki links */}
+
+
+ )
+}
+
function EnrichmentSkeleton() {
return (
@@ -417,6 +471,7 @@ export function PlaceCard({ place, variant = "preview", expanded = true, onToggl
{placeDetails === "loading" &&
}
{placeDetails && placeDetails !== "loading" &&
}
+ {placeDetails && placeDetails !== "loading" &&
}
{variant === "preview" && (
<>
diff --git a/src/components/PlaceDetail.jsx b/src/components/PlaceDetail.jsx
index 2aed16c..18ea48b 100644
--- a/src/components/PlaceDetail.jsx
+++ b/src/components/PlaceDetail.jsx
@@ -1,7 +1,7 @@
import { useEffect, useState, useRef, useCallback } from 'react'
import {
X, Navigation, Plus, Bookmark, ChevronDown, ChevronUp, Copy, LogIn,
- Clock, Phone, Globe, Mail, BookOpen, Info, Trees,
+ Clock, Phone, Globe, Mail, BookOpen, Info, Trees, Map, Users,
} from 'lucide-react'
import OpeningHours from 'opening_hours'
import toast from 'react-hot-toast'
@@ -394,6 +394,60 @@ function PrivateLandIndicator({ data }) {
)
}
+
+function WikiSummarySection({ details }) {
+ // Gate on has_kiwix_wiki feature flag
+ if (!hasFeature('has_kiwix_wiki')) return null
+ if (!details || !details.wiki_summary) return null
+
+ return (
+
+ {/* Summary text */}
+
+ {details.wiki_summary}
+
+
+ {/* Population */}
+ {details.wiki_population && (
+
+
+ Population: {details.wiki_population.toLocaleString ? details.wiki_population.toLocaleString() : details.wiki_population}
+
+ )}
+
+ {/* Wiki links */}
+
+
+ )
+}
+
function EnrichmentSkeleton() {
return (
@@ -714,6 +768,9 @@ export default function PlaceDetail() {
{placeDetails === 'loading' &&
}
{placeDetails && placeDetails !== 'loading' &&
}
+ {/* Wiki summary (Kiwix) */}
+ {placeDetails && placeDetails !== 'loading' &&
}
+
{/* Action buttons */}