import 'package:flutter/material.dart'; class AppTheme { static ThemeData get darkTheme { return ThemeData( useMaterial3: true, brightness: Brightness.dark, scaffoldBackgroundColor: Colors.black, canvasColor: Colors.black, cardColor: const Color(0xFF121212), primaryColor: Colors.blue, colorScheme: const ColorScheme.dark( primary: Colors.blue, secondary: Colors.blueAccent, surface: Color(0xFF121212), onSurface: Colors.white, ), appBarTheme: const AppBarTheme( backgroundColor: Colors.black, elevation: 0, titleTextStyle: TextStyle( color: Colors.white, fontSize: 20, fontWeight: FontWeight.bold, ), iconTheme: IconThemeData(color: Colors.white), ), bottomNavigationBarTheme: const BottomNavigationBarThemeData( backgroundColor: Color(0xFF121212), selectedItemColor: Colors.blue, unselectedItemColor: Colors.grey, type: BottomNavigationBarType.fixed, ), cardTheme: CardThemeData( color: const Color(0xFF1E1E1E), elevation: 2, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), ), textTheme: const TextTheme( headlineLarge: TextStyle( color: Colors.white, fontSize: 32, fontWeight: FontWeight.bold), headlineMedium: TextStyle( color: Colors.white, fontSize: 28, fontWeight: FontWeight.bold), headlineSmall: TextStyle( color: Colors.white, fontSize: 24, fontWeight: FontWeight.bold), titleLarge: TextStyle( color: Colors.white, fontSize: 20, fontWeight: FontWeight.w600), titleMedium: TextStyle( color: Colors.white, fontSize: 18, fontWeight: FontWeight.w500), titleSmall: TextStyle( color: Colors.white, fontSize: 16, fontWeight: FontWeight.w500), bodyLarge: TextStyle(color: Colors.white, fontSize: 16), bodyMedium: TextStyle(color: Colors.white70, fontSize: 14), bodySmall: TextStyle(color: Colors.white60, fontSize: 12), labelLarge: TextStyle( color: Colors.white, fontSize: 14, fontWeight: FontWeight.w500), labelMedium: TextStyle(color: Colors.white70, fontSize: 12), labelSmall: TextStyle(color: Colors.white60, fontSize: 10), ), iconTheme: const IconThemeData(color: Colors.white), dividerTheme: const DividerThemeData( color: Color(0xFF2A2A2A), thickness: 1, ), switchTheme: SwitchThemeData( thumbColor: WidgetStateProperty.resolveWith( (Set states) { if (states.contains(WidgetState.selected)) { return Colors.blue; } return Colors.grey; }), trackColor: WidgetStateProperty.resolveWith( (Set states) { if (states.contains(WidgetState.selected)) { return Colors.blue.withOpacity(0.5); } return Colors.grey.withOpacity(0.5); }), ), dialogTheme: DialogThemeData( backgroundColor: const Color(0xFF1E1E1E), elevation: 8, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), titleTextStyle: const TextStyle( color: Colors.white, fontSize: 20, fontWeight: FontWeight.bold), contentTextStyle: const TextStyle(color: Colors.white70, fontSize: 16), ), floatingActionButtonTheme: const FloatingActionButtonThemeData( backgroundColor: Colors.blue, foregroundColor: Colors.white, ), ); } static const Color primaryBlack = Colors.black; static const Color secondaryBlack = Color(0xFF121212); static const Color tertiaryBlack = Color(0xFF1E1E1E); static const Color dividerColor = Color(0xFF2A2A2A); static const Color textPrimary = Colors.white; static const Color textSecondary = Color(0xFFB3B3B3); static const Color textTertiary = Color(0xFF808080); static const Color accentBlue = Colors.blue; static const Color accentBlueLight = Color(0xFF64B5F6); static const Color errorRed = Color(0xFFCF6679); static const Color successGreen = Color(0xFF4CAF50); static const Color warningOrange = Color(0xFFFF9800); static const TextStyle titleLarge = TextStyle( fontSize: 20, fontWeight: FontWeight.bold, color: textPrimary, ); static const TextStyle titleMedium = TextStyle( fontSize: 18, fontWeight: FontWeight.w600, color: textPrimary, ); static const TextStyle bodyLarge = TextStyle( fontSize: 16, color: textPrimary, ); static const TextStyle bodyMedium = TextStyle( fontSize: 14, color: textSecondary, ); static const TextStyle caption = TextStyle( fontSize: 12, color: textTertiary, ); static const TextStyle labelLarge = TextStyle( fontSize: 14, fontWeight: FontWeight.w500, color: textPrimary, ); static const double spacingXS = 4.0; static const double spacingS = 8.0; static const double spacingM = 16.0; static const double spacingL = 24.0; static const double spacingXL = 32.0; static const double spacingXXL = 48.0; static const double radiusS = 4.0; static const double radiusM = 8.0; static const double radiusL = 12.0; static const double radiusXL = 16.0; static List get cardShadow => [ BoxShadow( color: Colors.black.withOpacity(0.3), blurRadius: 8, offset: const Offset(0, 2), ), ]; static List get buttonShadow => [ BoxShadow( color: Colors.black.withOpacity(0.2), blurRadius: 4, offset: const Offset(0, 2), ), ]; }