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.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll 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.ui.theme.* @Composable fun ProfileSettingsScreen( userName: String, userPhone: String, isNidVerified: Boolean, reportCount: Int, isAdminMode: Boolean, onToggleAdminMode: () -> Unit, lang: AppLanguage, onToggleLanguage: () -> Unit, onLogout: () -> Unit, modifier: Modifier = Modifier ) { Column( modifier = modifier .fillMaxSize() .background(MaterialTheme.colorScheme.background) .verticalScroll(rememberScrollState()) .padding(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp) ) { // User Profile Summary Card Surface( color = MaterialTheme.colorScheme.surface, shape = RoundedCornerShape(16.dp), border = androidx.compose.foundation.BorderStroke(1.dp, LightOutline), shadowElevation = 2.dp, modifier = Modifier.fillMaxWidth() ) { Column(modifier = Modifier.padding(16.dp)) { Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically ) { Box( modifier = Modifier .size(54.dp) .clip(CircleShape) .background(BrandNavyPrimary), contentAlignment = Alignment.Center ) { Text( text = userName.take(1).uppercase(), color = Color.White, style = MaterialTheme.typography.titleLarge.copy(fontWeight = FontWeight.Bold) ) } Spacer(modifier = Modifier.width(14.dp)) Column(modifier = Modifier.weight(1f)) { Text( text = userName, style = MaterialTheme.typography.titleMedium.copy( fontWeight = FontWeight.Bold, color = MaterialTheme.colorScheme.onSurface ) ) Text( text = userPhone, style = MaterialTheme.typography.bodySmall.copy(color = LightTextSecondary) ) } if (isNidVerified) { Surface( color = StatusVerifiedGreenBg, shape = RoundedCornerShape(8.dp) ) { Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp) ) { Icon(Icons.Default.Verified, contentDescription = null, tint = StatusVerifiedGreen, modifier = Modifier.size(14.dp)) Spacer(modifier = Modifier.width(4.dp)) Text( text = "NID Verified", color = StatusVerifiedGreen, style = MaterialTheme.typography.labelSmall.copy(fontWeight = FontWeight.Bold, fontSize = 10.sp) ) } } } } Spacer(modifier = Modifier.height(14.dp)) HorizontalDivider(color = LightOutline) Spacer(modifier = Modifier.height(10.dp)) Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween ) { Text( text = if (lang == AppLanguage.BN) "দাখিলকৃত মোট রিপোর্ট" else "Submitted Reports", style = MaterialTheme.typography.bodySmall.copy(color = LightTextSecondary) ) Text( text = "$reportCount টি", style = MaterialTheme.typography.bodySmall.copy(fontWeight = FontWeight.Bold, color = BrandNavyPrimary) ) } } } // App Preferences (Language, Admin Portal) Text( text = if (lang == AppLanguage.BN) "অ্যাপ সেটিংস ও সুবিধা" else "App Preferences", style = MaterialTheme.typography.titleSmall.copy(fontWeight = FontWeight.Bold) ) Surface( color = MaterialTheme.colorScheme.surface, shape = RoundedCornerShape(14.dp), border = androidx.compose.foundation.BorderStroke(1.dp, LightOutline), modifier = Modifier.fillMaxWidth() ) { Column(modifier = Modifier.padding(vertical = 6.dp)) { // Language Switch Row( modifier = Modifier .fillMaxWidth() .clickable { onToggleLanguage() } .padding(horizontal = 16.dp, vertical = 12.dp), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { Row(verticalAlignment = Alignment.CenterVertically) { Icon(Icons.Default.Language, contentDescription = null, tint = BrandNavyPrimary) Spacer(modifier = Modifier.width(12.dp)) Column { Text( text = if (lang == AppLanguage.BN) "ভাষা পরিবর্তন (Language)" else "App Language", style = MaterialTheme.typography.bodyMedium.copy(fontWeight = FontWeight.SemiBold) ) Text( text = if (lang == AppLanguage.BN) "বর্তমান: বাংলা" else "Current: English", style = MaterialTheme.typography.labelSmall.copy(color = LightTextMuted) ) } } Button( onClick = onToggleLanguage, shape = RoundedCornerShape(8.dp), contentPadding = PaddingValues(horizontal = 12.dp, vertical = 4.dp), modifier = Modifier.testTag("btn_toggle_language") ) { Text(if (lang == AppLanguage.BN) "English" else "বাংলা", fontSize = 12.sp) } } HorizontalDivider(color = LightOutline, modifier = Modifier.padding(horizontal = 16.dp)) // Admin Reviewer Mode Switch Row( modifier = Modifier .fillMaxWidth() .padding(horizontal = 16.dp, vertical = 12.dp), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { Row(verticalAlignment = Alignment.CenterVertically) { Icon(Icons.Default.AdminPanelSettings, contentDescription = null, tint = StatusAmber) Spacer(modifier = Modifier.width(12.dp)) Column { Text( text = if (lang == AppLanguage.BN) "অ্যাডমিন রিভিউ মোড (Admin Panel)" else "Admin Review Portal", style = MaterialTheme.typography.bodyMedium.copy(fontWeight = FontWeight.SemiBold) ) Text( text = if (lang == AppLanguage.BN) "রিপোর্ট অনুমোদন ও তদন্ত নোট" else "Review queue & fraud advisory", style = MaterialTheme.typography.labelSmall.copy(color = LightTextMuted) ) } } Switch( checked = isAdminMode, onCheckedChange = { onToggleAdminMode() }, colors = SwitchDefaults.colors(checkedThumbColor = BrandNavyPrimary), modifier = Modifier.testTag("switch_admin_mode") ) } } } // Cyber Crime Helplines Section (Bangladesh) Text( text = if (lang == AppLanguage.BN) "জরুরি সাইবার পুলিশ ও সরকারি হটলাইন" else "Emergency Cyber Helplines (BD)", style = MaterialTheme.typography.titleSmall.copy(fontWeight = FontWeight.Bold) ) Surface( color = MaterialTheme.colorScheme.surface, shape = RoundedCornerShape(14.dp), border = androidx.compose.foundation.BorderStroke(1.dp, LightOutline), modifier = Modifier.fillMaxWidth() ) { Column(modifier = Modifier.padding(14.dp), verticalArrangement = Arrangement.spacedBy(10.dp)) { HelplineRow( serviceName = if (lang == AppLanguage.BN) "জাতীয় জরুরি সেবা (National Emergency)" else "National Emergency", number = "999", icon = Icons.Default.Emergency ) HorizontalDivider(color = LightOutline) HelplineRow( serviceName = if (lang == AppLanguage.BN) "সিআইডি সাইবার পুলিশ হেল্পলাইন (CID Cyber)" else "CID Cyber Police Helpline", number = "01320000888", icon = Icons.Default.Security ) HorizontalDivider(color = LightOutline) HelplineRow( serviceName = if (lang == AppLanguage.BN) "বিটিআরসি ভুয়া এসএমএস ও ফ্রড সেল (BTRC)" else "BTRC Fake SMS Cell", number = "01730336431", icon = Icons.Default.SimCardAlert ) HorizontalDivider(color = LightOutline) HelplineRow( serviceName = if (lang == AppLanguage.BN) "ভোক্তা অধিকার সংরক্ষণ অধিদপ্তর (DNCRP)" else "Consumer Rights Directorate", number = "16121", icon = Icons.Default.Gavel ) } } // Logout Button OutlinedButton( onClick = onLogout, shape = RoundedCornerShape(12.dp), colors = ButtonDefaults.outlinedButtonColors(contentColor = StatusWarningRed), border = androidx.compose.foundation.BorderStroke(1.dp, StatusWarningRed.copy(alpha = 0.5f)), modifier = Modifier .fillMaxWidth() .height(48.dp) .testTag("btn_profile_logout") ) { Icon(Icons.Default.Logout, contentDescription = null, modifier = Modifier.size(18.dp)) Spacer(modifier = Modifier.width(6.dp)) Text(if (lang == AppLanguage.BN) "অ্যাকাউন্ট থেকে লগআউট" else "Log Out Account") } Spacer(modifier = Modifier.height(30.dp)) } } @Composable fun HelplineRow( serviceName: String, number: String, icon: androidx.compose.ui.graphics.vector.ImageVector ) { Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.SpaceBetween ) { Row( modifier = Modifier.weight(1f), verticalAlignment = Alignment.CenterVertically ) { Icon(imageVector = icon, contentDescription = null, tint = BrandNavyPrimary, modifier = Modifier.size(20.dp)) Spacer(modifier = Modifier.width(10.dp)) Text( text = serviceName, style = MaterialTheme.typography.bodySmall.copy(fontWeight = FontWeight.Medium), color = MaterialTheme.colorScheme.onSurface ) } Surface( color = StatusWarningRedBg, shape = RoundedCornerShape(6.dp) ) { Text( text = "📞 $number", color = StatusWarningRed, style = MaterialTheme.typography.labelSmall.copy(fontWeight = FontWeight.Bold), modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp) ) } } }