import 'package:flutter/material.dart'; /// PAILot brand colors - teal/blue accent on dark backgrounds. class AppColors { // Brand static const Color accent = Color(0xFF4A9EFF); static const Color accentDim = Color(0xFF2D6BB5); // Dark mode static const Color darkBg = Color(0xFF0A0A0F); static const Color darkSurface = Color(0xFF1C1C2E); static const Color darkCard = Color(0xFF1E1E2E); static const Color darkInputBg = Color(0xFF2A2A3E); // Bubbles static const Color userBubble = Color(0xFF4A9EFF); static const Color assistantBubble = Color(0xFF2A2A3E); static const Color systemBubble = Color(0xFF1A1A2A); // Light mode static const Color lightBg = Color(0xFFF5F5FA); static const Color lightSurface = Color(0xFFFFFFFF); static const Color lightCard = Color(0xFFF0F0F8); static const Color lightInputBg = Color(0xFFE8E8F0); static const Color lightUserBubble = Color(0xFF4A9EFF); static const Color lightAssistantBubble = Color(0xFFE8E8F0); // Text static const Color darkTextPrimary = Color(0xFFE0E0E0); static const Color darkTextSecondary = Color(0xFFB0B0B0); static const Color darkTextTertiary = Color(0xFF757575); static const Color lightTextPrimary = Color(0xFF212121); static const Color lightTextSecondary = Color(0xFF616161); // Status static const Color connected = Color(0xFF22C55E); static const Color connecting = Color(0xFFEAB308); static const Color disconnected = Color(0xFFEF4444); static const Color compacting = Color(0xFF3B82F6); // Recording static const Color recording = Color(0xFFFF6B35); static const Color recordingGlow = Color(0x40FF6B35); // Misc static const Color error = Color(0xFFEF4444); static const Color success = Color(0xFF22C55E); static const Color unreadBadge = Color(0xFFFF4444); } class AppTheme { static ThemeData get darkTheme { return ThemeData( useMaterial3: true, brightness: Brightness.dark, colorScheme: ColorScheme.fromSeed( seedColor: AppColors.accent, brightness: Brightness.dark, primary: AppColors.accent, surface: AppColors.darkSurface, ), scaffoldBackgroundColor: AppColors.darkBg, appBarTheme: const AppBarTheme( backgroundColor: AppColors.darkSurface, foregroundColor: Colors.white, elevation: 0, centerTitle: true, ), cardTheme: CardThemeData( color: AppColors.darkCard, elevation: 0, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), ), drawerTheme: const DrawerThemeData( backgroundColor: AppColors.darkSurface, ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 14), ), ), inputDecorationTheme: InputDecorationTheme( filled: true, fillColor: AppColors.darkInputBg, border: OutlineInputBorder( borderRadius: BorderRadius.circular(12), borderSide: BorderSide.none, ), contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), ), textTheme: const TextTheme( headlineLarge: TextStyle( fontSize: 28, fontWeight: FontWeight.bold, color: AppColors.darkTextPrimary), headlineMedium: TextStyle( fontSize: 22, fontWeight: FontWeight.bold, color: AppColors.darkTextPrimary), titleLarge: TextStyle( fontSize: 18, fontWeight: FontWeight.w600, color: AppColors.darkTextPrimary), bodyLarge: TextStyle(fontSize: 16, color: AppColors.darkTextPrimary), bodyMedium: TextStyle(fontSize: 14, color: AppColors.darkTextSecondary), ), ); } static ThemeData get lightTheme { return ThemeData( useMaterial3: true, brightness: Brightness.light, colorScheme: ColorScheme.fromSeed( seedColor: AppColors.accent, brightness: Brightness.light, primary: AppColors.accent, surface: AppColors.lightSurface, ), scaffoldBackgroundColor: AppColors.lightBg, appBarTheme: const AppBarTheme( backgroundColor: AppColors.lightSurface, foregroundColor: AppColors.lightTextPrimary, elevation: 0, centerTitle: true, ), cardTheme: CardThemeData( color: AppColors.lightCard, elevation: 0, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), ), drawerTheme: const DrawerThemeData( backgroundColor: AppColors.lightSurface, ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 14), ), ), inputDecorationTheme: InputDecorationTheme( filled: true, fillColor: AppColors.lightInputBg, border: OutlineInputBorder( borderRadius: BorderRadius.circular(12), borderSide: BorderSide.none, ), contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), ), textTheme: const TextTheme( headlineLarge: TextStyle( fontSize: 28, fontWeight: FontWeight.bold, color: AppColors.lightTextPrimary), headlineMedium: TextStyle( fontSize: 22, fontWeight: FontWeight.bold, color: AppColors.lightTextPrimary), titleLarge: TextStyle( fontSize: 18, fontWeight: FontWeight.w600, color: AppColors.lightTextPrimary), bodyLarge: TextStyle(fontSize: 16, color: AppColors.lightTextPrimary), bodyMedium: TextStyle(fontSize: 14, color: AppColors.lightTextSecondary), ), ); } }