"use client"; import { useState, useEffect } from "react"; import { Globe } from "lucide-react"; interface Language { code: string; name: string; flag: string; } const LANGUAGES: Language[] = [ { code: "en", name: "English", flag: "🇺🇸" }, { code: "es", name: "Español", flag: "🇪🇸" }, { code: "fr", name: "Français", flag: "🇫🇷" }, { code: "de", name: "Deutsch", flag: "🇩🇪" }, { code: "it", name: "Italiano", flag: "🇮🇹" }, { code: "pt", name: "Português", flag: "🇵🇹" }, { code: "ja", name: "日本語", flag: "🇯🇵" }, { code: "zh", name: "中文", flag: "🇨🇳" }, { code: "ko", name: "한국어", flag: "🇰🇷" }, ]; export default function LanguageSwitcher() { const [currentLanguage, setCurrentLanguage] = useState("en"); const [isOpen, setIsOpen] = useState(false); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); // Get stored language preference from localStorage const stored = typeof window !== "undefined" ? localStorage.getItem("beatcraft-language") : null; if (stored) { setCurrentLanguage(stored); document.documentElement.lang = stored; } }, []); const handleLanguageChange = (code: string) => { setCurrentLanguage(code); localStorage.setItem("beatcraft-language", code); document.documentElement.lang = code; setIsOpen(false); // Dispatch custom event for components to listen to language changes window.dispatchEvent(new CustomEvent("languageChange", { detail: { language: code } })); }; const currentLang = LANGUAGES.find((lang) => lang.code === currentLanguage) || LANGUAGES[0]; if (!mounted) return null; return (
{isOpen && (
{LANGUAGES.map((lang) => ( ))}
)}
); }