import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import '../../core/l10n/locale_provider.dart'; import '../../core/services/haptic_service.dart'; import '../feature_flags/feature_flags_provider.dart'; import '../providers/google_auth_provider.dart'; class ProSubscriptionCard extends ConsumerWidget { const ProSubscriptionCard({super.key}); static const _gradientColors = [ Color(0xFF1A237E), Color(0xFF6A1B9A), Color(0xFFE65100), ]; @override Widget build(BuildContext context, WidgetRef ref) { final s = ref.watch(stringsProvider); final flags = ref.watch(featureFlagsProvider); final isVip = flags.maxAccounts != 3; final googleUserAsync = ref.watch(googleCurrentUserProvider); final googleUser = googleUserAsync.value; return Container( padding: const EdgeInsets.all(20), decoration: BoxDecoration( gradient: const LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: _gradientColors, ), borderRadius: BorderRadius.circular(16), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Container( padding: const EdgeInsets.all(10), decoration: BoxDecoration( color: Colors.white.withOpacity(0.15), borderRadius: BorderRadius.circular(12), ), child: Icon( isVip ? Icons.verified_rounded : Icons.workspace_premium_rounded, color: Colors.white, size: 24, ), ), const SizedBox(width: 12), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( s.proTitle, style: Theme.of(context).textTheme.titleLarge?.copyWith( fontWeight: FontWeight.w900, color: Colors.white, ), ), if (isVip) ...[ const SizedBox(height: 2), Text( googleUser != null ? '${s.proActive} \u2705' : s.proActive, style: Theme.of(context).textTheme.bodySmall?.copyWith( color: Colors.white.withOpacity(0.9), fontWeight: FontWeight.w600, ), ), ], ], ), ), OutlinedButton( onPressed: () { HapticService.light(); context.push('/pro'); }, style: OutlinedButton.styleFrom( foregroundColor: Colors.white, side: BorderSide(color: Colors.white.withOpacity(0.4), width: 1.5), padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20), ), ), child: Text( s.proAboutPro, style: const TextStyle(fontWeight: FontWeight.w700), ), ), ], ), if (isVip && googleUser == null) ...[ const SizedBox(height: 14), SizedBox( width: double.infinity, child: OutlinedButton.icon( onPressed: () { HapticService.light(); ref.read(googleAuthProvider).signIn(); }, icon: const Icon(Icons.login_rounded, color: Colors.white, size: 18), label: Text(s.proSignInGoogle), style: OutlinedButton.styleFrom( foregroundColor: Colors.white, side: BorderSide(color: Colors.white.withOpacity(0.3), width: 1), padding: const EdgeInsets.symmetric(vertical: 10), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), ), ), ), ], ], ), ); } }