import { ReactNode, useState, useEffect } from 'react'; import { ExternalLink } from 'lucide-react'; interface Tab { id: string; label: string; content: ReactNode; } interface TabsProps { tabs: Tab[]; defaultTab?: string; activeTab?: string; onTabChange?: (tabId: string) => void; /** * Optional: liefert die URL, unter der ein einzelner Tab in einem * neuen Tab geöffnet werden kann. Wenn gesetzt, erscheint neben jedem * Tab-Label ein kleines „im neuen Tab öffnen"-Icon. */ tabHrefBuilder?: (tabId: string) => string; } export default function Tabs({ tabs, defaultTab, activeTab: controlledTab, onTabChange, tabHrefBuilder, }: TabsProps) { const [internalTab, setInternalTab] = useState(defaultTab || tabs[0]?.id); const activeTab = controlledTab ?? internalTab; useEffect(() => { if (controlledTab !== undefined) { setInternalTab(controlledTab); } }, [controlledTab]); const handleTabChange = (tabId: string) => { setInternalTab(tabId); onTabChange?.(tabId); }; return (