import { useState } from 'react';
import { useLanguage } from '@avanzacast/shared-hooks';
import type { SupportedLanguage } from '@avanzacast/shared-types';
interface LanguageSelectorProps {
className?: string;
variant?: 'dropdown' | 'flags';
position?: 'left' | 'right';
}
/**
* Componente compartido para selector de idioma
* Puede ser usado en landing-page, broadcast-studio y admin-panel
*/
export function LanguageSelector({
className = '',
variant = 'dropdown',
position = 'right'
}: LanguageSelectorProps) {
const { language, availableLanguages, setLanguage } = useLanguage();
const [isOpen, setIsOpen] = useState(false);
const currentLanguage = availableLanguages.find(lang => lang.code === language);
const handleLanguageChange = (code: SupportedLanguage) => {
setLanguage(code);
setIsOpen(false);
};
if (variant === 'flags') {
return (
{availableLanguages.map((lang) => (
))}
);
}
return (
{isOpen && (
<>
{/* Overlay para cerrar */}
setIsOpen(false)}
aria-hidden="true"
/>
{/* Dropdown menu */}
{availableLanguages.map((lang) => (
))}
>
)}
);
}