mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-09-01 14:43:26 +00:00
66 lines
2.0 KiB
TypeScript
66 lines
2.0 KiB
TypeScript
'use client';
|
|
|
|
import { useEffect, useState } from 'react';
|
|
import { useLanguage, Language } from '@/lib/i18n';
|
|
import { Globe } from 'lucide-react';
|
|
|
|
const languages: { code: Language; label: string }[] = [
|
|
{ code: 'en', label: 'English' },
|
|
{ code: 'am', label: 'አማርኛ' },
|
|
{ code: 'om', label: 'Afan Oromo' },
|
|
{ code: 'fr', label: 'Français' },
|
|
];
|
|
|
|
export function LanguageSwitcher() {
|
|
const [isOpen, setIsOpen] = useState(false);
|
|
const [currentLang, setCurrentLang] = useState<Language>('en');
|
|
const { getLang, setLang } = useLanguage();
|
|
|
|
useEffect(() => {
|
|
setCurrentLang(getLang());
|
|
}, [getLang]);
|
|
|
|
const handleLanguageChange = (lang: Language) => {
|
|
setLang(lang);
|
|
setCurrentLang(lang);
|
|
setIsOpen(false);
|
|
};
|
|
|
|
return (
|
|
<div className="relative">
|
|
<button
|
|
onClick={() => setIsOpen(!isOpen)}
|
|
className="p-2 text-gray-100 hover:bg-white hover:bg-opacity-10 rounded-lg transition-colors"
|
|
title="Change language"
|
|
aria-label="Change language"
|
|
>
|
|
<Globe className="w-5 h-5" />
|
|
</button>
|
|
|
|
{isOpen && (
|
|
<>
|
|
<div
|
|
className="fixed inset-0 z-30"
|
|
onClick={() => setIsOpen(false)}
|
|
/>
|
|
<div className="absolute right-0 mt-2 w-40 bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 z-40 animate-in fade-in zoom-in-95 duration-200">
|
|
{languages.map((lang) => (
|
|
<button
|
|
key={lang.code}
|
|
onClick={() => handleLanguageChange(lang.code)}
|
|
className={`w-full text-left px-4 py-2.5 transition-all duration-200 ${
|
|
currentLang === lang.code
|
|
? 'bg-primary text-white font-medium'
|
|
: 'text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700'
|
|
}`}
|
|
>
|
|
{lang.label}
|
|
</button>
|
|
))}
|
|
</div>
|
|
</>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|