import React, { useState } from 'react'; import { Download, CircleCheckBig } from 'lucide-react'; import type { Artifact } from '~/common'; import { Button } from '@librechat/client'; import useArtifactProps from '~/hooks/Artifacts/useArtifactProps'; import { useCodeState } from '~/Providers/EditorContext'; import { useLocalize } from '~/hooks'; const DownloadArtifact = ({ artifact }: { artifact: Artifact }) => { const localize = useLocalize(); const { currentCode } = useCodeState(); const [isDownloaded, setIsDownloaded] = useState(false); const { fileKey: fileName } = useArtifactProps({ artifact }); const handleDownload = () => { try { const content = currentCode ?? artifact.content ?? ''; if (!content) { return; } const blob = new Blob([content], { type: 'text/plain' }); const url = window.URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = fileName; document.body.appendChild(link); link.click(); document.body.removeChild(link); window.URL.revokeObjectURL(url); setIsDownloaded(true); setTimeout(() => setIsDownloaded(false), 3000); } catch (error) { console.error('Download failed:', error); } }; return ( ); }; export default DownloadArtifact;