import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/routes/app_routes.dart'; import '../../../core/constants/assets.dart'; import '../../../core/theme/colors.dart'; import '../../../core/utils/size_config.dart'; import '../models/tender_model.dart'; import 'tender_action_buttons.dart'; class TenderCard extends StatelessWidget { final Tender tender; final bool isDesktop; const TenderCard({required this.tender, super.key, this.isDesktop = false}); @override Widget build(BuildContext context) { return Column( children: [ Container( // width: 364.0.w(), width: double.infinity, margin: EdgeInsets.symmetric(horizontal: 16.0.w()), height: 587.0.h(), decoration: BoxDecoration( color: AppColors.grey0, borderRadius: BorderRadius.circular(12), border: Border.all(color: AppColors.grey30), ), child: Column( children: [ // Main content Padding( padding: EdgeInsets.all(16.0.w()), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // Date Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( tender.date, style: TextStyle( color: AppColors.grey60, fontSize: 12.0.sp(), fontWeight: FontWeight.w400, ), ), if (isDesktop) TenderActionButtons( tender: tender, isDesktop: isDesktop, ), ], ), SizedBox(height: 12.0.h()), // Deadline badge Container( width: double.infinity, height: 24.0.h(), padding: EdgeInsets.symmetric(horizontal: 8.0.w()), decoration: BoxDecoration( color: AppColors.primary20, borderRadius: BorderRadius.circular(4), ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( AppStrings.tenderDeadlineLabel, style: TextStyle( color: AppColors.textBlue, fontSize: 14.0.sp(), fontWeight: FontWeight.w500, ), ), Text( tender.deadline, style: TextStyle( color: AppColors.grey80, fontSize: 14.0.sp(), fontWeight: FontWeight.w500, ), ), ], ), ), SizedBox(height: 12.0.h()), // Title Text( tender.title, style: TextStyle( color: AppColors.grey80, fontSize: 16.0.sp(), fontWeight: FontWeight.w600, ), ), SizedBox(height: 8.0.h()), // Description Text( tender.description, style: TextStyle( color: AppColors.grey70, fontSize: 16.0.sp(), fontWeight: FontWeight.w400, height: 1.5, ), ), SizedBox(height: 12.0.h()), // Tender ID Text( tender.tenderId, style: TextStyle( color: AppColors.grey, fontSize: 14.0.sp(), fontWeight: FontWeight.w400, ), ), ], ), ), Spacer(), // Bottom section with progress and actions Padding( padding: EdgeInsets.all(16.0.w()), child: Column( children: [ // Match percentage Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( AppStrings.tenderMatchProfile, style: TextStyle( color: AppColors.grey80, fontSize: 14.0.sp(), fontWeight: FontWeight.w500, ), ), Text( '${tender.matchPercentage.toInt()}%', style: TextStyle( color: AppColors.secondaryTextColor, fontSize: 16.0.sp(), fontWeight: FontWeight.w600, ), ), ], ), SizedBox(height: 8.0.h()), // Progress bar Container( width: double.infinity, height: 4.0.h(), decoration: BoxDecoration( color: AppColors.grey20, borderRadius: BorderRadius.circular(2), ), child: FractionallySizedBox( alignment: Alignment.centerLeft, widthFactor: tender.matchPercentage / 100, child: Container( decoration: BoxDecoration( color: AppColors.secondary50, borderRadius: BorderRadius.circular(2), ), ), ), ), SizedBox(height: 16.0.h()), // Location and apply button Row( children: [ // Location info Expanded( child: Row( children: [ SvgPicture.asset(AssetsManager.location), SizedBox(width: 4.0.w()), Text( tender.location, style: TextStyle( color: AppColors.grey80, fontSize: 14.0.sp(), fontWeight: FontWeight.w500, ), ), SizedBox(width: 8.0.w()), // Country flag placeholder Image.asset( AssetsManager.seFlag, width: 32.0.w(), height: 21.0.h(), ), ], ), ), // See More button GestureDetector( onTap: () { TenderDetailRouteData().push(context); }, child: Container( width: 108.0.w(), height: 40.0.h(), alignment: Alignment.center, decoration: BoxDecoration( color: AppColors.primary20, borderRadius: BorderRadius.circular(100), ), child: Text( AppStrings.tenderSeeMore, style: TextStyle( color: AppColors.mainBlue, fontSize: 14.0.sp(), fontWeight: FontWeight.w500, ), ), ), ), ], ), ], ), ), ], ), ), SizedBox(height: 72.0.h()), if (!isDesktop) TenderActionButtons(tender: tender), ], ); } }