'use client';
import { Github, Database, Boxes, ExternalLink, MessageSquare, Code, FileText } from 'lucide-react';
import { clsx } from 'clsx';
import { PROJECT_CONFIG, LINKS } from '@/config/constants';
import { WarmupIndicator } from '@/components/Chat/WarmupIndicator';
import type { AppMode } from '@/types';
interface HeaderProps {
mode?: AppMode;
onModeChange?: (mode: AppMode) => void;
}
interface BadgeProps {
href: string;
icon: React.ReactNode;
label: string;
variant: 'default' | 'accent' | 'highlight';
}
function Badge({ href, icon, label, variant }: BadgeProps) {
const variantStyles = {
default: 'bg-zinc-800/80 hover:bg-zinc-700/80 text-zinc-300 border-zinc-700/50',
accent: 'bg-teal-900/30 hover:bg-teal-800/40 text-teal-400 border-teal-700/40',
highlight: 'bg-amber-900/30 hover:bg-amber-800/40 text-amber-400 border-amber-700/40',
};
return (
{icon}
{label}
);
}
interface ModeToggleProps {
mode: AppMode;
onModeChange: (mode: AppMode) => void;
}
function ModeToggle({ mode, onModeChange }: ModeToggleProps) {
return (
);
}
export function Header({ mode = 'chat', onModeChange }: HeaderProps) {
return (
{/* Title - far left */}
{PROJECT_CONFIG.name}
{PROJECT_CONFIG.description}
{/* Mode Toggle - center */}
{onModeChange && (
)}
{/* Badges - far right */}
}
label="Paper"
variant="highlight"
/>
}
label="GitHub"
variant="default"
/>
}
label="Dataset"
variant="highlight"
/>
}
label="Models"
variant="accent"
/>
);
}