import 'package:enaklo_pos/core/components/spaces.dart'; import 'package:enaklo_pos/core/constants/colors.dart'; import 'package:enaklo_pos/core/extensions/build_context_ext.dart'; import 'package:flutter/material.dart'; class CustomModalDialog extends StatelessWidget { final String title; final String? subtitle; final Widget child; final VoidCallback? onClose; const CustomModalDialog( {super.key, required this.title, this.subtitle, required this.child, this.onClose}); @override Widget build(BuildContext context) { return Dialog( backgroundColor: AppColors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(16), ), child: ConstrainedBox( constraints: BoxConstraints( minWidth: context.deviceWidth * 0.3, maxWidth: context.deviceWidth * 0.8, minHeight: context.deviceHeight * 0.3, maxHeight: context.deviceHeight * 0.8, ), child: IntrinsicWidth( child: Column( mainAxisSize: MainAxisSize.min, children: [ Container( padding: const EdgeInsets.all(16), width: double.infinity, decoration: BoxDecoration( gradient: LinearGradient( colors: [ const Color.fromARGB(255, 81, 40, 134), AppColors.primary, ], begin: Alignment.topLeft, end: Alignment.bottomRight, ), borderRadius: BorderRadius.vertical( top: Radius.circular(16), ), ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( title, style: TextStyle( color: AppColors.white, fontSize: 20, fontWeight: FontWeight.bold, ), ), if (subtitle != null) Text( subtitle ?? '', style: TextStyle( color: AppColors.grey, fontSize: 16, fontWeight: FontWeight.w500, ), ), ], ), ), SpaceWidth(12), IconButton( icon: Icon(Icons.close, color: AppColors.white), onPressed: () { if (onClose != null) { onClose!(); } else { Navigator.of(context).pop(); } }, ), ], ), ), child, ], ), ), ), ); } }