import 'package:flutter/material.dart'; import '../../../../core/theme/app_theme.dart'; import '../../../../core/widgets/glass_container.dart'; import '../../../../core/widgets/status_badge.dart'; import '../models/admin_user_model.dart'; class AdminUserCardItem extends StatelessWidget { final AdminUserModel user; final ValueChanged onToggleActive; final VoidCallback onEdit; const AdminUserCardItem({ super.key, required this.user, required this.onToggleActive, required this.onEdit, }); String _getInitials(String name) { if (name.isEmpty) return 'U'; final parts = name.trim().split(' '); if (parts.length >= 2) { return '${parts[0][0]}${parts[1][0]}'.toUpperCase(); } return name.substring(0, name.length >= 2 ? 2 : 1).toUpperCase(); } @override Widget build(BuildContext context) { final String role = user.role; final bool isActive = user.isActive; final Color roleColor = role == 'Admin' ? const Color(0xFFA855F7) : role == 'Premium' ? AppTheme.primaryEmerald : AppTheme.accentCyan; final String initials = _getInitials(user.fullName.isNotEmpty ? user.fullName : user.email); return GlassContainer( margin: const EdgeInsets.only(bottom: 10), padding: const EdgeInsets.all(14), child: Row( children: [ Container( width: 42, height: 42, alignment: Alignment.center, decoration: BoxDecoration( color: roleColor.withValues(alpha: 0.2), shape: BoxShape.circle, border: Border.all(color: roleColor, width: 1.5), ), child: Text( initials, style: TextStyle(fontWeight: FontWeight.bold, color: roleColor, fontSize: 14), ), ), const SizedBox(width: 14), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Text( user.fullName.isNotEmpty ? user.fullName : user.email, style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 15), ), const SizedBox(width: 8), StatusBadge(label: role, color: roleColor), ], ), const SizedBox(height: 2), Text( user.email, style: TextStyle(fontSize: 12, color: AppTheme.textSecondary), ), ], ), ), Row( children: [ Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ Text( isActive ? 'Aktiv' : 'Gesperrt', style: TextStyle( fontSize: 12, fontWeight: FontWeight.bold, color: isActive ? AppTheme.primaryEmerald : AppTheme.accentRed, ), ), ], ), const SizedBox(width: 8), Switch( value: isActive, activeThumbColor: AppTheme.primaryEmerald, onChanged: onToggleActive, ), const SizedBox(width: 8), IconButton.filledTonal( icon: const Icon(Icons.edit_outlined, size: 18), tooltip: 'Benutzer Bearbeiten', onPressed: onEdit, ), ], ), ], ), ); } }