import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; import 'package:tm_app/view_models/tenders_view_model.dart'; import 'package:tm_app/views/tenders/models/tender_model.dart'; import '../../../core/constants/assets.dart'; import '../../../core/theme/colors.dart'; import '../../../core/utils/size_config.dart'; class TenderActionButtons extends StatelessWidget { final Tender tender; final bool isDesktop; const TenderActionButtons({ required this.tender, this.isDesktop = false, super.key, }); @override Widget build(BuildContext context) { final viewModel = context.watch(); return Row( mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox(width: 16.0.w()), // Dislike button Tooltip( message: 'Dislike', child: InkWell( splashColor: Colors.transparent, onTap: () { viewModel.onDislike(tender); }, child: Column( children: [ SvgPicture.asset( width: 32.0.w(), height: 32.0.w(), fit: BoxFit.cover, AssetsManager.dislike, colorFilter: ColorFilter.mode( viewModel.dislikedTenders.contains(tender) ? AppColors.errorColor : AppColors.grey50, BlendMode.srcATop, ), ), SizedBox(height: 8.0.h()), if (!isDesktop) Text( 'Like', style: TextStyle( fontSize: 12.0.sp(), fontWeight: FontWeight.w400, color: viewModel.dislikedTenders.contains(tender) ? AppColors.errorColor : AppColors.grey50, ), ), ], ), ), ), SizedBox(width: 32.0.w()), //reject button Tooltip( message: 'Reject', child: InkWell( splashColor: Colors.transparent, onTap: () { viewModel.onReject(tender); }, child: Column( children: [ Container( width: 32.0.w(), height: 32.0.w(), decoration: BoxDecoration( shape: BoxShape.circle, border: Border.all( color: viewModel.rejectedTenders.contains(tender) ? AppColors.errorColor : AppColors.grey60, width: 1.5.w(), ), ), alignment: Alignment.center, child: Icon( Icons.close, color: viewModel.rejectedTenders.contains(tender) ? AppColors.errorColor : AppColors.grey60, size: 16, ), ), SizedBox(height: 8.0.h()), if (!isDesktop) Text( 'Reject', style: TextStyle( fontSize: 12.0.sp(), fontWeight: FontWeight.w400, color: viewModel.rejectedTenders.contains(tender) ? AppColors.errorColor : AppColors.grey60, ), ), ], ), ), ), SizedBox(width: 32.0.w()), //submit button Tooltip( message: 'Submit', child: InkWell( splashColor: Colors.transparent, onTap: () { viewModel.onSubmit(tender); }, child: Column( children: [ Container( width: 32.0.w(), height: 32.0.w(), decoration: BoxDecoration( shape: BoxShape.circle, border: Border.all( color: viewModel.submittedTenders.contains(tender) ? AppColors.successColor : AppColors.grey60, width: 1.5.w(), ), ), alignment: Alignment.center, child: SvgPicture.asset( AssetsManager.tick, colorFilter: ColorFilter.mode( viewModel.submittedTenders.contains(tender) ? AppColors.successColor : AppColors.grey60, BlendMode.srcATop, ), ), ), SizedBox(height: 8.0.h()), if (!isDesktop) Text( 'Submit', style: TextStyle( fontSize: 12.0.sp(), fontWeight: FontWeight.w400, color: viewModel.submittedTenders.contains(tender) ? AppColors.successColor : AppColors.grey60, ), ), ], ), ), ), SizedBox(width: 32.0.w()), // Like button Tooltip( message: 'Like', child: InkWell( splashColor: Colors.transparent, onTap: () { viewModel.onLike(tender); }, child: Column( children: [ SvgPicture.asset( width: 32.0.w(), height: 32.0.w(), fit: BoxFit.cover, AssetsManager.like, colorFilter: ColorFilter.mode( viewModel.likedTenders.contains(tender) ? AppColors.successColor : AppColors.grey50, BlendMode.srcATop, ), ), SizedBox(height: 8.0.h()), if (!isDesktop) Text( 'Like', style: TextStyle( fontSize: 12.0.sp(), fontWeight: FontWeight.w400, color: viewModel.likedTenders.contains(tender) ? AppColors.successColor : AppColors.grey50, ), ), ], ), ), ), ], ); } }