import 'package:flutter/cupertino.dart'; import 'package:please_pay_me/theme/tokens.dart'; import 'package:please_pay_me/ui/atoms/app_text.dart'; /// Inset-grouped card for free-form content (metrics, summaries). class AppCard extends StatelessWidget { const AppCard({ super.key, required this.child, this.title, this.subtitle, this.padding = const EdgeInsets.all(AppSpacing.s4), this.margin = const EdgeInsets.symmetric(horizontal: AppSpacing.gutter), this.onTap, }); final Widget child; final String? title; final String? subtitle; final EdgeInsetsGeometry padding; final EdgeInsetsGeometry margin; final VoidCallback? onTap; @override Widget build(BuildContext context) { final card = Container( margin: margin, padding: padding, decoration: BoxDecoration( color: AppColors.of(context, AppColors.groupedSurface), borderRadius: BorderRadius.circular(AppRadii.lg), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ if (title != null) AppText.headline(title!), if (subtitle != null) ...[ const SizedBox(height: 2), AppText.footnote(subtitle!), ], if (title != null || subtitle != null) const SizedBox(height: AppSpacing.s3), child, ], ), ); if (onTap == null) return card; return CupertinoButton( padding: EdgeInsets.zero, minimumSize: Size.zero, onPressed: onTap, child: card, ); } }