"use client"; import { useState, useRef, useEffect } from "react"; import { FileDown, ChevronDown, Loader2 } from "lucide-react"; import { EXPORT_FORMATS } from "@/lib/export-utils"; import type { AnalysisResult } from "@/lib/types"; export function ExportDropdown({ results }: { results: AnalysisResult }) { const [open, setOpen] = useState(false); const [exporting, setExporting] = useState(null); const ref = useRef(null); useEffect(() => { function handleClickOutside(e: MouseEvent) { if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false); } document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, []); async function handleExport(key: string, fn: (r: AnalysisResult) => void | Promise) { setExporting(key); try { await fn(results); } catch (e) { console.error("Export failed:", e); } setExporting(null); setOpen(false); } return (
{open && (

Export Report

{EXPORT_FORMATS.map((fmt) => ( ))}
)}
); }