import { JSX, useEffect } from 'react'; import { ThemeToggle } from './ThemeToggle'; import { Logo } from './Logo'; import { Repository, Languages } from '../types'; import { MIRRORS } from '../services/api'; import { translate } from '../i18n'; import i18next from 'i18next'; interface HeaderProps { onRepositoryChange: (repo: Repository) => void; } export function Header({ onRepositoryChange }: HeaderProps): JSX.Element { const usedRepositories = new Set(Object.values(MIRRORS).map(mirror => mirror.repository)); const filteredRepository = Object.keys(Repository).reduce((acc, key) => { if ((key === 'ALL') || usedRepositories.has(Repository[key as keyof typeof Repository])) acc[key] = Repository[key as keyof typeof Repository]; return acc; }, {} as Record); const handleLanguageChange = (event: React.ChangeEvent) => { const language = event.target.value; i18next.changeLanguage(language).then(() => { localStorage.setItem('selectedLanguage', language); window.location.reload(); }); }; useEffect(() => { const savedLanguage = localStorage.getItem('selectedLanguage'); if (savedLanguage && (savedLanguage !== i18next.language)) i18next.changeLanguage(savedLanguage); }, []); return (
{/* Logo Section */}
{/* Repository Filter Dropdown */}
{/* Language Dropdown */}
{/* Theme Toggle */}
); }