Files
patchy631--ai-engineering-hub/open-agent-builder/components/app/(home)/sections/workflow-builder/ExportLangGraphButton.tsx
T
2026-07-13 12:37:47 +08:00

48 lines
1.4 KiB
TypeScript

'use client';
import { Download } from 'lucide-react';
import { toast } from 'sonner';
interface ExportLangGraphButtonProps {
workflowId: string;
workflowName: string;
}
export function ExportLangGraphButton({ workflowId, workflowName }: ExportLangGraphButtonProps) {
const handleExport = async () => {
try {
const response = await fetch(`/api/workflows/${workflowId}/export-langgraph`);
if (!response.ok) {
throw new Error('Export failed');
}
// Download the JSON file
const blob = await response.blob();
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = `${workflowName.replace(/\s+/g, '_')}_langgraph.json`;
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
document.body.removeChild(a);
toast.success('Workflow exported as LangGraph JSON');
} catch (error) {
console.error('Export error:', error);
toast.error('Failed to export workflow');
}
};
return (
<button
onClick={handleExport}
className="inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
>
<Download className="w-4 h-4" />
Export as LangGraph
</button>
);
}