"use client"; import { useState, useEffect } from "react"; import { createPortal } from "react-dom"; import { useRouter, usePathname } from "next/navigation"; import { Globe, X } from "lucide-react"; import { LANGUAGES, getLanguage, DEFAULT_LANG } from "@/constants/languages"; import { t } from "@/constants/docsConfig"; function extractLangFromPath(pathname) { const match = pathname.match(/^\/([^/]+)(?:\/(.*))?$/); if (!match) return { lang: DEFAULT_LANG, rest: "" }; return { lang: match[1], rest: match[2] || "" }; } export default function LanguageSwitcher({ currentLang }) { const [open, setOpen] = useState(false); const [mounted, setMounted] = useState(false); const router = useRouter(); const pathname = usePathname(); const current = getLanguage(currentLang); useEffect(() => { setMounted(true); }, []); // Lock body scroll when modal is open useEffect(() => { if (open) { document.body.style.overflow = "hidden"; return () => { document.body.style.overflow = ""; }; } }, [open]); const switchTo = (code) => { const { rest } = extractLangFromPath(pathname); const target = rest ? `/${code}/${rest}` : `/${code}`; setOpen(false); router.push(target); }; const modal = open && (