import 'package:flutter/material.dart'; import '../theme/yanting_tokens.dart'; class AppCard extends StatelessWidget { const AppCard({ required this.child, this.onTap, this.padding = const EdgeInsets.all(YantingSpacing.cardPadding), this.color = YantingColors.card, this.borderColor = YantingColors.border, super.key, }); final Widget child; final VoidCallback? onTap; final EdgeInsetsGeometry padding; final Color color; final Color borderColor; @override Widget build(BuildContext context) { final radius = BorderRadius.circular(YantingRadius.xl); final decoration = BoxDecoration( color: color, borderRadius: radius, border: Border.all(color: borderColor), ); if (onTap == null) { return DecoratedBox( decoration: decoration, child: Padding(padding: padding, child: child), ); } return Material( color: Colors.transparent, borderRadius: radius, child: Ink( decoration: decoration, child: InkWell( borderRadius: radius, splashColor: YantingColors.mutedForeground.withValues(alpha: 0.08), highlightColor: YantingColors.mutedForeground.withValues(alpha: 0.04), onTap: onTap, child: Padding(padding: padding, child: child), ), ), ); } } class HeroReportCard extends StatelessWidget { const HeroReportCard({required this.child, this.onTap, super.key}); final Widget child; final VoidCallback? onTap; @override Widget build(BuildContext context) { return AppCard( onTap: onTap, color: YantingColors.brandSoft, borderColor: YantingColors.brandSoftBorder, padding: const EdgeInsets.all(YantingSpacing.cardPadding), child: child, ); } }