import 'package:flutter/material.dart'; import 'colors.dart'; import 'text_styles.dart'; class AppTheme { static ThemeData lightTheme() { return ThemeData( useMaterial3: true, brightness: Brightness.light, // Primary Colors primaryColor: AppColors.primaryBrown, scaffoldBackgroundColor: AppColors.bgLight, // Color Scheme colorScheme: ColorScheme.light( primary: AppColors.primaryBrown, secondary: AppColors.secondaryBlue, tertiary: AppColors.secondaryGreen, error: AppColors.secondaryRed, onPrimary: AppColors.white, onSecondary: AppColors.white, onTertiary: AppColors.white, onError: AppColors.white, surface: AppColors.bgWhite, onSurface: AppColors.textPrimary, ), // AppBar Theme appBarTheme: AppBarTheme( elevation: 0, backgroundColor: AppColors.primaryBrown, foregroundColor: AppColors.white, centerTitle: false, titleTextStyle: AppTextStyles.appBarTitle, iconTheme: const IconThemeData(color: AppColors.white), ), // Text Theme textTheme: TextTheme( displayLarge: AppTextStyles.displayLarge, displayMedium: AppTextStyles.displayMedium, displaySmall: AppTextStyles.displaySmall, headlineLarge: AppTextStyles.headlineLarge, headlineMedium: AppTextStyles.headlineMedium, headlineSmall: AppTextStyles.headlineSmall, titleLarge: AppTextStyles.titleLarge, titleMedium: AppTextStyles.titleMedium, titleSmall: AppTextStyles.titleSmall, bodyLarge: AppTextStyles.bodyLarge, bodyMedium: AppTextStyles.bodyMedium, bodySmall: AppTextStyles.bodySmall, labelLarge: AppTextStyles.labelLarge, labelMedium: AppTextStyles.labelMedium, labelSmall: AppTextStyles.labelSmall, ), // Button Theme elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( backgroundColor: AppColors.primaryBrown, foregroundColor: AppColors.white, padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 12), textStyle: AppTextStyles.buttonText, elevation: 0, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), ), ), outlinedButtonTheme: OutlinedButtonThemeData( style: OutlinedButton.styleFrom( foregroundColor: AppColors.primaryBrown, padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 12), textStyle: AppTextStyles.buttonText, side: const BorderSide(color: AppColors.primaryBrown, width: 1.5), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), ), ), textButtonTheme: TextButtonThemeData( style: TextButton.styleFrom( foregroundColor: AppColors.primaryBrown, textStyle: AppTextStyles.labelLarge, ), ), // Input Decoration Theme inputDecorationTheme: InputDecorationTheme( filled: true, fillColor: AppColors.bgWhite, contentPadding: const EdgeInsets.symmetric( horizontal: 16, vertical: 12, ), border: OutlineInputBorder( borderRadius: BorderRadius.circular(8), borderSide: const BorderSide(color: AppColors.grey300, width: 1), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(8), borderSide: const BorderSide(color: AppColors.grey300, width: 1), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(8), borderSide: const BorderSide(color: AppColors.primaryBrown, width: 2), ), errorBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(8), borderSide: const BorderSide(color: AppColors.secondaryRed, width: 1), ), focusedErrorBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(8), borderSide: const BorderSide(color: AppColors.secondaryRed, width: 2), ), hintStyle: AppTextStyles.hintText, labelStyle: AppTextStyles.labelMedium, errorStyle: AppTextStyles.errorText, ), // Card Theme cardTheme: CardTheme( elevation: 0, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), color: AppColors.bgWhite, margin: EdgeInsets.zero, ), // Dialog Theme dialogTheme: DialogTheme( elevation: 4, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), backgroundColor: AppColors.bgWhite, ), // Divider Theme dividerTheme: const DividerThemeData( color: AppColors.grey200, thickness: 1, space: 1, ), // Chip Theme chipTheme: ChipThemeData( backgroundColor: AppColors.bgWhite, selectedColor: AppColors.primaryBrown, disabledColor: AppColors.grey200, labelStyle: AppTextStyles.labelMedium, secondaryLabelStyle: AppTextStyles.labelMedium.copyWith( color: AppColors.white, ), padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), showCheckmark: true, ), // Progress Indicator Theme progressIndicatorTheme: const ProgressIndicatorThemeData( color: AppColors.primaryBrown, circularTrackColor: AppColors.grey200, ), // Floating Action Button Theme floatingActionButtonTheme: FloatingActionButtonThemeData( backgroundColor: AppColors.secondaryBlue, foregroundColor: AppColors.white, elevation: 4, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), ), // Bottom App Bar Theme bottomAppBarTheme: const BottomAppBarTheme( elevation: 8, color: AppColors.bgWhite, ), // Bottom Navigation Bar Theme bottomNavigationBarTheme: BottomNavigationBarThemeData( backgroundColor: AppColors.bgWhite, selectedItemColor: AppColors.primaryBrown, unselectedItemColor: AppColors.grey400, type: BottomNavigationBarType.fixed, elevation: 8, selectedLabelStyle: AppTextStyles.labelSmall, unselectedLabelStyle: AppTextStyles.labelSmall, ), // Snack Bar Theme snackBarTheme: SnackBarThemeData( backgroundColor: AppColors.textPrimary, contentTextStyle: AppTextStyles.bodyMedium.copyWith( color: AppColors.white, ), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), behavior: SnackBarBehavior.floating, elevation: 4, ), ); } }