import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/theme_utils.dart'; import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; class ReportMessageBanner extends StatelessWidget { final ImagePaths imagePaths; final String message; final String positiveName; final VoidCallback onPositiveAction; final VoidCallback onNegativeAction; final bool isDesktop; final EdgeInsetsGeometry? margin; const ReportMessageBanner({ super.key, required this.imagePaths, required this.message, required this.positiveName, required this.onNegativeAction, required this.onPositiveAction, this.isDesktop = true, this.margin, }); @override Widget build(BuildContext context) { final closeButton = TMailButtonWidget.fromIcon( icon: imagePaths.icCloseDialog, iconSize: 24, iconColor: AppColor.m3Tertiary, padding: const EdgeInsets.all(5), backgroundColor: Colors.transparent, onTapActionCallback: onNegativeAction, ); late Widget bodyBanner; if (isDesktop) { bodyBanner = Stack( children: [ Center( child: Padding( padding: const EdgeInsetsDirectional.symmetric(horizontal: 40), child: Row( mainAxisSize: MainAxisSize.min, children: [ SvgPicture.asset( imagePaths.icInfoCircleOutline, width: 20, height: 20, fit: BoxFit.fill, colorFilter: AppColor.steelGray200.asFilter(), ), const SizedBox(width: 8), Flexible( child: Text( message, maxLines: 1, overflow: TextOverflow.ellipsis, style: Theme.of(context).textTheme.bodySmall!.copyWith( color: AppColor.steelGray400, ), ), ), const SizedBox(width: 4), TMailButtonWidget.fromText( text: positiveName, padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), backgroundColor: Colors.transparent, textStyle: ThemeUtils.textStyleInter700( color: AppColor.blue700, fontSize: 14, ), onTapActionCallback: onPositiveAction, ), ], ), ), ), Align( alignment: AlignmentDirectional.centerEnd, child: closeButton, ), ], ); } else { bodyBanner = Row( children: [ SvgPicture.asset( imagePaths.icInfoCircleOutline, width: 20, height: 20, fit: BoxFit.fill, colorFilter: AppColor.steelGray200.asFilter(), ), const SizedBox(width: 12), Expanded( child: Row( mainAxisSize: MainAxisSize.min, children: [ Flexible( child: Text( message, maxLines: 1, overflow: TextOverflow.ellipsis, style: Theme.of(context).textTheme.bodySmall!.copyWith( color: AppColor.steelGray400, ), ), ), const SizedBox(width: 4), TMailButtonWidget.fromText( text: positiveName, padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), backgroundColor: Colors.transparent, textStyle: ThemeUtils.textStyleInter700( color: AppColor.blue700, fontSize: 14, ), onTapActionCallback: onPositiveAction, ) ], ), ), const SizedBox(width: 12), closeButton, ], ); } return Container( decoration: BoxDecoration( color: _backgroundColor, borderRadius: const BorderRadius.all(Radius.circular(8)), ), padding: const EdgeInsetsDirectional.only(start: 16, end: 12), margin: margin, height: _bannerHeight, child: bodyBanner, ); } Color get _backgroundColor => isDesktop ? AppColor.lightGrayEAEDF2 : AppColor.m3LayerDarkOutline.withValues(alpha: 0.08); double get _bannerHeight => isDesktop ? 44 : 52; }