Files
oott/frontend/lib/theme/nord_theme.dart
T

92 lines
2.9 KiB
Dart
Raw Normal View History

import 'package:flutter/material.dart';
import 'app_colors.dart';
import 'theme_builder.dart';
abstract final class NordColors {
// Polar Night (nord0nord3). nord0Dark is interpolated below nord0 to give
// the AppBar a slightly deeper shade than the body.
static const Color nord0Dark = Color(0xFF2b303b);
static const Color nord0 = Color(0xFF2e3440);
static const Color nord0Soft = Color(0xFF353c4a);
static const Color nord1 = Color(0xFF3b4252);
static const Color nord2 = Color(0xFF434c5e);
static const Color nord3 = Color(0xFF4c566a);
// Snow Storm (nord4nord6)
static const Color nord4 = Color(0xFFd8dee9);
static const Color nord5 = Color(0xFFe5e9f0);
static const Color nord6 = Color(0xFFeceff4);
// Frost (nord7nord10)
static const Color nord7 = Color(0xFF8fbcbb);
static const Color nord8 = Color(0xFF88c0d0);
static const Color nord9 = Color(0xFF81a1c1);
static const Color nord10 = Color(0xFF5e81ac);
// Aurora (nord11nord15)
static const Color nord11 = Color(0xFFbf616a);
static const Color nord12 = Color(0xFFd08770);
static const Color nord13 = Color(0xFFebcb8b);
static const Color nord14 = Color(0xFFa3be8c);
static const Color nord15 = Color(0xFFb48ead);
}
const ColorScheme _nordColorScheme = ColorScheme(
brightness: Brightness.dark,
// Surfaces — AppBar (darkest) → NavRail → body (lightest)
surface: NordColors.nord0,
surfaceContainerLowest: NordColors.nord0Dark,
surfaceContainerLow: NordColors.nord0Soft,
surfaceContainer: NordColors.nord1,
surfaceContainerHigh: NordColors.nord2,
surfaceContainerHighest: NordColors.nord3,
onSurface: NordColors.nord6,
onSurfaceVariant: NordColors.nord4,
outline: NordColors.nord3,
outlineVariant: NordColors.nord2,
// Primary — Save button, selected nav indicators
primary: NordColors.nord8,
onPrimary: NordColors.nord0,
primaryContainer: NordColors.nord1,
onPrimaryContainer: NordColors.nord6,
// Secondary — Test button (not-passing state)
secondary: NordColors.nord9,
onSecondary: NordColors.nord0,
secondaryContainer: NordColors.nord2,
onSecondaryContainer: NordColors.nord6,
// Tertiary — swipe-to-unread background
tertiary: NordColors.nord7,
onTertiary: NordColors.nord0,
tertiaryContainer: NordColors.nord1,
onTertiaryContainer: NordColors.nord6,
// Error
error: NordColors.nord11,
onError: NordColors.nord6,
errorContainer: NordColors.nord11,
onErrorContainer: NordColors.nord0,
// Inverse / scrim
inverseSurface: NordColors.nord6,
onInverseSurface: NordColors.nord0,
inversePrimary: NordColors.nord10,
scrim: NordColors.nord0Dark,
shadow: NordColors.nord0Dark,
);
final ThemeData nordDarkTheme = buildAppTheme(
colorScheme: _nordColorScheme,
appColors: const AppColorExtension(
success: NordColors.nord14,
onSuccess: NordColors.nord0,
warning: NordColors.nord13,
onWarning: NordColors.nord0,
info: NordColors.nord8,
onInfo: NordColors.nord0,
),
);