eksplicit mapping af envs
This commit is contained in:
107
app/lib/theme.dart
Normal file
107
app/lib/theme.dart
Normal file
@@ -0,0 +1,107 @@
|
||||
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,
|
||||
);
|
||||
Reference in New Issue
Block a user