import { TOOLS } from "@snapotter/shared"; import { ArrowRight, ChevronDown, ChevronRight, Download, FileImage, Undo2 } from "lucide-react"; import { useMemo, useState } from "react"; import { useNavigate } from "react-router-dom"; import { formatFileSize, triggerDownload } from "@/lib/download"; import { ICON_MAP } from "@/lib/icon-map"; import { getSuggestedTools } from "@/lib/suggested-tools"; interface ReviewPanelProps { filename: string; fileSize: number; fileType: string; downloadUrl: string; previewUrl?: string; onUndo: () => void; currentToolId: string; } export function ReviewPanel({ filename, fileSize, fileType, downloadUrl, previewUrl, onUndo, currentToolId, }: ReviewPanelProps) { const [isExpanded, setIsExpanded] = useState(true); const [isSuggestionsExpanded, setIsSuggestionsExpanded] = useState(true); const navigate = useNavigate(); const suggestedToolIds = useMemo(() => getSuggestedTools(currentToolId), [currentToolId]); const suggestedTools = useMemo( () => suggestedToolIds .map((id) => TOOLS.find((t) => t.id === id)) .filter((t): t is (typeof TOOLS)[number] => t !== undefined), [suggestedToolIds], ); const timestamp = useMemo(() => { const now = new Date(); return now.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }); }, []); const handleDownload = () => { triggerDownload(downloadUrl, filename); }; return (
{filename}
Size: {formatFileSize(fileSize)}
Type: {fileType}
Processed: {timestamp}