Spaces:
Running
Running
| import 'package:flutter/material.dart'; | |
| class FinanjoTheme { | |
| // Brand Colors - Tuned to be cleaner and slightly deeper | |
| static const Color primaryPurple = Color(0xFF6C43D5); | |
| static const Color lightPurple = Color(0xFFE2D6F5); | |
| static const Color deepPurple = Color(0xFF33157A); | |
| static const Color backgroundLight = Color(0xFFFAF9FC); | |
| static const Color cardWhite = Colors.white; | |
| static const Color textDark = Color(0xFF141029); | |
| static const Color textGrey = Color(0xFF6B6580); | |
| static const Color successGreen = Color(0xFF00C48C); | |
| static const Color cautionYellow = Color(0xFFFFB800); | |
| // Gradient Background - softer, more majestic | |
| static const LinearGradient premiumGradient = LinearGradient( | |
| begin: Alignment.topLeft, | |
| end: Alignment.bottomRight, | |
| colors: [ | |
| Color(0xFFEDE6FB), // Very light soft purple | |
| Color(0xFFFFFFFF), // Pure white | |
| Color(0xFFE8DEFA), // Very light soft purple | |
| ], | |
| stops: [0.0, 0.5, 1.0], | |
| ); | |
| static const LinearGradient solidPremiumGradient = LinearGradient( | |
| begin: Alignment.topCenter, | |
| end: Alignment.bottomCenter, | |
| colors: [ | |
| Color(0xFF8B6BCE), | |
| Color(0xFF6C43D5), | |
| ], | |
| ); | |
| // Box Decorations - ultra premium layered shadows | |
| static BoxDecoration cardDecoration = BoxDecoration( | |
| color: cardWhite, | |
| borderRadius: BorderRadius.circular(32), | |
| boxShadow: [ | |
| BoxShadow( | |
| color: primaryPurple.withOpacity(0.06), | |
| blurRadius: 35, | |
| offset: const Offset(0, 20), | |
| spreadRadius: 2, | |
| ), | |
| BoxShadow( | |
| color: Colors.black.withOpacity(0.02), | |
| blurRadius: 10, | |
| offset: const Offset(0, 5), | |
| ), | |
| ], | |
| ); | |
| static BoxDecoration glassDecoration = BoxDecoration( | |
| color: Colors.white.withOpacity(0.85), | |
| borderRadius: BorderRadius.circular(32), | |
| border: Border.all(color: Colors.white.withOpacity(0.4), width: 1.5), | |
| boxShadow: [ | |
| BoxShadow( | |
| color: deepPurple.withOpacity(0.04), | |
| blurRadius: 40, | |
| offset: const Offset(0, 15), | |
| ), | |
| ], | |
| ); | |
| // Button Styles - more distinct "pill" feel and heft | |
| static ButtonStyle primaryButtonStyle = ElevatedButton.styleFrom( | |
| backgroundColor: primaryPurple, | |
| foregroundColor: Colors.white, | |
| elevation: 0, | |
| shape: RoundedRectangleBorder( | |
| borderRadius: BorderRadius.circular(24), | |
| ), | |
| padding: const EdgeInsets.symmetric(horizontal: 40, vertical: 18), | |
| textStyle: const TextStyle( | |
| fontSize: 17, | |
| fontWeight: FontWeight.w800, | |
| letterSpacing: 0.3, | |
| ), | |
| ); | |
| static ButtonStyle secondaryButtonStyle = OutlinedButton.styleFrom( | |
| foregroundColor: primaryPurple, | |
| side: const BorderSide(color: primaryPurple, width: 2), | |
| shape: RoundedRectangleBorder( | |
| borderRadius: BorderRadius.circular(24), | |
| ), | |
| padding: const EdgeInsets.symmetric(horizontal: 40, vertical: 18), | |
| textStyle: const TextStyle( | |
| fontSize: 17, | |
| fontWeight: FontWeight.w800, | |
| ), | |
| ); | |
| // Text Styles - cleaner layouts | |
| static const TextStyle headingStyle = TextStyle( | |
| color: textDark, | |
| fontSize: 34, | |
| fontWeight: FontWeight.w900, | |
| height: 1.15, | |
| letterSpacing: -0.5, | |
| ); | |
| static const TextStyle subHeadingStyle = TextStyle( | |
| color: textGrey, | |
| fontSize: 16, | |
| fontWeight: FontWeight.w600, | |
| height: 1.4, | |
| ); | |
| static const TextStyle bodyStyle = TextStyle( | |
| color: textGrey, | |
| fontSize: 15, | |
| fontWeight: FontWeight.w500, | |
| height: 1.5, | |
| ); | |
| // Overall App Theme | |
| static ThemeData get themeData { | |
| return ThemeData( | |
| primaryColor: primaryPurple, | |
| scaffoldBackgroundColor: backgroundLight, | |
| colorScheme: ColorScheme.fromSeed(seedColor: primaryPurple), | |
| fontFamily: 'Roboto', // Safe universal bet for clean sans-serif | |
| appBarTheme: const AppBarTheme( | |
| backgroundColor: Colors.transparent, | |
| elevation: 0, | |
| centerTitle: true, | |
| iconTheme: IconThemeData(color: deepPurple), | |
| titleTextStyle: TextStyle( | |
| color: textDark, | |
| fontSize: 18, | |
| fontWeight: FontWeight.w800, | |
| ), | |
| ), | |
| elevatedButtonTheme: ElevatedButtonThemeData(style: primaryButtonStyle), | |
| outlinedButtonTheme: OutlinedButtonThemeData(style: secondaryButtonStyle), | |
| useMaterial3: true, | |
| ); | |
| } | |
| } | |