"use client"; import { useEffect, useRef, useState } from "react"; import { ChevronDown, Languages } from "lucide-react"; import { useI18n, type Language } from "@/lib/i18n"; const languageOptions: Language[] = ["pl", "en"]; export function LanguageToggle() { const { language, setLanguage, t } = useI18n(); const [open, setOpen] = useState(false); const rootRef = useRef(null); const labels: Record = { pl: t("language.polish"), en: t("language.english"), }; useEffect(() => { if (!open) return; function handlePointerDown(event: PointerEvent) { if (!rootRef.current?.contains(event.target as Node)) setOpen(false); } function handleKeyDown(event: KeyboardEvent) { if (event.key === "Escape") setOpen(false); } document.addEventListener("pointerdown", handlePointerDown); window.addEventListener("keydown", handleKeyDown); return () => { document.removeEventListener("pointerdown", handlePointerDown); window.removeEventListener("keydown", handleKeyDown); }; }, [open]); return (
{open && (
{languageOptions.map((option) => ( ))}
)}
); }