import { useMemo, useState, Suspense, useEffect } from 'react';
import { useSuspenseQuery } from '@tanstack/react-query';
import { getPanelElectoral } from '../../../apiService';
import { MapaNacional } from './components/MapaNacional';
import { PanelResultados } from './components/PanelResultados';
import { Breadcrumbs } from './components/Breadcrumbs';
import { MunicipioSearch } from './components/MunicipioSearch';
import './PanelNacional.css';
import Select from 'react-select';
import type { PanelElectoralDto, ResultadoTicker } from '../../../types/types';
import { FiMap, FiList, FiChevronDown, FiChevronUp } from 'react-icons/fi';
import { useMediaQuery } from './hooks/useMediaQuery';
import { Toaster } from 'react-hot-toast';
import { ImageWithFallback } from '../../../components/common/ImageWithFallback';
import { assetBaseUrl } from '../../../apiService';
// --- COMPONENTE INTERNO PARA LA TARJETA DE RESULTADOS EN MÓVIL ---
interface MobileResultsCardProps {
  eleccionId: number;
  ambitoId: string | null;
  categoriaId: number;
  ambitoNombre: string;
  ambitoNivel: 'pais' | 'provincia' | 'municipio';
}
const formatPercent = (num: number) => `${(num || 0).toFixed(2).replace('.', ',')}%`;
// --- SUB-COMPONENTE PARA UNA FILA DE RESULTADO ---
const ResultRow = ({ partido }: { partido: ResultadoTicker }) => (
    
        
             
        
        
            {partido.nombreCandidato ? (
                <>
                    {partido.nombreCandidato}
                    {partido.nombreCorto || partido.nombre}
                >
            ) : (
                {partido.nombreCorto || partido.nombre}
            )}
        
        
            {formatPercent(partido.porcentaje)}
            {partido.votos.toLocaleString('es-AR')}
        
     
);
// --- COMPONENTE REFACTORIZADO PARA LA TARJETA MÓVIL ---
interface MobileResultsCardProps {
  eleccionId: number;
  ambitoId: string | null;
  categoriaId: number;
  ambitoNombre: string;
  ambitoNivel: 'pais' | 'provincia' | 'municipio';
  mobileView: 'mapa' | 'resultados';
  setMobileView: (view: 'mapa' | 'resultados') => void;
}
const MobileResultsCard = ({ 
    eleccionId, ambitoId, categoriaId, ambitoNombre, ambitoNivel, mobileView, setMobileView 
}: MobileResultsCardProps) => {
    
    const [isExpanded, setIsExpanded] = useState(false);
    const { data } = useSuspenseQuery({
        queryKey: ['panelElectoral', eleccionId, ambitoId, categoriaId],
        queryFn: () => getPanelElectoral(eleccionId, ambitoId, categoriaId),
    });
    
    useEffect(() => {
        setIsExpanded(ambitoNivel === 'municipio');
    }, [ambitoNivel]);
    const topResults = data.resultadosPanel.slice(0, 4);
    if (topResults.length === 0 && ambitoNivel === 'pais') {
        return null;
    }
    return (
        
            {/* Sección Colapsable con Resultados */}
            
                 setIsExpanded(!isExpanded)}>
                    
                        
{ambitoNombre}
                        {/* Se añade una clase para estilizar este texto específicamente */}
                        {isExpanded ? 'Ocultar resultados' : 'Ver top 4'}
                    
                    
                        {isExpanded ?  : }
                    
                
                    {topResults.length > 0 ? (
                        topResults.map(partido => 
)
                    ) : (
                        
No hay resultados para esta selección.
                    )}
                
 
            {/* Footer Fijo con Botones de Navegación */}
            
                
                
            
        
      
      
        
          
        {/* --- 2. NUEVO CONTENEDOR PARA BREADCRUMBS Y BUSCADOR --- */}
        
            
            {/* --- 3. RENDERIZADO CONDICIONAL DEL BUSCADOR --- */}
            {ambitoActual.nivel === 'provincia' && ambitoActual.provinciaDistritoId && (
                 
                        handleAmbitoSelect(municipioId, 'municipio', municipioNombre)
                    }
                />
            )}
        
      
      
        
          
          
          }>
            
          
        
        
        
            {isMobile && (
              
            )}
        
      
     
  );
};