import { formatMoney } from "../format"; // Zeigt einen Betrag in Kontowährung und – falls abweichend – zusätzlich den in // die Hauptwährung umgerechneten Wert. // // `sign` ist für Listen gedacht, in denen die Richtung aus der Buchungsart kommt // (Ausgabe/Einnahme): dort wird der Betrag ohne Vorzeichen geführt und hier mit // +/− und Farbe versehen. OHNE `sign` steht der Wert für sich selbst – etwa ein // Kontostand – und wird mit seinem echten Vorzeichen ausgegeben. Früher lief er // auch dann durch Math.abs(), wodurch ein überzogenes Konto oder eine // Kreditkartenschuld fälschlich positiv aussah. export default function Money({ cents, currency = "EUR", baseCents = null, baseCurrency = "EUR", sign = null, // "pos" | "neg" | null showConverted = true, }) { const negativ = !sign && Number(cents) < 0; const cls = sign ? `amount ${sign}` : negativ ? "amount neg" : "amount"; const prefix = sign === "pos" ? "+" : sign === "neg" ? "−" : ""; const showBase = showConverted && baseCents != null && currency !== baseCurrency; return ( {prefix} {formatMoney(sign ? Math.abs(cents) : cents, currency)} {showBase && ( ≈ {formatMoney(sign ? Math.abs(baseCents) : baseCents, baseCurrency)} )} ); }