package com.craigvg.lichun_android.ui.components.stats import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.craigvg.lichun_android.ui.theme.AppColors import com.craigvg.lichun_android.ui.theme.AppSpacing /** * Compact stat badge with icon circle, value, and label. * Ported from iOS CozyStatBadge.swift */ @Composable fun CozyStatBadge( icon: ImageVector, label: String, value: Int, color: Color, modifier: Modifier = Modifier ) { Column( modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(AppSpacing.xs) ) { // Icon circle with soft background Box( modifier = Modifier .size(50.dp) .background(color.copy(alpha = 0.15f), CircleShape), contentAlignment = Alignment.Center ) { Icon( imageVector = icon, contentDescription = label, tint = color, modifier = Modifier.size(20.dp) ) } // Value Text( text = "$value", fontSize = 16.sp, fontWeight = FontWeight.Bold, color = AppColors.primaryText, textAlign = TextAlign.Center ) // Label Text( text = label, fontSize = 10.sp, fontWeight = FontWeight.Medium, color = AppColors.secondaryText, maxLines = 1, textAlign = TextAlign.Center ) } }