'use client'; import { useState, useEffect, useRef } from 'react'; import { useSession } from 'next-auth/react'; import { MapPin, ChevronDown, Check } from 'lucide-react'; import { cn } from '@/lib/utils'; import { useSite } from '@/contexts/site-context'; export function SiteSwitcher() { const { data: session } = useSession(); const { sites, selectedSiteId, selectedSite, setSelectedSiteId, isLoading } = useSite(); const [isOpen, setIsOpen] = useState(false); const dropdownRef = useRef(null); const isSuperAdmin = session?.user?.role === 'SUPER_ADMIN'; useEffect(() => { function handleClickOutside(event: MouseEvent) { if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { setIsOpen(false); } } document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, []); const displayName = selectedSiteId ? selectedSite?.name : 'Todas las sedes'; // For non-SUPER_ADMIN users, just show their assigned site if (!isSuperAdmin) { const userSiteName = sites.length > 0 ? sites[0]?.name : 'Cargando...'; return (
{isLoading ? 'Cargando...' : userSiteName}
); } // For SUPER_ADMIN, show dropdown to select site return (
{isOpen && (
{sites.map((site) => ( ))}
)}
); } export default SiteSwitcher;