/// Formaterar ett DateTime-objekt som YYYY-MM-DD.
/// Om [dt] är null returneras [fallback] (default: tom sträng).
String formatDate(DateTime? dt, {String fallback = ''}) {
  if (dt == null) return fallback;
  return '${dt.year}-'
      '${dt.month.toString().padLeft(2, '0')}-'
      '${dt.day.toString().padLeft(2, '0')}';
}

/// Parsar en ISO-datumsträng och formaterar som YYYY-MM-DD.
/// Om strängen inte är parsbar returneras den oförändrad.
String formatDateString(String iso) {
  try {
    return formatDate(DateTime.parse(iso), fallback: iso);
  } catch (_) {
    return iso;
  }
}

/// Formaterar ett tal som heltal om det inte har decimaler, annars med decimaler.
/// Exempel: 2.0 → "2", 1.5 → "1.5"
String formatQuantity(double v) =>
    v == v.roundToDouble() ? v.toStringAsFixed(0) : v.toStringAsFixed(1);
