import {
  Box, CircularProgress, Alert, Table, TableBody, TableCell,
  TableContainer, TableHead, TableRow, Paper, Typography, Tooltip
} from '@mui/material';
import ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';
import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';
import RemoveIcon from '@mui/icons-material/Remove';
// Importaciones de nuestro proyecto
import type { CotizacionGrano } from '../models/mercadoModels';
import { useApiData } from '../hooks/useApiData';
import { useIsHoliday } from '../hooks/useIsHoliday';
import { formatInteger, formatDateOnly, formatFullDateTime } from '../utils/formatters';
import { HolidayAlert } from './common/HolidayAlert';
/**
 * Sub-componente para mostrar la variación con icono y color.
 */
const Variacion = ({ value }: { value: number }) => {
  const color = value > 0 ? 'success.main' : value < 0 ? 'error.main' : 'text.secondary';
  const Icon = value > 0 ? ArrowUpwardIcon : value < 0 ? ArrowDownwardIcon : RemoveIcon;
  return (
    
      
      
        {formatInteger(value)}
      
    
  );
};
/**
 * Widget autónomo para la tabla detallada del mercado de granos.
 */
export const GranosWidget = () => {
  // Hooks para obtener los datos y el estado de feriado para el mercado argentino.
  const { data, loading: dataLoading, error: dataError } = useApiData('/mercados/granos');
  const isHoliday = useIsHoliday('BA');
  // Estado de carga unificado.
  const isLoading = dataLoading || isHoliday === null;
  if (isLoading) {
    return ;
  }
  if (dataError) {
    return {dataError};
  }
  // Si no hay ningún dato que mostrar.
  if (!data || data.length === 0) {
    if (isHoliday) {
      return ;
    }
    return No hay datos de granos disponibles en este momento.;
  }
  return (
    
      {/* Si es feriado, mostramos la alerta como un aviso encima del contenido. */}
      {isHoliday && (
        
          
        
      )}
      
        
          
            
              Grano
              Precio ($/Tn)
              Variación
              Fecha Operación
            
          
          
            {data.map((row) => (
              
                
                  {row.nombre}
                
                ${formatInteger(row.precio)}
                
                  
                
                {formatDateOnly(row.fechaOperacion)}
              
            ))}
          
        
        
          
            Fuente: Bolsa de Comercio de Rosario
          
        
      
    
  );
};