import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:lucide_icons_flutter/lucide_icons.dart'; import '../../../../core/theme/nature_colors.dart'; import 'projects_screen.dart'; import '../../sales/presentation/invoices_list_screen.dart'; import '../../sales/presentation/customers_list_screen.dart'; import '../../vendor/presentation/vendors_list_screen.dart'; import '../../business/presentation/widgets/business_profile_form_sheet.dart'; class ProjectHubScreen extends ConsumerWidget { const ProjectHubScreen({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { return SingleChildScrollView( padding: const EdgeInsets.all(24.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ InkWell( onTap: () { showModalBottomSheet( context: context, isScrollControlled: true, backgroundColor: Colors.transparent, builder: (context) => const BusinessProfileFormSheet(), ); }, borderRadius: BorderRadius.circular(16), child: Container( padding: const EdgeInsets.all(16), decoration: BoxDecoration( color: Theme.of( context, ).colorScheme.primary.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(16), border: Border.all( color: Theme.of( context, ).colorScheme.primary.withValues(alpha: 0.2), ), ), child: Row( children: [ Icon( LucideIcons.layoutDashboard, color: Theme.of(context).colorScheme.primary, size: 32, ), const SizedBox(width: 16), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Agency OS', style: Theme.of(context).textTheme.titleLarge ?.copyWith(fontWeight: FontWeight.bold), ), const Text( 'Manage projects, tasks, and client billing', style: TextStyle(color: Colors.grey), ), ], ), ), ], ), ), ), const SizedBox(height: 24), GridView.count( crossAxisCount: 2, crossAxisSpacing: 16, mainAxisSpacing: 16, shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), childAspectRatio: 1.2, children: [ _buildActionCard( context, 'Projects & Tasks', 'Manage all projects', LucideIcons.folderKanban, Colors.blue, () => Navigator.push( context, MaterialPageRoute(builder: (_) => const ProjectsScreen()), ), ), _buildActionCard( context, 'Invoices', 'Client billing', LucideIcons.receipt, Colors.green, () => Navigator.push( context, MaterialPageRoute(builder: (_) => const InvoicesListScreen()), ), ), _buildActionCard( context, 'Clients', 'Manage clients', LucideIcons.users, NatureColors.getColor('RECEIVABLES'), () => Navigator.push( context, MaterialPageRoute( builder: (_) => const CustomersListScreen(), ), ), ), _buildActionCard( context, 'Contractors', 'Manage vendors', LucideIcons.truck, Colors.orange, () => Navigator.push( context, MaterialPageRoute(builder: (_) => const VendorsListScreen()), ), ), ], ), ], ), ); } Widget _buildActionCard( BuildContext context, String title, String subtitle, IconData icon, Color color, VoidCallback onTap, ) { return GestureDetector( onTap: onTap, child: Container( padding: const EdgeInsets.all(16), decoration: BoxDecoration( color: color.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(16), border: Border.all(color: color.withValues(alpha: 0.2)), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ Icon(icon, color: color, size: 28), const SizedBox(height: 12), Text( title, style: TextStyle( color: color, fontWeight: FontWeight.bold, fontSize: 16, ), ), const SizedBox(height: 4), Text( subtitle, style: TextStyle( color: color.withValues(alpha: 0.7), fontSize: 12, ), ), ], ), ), ); } }