/** Euro formatter (nl-NL, geen decimalen) */ export const fmt = (n) => new Intl.NumberFormat("nl-NL", { style: "currency", currency: "EUR", maximumFractionDigits: 0, }).format(n || 0); /** Percentage formatter */ export const pct = (n, d = 1) => `${((n || 0) * 100).toFixed(d)}%`; /** ISO datum (YYYY-MM-DD) → Nederlandse notatie (DD-MM-YYYY) */ export const fmtDatum = (s) => { if (!s) return s; const [y, m, d] = s.split("-"); return `${d}-${m}-${y}`; }; const MAANDEN = ["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"]; /** * ISO datum → korte maandnotatie (`2026-09-16` → `sep '26`). * * Voor de x-as van de grafieken: een volledige datum is tien tekens en past * daar alleen gedraaid, wat bij een lange reeks onleesbaar wordt. De exacte * dag staat in de tooltip. */ export const fmtMaand = (s) => { if (!s) return s; const [y, m] = s.split("-"); return `${MAANDEN[parseInt(m, 10) - 1] ?? m} '${y.slice(2)}`; }; /** Crypto-bedrag formatter (4 decimalen standaard) */ export const fmtCrypto = (n, d = 4) => (parseFloat(n) || 0).toFixed(d); /** * Bedrag in USD of EUR opmaken afhankelijk van geselecteerde valuta. * @param {number} amount * @param {"USD"|"EUR"} currency * @param {number} usdEurRate */ export function fmtMoney(amount, currency = "EUR", usdEurRate = 0.92) { const v = currency === "EUR" ? amount * usdEurRate : amount; return new Intl.NumberFormat("nl-NL", { style: "currency", currency, maximumFractionDigits: 0, }).format(v || 0); }