import 'dart:developer';

import 'package:flutter/material.dart';
import 'theme_type.dart';
import 'package:google_fonts/google_fonts.dart';

class AppThemes {
  static ThemeData getLightTheme(ThemeType type) {
    final Color seedColor = _getSeedColor(type);
    final colorScheme = ColorScheme.fromSeed(
      seedColor: seedColor,
      brightness: Brightness.light,
    );
    return ThemeData.from(
      colorScheme: colorScheme,
      useMaterial3: true,
      textTheme: GoogleFonts.rubikTextTheme(),
    ).copyWith(
        appBarTheme: AppBarTheme(
      backgroundColor: const Color(0xFF01A04C),
      titleTextStyle: TextStyle(
        color: colorScheme.onPrimary,
        fontWeight: FontWeight.w700,
        fontSize: 20,
      ),
      iconTheme: IconThemeData(color: colorScheme.onPrimary),
      actionsIconTheme: IconThemeData(color: colorScheme.onPrimary),
    ));
  }

  static ThemeData getDarkTheme(ThemeType type) {
    final Color seedColor = _getSeedColor(type);
    log(seedColor.toString());
    final colorScheme = ColorScheme.fromSeed(
      seedColor: seedColor,
      brightness: Brightness.dark,
    );

    return ThemeData.from(
      colorScheme: colorScheme,
      useMaterial3: true,
      textTheme: GoogleFonts.rubikTextTheme(
        ThemeData(brightness: Brightness.dark).textTheme,
      ),
    ).copyWith(
        appBarTheme: AppBarTheme(
      backgroundColor: const Color(0xFF01A04C),
      titleTextStyle: TextStyle(
        color: colorScheme.onPrimary,
        fontWeight: FontWeight.w700,
        fontSize: 20,
      ),
      iconTheme: IconThemeData(color: colorScheme.onPrimary),
      actionsIconTheme: IconThemeData(color: colorScheme.onPrimary),
    ));
  }

  static Color _getSeedColor(ThemeType type) {
    switch (type) {
      case ThemeType.green:
        return Colors.green;
      case ThemeType.orange:
        return Colors.orange;
      case ThemeType.blue:
        return Colors.blue;
      case ThemeType.violet:
        return Colors.deepPurple;
      case ThemeType.yellow:
        return Colors.yellow;
    }
  }
}
