import { useState, useRef, useEffect } from 'react' import SettingsModal from './SettingsModal' import { useLanguage } from '../contexts/LanguageContext' interface HeaderProps { username?: string onLogout?: () => void onStop?: () => void isRunning?: boolean onOpenAdvancedConfig?: () => void } export default function Header({ username, onLogout, onStop, isRunning, onOpenAdvancedConfig }: HeaderProps) { const { t } = useLanguage() const [showSettings, setShowSettings] = useState(false) const [showSettingsMenu, setShowSettingsMenu] = useState(false) const [showLogout, setShowLogout] = useState(false) const logoutRef = useRef(null) const settingsMenuRef = useRef(null) useEffect(() => { if (!showLogout && !showSettingsMenu) return const handleOutside = (e: MouseEvent) => { if (logoutRef.current && !logoutRef.current.contains(e.target as Node)) { setShowLogout(false) } if (settingsMenuRef.current && !settingsMenuRef.current.contains(e.target as Node)) { setShowSettingsMenu(false) } } document.addEventListener('mousedown', handleOutside) return () => document.removeEventListener('mousedown', handleOutside) }, [showLogout, showSettingsMenu]) const handleSettingsAction = () => { setShowLogout(false) if (onOpenAdvancedConfig) { setShowSettingsMenu(v => !v) return } setShowSettings(true) } return ( <> {/* Placeholder for the macOS traffic lights that keeps the window draggable */}
CA
Copilot API
{isRunning && onStop && ( )} {isRunning ? (
{t('header.running')}
) : username ? (
{t('header.notStarted')}
) : null} {username && (
{showLogout && (
{username[0]?.toUpperCase()}
{username}
)}
)}
{showSettingsMenu && onOpenAdvancedConfig && (
)}
{showSettings && setShowSettings(false)} />} ) }