export function parseAmountInput(value: string | number) {
  if (typeof value === "number") {
    return Number.isFinite(value) && value > 0 ? value : 0;
  }

  const normalized = value
    .trim()
    .replace(/[\s\u00a0\u202f'’_]/g, "")
    .replace(",", ".");
  const amount = Number(normalized);
  return Number.isFinite(amount) && amount > 0 ? amount : 0;
}

export function parseDecimalInput(value: string | number, fallback = 0) {
  if (typeof value === "number") {
    return Number.isFinite(value) ? value : fallback;
  }

  const normalized = value
    .trim()
    .replace(/[\s\u00a0\u202f'’_]/g, "")
    .replace(",", ".");
  const amount = Number(normalized);
  return Number.isFinite(amount) ? amount : fallback;
}

export function formatAmountInput(value: number) {
  if (!Number.isFinite(value)) return "0";
  return new Intl.NumberFormat("fr-FR", { maximumFractionDigits: 6 }).format(value);
}

export function formatAmountInputFixed(value: string | number, digits = 8) {
  return parseAmountInput(value).toFixed(digits);
}
