import { Box, CircularProgress, Alert, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Paper, Typography, Tooltip } from '@mui/material'; import type { CotizacionBolsa } from '../models/mercadoModels'; import { useApiData } from '../hooks/useApiData'; import ArrowUpwardIcon from '@mui/icons-material/ArrowUpward'; import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward'; import RemoveIcon from '@mui/icons-material/Remove'; const formatNumber = (num: number) => { return new Intl.NumberFormat('en-US', { // Usamos formato de EEUU style: 'currency', currency: 'USD', }).format(num); }; 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 ( {value.toFixed(2)}% ); }; export const BolsaUsaWidget = () => { const { data, loading, error } = useApiData('/mercados/bolsa/eeuu'); if (loading) { return ; } if (error) { return {error}; } if (!data || data.length === 0) { return No hay datos disponibles para el mercado de EEUU. (El fetcher puede estar desactivado); } return ( Símbolo Precio Actual Apertura Cierre Anterior % Cambio {data.map((row) => ( {row.ticker} {formatNumber(row.precioActual)} {formatNumber(row.apertura)} {formatNumber(row.cierreAnterior)} ))}
Fuente: Finnhub
); };