package com.craigvg.lichun_android.ui.screens.activities.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Warning import androidx.compose.material3.* import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp import com.craigvg.lichun_android.domain.models.Habit import com.craigvg.lichun_android.ui.theme.AppColors import com.craigvg.lichun_android.ui.theme.AppSpacing import com.craigvg.lichun_android.ui.theme.AppTypography /** * Habit progress row with quit/stop-quit actions * Ported from iOS HabitRow.swift */ @Composable fun HabitRow( habit: Habit, onQuit: () -> Unit, onStopQuit: () -> Unit ) { Card( modifier = Modifier.fillMaxWidth(), shape = RoundedCornerShape(AppSpacing.cornerRadius), colors = CardDefaults.cardColors(containerColor = AppColors.surfaceElevated) ) { Column( modifier = Modifier .fillMaxWidth() .padding(AppSpacing.md) ) { Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically ) { Box( modifier = Modifier .size(48.dp) .clip(RoundedCornerShape(AppSpacing.smallCornerRadius)) .background(AppColors.error.copy(alpha = 0.2f)), contentAlignment = Alignment.Center ) { Icon( imageVector = Icons.Default.Warning, contentDescription = null, tint = AppColors.error ) } Spacer(modifier = Modifier.width(AppSpacing.sm)) Column(modifier = Modifier.weight(1f)) { Text( text = habit.name, style = AppTypography.bodyBold, color = AppColors.primaryText ) Text( text = habit.description, style = AppTypography.caption, color = AppColors.secondaryText ) } } if (habit.isQuitting) { Spacer(modifier = Modifier.height(AppSpacing.sm)) Column { Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween ) { Text( text = "Quitting Progress", style = AppTypography.caption, color = AppColors.secondaryText ) Text( text = "${habit.quitProgress}/30 days", style = AppTypography.captionBold, color = AppColors.success ) } Spacer(modifier = Modifier.height(4.dp)) Box( modifier = Modifier .fillMaxWidth() .height(8.dp) .clip(RoundedCornerShape(4.dp)) .background(AppColors.success.copy(alpha = 0.2f)) ) { Box( modifier = Modifier .fillMaxWidth(habit.quitProgressPercentage) .fillMaxHeight() .clip(RoundedCornerShape(4.dp)) .background(AppColors.success) ) } } Spacer(modifier = Modifier.height(AppSpacing.sm)) Button( onClick = onStopQuit, colors = ButtonDefaults.buttonColors( containerColor = AppColors.error.copy(alpha = 0.2f), contentColor = AppColors.error ), shape = RoundedCornerShape(AppSpacing.smallCornerRadius), modifier = Modifier.fillMaxWidth() ) { Text("Stop Quitting") } } else { Spacer(modifier = Modifier.height(AppSpacing.sm)) Button( onClick = onQuit, colors = ButtonDefaults.buttonColors( containerColor = AppColors.success ), shape = RoundedCornerShape(AppSpacing.smallCornerRadius), modifier = Modifier.fillMaxWidth() ) { Text("Start Quitting") } } } } }