mirror of
https://github.com/rzuasti/oott.git
synced 2026-07-08 19:21:54 +02:00
Add five new selectable themes alongside the existing Catppuccin Mocha and Gruvbox Dark, each built through the shared buildAppTheme so they stay visually consistent. Palettes are taken from each project's official source; a few intermediate surface shades are interpolated where the canonical palette omits them (noted in the theme files). Register the new themes in main.dart and add their dropdown entries in settings. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
90 lines
3.3 KiB
Dart
90 lines
3.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'app_colors.dart';
|
|
import 'theme_builder.dart';
|
|
|
|
/// Alucard — the official light counterpart to Dracula.
|
|
abstract final class AlucardColors {
|
|
// Neutral ramp (lightest → darkest). Background, the warm/cream tints and the
|
|
// darker gray are from the base24 Alucard palette; the two mid surfaces are
|
|
// interpolated to give cards consistent elevation steps.
|
|
static const Color background = Color(0xFFfffbeb);
|
|
static const Color warm = Color(0xFFfdf8e2);
|
|
static const Color cream = Color(0xFFf5f0da);
|
|
static const Color surface = Color(0xFFf0ebd5);
|
|
static const Color surfaceHigh = Color(0xFFded8c2);
|
|
static const Color gray = Color(0xFFceccc0);
|
|
static const Color comment = Color(0xFF6c664b);
|
|
static const Color subtleForeground = Color(0xFF4c4a3d);
|
|
static const Color foreground = Color(0xFF1f1f1f);
|
|
|
|
static const Color cyan = Color(0xFF036a96);
|
|
static const Color green = Color(0xFF14710a);
|
|
static const Color orange = Color(0xFFa34d14);
|
|
static const Color pink = Color(0xFFa3144d);
|
|
static const Color purple = Color(0xFF644ac9);
|
|
static const Color brightPurple = Color(0xFF7862d0);
|
|
static const Color red = Color(0xFFcb3a2a);
|
|
static const Color darkRed = Color(0xFF792219);
|
|
static const Color redContainer = Color(0xFFf5d6d1);
|
|
static const Color yellow = Color(0xFF846e15);
|
|
}
|
|
|
|
const ColorScheme _alucardColorScheme = ColorScheme(
|
|
brightness: Brightness.light,
|
|
|
|
// Surfaces — AppBar (darkest) → NavRail → body (lightest)
|
|
surface: AlucardColors.background,
|
|
surfaceContainerLowest: AlucardColors.cream,
|
|
surfaceContainerLow: AlucardColors.warm,
|
|
surfaceContainer: AlucardColors.surface,
|
|
surfaceContainerHigh: AlucardColors.surfaceHigh,
|
|
surfaceContainerHighest: AlucardColors.gray,
|
|
onSurface: AlucardColors.foreground,
|
|
onSurfaceVariant: AlucardColors.subtleForeground,
|
|
outline: AlucardColors.comment,
|
|
outlineVariant: AlucardColors.gray,
|
|
|
|
// Primary — Save button, selected nav indicators
|
|
primary: AlucardColors.purple,
|
|
onPrimary: AlucardColors.background,
|
|
primaryContainer: AlucardColors.surfaceHigh,
|
|
onPrimaryContainer: AlucardColors.foreground,
|
|
|
|
// Secondary — Test button (not-passing state)
|
|
secondary: AlucardColors.cyan,
|
|
onSecondary: AlucardColors.background,
|
|
secondaryContainer: AlucardColors.gray,
|
|
onSecondaryContainer: AlucardColors.foreground,
|
|
|
|
// Tertiary — swipe-to-unread background
|
|
tertiary: AlucardColors.green,
|
|
onTertiary: AlucardColors.background,
|
|
tertiaryContainer: AlucardColors.surface,
|
|
onTertiaryContainer: AlucardColors.foreground,
|
|
|
|
// Error
|
|
error: AlucardColors.red,
|
|
onError: AlucardColors.background,
|
|
errorContainer: AlucardColors.redContainer,
|
|
onErrorContainer: AlucardColors.darkRed,
|
|
|
|
// Inverse / scrim
|
|
inverseSurface: AlucardColors.foreground,
|
|
onInverseSurface: AlucardColors.background,
|
|
inversePrimary: AlucardColors.brightPurple,
|
|
scrim: AlucardColors.foreground,
|
|
shadow: AlucardColors.comment,
|
|
);
|
|
|
|
final ThemeData alucardLightTheme = buildAppTheme(
|
|
colorScheme: _alucardColorScheme,
|
|
appColors: const AppColorExtension(
|
|
success: AlucardColors.green,
|
|
onSuccess: AlucardColors.background,
|
|
warning: AlucardColors.orange,
|
|
onWarning: AlucardColors.background,
|
|
info: AlucardColors.cyan,
|
|
onInfo: AlucardColors.background,
|
|
),
|
|
);
|