import { Minus, RefreshCw, TrendingDown, TrendingUp } from "lucide-react"; import { RelativeTime } from "@/lib/time"; import type { Quote } from "@/lib/api"; import { useQuotes, useFetchQuotes, useMonthlyPayedTotal } from "@/lib/queries"; import { useNavigate } from "@tanstack/react-router"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; const priceFormatter = new Intl.NumberFormat("es-AR", { minimumFractionDigits: 2, maximumFractionDigits: 2, }); function QuoteCard({ quote, title, to, variant }: { quote: Quote | undefined; title: string; to?: string; variant?: "default" | "minimal" }) { const navigate = useNavigate(); const diff = quote ? Number(quote.difference) : 0; const pct = quote ? Number(quote.percentage) : 0; const isUp = diff > 0; const isDown = diff < 0; return (
{title}
{quote && ({isUp ? `Subió $${priceFormatter.format(diff)} (${pct.toFixed(2)}%)` : isDown ? `Bajó $${priceFormatter.format(Math.abs(diff))} (${pct.toFixed(2)}%)` : "Sin cambios"}
${priceFormatter.format(Number(quote.buy))}
Compra: ${priceFormatter.format(Number(quote.buy))}
Venta: ${priceFormatter.format(Number(quote.sell))}
Compra: ${priceFormatter.format(Number(quote.buy))}
Venta: ${priceFormatter.format(Number(quote.sell))}
Sin datos
)}Total ingresos
$0.00
Gastos del mes
${priceFormatter.format(monthlyExpenses?.total ?? 0)}