import { FileText, LogIn, Monitor, Moon, MoreHorizontal, PanelLeft, Pencil, Share2, SquarePen, Sun, Trash2, } from 'lucide-react' import Button from './Button' import Dropdown from './Dropdown' function themeOptionItems(themePreference, onThemePreferenceChange) { return [ { key: 'system', label: 'System', icon: Monitor, onSelect: () => onThemePreferenceChange('system'), }, { key: 'light', label: 'Light', icon: Sun, onSelect: () => onThemePreferenceChange('light'), }, { key: 'dark', label: 'Dark', icon: Moon, onSelect: () => onThemePreferenceChange('dark'), }, ] } export default function AppHeader({ title, theme, themePreference, currentSessionId, canRenameSession, hasMessages, onToggleSidebar, onThemePreferenceChange, onNewChat, onRenameSession, onDeleteSession, onShare, onExportMarkdown, onExportPdf, onFeedback, user, onLogin, onLogout, }) { const accountName = user?.name || user?.username || '' const actions = [ { key: 'new', label: 'New chat', icon: SquarePen, onSelect: onNewChat, }, ...(canRenameSession ? [ { key: 'rename', label: 'Rename', icon: Pencil, onSelect: onRenameSession, }, ] : []), ...(currentSessionId ? [ { key: 'delete', label: 'Delete', icon: Trash2, onSelect: onDeleteSession, destructive: true, }, ] : []), { key: 'share', label: 'Share', icon: Share2, onSelect: onShare, disabled: !hasMessages, }, { key: 'export-md', label: 'Export Markdown', icon: FileText, onSelect: onExportMarkdown, disabled: !hasMessages, }, { key: 'export-pdf', label: 'Export PDF', icon: FileText, onSelect: onExportPdf, disabled: !hasMessages, }, ] const userItems = user ? [ { key: 'feedback', label: 'Send feedback', onSelect: onFeedback, }, { key: 'separator', type: 'separator', }, { key: 'logout', label: 'Sign out', onSelect: onLogout, }, ] : [] const ThemeIcon = themePreference === 'system' ? Monitor : theme === 'dark' ? Moon : Sun return (

{title}

} items={themeOptionItems(themePreference, onThemePreferenceChange)} /> } items={actions} /> {user ? ( {user.avatar_url ? ( {accountName} ) : ( accountName.slice(0, 1).toUpperCase() )} } items={userItems} /> ) : ( )}
) }