import 'package:flutter/material.dart';

class AppTheme {
  // Couleurs du thème basées sur la maquette Figma
  static const Color primaryColor = Color(0xFF20335E); // Bleu foncé
  static const Color secondaryColor = Color(0xFF9DC7C8); // Bleu clair
  static const Color accentColor = Color(0xFF00E09D); // Vert
  static const Color errorColor = Color(0xFFE41B13); // Rouge
  static const Color warningColor = Color(0xFFF7A278); // Orange
  static const Color backgroundLightColor =
      Color(0xFFF4F5F6); // Gris très clair
  static const Color backgroundDarkColor = Color(0xFF111827);
  static const Color textLightColor = Color(0xFF000000); // Noir
  static const Color textDarkColor = Color(0xFFF9FAFB);

  // Thème clair
  static ThemeData get lightTheme {
    return ThemeData(
      useMaterial3: true,
      brightness: Brightness.light,
      fontFamily: 'Figtree', // Utilisation directe de la police locale
      colorScheme: ColorScheme.light(
        primary: primaryColor,
        secondary: secondaryColor,
        tertiary: accentColor,
        background: backgroundLightColor,
        surface: Colors.white,
        onPrimary: Colors.white,
        onSecondary: Colors.white,
        onBackground: textLightColor,
        onSurface: textLightColor,
      ),
      textTheme: const TextTheme().copyWith(
        displayLarge: const TextStyle(fontFamily: 'Figtree'),
        displayMedium: const TextStyle(fontFamily: 'Figtree'),
        displaySmall: const TextStyle(fontFamily: 'Figtree'),
        headlineLarge: const TextStyle(fontFamily: 'Figtree'),
        headlineMedium: const TextStyle(fontFamily: 'Figtree'),
        headlineSmall: const TextStyle(fontFamily: 'Figtree'),
        titleLarge: const TextStyle(fontFamily: 'Figtree'),
        titleMedium: const TextStyle(fontFamily: 'Figtree'),
        titleSmall: const TextStyle(fontFamily: 'Figtree'),
        bodyLarge: const TextStyle(fontFamily: 'Figtree'),
        bodyMedium: const TextStyle(fontFamily: 'Figtree'),
        bodySmall: const TextStyle(fontFamily: 'Figtree'),
        labelLarge: const TextStyle(fontFamily: 'Figtree'),
        labelMedium: const TextStyle(fontFamily: 'Figtree'),
        labelSmall: const TextStyle(fontFamily: 'Figtree'),
      ),
      appBarTheme: const AppBarTheme(
        backgroundColor: primaryColor,
        foregroundColor: Colors.white,
        elevation: 0,
      ),
      elevatedButtonTheme: ElevatedButtonThemeData(
        style: ElevatedButton.styleFrom(
          backgroundColor: primaryColor,
          foregroundColor: Colors.white,
          padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(50),
          ),
          textStyle: const TextStyle(
            fontFamily: 'Figtree',
            fontSize: 18,
            fontWeight: FontWeight.w500,
          ),
        ),
      ),
      inputDecorationTheme: InputDecorationTheme(
        filled: true,
        fillColor: backgroundLightColor,
        border: OutlineInputBorder(
          borderRadius: BorderRadius.circular(8),
          borderSide: BorderSide(
            color: textLightColor.withOpacity(0.1),
            width: 1,
          ),
        ),
        enabledBorder: OutlineInputBorder(
          borderRadius: BorderRadius.circular(8),
          borderSide: BorderSide(
            color: textLightColor.withOpacity(0.1),
            width: 1,
          ),
        ),
        focusedBorder: OutlineInputBorder(
          borderRadius: BorderRadius.circular(8),
          borderSide: const BorderSide(color: primaryColor, width: 2),
        ),
        contentPadding:
            const EdgeInsets.symmetric(horizontal: 16, vertical: 16),
      ),
      cardTheme: CardTheme(
        elevation: 2,
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(16),
        ),
      ),
    );
  }

  // Thème sombre
  static ThemeData get darkTheme {
    return ThemeData(
      useMaterial3: true,
      brightness: Brightness.dark,
      fontFamily: 'Figtree', // Utilisation directe de la police locale
      colorScheme: ColorScheme.dark(
        primary: primaryColor,
        secondary: secondaryColor,
        tertiary: accentColor,
        background: backgroundDarkColor,
        surface: const Color(0xFF1F2937),
        onPrimary: Colors.white,
        onSecondary: Colors.white,
        onBackground: textDarkColor,
        onSurface: textDarkColor,
      ),
      textTheme: const TextTheme().copyWith(
        displayLarge: const TextStyle(fontFamily: 'Figtree'),
        displayMedium: const TextStyle(fontFamily: 'Figtree'),
        displaySmall: const TextStyle(fontFamily: 'Figtree'),
        headlineLarge: const TextStyle(fontFamily: 'Figtree'),
        headlineMedium: const TextStyle(fontFamily: 'Figtree'),
        headlineSmall: const TextStyle(fontFamily: 'Figtree'),
        titleLarge: const TextStyle(fontFamily: 'Figtree'),
        titleMedium: const TextStyle(fontFamily: 'Figtree'),
        titleSmall: const TextStyle(fontFamily: 'Figtree'),
        bodyLarge: const TextStyle(fontFamily: 'Figtree'),
        bodyMedium: const TextStyle(fontFamily: 'Figtree'),
        bodySmall: const TextStyle(fontFamily: 'Figtree'),
        labelLarge: const TextStyle(fontFamily: 'Figtree'),
        labelMedium: const TextStyle(fontFamily: 'Figtree'),
        labelSmall: const TextStyle(fontFamily: 'Figtree'),
      ),
      appBarTheme: const AppBarTheme(
        backgroundColor: Color(0xFF1F2937),
        foregroundColor: Colors.white,
        elevation: 0,
      ),
      elevatedButtonTheme: ElevatedButtonThemeData(
        style: ElevatedButton.styleFrom(
          backgroundColor: primaryColor,
          foregroundColor: Colors.white,
          padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(50),
          ),
          textStyle: const TextStyle(
            fontFamily: 'Figtree',
            fontSize: 18,
            fontWeight: FontWeight.w500,
          ),
        ),
      ),
      inputDecorationTheme: InputDecorationTheme(
        filled: true,
        fillColor: const Color(0xFF374151),
        border: OutlineInputBorder(
          borderRadius: BorderRadius.circular(8),
          borderSide: BorderSide(
            color: textDarkColor.withOpacity(0.1),
            width: 1,
          ),
        ),
        enabledBorder: OutlineInputBorder(
          borderRadius: BorderRadius.circular(8),
          borderSide: BorderSide(
            color: textDarkColor.withOpacity(0.1),
            width: 1,
          ),
        ),
        focusedBorder: OutlineInputBorder(
          borderRadius: BorderRadius.circular(8),
          borderSide: const BorderSide(color: primaryColor, width: 2),
        ),
        contentPadding:
            const EdgeInsets.symmetric(horizontal: 16, vertical: 16),
      ),
      cardTheme: CardTheme(
        elevation: 4,
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(16),
        ),
        color: const Color(0xFF1F2937),
      ),
    );
  }
}
