+
+ {/* PDF button — secondary (orange per design token) */}
+
+
+ {/* CSV button — secondary (orange) */}
+
+
+
+ {/* Error message */}
+ {error && (
+
+ {error}
+
+ )}
+
+ );
+}
diff --git a/frontend/src/components/site-finder/analysis/MiniMap.tsx b/frontend/src/components/site-finder/analysis/MiniMap.tsx
new file mode 100644
index 00000000..93738953
--- /dev/null
+++ b/frontend/src/components/site-finder/analysis/MiniMap.tsx
@@ -0,0 +1,87 @@
+"use client";
+
+/**
+ * MiniMap — compact Leaflet map (400×320) showing parcel polygon + top POI.
+ * Dynamic import of react-leaflet (ssr:false) to avoid SSR breakage.
+ * Wraps SiteMap with fixed dimensions for Section 1 layout.
+ */
+
+import dynamic from "next/dynamic";
+import type { ParcelAnalyzeResponse } from "@/lib/site-finder-api";
+import type { ParcelAnalysis } from "@/types/site-finder";
+import type { Geometry } from "geojson";
+
+// Lazy-mount to avoid SSR breakage (Leaflet uses window)
+const SiteMap = dynamic(
+ () =>
+ import("@/components/site-finder/SiteMap").then((m) => ({
+ default: m.SiteMap,
+ })),
+ {
+ ssr: false,
+ loading: () => (
+