import 'package:flutter/material.dart'; /// A restrained green accent, used sparingly against neutral surfaces. const accentGreen = Color(0xff36d681); ThemeData groundSuiteLightTheme() => _theme( brightness: Brightness.light, seed: const Color(0xff087a3b), surface: const Color(0xfff3f6f3), onSurface: const Color(0xff142019), outline: const Color(0xffc2cec4), ); ThemeData groundSuiteDarkTheme() => _theme( brightness: Brightness.dark, seed: const Color(0xff36d681), surface: const Color(0xff080b09), onSurface: const Color(0xffe8f0ea), outline: const Color(0xff2a382e), ); ThemeData _theme({ required Brightness brightness, required Color seed, required Color surface, required Color onSurface, required Color outline, }) { final scheme = ColorScheme.fromSeed(seedColor: seed, brightness: brightness) .copyWith( primary: seed, onPrimary: brightness == Brightness.dark ? const Color(0xff031207) : Colors.white, surface: surface, onSurface: onSurface, onSurfaceVariant: brightness == Brightness.dark ? const Color(0xffa8b5ac) : const Color(0xff546258), outline: outline, surfaceContainer: brightness == Brightness.dark ? const Color(0xff101712) : const Color(0xffeaf0eb), ); return ThemeData( useMaterial3: true, colorScheme: scheme, scaffoldBackgroundColor: Colors.transparent, visualDensity: VisualDensity.standard, cardTheme: const CardThemeData( color: Colors.transparent, elevation: 0, margin: EdgeInsets.zero, ), textTheme: ThemeData(brightness: brightness).textTheme.copyWith( headlineMedium: TextStyle( color: onSurface, fontWeight: FontWeight.w700, letterSpacing: -0.6, ), titleLarge: TextStyle(color: onSurface, fontWeight: FontWeight.w700), titleMedium: TextStyle(color: onSurface, fontWeight: FontWeight.w600), bodyMedium: TextStyle(color: onSurface), bodySmall: TextStyle( color: brightness == Brightness.dark ? const Color(0xffa8b5ac) : const Color(0xff546258), ), ), dividerTheme: DividerThemeData(color: outline.withValues(alpha: 0.72)), navigationRailTheme: NavigationRailThemeData( backgroundColor: Colors.transparent, indicatorColor: seed.withValues( alpha: brightness == Brightness.dark ? 0.2 : 0.13, ), selectedIconTheme: IconThemeData(color: seed), selectedLabelTextStyle: TextStyle( color: seed, fontWeight: FontWeight.w700, ), ), navigationBarTheme: NavigationBarThemeData( backgroundColor: Colors.transparent, indicatorColor: seed.withValues( alpha: brightness == Brightness.dark ? 0.2 : 0.13, ), labelTextStyle: WidgetStatePropertyAll( TextStyle(color: onSurface, fontWeight: FontWeight.w600), ), ), chipTheme: ChipThemeData( backgroundColor: scheme.surfaceContainer.withValues(alpha: 0.72), selectedColor: seed.withValues( alpha: brightness == Brightness.dark ? 0.22 : 0.16, ), side: BorderSide(color: outline.withValues(alpha: 0.75)), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), ), inputDecorationTheme: InputDecorationTheme( filled: true, fillColor: scheme.surfaceContainer.withValues(alpha: 0.7), border: OutlineInputBorder( borderRadius: BorderRadius.circular(14), borderSide: BorderSide(color: outline), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(14), borderSide: BorderSide(color: outline.withValues(alpha: 0.8)), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(14), borderSide: BorderSide(color: seed, width: 1.5), ), ), ); }