eksplicit mapping af envs
Some checks failed
Backend CI / test (push) Has been cancelled
Flutter CI / analyze-and-test (push) Has been cancelled

This commit is contained in:
Henrik Jess Nielsen
2026-05-12 18:21:25 +02:00
parent b7a435f8b9
commit 99e9b509a0
67 changed files with 8060 additions and 9 deletions

107
app/lib/theme.dart Normal file
View 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,
);