'use client'; import React, { useState, useRef, useEffect } from 'react'; import { useLanguage } from '@/providers/LanguageProvider'; import { SupportedLanguage } from '@/lib/i18n/translations'; import { Globe, ChevronDown } from 'lucide-react'; const languages: { code: SupportedLanguage; label: string; flag: string }[] = [ { code: 'fr', label: 'Français', flag: 'https://flagcdn.com/fr.svg' }, { code: 'en', label: 'English', flag: 'https://flagcdn.com/gb.svg' }, { code: 'es', label: 'Español', flag: 'https://flagcdn.com/es.svg' }, { code: 'de', label: 'Deutsch', flag: 'https://flagcdn.com/de.svg' }, ]; export const LanguageSwitcher: React.FC = () => { const { language, setLanguage } = useLanguage(); const [isOpen, setIsOpen] = useState(false); const dropdownRef = useRef(null); const currentLang = languages.find(l => l.code === language) || 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); }, []); return (
{isOpen && (
{languages.map((lang) => ( ))}
)}
); };