import React, { useEffect } from 'react'; import { Sparkles, Layers, BookOpen, FolderOpen, Database, Sun, Moon, } from 'lucide-react'; import type { CorpusDataset } from '../types/corpus'; interface HeaderProps { activeTab: string; setActiveTab: (tab: string) => void; datasets?: CorpusDataset[]; activeDatasetId?: string; onSelectDataset?: (id: string) => void; onOpenExplorer?: () => void; theme?: 'dark' | 'light'; onToggleTheme?: () => void; } export const Header: React.FC = ({ activeTab, setActiveTab, datasets = [], activeDatasetId, onSelectDataset, onOpenExplorer, theme = 'light', onToggleTheme, }) => { const tabs = [ { id: 'playground', label: 'Retrieval Arena', icon: Sparkles }, { id: 'index', label: 'Index Inspector', icon: Layers }, { id: 'concepts', label: 'Core Concepts', icon: BookOpen }, ]; // Quick hotkeys: 1 -> Arena, 2 -> Inspector, 3 -> Core Concepts (when not in an input/textarea) useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { const target = e.target as HTMLElement; if ( target && (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT' || target.isContentEditable) ) { return; } if (e.key === '1' && !e.metaKey && !e.ctrlKey) { setActiveTab('playground'); } else if (e.key === '2' && !e.metaKey && !e.ctrlKey) { setActiveTab('index'); } else if (e.key === '3' && !e.metaKey && !e.ctrlKey) { setActiveTab('concepts'); } }; window.addEventListener('keydown', handleKeyDown); return () => window.removeEventListener('keydown', handleKeyDown); }, [setActiveTab]); return (
{/* Left: Brand */}
🦫
IR Studio
{/* Center: Primary Navigation Tabs (Retrieval Arena vs Index Inspector) */} {/* Right: Mounted Dataset Picker & Theme Toggle */}
{datasets.length > 0 && onSelectDataset && (
corpus:
{onOpenExplorer && ( )}
)} {/* Theme Toggle (Dark / Light) */} {onToggleTheme && ( )}
); };