import 'package:flutter/material.dart'; class KpiCard extends StatelessWidget { final String title; final String value; final String? subtitle; final IconData icon; final Color color; final VoidCallback? onTap; const KpiCard({ super.key, required this.title, required this.value, this.subtitle, required this.icon, required this.color, this.onTap, }); @override Widget build(BuildContext context) { return GestureDetector( onTap: onTap, child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: color.withOpacity(0.15), blurRadius: 16, offset: const Offset(0, 4), ), ], ), padding: const EdgeInsets.all(20), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( padding: const EdgeInsets.all(10), decoration: BoxDecoration( color: color.withOpacity(0.12), borderRadius: BorderRadius.circular(10), ), child: Icon(icon, color: color, size: 22), ), if (onTap != null) Icon(Icons.arrow_forward_ios, size: 14, color: Colors.grey[400]), ], ), const SizedBox(height: 16), Text( value, style: TextStyle( fontSize: 28, fontWeight: FontWeight.bold, color: color, ), ), const SizedBox(height: 4), Text( title, style: const TextStyle( fontSize: 13, fontWeight: FontWeight.w600, color: Color(0xFF374151), ), ), if (subtitle != null) ...[ const SizedBox(height: 4), Text( subtitle!, style: TextStyle(fontSize: 11, color: Colors.grey[500]), ), ], ], ), ), ); } }