package com.example.ui.screens import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.* import androidx.compose.material.icons.outlined.* 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.graphics.Color import androidx.compose.ui.platform.testTag import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.data.model.AppLanguage import com.example.data.model.AppNotification import com.example.ui.theme.* @Composable fun NotificationsScreen( notifications: List, lang: AppLanguage, onNotificationClick: (AppNotification) -> Unit, modifier: Modifier = Modifier ) { Column( modifier = modifier .fillMaxSize() .background(MaterialTheme.colorScheme.background) ) { if (notifications.isEmpty()) { Box( modifier = Modifier .fillMaxSize() .padding(32.dp), contentAlignment = Alignment.Center ) { Column(horizontalAlignment = Alignment.CenterHorizontally) { Icon( imageVector = Icons.Outlined.NotificationsNone, contentDescription = null, tint = LightTextMuted, modifier = Modifier.size(48.dp) ) Spacer(modifier = Modifier.height(12.dp)) Text( text = if (lang == AppLanguage.BN) "কোনো নতুন বিজ্ঞপ্তি নেই" else "No new notifications", style = MaterialTheme.typography.bodyLarge.copy(color = LightTextMuted) ) } } } else { LazyColumn( modifier = Modifier .fillMaxSize() .padding(horizontal = 16.dp), contentPadding = PaddingValues(top = 16.dp, bottom = 80.dp), verticalArrangement = Arrangement.spacedBy(10.dp) ) { items(notifications) { notif -> Surface( onClick = { onNotificationClick(notif) }, shape = RoundedCornerShape(12.dp), color = if (!notif.isRead) Color(0xFFF0F9FF) else MaterialTheme.colorScheme.surface, border = androidx.compose.foundation.BorderStroke( 1.dp, if (!notif.isRead) BrandBlueAccent.copy(alpha = 0.4f) else LightOutline ), shadowElevation = if (!notif.isRead) 2.dp else 0.dp, modifier = Modifier .fillMaxWidth() .testTag("notification_item_${notif.id}") ) { Row( modifier = Modifier .fillMaxWidth() .padding(14.dp), verticalAlignment = Alignment.Top ) { Box( modifier = Modifier .size(40.dp) .clip(CircleShape) .background( when (notif.type) { "CRITICAL_ALERT" -> StatusWarningRedBg "LEGAL_UPDATE" -> Color(0xFFF3E8FF) else -> StatusReviewBlueBg } ), contentAlignment = Alignment.Center ) { Icon( imageVector = when (notif.type) { "CRITICAL_ALERT" -> Icons.Default.Warning "LEGAL_UPDATE" -> Icons.Default.Gavel else -> Icons.Default.NotificationsActive }, contentDescription = null, tint = when (notif.type) { "CRITICAL_ALERT" -> StatusWarningRed "LEGAL_UPDATE" -> Color(0xFF7E22CE) else -> BrandNavyPrimary }, modifier = Modifier.size(20.dp) ) } Spacer(modifier = Modifier.width(12.dp)) Column(modifier = Modifier.weight(1f)) { Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { Text( text = if (lang == AppLanguage.BN) notif.titleBn else notif.titleEn, style = MaterialTheme.typography.titleSmall.copy( fontWeight = if (!notif.isRead) FontWeight.Bold else FontWeight.SemiBold, color = MaterialTheme.colorScheme.onSurface ) ) if (!notif.isRead) { Box( modifier = Modifier .size(8.dp) .clip(CircleShape) .background(BrandNavyPrimary) ) } } Spacer(modifier = Modifier.height(4.dp)) Text( text = if (lang == AppLanguage.BN) notif.messageBn else notif.messageEn, style = MaterialTheme.typography.bodySmall.copy( color = LightTextSecondary, lineHeight = 16.sp ) ) Spacer(modifier = Modifier.height(6.dp)) Text( text = notif.timestamp, style = MaterialTheme.typography.labelSmall.copy( color = LightTextMuted, fontSize = 10.sp ) ) } } } } } } } }