'use client'; import { Menu, MenuButton, MenuList, MenuItem, HStack, Image, Text, Icon, useColorMode, IconButton, } from '@chakra-ui/react'; import { useCurrentLanguage } from '@vechain/vechain-kit'; import { supportedLanguages, languageNames } from '../../../../../i18n'; import { LuChevronDown } from 'react-icons/lu'; // Map language codes to country codes for flag icons const languageToCountryCode: Record = { en: 'us', de: 'de', it: 'it', fr: 'fr', es: 'es', zh: 'cn', ja: 'jp', }; // Generate CDN URL for circle flag (using flagcdn.com) const getFlagUrl = (langCode: string): string => { const countryCode = languageToCountryCode[langCode] || langCode; return `https://flagcdn.com/w40/${countryCode}.png`; }; export function LanguageDropdown() { const { colorMode } = useColorMode(); const { currentLanguage, setLanguage } = useCurrentLanguage(); const currentFlagUrl = getFlagUrl(currentLanguage); const currentLanguageName = languageNames[currentLanguage as keyof typeof languageNames] || currentLanguage; const isDarkMode = colorMode === 'dark'; return ( {currentLanguageName} } /> {supportedLanguages.map((lang) => { const flagUrl = getFlagUrl(lang); const langName = languageNames[lang as keyof typeof languageNames] || lang; const isSelected = lang === currentLanguage; return ( setLanguage(lang)} bg={ isSelected ? isDarkMode ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.05)' : 'transparent' } _hover={{ bg: isDarkMode ? 'rgba(255, 255, 255, 0.15)' : 'rgba(0, 0, 0, 0.08)', }} py={2} px={3} > {langName} {langName} ); })} ); }