/**
 * NumberDisplay
 * 
 * Deterministic number formatting for display.
 * Avoids Intl and toLocaleString to prevent SSR/hydration mismatches.
 */

export class NumberDisplay {
  /**
   * Formats a number with thousands separators (commas).
   * Example: 1234567 -> "1,234,567"
   */
  static format(value: number): string {
    const parts = value.toString().split('.');
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
    return parts.join('.');
  }

  /**
   * Formats a number in compact form (e.g., 1.2k, 1.5M).
   */
  static formatCompact(value: number): string {
    if (value >= 1000000) {
      return `${(value / 1000000).toFixed(1)}M`;
    }
    if (value >= 1000) {
      return `${(value / 1000).toFixed(1)}k`;
    }
    return value.toString();
  }
}
