package com.example.ui.screens import androidx.compose.animation.core.* import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Language import androidx.compose.material.icons.filled.Security import androidx.compose.material.icons.filled.Shield import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.scale import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.testTag 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.example.data.model.AppLanguage import com.example.ui.theme.* @Composable fun SplashScreen( lang: AppLanguage, onToggleLang: () -> Unit, onContinue: () -> Unit, modifier: Modifier = Modifier ) { val infiniteTransition = rememberInfiniteTransition(label = "pulse") val pulseScale by infiniteTransition.animateFloat( initialValue = 0.96f, targetValue = 1.04f, animationSpec = infiniteRepeatable( animation = tween(1200, easing = FastOutSlowInEasing), repeatMode = RepeatMode.Reverse ), label = "shield_pulse" ) Box( modifier = modifier .fillMaxSize() .background( Brush.verticalGradient( colors = listOf( BrandNavyDark, BrandNavyPrimary, Color(0xFF0F3E74) ) ) ) .statusBarsPadding() .navigationBarsPadding() .padding(24.dp) ) { // Top Language Switcher Row( modifier = Modifier .fillMaxWidth() .align(Alignment.TopEnd), horizontalArrangement = Arrangement.End ) { Surface( onClick = onToggleLang, shape = RoundedCornerShape(20.dp), color = Color.White.copy(alpha = 0.15f), border = androidx.compose.foundation.BorderStroke(1.dp, Color.White.copy(alpha = 0.3f)), modifier = Modifier.testTag("splash_lang_toggle") ) { Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier.padding(horizontal = 12.dp, vertical = 6.dp) ) { Icon( imageVector = Icons.Default.Language, contentDescription = "Change Language", tint = Color.White, modifier = Modifier.size(16.dp) ) Spacer(modifier = Modifier.width(6.dp)) Text( text = if (lang == AppLanguage.BN) "English" else "বাংলা", style = MaterialTheme.typography.labelMedium.copy( color = Color.White, fontWeight = FontWeight.Bold ) ) } } } // Center Brand Identity & Seal Column( modifier = Modifier .fillMaxWidth() .align(Alignment.Center), horizontalAlignment = Alignment.CenterHorizontally ) { Box( modifier = Modifier .scale(pulseScale) .size(110.dp) .clip(CircleShape) .background(BrandBlueAccent.copy(alpha = 0.25f)) .border(2.dp, Color.White.copy(alpha = 0.4f), CircleShape), contentAlignment = Alignment.Center ) { Icon( imageVector = Icons.Default.Shield, contentDescription = "Shield Logo", tint = Color.White, modifier = Modifier.size(60.dp) ) } Spacer(modifier = Modifier.height(24.dp)) Text( text = if (lang == AppLanguage.BN) "সতর্ক বাংলাদেশ" else "Satark BD", style = MaterialTheme.typography.headlineMedium.copy( fontWeight = FontWeight.Black, fontSize = 28.sp, color = Color.White ), textAlign = TextAlign.Center ) Spacer(modifier = Modifier.height(8.dp)) Text( text = if (lang == AppLanguage.BN) "কোম্পানি যাচাই ও প্রতারণা প্রতিরোধে আপনার বিশ্বস্ত প্ল্যাটফর্ম" else "Scam Reporting & Company Verification Shield for Bangladesh", style = MaterialTheme.typography.bodyMedium.copy( color = Color.White.copy(alpha = 0.85f), fontSize = 14.sp ), textAlign = TextAlign.Center, modifier = Modifier.padding(horizontal = 16.dp) ) Spacer(modifier = Modifier.height(16.dp)) // Official Trust Badges Row( horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically ) { Surface( color = Color.White.copy(alpha = 0.12f), shape = RoundedCornerShape(12.dp) ) { Text( text = if (lang == AppLanguage.BN) "🛡️ RJSC ও ট্রেড লাইসেন্স ডেটাবেজ" else "🛡️ RJSC & Trade License DB", style = MaterialTheme.typography.labelSmall.copy( color = Color(0xFF67E8F9), fontSize = 11.sp, fontWeight = FontWeight.SemiBold ), modifier = Modifier.padding(horizontal = 10.dp, vertical = 5.dp) ) } } } // Bottom CTA Buttons Column( modifier = Modifier .fillMaxWidth() .align(Alignment.BottomCenter), horizontalAlignment = Alignment.CenterHorizontally ) { Button( onClick = onContinue, colors = ButtonDefaults.buttonColors( containerColor = Color.White, contentColor = BrandNavyPrimary ), shape = RoundedCornerShape(14.dp), modifier = Modifier .fillMaxWidth() .height(52.dp) .testTag("btn_splash_get_started") ) { Text( text = if (lang == AppLanguage.BN) "শুরু করুন (Get Started)" else "Get Started", style = MaterialTheme.typography.titleMedium.copy( fontWeight = FontWeight.Bold, fontSize = 16.sp ) ) } Spacer(modifier = Modifier.height(12.dp)) Text( text = if (lang == AppLanguage.BN) "সাইবার প্রতারণা প্রতিরোধে বাংলাদেশ পুলিশ ও বিটিআরসি নির্দেশিকা সহায়িকা" else "Aligned with BD Cyber Police & BTRC Public Safety Directives", style = MaterialTheme.typography.bodySmall.copy( color = Color.White.copy(alpha = 0.6f), fontSize = 11.sp ), textAlign = TextAlign.Center ) } } }