import { useState } from 'react';
import { Box, Paper, Typography, ToggleButton, ToggleButtonGroup, CircularProgress, Alert } from '@mui/material';
import ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';
import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';
import RemoveIcon from '@mui/icons-material/Remove';
import type { CotizacionBolsa } from '../models/mercadoModels';
import { formatCurrency, formatCurrency2Decimal } from '../utils/formatters';
import { HistoricalChartWidget } from './HistoricalChartWidget';
import { useApiData } from '../hooks/useApiData';
const VariacionMerval = ({ actual, anterior }: { actual: number, anterior: number }) => {
if (anterior === 0) return null; // Evitar división por cero
const variacionPuntos = actual - anterior;
const variacionPorcentaje = (variacionPuntos / anterior) * 100;
const isPositive = variacionPuntos > 0;
const isNegative = variacionPuntos < 0;
const color = isPositive ? 'success.main' : isNegative ? 'error.main' : 'text.secondary';
const Icon = isPositive ? ArrowUpwardIcon : isNegative ? ArrowDownwardIcon : RemoveIcon;
return (
{formatCurrency(variacionPuntos)}
({variacionPorcentaje.toFixed(2)}%)
);
};
export const MervalHeroCard = () => {
const { data: allLocalData, loading, error } = useApiData('/mercados/bolsa/local');
const [dias, setDias] = useState(30);
const handleRangoChange = ( _event: React.MouseEvent, nuevoRango: number | null ) => {
if (nuevoRango !== null) { setDias(nuevoRango); }
};
const mervalData = allLocalData?.find(d => d.ticker === '^MERV');
if (loading) { return ; }
if (error) { return {error}; }
if (!mervalData) { return No se encontraron datos para el índice MERVAL.; }
return (
Índice S&P MERVAL
{formatCurrency2Decimal(mervalData.precioActual)}
Semanal
Mensual
Anual
);
};