import { useState, type ReactNode } from 'react'; import { downloadApiFile } from '../api/download'; type Props = { apiPath: string; filename: string; className?: string; children: ReactNode; }; /** Click to save an API file to the browser Downloads folder. */ export default function DownloadButton({ apiPath, filename, className, children }: Props) { const [busy, setBusy] = useState(false); const handleClick = async (e: React.MouseEvent) => { e.preventDefault(); if (busy) return; setBusy(true); try { await downloadApiFile(apiPath, filename); } catch (err) { window.alert(err instanceof Error ? err.message : 'Download failed'); } finally { setBusy(false); } }; return ( ); }