import React, { useState, useRef, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { ChevronDownIcon } from '@heroicons/react/24/outline'; interface LanguageOption { code: string; name: string; flag: string; } interface LanguageDropdownProps { value: string; onChange: (languageCode: string) => void; className?: string; } const LanguageDropdown: React.FC = ({ value, onChange, className = '', }) => { const { t } = useTranslation(); const [isOpen, setIsOpen] = useState(false); const dropdownRef = useRef(null); const languages: LanguageOption[] = [ { code: 'de', name: t('profile.deutsch'), flag: '🇩🇪' }, { code: 'en', name: t('profile.english'), flag: '🇺🇸' }, { code: 'el', name: t('profile.greek'), flag: '🇬🇷' }, { code: 'it', name: t('profile.italian'), flag: '🇮🇹' }, { code: 'jp', name: t('profile.japanese'), flag: '🇯🇵' }, { code: 'es', name: t('profile.spanish'), flag: '🇪🇸' }, { code: 'ua', name: t('profile.ukrainian'), flag: '🇺🇦' }, ].sort((a, b) => a.name.localeCompare(b.name)); const selectedLanguage = languages.find(lang => lang.code === value) || languages[0]; useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { setIsOpen(false); } }; document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, []); const handleSelect = (languageCode: string) => { onChange(languageCode); setIsOpen(false); }; return (
{isOpen && (
{languages.map((language) => ( ))}
)}
); }; export default LanguageDropdown;