72 lines
2.1 KiB
Dart
72 lines
2.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'app_colors.dart';
|
|
|
|
class AppTheme {
|
|
static ThemeData get lightTheme {
|
|
return ThemeData(
|
|
useMaterial3: true,
|
|
scaffoldBackgroundColor: AppColors.bgBase,
|
|
primaryColor: AppColors.primaryIndigo,
|
|
colorScheme: ColorScheme.fromSeed(
|
|
seedColor: AppColors.primaryIndigo,
|
|
primary: AppColors.primaryIndigo,
|
|
secondary: AppColors.primaryPurple,
|
|
surface: AppColors.bgBase,
|
|
background: AppColors.bgBase,
|
|
),
|
|
// We will rely on system fonts for now, to replicate 'Inter' look
|
|
// we can adjust weights later.
|
|
fontFamilyFallback: const [
|
|
'Inter',
|
|
'Roboto',
|
|
'PingFang SC',
|
|
'Helvetica Neue',
|
|
],
|
|
|
|
textTheme: const TextTheme(
|
|
// h1 / Large Headings
|
|
displayLarge: TextStyle(
|
|
color: AppColors.textPrimary,
|
|
fontSize: 32,
|
|
fontWeight: FontWeight.w700, // Bold
|
|
letterSpacing: -0.5,
|
|
),
|
|
// h2 / Subheadings
|
|
displayMedium: TextStyle(
|
|
color: AppColors.textPrimary,
|
|
fontSize: 24,
|
|
fontWeight: FontWeight.w600, // Semi-bold
|
|
),
|
|
// Body Text
|
|
bodyLarge: TextStyle(
|
|
color: AppColors.textPrimary,
|
|
fontSize: 16,
|
|
fontWeight: FontWeight.w400, // Normal
|
|
height: 1.5,
|
|
),
|
|
bodyMedium: TextStyle(
|
|
color: AppColors.textSecondary,
|
|
fontSize: 14,
|
|
fontWeight: FontWeight.w400,
|
|
),
|
|
// Small captions
|
|
bodySmall: TextStyle(color: AppColors.textLight, fontSize: 12),
|
|
// Button Text
|
|
labelLarge: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 16,
|
|
fontWeight: FontWeight.w600,
|
|
letterSpacing: 0.5,
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
// Animation Curves from CSS
|
|
// --ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
|
|
static const Curve easeSmooth = Cubic(0.4, 0, 0.2, 1);
|
|
|
|
// --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
static const Curve easeBounce = Cubic(0.34, 1.56, 0.64, 1);
|
|
}
|