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

class AppTheme {
  static const Color posimaiBlue = Color(0xFF376495);

  // Padding Constants
  static const double spacingEmpty = 0.0;
  static const double spacingTiny = 4.0;
  static const double spacingSmall = 8.0;
  static const double spacingMedium = 16.0;
  static const double spacingLarge = 24.0;
  static const double spacingXLarge = 32.0;


  static ThemeData createTheme(String fontPreference, Brightness brightness) {
    final textTheme = (fontPreference == 'serif')
        ? GoogleFonts.notoSerifJpTextTheme() // Mincho
        : (fontPreference == 'digital')
            ? GoogleFonts.dotGothic16TextTheme() // Digital/Retro
            : GoogleFonts.notoSansJpTextTheme(); // Gothic/Sans (Default)

    final baseColorScheme = ColorScheme.fromSeed(
      seedColor: posimaiBlue,
      brightness: brightness,
    );

    // Dark Mode Refinements for Posimai Blue
    final colorScheme = (brightness == Brightness.dark)
        ? baseColorScheme.copyWith(
            primary: const Color(0xFF8AB4F8), // Lighter blue for dark mode visibility
            onPrimary: Colors.black,
            surface: const Color(0xFF1E1E1E), 
          )
        : baseColorScheme;

    return ThemeData(
      useMaterial3: true,
      colorScheme: colorScheme,
      textTheme: textTheme.apply(
        bodyColor: (brightness == Brightness.dark) ? Colors.white : Colors.black87,
        displayColor: (brightness == Brightness.dark) ? Colors.white : Colors.black87,
      ).copyWith(
        // Ensure headers/labels are visible
        titleMedium: TextStyle(color: (brightness == Brightness.dark) ? Colors.white : Colors.black87),
        titleSmall: TextStyle(color: (brightness == Brightness.dark) ? Colors.white70 : Colors.black54),
        labelLarge: TextStyle(color: (brightness == Brightness.dark) ? Colors.white : Colors.black87),
      ),
      scaffoldBackgroundColor: (brightness == Brightness.dark) 
          ? const Color(0xFF121212) 
          : Colors.white,

      cardTheme: CardThemeData(
        elevation: 0,
        margin: EdgeInsets.zero,
        color: (brightness == Brightness.dark) ? const Color(0xFF1E1E1E) : Colors.white,
      ),
      
      appBarTheme: AppBarTheme(
        backgroundColor: (brightness == Brightness.dark) ? const Color(0xFF121212) : null,
        foregroundColor: (brightness == Brightness.dark) ? Colors.white : Colors.black87,
        actionsIconTheme: IconThemeData(
          color: (brightness == Brightness.dark) ? Colors.white : Colors.black87,
        ),
        iconTheme: IconThemeData(
          color: (brightness == Brightness.dark) ? Colors.white : Colors.black87,
        ),
      ),
      
      iconTheme: IconThemeData(
        color: (brightness == Brightness.dark) ? Colors.white : const Color(0xFF376495),
      ),
      
      /*
      dialogTheme: DialogTheme(
        backgroundColor: (brightness == Brightness.dark) ? const Color(0xFF2C2C2C) : Colors.white,
        titleTextStyle: TextStyle(color: (brightness == Brightness.dark) ? Colors.white : Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
        contentTextStyle: TextStyle(color: (brightness == Brightness.dark) ? Colors.white : Colors.black, fontSize: 16),
      ),
      */
      
      navigationBarTheme: NavigationBarThemeData(
        backgroundColor: (brightness == Brightness.dark) ? const Color(0xFF1E1E1E) : null,
        indicatorColor: (brightness == Brightness.dark) 
            ? const Color(0xFF376495) 
            : const Color(0xFF376495).withValues(alpha: 0.25),
        // Removed custom MaterialStateProperty text styles to avoid potential type issues for now.
        // Default text style usually adapts to brightness if colorScheme.onSurface/onPrimary is set correctly.
      ),
    );
  }
}
