// src/main/kotlin/ui/ActiveTradeRow.kt package ui import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* 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.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import model.ActiveTradeItem import model.ActiveTradeType @Composable fun ActiveTradeRow( item: ActiveTradeItem, onCancelClick: (String) -> Unit = {}, // 미체결 취소용 onClick: () -> Unit ) { val isMonitoring = item.type == ActiveTradeType.MONITORING // 상태에 따른 배경색 설정 (미체결은 연노랑으로 강조) val backgroundColor = if (isMonitoring) Color.White else Color(0xFFFFF9C4) val badgeColor = if (isMonitoring) Color(0xFF0E62CF) else Color(0xFFE03E2D) Card( modifier = Modifier .fillMaxWidth() .padding(vertical = 4.dp, horizontal = 2.dp) .clickable { onClick() }, elevation = 2.dp, shape = RoundedCornerShape(4.dp), backgroundColor = backgroundColor ) { Row( modifier = Modifier.padding(12.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.SpaceBetween ) { Column(modifier = Modifier.weight(1f)) { Row(verticalAlignment = Alignment.CenterVertically) { // 상태 배지 (자동감시 / 미체결) Surface( color = badgeColor, shape = RoundedCornerShape(4.dp) ) { Text( text = if (isMonitoring) "자동감시" else "미체결", color = Color.White, fontSize = 10.sp, modifier = Modifier.padding(horizontal = 4.dp, vertical = 2.dp) ) } Spacer(modifier = Modifier.width(6.dp)) Text( text = item.name, fontWeight = FontWeight.Bold, fontSize = 14.sp, maxLines = 1 ) } Text( text = "${item.code} | ${if (isMonitoring) "목표가" else "주문가"}: ${String.format("%,.0f", item.price)}", fontSize = 11.sp, color = Color.Gray ) } // 우측 액션 영역 Column(horizontalAlignment = Alignment.End) { if (!isMonitoring) { // 미체결인 경우 취소 버튼 표시 Button( onClick = { onCancelClick(item.id) }, contentPadding = PaddingValues(horizontal = 8.dp), modifier = Modifier.height(28.dp), colors = ButtonDefaults.buttonColors(backgroundColor = Color.LightGray) ) { Text("취소", fontSize = 11.sp) } Text( text = "${item.quantity}주", fontSize = 12.sp, fontWeight = FontWeight.Bold, color = Color(0xFFE03E2D) ) } else { // 자동감시 중인 경우 상태 텍스트 표시 Text( text = "감시중", fontSize = 12.sp, color = badgeColor, fontWeight = FontWeight.Medium ) } } } } }