import {Tabs, TabsContent, TabsList, TabsTrigger} from '@plunk/ui'; import {AnimatePresence, motion} from 'framer-motion'; import {Check, Copy} from 'lucide-react'; import {useState} from 'react'; export interface CodeSnippet { id: string; label: string; code: string; } interface CodeTabsProps { snippets: CodeSnippet[]; defaultTab?: string; } export function CodeTabs({snippets, defaultTab}: CodeTabsProps) { const [active, setActive] = useState(defaultTab ?? snippets[0]?.id ?? ''); const [copied, setCopied] = useState(false); const activeSnippet = snippets.find(s => s.id === active) ?? snippets[0]; const handleCopy = async () => { if (!activeSnippet) return; try { await navigator.clipboard.writeText(activeSnippet.code); setCopied(true); setTimeout(() => setCopied(false), 1800); } catch { // clipboard unavailable — silent } }; return (
{snippets.map(s => ( {s.label} ))}
{snippets.map(s => (
            {s.code}
          
))}
); }