71 lines
3.0 KiB
Dart
71 lines
3.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:google_fonts/google_fonts.dart';
|
|
|
|
/// Ground Suite's single visual language: a dark tactical operations deck.
|
|
const panelBackground = Color(0xD912141A);
|
|
const panelBorder = Color(0x1AFFFFFF);
|
|
const textPrimary = Color(0xFFF8FAFC);
|
|
const textSecondary = Color(0xFF94A3B8);
|
|
const accentOrange = Color(0xFFF97316);
|
|
const accentMint = Color(0xFF34D399);
|
|
const statusGreen = Color(0xFF10B981);
|
|
const statusRed = Color(0xFFEF4444);
|
|
|
|
const tacticalBlack = Color(0xFF000000);
|
|
const tacticalTransparent = Color(0x00000000);
|
|
|
|
ThemeData groundSuiteDarkTheme() {
|
|
final base = ThemeData.dark(useMaterial3: true);
|
|
final interTextTheme = GoogleFonts.interTextTheme(
|
|
base.textTheme,
|
|
).apply(bodyColor: textPrimary, displayColor: textPrimary);
|
|
|
|
return base.copyWith(
|
|
scaffoldBackgroundColor: tacticalBlack,
|
|
cardColor: panelBackground,
|
|
colorScheme: const ColorScheme.dark(
|
|
primary: accentMint,
|
|
onPrimary: tacticalBlack,
|
|
secondary: accentOrange,
|
|
onSecondary: tacticalBlack,
|
|
surface: panelBackground,
|
|
onSurface: textPrimary,
|
|
error: statusRed,
|
|
onError: textPrimary,
|
|
outline: panelBorder,
|
|
),
|
|
textTheme: interTextTheme.copyWith(
|
|
displayLarge: interTextTheme.displayLarge?.copyWith(color: textPrimary),
|
|
displayMedium: interTextTheme.displayMedium?.copyWith(color: textPrimary),
|
|
headlineLarge: interTextTheme.headlineLarge?.copyWith(color: textPrimary),
|
|
headlineMedium: interTextTheme.headlineMedium?.copyWith(
|
|
color: textPrimary,
|
|
),
|
|
headlineSmall: interTextTheme.headlineSmall?.copyWith(color: textPrimary),
|
|
titleLarge: interTextTheme.titleLarge?.copyWith(color: textPrimary),
|
|
titleMedium: interTextTheme.titleMedium?.copyWith(color: textPrimary),
|
|
titleSmall: interTextTheme.titleSmall?.copyWith(color: textPrimary),
|
|
bodyLarge: interTextTheme.bodyLarge?.copyWith(color: textPrimary),
|
|
bodyMedium: interTextTheme.bodyMedium?.copyWith(color: textPrimary),
|
|
bodySmall: interTextTheme.bodySmall?.copyWith(color: textSecondary),
|
|
labelLarge: interTextTheme.labelLarge?.copyWith(color: textPrimary),
|
|
labelMedium: interTextTheme.labelMedium?.copyWith(color: textSecondary),
|
|
labelSmall: interTextTheme.labelSmall?.copyWith(color: textSecondary),
|
|
),
|
|
cardTheme: const CardThemeData(color: panelBackground, elevation: 0),
|
|
dividerTheme: const DividerThemeData(color: panelBorder),
|
|
progressIndicatorTheme: ProgressIndicatorThemeData(
|
|
color: accentMint,
|
|
linearTrackColor: textSecondary.withValues(alpha: .2),
|
|
),
|
|
chipTheme: ChipThemeData(
|
|
backgroundColor: tacticalTransparent,
|
|
selectedColor: accentMint.withValues(alpha: .1),
|
|
side: const BorderSide(color: panelBorder),
|
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
|
|
labelStyle: GoogleFonts.inter(color: textSecondary),
|
|
secondaryLabelStyle: GoogleFonts.inter(color: textPrimary),
|
|
),
|
|
);
|
|
}
|