import 'package:flutter/material.dart'; import '../core/app_colors.dart'; class AppMenuItem extends StatelessWidget { final IconData icon; final String title; final String? subtitle; final String? trailing; final VoidCallback? onTap; const AppMenuItem({ super.key, required this.icon, required this.title, this.subtitle, this.trailing, this.onTap, }); @override Widget build(BuildContext context) { return GestureDetector( onTap: onTap, behavior: HitTestBehavior.opaque, child: Container( margin: const EdgeInsets.symmetric(horizontal: 20, vertical: 5), padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 12), decoration: BoxDecoration( gradient: AppColors.surfaceGradient, borderRadius: BorderRadius.circular(14), border: Border.all(color: AppColors.borderLight), boxShadow: AppColors.cardShadowLight, ), child: Row( children: [ Container( width: 40, height: 40, decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [AppColors.primaryLight, AppColors.infoLight], ), borderRadius: BorderRadius.circular(13), ), child: Icon(icon, size: 20, color: AppColors.primaryDark), ), const SizedBox(width: 14), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( title, style: const TextStyle( fontSize: 16, fontWeight: FontWeight.w700, color: AppColors.textPrimary, ), ), if (subtitle != null && subtitle!.isNotEmpty) Padding( padding: const EdgeInsets.only(top: 2), child: Text( subtitle!, style: const TextStyle( fontSize: 13, color: AppColors.textSecondary, ), ), ), ], ), ), if (trailing != null && trailing!.isNotEmpty) Text( trailing!, style: const TextStyle( fontSize: 14, color: AppColors.textSecondary, ), ), const SizedBox(width: 4), const Icon( Icons.chevron_right, size: 20, color: AppColors.textHint, ), ], ), ), ); } }