import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import '../../core/theme/app_colors.dart'; /// XtremFlow Mobile Theme /// /// Adapted from AppTheme for touch-first screens. /// Uses the same Cyber-Cinematic Glass design system. class MobileTheme { MobileTheme._(); // ============ SPACING (8px rhythmic system) ============ static const double spacingXs = 4.0; static const double spacingSm = 8.0; static const double spacingMd = 16.0; static const double spacingLg = 24.0; static const double spacingXl = 32.0; // ============ RADIUS ============ static const double radiusSm = 8.0; static const double radiusMd = 12.0; static const double radiusLg = 16.0; static const double radiusXl = 20.0; // ============ DARK THEME (Mobile Main) ============ static ThemeData get darkTheme { final baseTheme = ThemeData.dark(useMaterial3: true); return baseTheme.copyWith( colorScheme: AppColors.darkColorScheme, scaffoldBackgroundColor: AppColors.background, // Typography: Scaled down for mobile textTheme: TextTheme( displayLarge: GoogleFonts.spaceGrotesk( fontSize: 32, fontWeight: FontWeight.w700, letterSpacing: -0.02, height: 1.1, color: AppColors.onSurface, ), displayMedium: GoogleFonts.spaceGrotesk( fontSize: 28, fontWeight: FontWeight.w600, letterSpacing: -0.01, height: 1.2, color: AppColors.onSurface, ), displaySmall: GoogleFonts.spaceGrotesk( fontSize: 22, fontWeight: FontWeight.w500, height: 1.3, color: AppColors.onSurface, ), headlineMedium: GoogleFonts.spaceGrotesk( fontSize: 20, fontWeight: FontWeight.w500, height: 1.3, color: AppColors.onSurface, ), titleLarge: GoogleFonts.spaceGrotesk( fontSize: 18, fontWeight: FontWeight.w600, color: AppColors.onSurface, ), titleMedium: GoogleFonts.inter( fontSize: 16, fontWeight: FontWeight.w600, color: AppColors.onSurface, ), bodyLarge: GoogleFonts.inter( fontSize: 16, fontWeight: FontWeight.w400, height: 1.5, color: AppColors.onSurfaceVariant, ), bodyMedium: GoogleFonts.inter( fontSize: 14, fontWeight: FontWeight.w400, height: 1.5, color: AppColors.onSurfaceVariant, ), labelLarge: GoogleFonts.inter( fontSize: 14, fontWeight: FontWeight.w600, letterSpacing: 0.05, height: 1.2, color: AppColors.onSurface, ), labelMedium: GoogleFonts.inter( fontSize: 12, fontWeight: FontWeight.w500, letterSpacing: 0.02, height: 1.2, color: AppColors.onSurface, ), labelSmall: GoogleFonts.inter( fontSize: 11, fontWeight: FontWeight.w500, letterSpacing: 0.02, height: 1.2, color: AppColors.onSurfaceVariant, ), ), // AppBar: Transparent / Glass appBarTheme: AppBarTheme( backgroundColor: Colors.transparent, foregroundColor: AppColors.onSurface, elevation: 0, centerTitle: true, scrolledUnderElevation: 0, titleTextStyle: GoogleFonts.spaceGrotesk( fontSize: 18, fontWeight: FontWeight.w600, color: AppColors.onSurface, ), ), // Bottom Navigation Bar bottomNavigationBarTheme: BottomNavigationBarThemeData( backgroundColor: AppColors.surfaceContainerLow.withOpacity(0.9), selectedItemColor: AppColors.onSurface, unselectedItemColor: AppColors.outline, selectedLabelStyle: GoogleFonts.inter( fontSize: 11, fontWeight: FontWeight.w600, ), unselectedLabelStyle: GoogleFonts.inter( fontSize: 11, fontWeight: FontWeight.w500, ), type: BottomNavigationBarType.fixed, elevation: 0, ), // Inputs inputDecorationTheme: InputDecorationTheme( filled: true, fillColor: AppColors.surfaceContainerLow, contentPadding: const EdgeInsets.symmetric( horizontal: spacingMd, vertical: spacingMd, ), border: OutlineInputBorder( borderRadius: BorderRadius.circular(radiusMd), borderSide: BorderSide.none, ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(radiusMd), borderSide: const BorderSide(color: AppColors.outlineVariant, width: 1), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(radiusMd), borderSide: const BorderSide( color: AppColors.primaryContainer, width: 2, ), ), hintStyle: GoogleFonts.inter( color: AppColors.outline, fontSize: 14, ), ), // Buttons filledButtonTheme: FilledButtonThemeData( style: FilledButton.styleFrom( backgroundColor: AppColors.primaryContainer, foregroundColor: AppColors.onPrimaryContainer, elevation: 0, padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(radiusMd), ), textStyle: GoogleFonts.inter( fontWeight: FontWeight.w600, fontSize: 14, ), ), ), // Cards cardTheme: CardThemeData( color: AppColors.glassLevel1Bg, elevation: 0, margin: EdgeInsets.zero, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(radiusLg), side: const BorderSide(color: AppColors.glassLevel1Border, width: 1), ), ), ); } }