/**
 * Formats integer counts compactly so large numbers (1k+, 1M+) never overflow UI badges or cards.
 * - 0..999 -> "0".."999"
 * - 1,000..999,999 -> "1k", "1.2k", "12.5k", "125k"
 * - 1,000,000+ -> "1M", "1.2M"
 */
export function formatCount(value: number | null | undefined): string {
  const n = Number(value ?? 0);
  if (!Number.isFinite(n)) return '0';
  const abs = Math.abs(n);
  if (abs < 1000) return String(Math.round(n));
  if (abs < 1_000_000) {
    const k = n / 1000;
    const formatted = abs >= 100_000 ? Math.round(k).toString() : k.toFixed(1).replace(/\.0$/, '');
    return `${formatted}k`;
  }
  const m = n / 1_000_000;
  const formatted = abs >= 100_000_000 ? Math.round(m).toString() : m.toFixed(1).replace(/\.0$/, '');
  return `${formatted}M`;
}
