prem / lib /theme /finanjo_theme.dart
Nitishkumar-ai's picture
Deploy source code to Hugging Face without binaries
c25dcd7
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,
);
}
}