recipe-manager/mobile/lib/core/constants/app_theme.dart

90 lines
3.1 KiB
Dart

import 'package:flutter/material.dart';
class AppTheme {
// Brand Palette matching ForkFolio Web
static const Color primary = Color(0xFFE06B3A);
static const Color primaryDark = Color(0xFFC75526);
static const Color secondary = Color(0xFF10B981);
static const Color background = Color(0xFF0F131B);
static const Color surface = Color(0xFF1A212D);
static const Color surfaceElevated = Color(0xFF242C3C);
static const Color border = Color(0xFF2D3748);
static const Color textMain = Color(0xFFF1F5F9);
static const Color textMuted = Color(0xFF94A3B8);
static const Color textDisabled = Color(0xFF64748B);
static const Color danger = Color(0xFFEF4444);
static ThemeData get darkTheme {
return ThemeData(
brightness: Brightness.dark,
scaffoldBackgroundColor: background,
primaryColor: primary,
colorScheme: const ColorScheme.dark(
primary: primary,
secondary: secondary,
surface: surface,
error: danger,
),
appBarTheme: const AppBarTheme(
backgroundColor: surface,
elevation: 0,
centerTitle: false,
titleTextStyle: TextStyle(
color: textMain,
fontSize: 18,
fontWeight: FontWeight.w700,
letterSpacing: -0.3,
),
),
cardTheme: CardThemeData(
color: surface,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(14),
side: const BorderSide(color: border, width: 1),
),
elevation: 2,
),
inputDecorationTheme: InputDecorationTheme(
filled: true,
fillColor: surfaceElevated,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: const BorderSide(color: border),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: const BorderSide(color: border),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: const BorderSide(color: primary, width: 1.5),
),
labelStyle: const TextStyle(color: textMuted, fontSize: 14),
hintStyle: const TextStyle(color: textDisabled, fontSize: 14),
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
backgroundColor: primary,
foregroundColor: Colors.white,
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14),
textStyle: const TextStyle(fontSize: 15, fontWeight: FontWeight.w600),
),
),
outlinedButtonTheme: OutlinedButtonThemeData(
style: OutlinedButton.styleFrom(
foregroundColor: textMain,
side: const BorderSide(color: border),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14),
),
),
);
}
}