import 'package:flutter/material.dart';

/// Ein Service für die Verwaltung der App-Themes.
///
/// Diese Klasse stellt Methoden bereit,
/// um das helle und dunkle Theme der App zu definieren.
class ThemeService {
  /// Die Hauptfarbe der App, die als Basis für das Farbschema verwendet wird.
  /// Ein helles Blau mit dem Hex-Wert #50A7FA.
  static const Color color = Color(0xFF50A7FA);

  /// Erstellt und gibt das helle Theme der App zurück.
  static ThemeData getLightTheme() => ThemeData(
    brightness: Brightness.light,
    colorScheme: ColorScheme.fromSeed(seedColor: color),
  );

  /// Erstellt und gibt das dunkle Theme der App zurück.
  static ThemeData getDarkTheme() => ThemeData(
    brightness: Brightness.dark,
    colorScheme: ColorScheme.fromSeed(
      seedColor: color,
      brightness: Brightness.dark,
    ),
  );

  /// Gibt die "Erfolgreich"-Farbe des Farbschemas zurück
  static Color getSuccessColor({required final Brightness brightness}) {
    final hsl = HSLColor.fromColor(color);

    const double greenHue = 120;

    final double saturation = (hsl.saturation * 0.7).clamp(0.0, 1.0);
    final double lightness = brightness == Brightness.dark
        ? (hsl.lightness * 0.4).clamp(0.0, 1.0)
        : (hsl.lightness * 1.2).clamp(0.0, 1.0);

    final successHsl = HSLColor.fromAHSL(
      hsl.alpha,
      greenHue,
      saturation,
      lightness,
    );

    return successHsl.toColor();
  }
}
