part of '../main.dart'; class AppColors { static const background = Color(0xFF05080F); static const surface = Color(0xFF0B1220); static const surfaceRaised = Color(0xFF101B30); static const navy = Color(0xFF102A56); static const blue = Color(0xFF3B82F6); static const blueSoft = Color(0xFF93C5FD); static const border = Color(0xFF203354); static const text = Color(0xFFF1F5F9); static const textMuted = Color(0xFF9FB0C9); static const warningBackground = Color(0xFF2B1E10); static const warningBorder = Color(0xFF8A5A20); static const warningText = Color(0xFFFED7AA); static const recordingBackground = Color(0xFF29151D); static const recordingBorder = Color(0xFF7F3148); static const recording = Color(0xFFF87171); } void showCompactSnackBar( BuildContext context, { required String message, IconData? icon, }) { final messenger = ScaffoldMessenger.of(context); messenger.clearSnackBars(); messenger.showSnackBar( SnackBar( duration: const Duration(milliseconds: 1500), behavior: SnackBarBehavior.floating, margin: const EdgeInsets.fromLTRB(18, 0, 18, 18), elevation: 0, backgroundColor: AppColors.navy, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(14)), content: Row( mainAxisSize: MainAxisSize.min, children: [ if (icon != null) ...[ Icon(icon, color: AppColors.blueSoft, size: 20), const SizedBox(width: 10), ], Expanded( child: Text( message, style: const TextStyle( color: Colors.white, fontWeight: FontWeight.w700, ), ), ), ], ), ), ); } class ConfiVoiceMobileApp extends StatelessWidget { const ConfiVoiceMobileApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'ConfiVoice', theme: ThemeData( brightness: Brightness.dark, colorScheme: const ColorScheme.dark( primary: AppColors.blue, onPrimary: Colors.white, secondary: AppColors.blueSoft, surface: AppColors.surface, onSurface: AppColors.text, outline: AppColors.border, error: AppColors.recording, ), scaffoldBackgroundColor: AppColors.background, appBarTheme: const AppBarTheme( centerTitle: false, elevation: 0, scrolledUnderElevation: 0, backgroundColor: AppColors.background, foregroundColor: AppColors.text, ), cardTheme: CardTheme( elevation: 0, color: AppColors.surface, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), side: const BorderSide(color: AppColors.border), ), ), inputDecorationTheme: const InputDecorationTheme( filled: true, fillColor: AppColors.surfaceRaised, border: OutlineInputBorder( borderSide: BorderSide(color: AppColors.border), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: AppColors.border), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide(color: AppColors.blue, width: 1.5), ), labelStyle: TextStyle(color: AppColors.textMuted), prefixIconColor: AppColors.blueSoft, ), filledButtonTheme: FilledButtonThemeData( style: FilledButton.styleFrom( backgroundColor: AppColors.blue, foregroundColor: Colors.white, disabledBackgroundColor: AppColors.navy, disabledForegroundColor: AppColors.textMuted, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), padding: const EdgeInsets.symmetric(vertical: 14, horizontal: 16), ), ), outlinedButtonTheme: OutlinedButtonThemeData( style: OutlinedButton.styleFrom( foregroundColor: AppColors.blueSoft, side: const BorderSide(color: AppColors.border), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), padding: const EdgeInsets.symmetric(vertical: 14, horizontal: 16), ), ), progressIndicatorTheme: const ProgressIndicatorThemeData( color: AppColors.blue, linearTrackColor: AppColors.navy, ), snackBarTheme: const SnackBarThemeData( backgroundColor: AppColors.surfaceRaised, contentTextStyle: TextStyle(color: AppColors.text), ), useMaterial3: true, ), home: const AuthGate(), ); } }