108 lines
3.2 KiB
Dart
108 lines
3.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
// SigHej color palette — "Sunny Beach Day"
|
|
const _charcoalBlue = Color(0xFF264653); // dark surface / text
|
|
const _verdigris = Color(0xFF2A9D8F); // primary (teal-green)
|
|
const _jasmine = Color(0xFFE9C46A); // tertiary / accents
|
|
const _sandyBrown = Color(0xFFF4A261); // secondary
|
|
const _burntPeach = Color(0xFFE76F51); // error / CTA accent
|
|
|
|
ThemeData buildTheme({bool dark = false}) {
|
|
final scheme = dark ? _darkScheme : _lightScheme;
|
|
|
|
return ThemeData(
|
|
colorScheme: scheme,
|
|
useMaterial3: true,
|
|
|
|
// Slightly rounded cards
|
|
cardTheme: const CardThemeData(
|
|
elevation: 2,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.all(Radius.circular(16)),
|
|
),
|
|
),
|
|
|
|
// Filled buttons use primary
|
|
filledButtonTheme: FilledButtonThemeData(
|
|
style: FilledButton.styleFrom(
|
|
shape: const RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.all(Radius.circular(12)),
|
|
),
|
|
),
|
|
),
|
|
|
|
// Chips use secondary container for selected state
|
|
chipTheme: ChipThemeData(
|
|
selectedColor: scheme.secondaryContainer,
|
|
labelStyle: TextStyle(color: scheme.onSurface),
|
|
),
|
|
);
|
|
}
|
|
|
|
const _lightScheme = ColorScheme(
|
|
brightness: Brightness.light,
|
|
// Primary — Verdigris
|
|
primary: _verdigris,
|
|
onPrimary: Colors.white,
|
|
primaryContainer: Color(0xFFB2DFDB),
|
|
onPrimaryContainer: _charcoalBlue,
|
|
// Secondary — Sandy Brown
|
|
secondary: _sandyBrown,
|
|
onSecondary: Colors.white,
|
|
secondaryContainer: Color(0xFFFFE0C8),
|
|
onSecondaryContainer: _charcoalBlue,
|
|
// Tertiary — Jasmine
|
|
tertiary: _jasmine,
|
|
onTertiary: _charcoalBlue,
|
|
tertiaryContainer: Color(0xFFFFF3C4),
|
|
onTertiaryContainer: _charcoalBlue,
|
|
// Error — Burnt Peach
|
|
error: _burntPeach,
|
|
onError: Colors.white,
|
|
errorContainer: Color(0xFFFFDAD6),
|
|
onErrorContainer: Color(0xFF6B0000),
|
|
// Surface — warm off-white
|
|
surface: Color(0xFFFAF8F5),
|
|
onSurface: _charcoalBlue,
|
|
surfaceContainerHighest: Color(0xFFEDE9E3),
|
|
onSurfaceVariant: Color(0xFF4A6572),
|
|
outline: Color(0xFF8EA7B0),
|
|
outlineVariant: Color(0xFFCDD8DC),
|
|
shadow: Colors.black,
|
|
scrim: Colors.black,
|
|
inverseSurface: _charcoalBlue,
|
|
onInverseSurface: Colors.white,
|
|
inversePrimary: Color(0xFF80CBC4),
|
|
);
|
|
|
|
const _darkScheme = ColorScheme(
|
|
brightness: Brightness.dark,
|
|
primary: Color(0xFF80CBC4),
|
|
onPrimary: Color(0xFF00363A),
|
|
primaryContainer: _verdigris,
|
|
onPrimaryContainer: Color(0xFFB2DFDB),
|
|
secondary: Color(0xFFFFCC80),
|
|
onSecondary: Color(0xFF3E2000),
|
|
secondaryContainer: Color(0xFF7A3800),
|
|
onSecondaryContainer: Color(0xFFFFDDB4),
|
|
tertiary: _jasmine,
|
|
onTertiary: Color(0xFF3C2800),
|
|
tertiaryContainer: Color(0xFF564000),
|
|
onTertiaryContainer: Color(0xFFFFF3C4),
|
|
error: Color(0xFFFFB4AB),
|
|
onError: Color(0xFF6B0000),
|
|
errorContainer: _burntPeach,
|
|
onErrorContainer: Colors.white,
|
|
surface: Color(0xFF1A2A2E), // deep Charcoal Blue derived
|
|
onSurface: Color(0xFFE0EAED),
|
|
surfaceContainerHighest: Color(0xFF263238),
|
|
onSurfaceVariant: Color(0xFFB0C4CB),
|
|
outline: Color(0xFF607D8B),
|
|
outlineVariant: Color(0xFF37474F),
|
|
shadow: Colors.black,
|
|
scrim: Colors.black,
|
|
inverseSurface: Color(0xFFE0EAED),
|
|
onInverseSurface: _charcoalBlue,
|
|
inversePrimary: _verdigris,
|
|
);
|