'use client'; import { useState } from 'react'; import { CodeSnippet } from '@/lib/data'; import { Check, Copy, Download, FileCode, Terminal } from 'lucide-react'; interface CodeBlockProps { snippets: CodeSnippet[]; } export function CodeBlock({ snippets }: CodeBlockProps) { const [activeTab, setActiveTab] = useState(0); const [copied, setCopied] = useState(false); if (!snippets || snippets.length === 0) return null; const currentSnippet = snippets[activeTab] || snippets[0]; const handleCopy = async () => { try { await navigator.clipboard.writeText(currentSnippet.code); setCopied(true); setTimeout(() => setCopied(false), 2000); } catch (err) { console.error('Copy error:', err); } }; const handleDownloadFile = () => { const element = document.createElement('a'); const file = new Blob([currentSnippet.code], { type: 'text/plain;charset=utf-8' }); element.href = URL.createObjectURL(file); element.download = currentSnippet.fileName.split('/').pop() || 'code.txt'; document.body.appendChild(element); element.click(); document.body.removeChild(element); }; const lines = currentSnippet.code.split('\n'); return (
| {idx + 1} | {line} |