package com.example.dattingapp.Login import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import com.example.dattingapp.ui.theme.DattingAPPTheme import androidx.compose.foundation.Canvas import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable 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.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.AddAPhoto import androidx.compose.material.icons.filled.CameraAlt import androidx.compose.material.icons.filled.Image import androidx.compose.material3.* import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.PathEffect import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp class UploadProfileImgae : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { DattingAPPTheme { ProfileImageUploadScreen() } } } } @OptIn(ExperimentalMaterial3Api::class) @Composable fun ProfileImageUploadScreen( onBackClick: () -> Unit = {}, onUploadFromGalleryClick: () -> Unit = {}, onTakePhotoClick: () -> Unit = {}, onContinueClick: () -> Unit = {}, onContactSupportClick: () -> Unit = {} ) { val backgroundGradient = Brush.verticalGradient( colors = listOf( Color(0xFFFFF7F8), Color(0xFFFFFFFF), Color(0xFFF7EFFC) ) ) val buttonGradient = Brush.horizontalGradient( colors = listOf( Color(0xFFD84B75), Color(0xFF8E54C1) ) ) val avatarGradientBorder = Brush.sweepGradient( colors = listOf( Color(0xFFB00020), Color(0xFF7B1FA2), Color(0xFFB00020) ) ) Scaffold( topBar = { TopAppBar( title = { Box( modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.Center ) { Text( text = "VibeCheck", fontWeight = FontWeight.Bold, color = Color(0xFF9C0037), fontSize = 20.sp, modifier = Modifier.padding(end = 48.dp) // Offset navigation icon width to center text perfectly ) } }, navigationIcon = { IconButton(onClick = onBackClick) { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back", tint = Color.Black ) } }, colors = TopAppBarDefaults.topAppBarColors(containerColor = Color.Transparent) ) }, containerColor = Color.Transparent ) { innerPadding -> Column( modifier = Modifier .fillMaxSize() .background(brush = backgroundGradient) .padding(innerPadding) .padding(horizontal = 24.dp), horizontalAlignment = Alignment.CenterHorizontally ) { Spacer(modifier = Modifier.height(16.dp)) Text( text = "Upload profile photo", fontSize = 22.sp, fontWeight = FontWeight.Bold, color = Color(0xFF1D1B20) ) Spacer(modifier = Modifier.height(8.dp)) Text( text = "Choose a photo that shows your\nbest self. You can always change\nthis later.", fontSize = 13.sp, color = Color(0xFF666666), textAlign = TextAlign.Center, lineHeight = 18.sp ) Spacer(modifier = Modifier.height(36.dp)) // Circular Avatar Placeholder with Gradient Ring Box( contentAlignment = Alignment.Center, modifier = Modifier .size(190.dp) .shadow( elevation = 16.dp, shape = CircleShape, spotColor = Color(0x33B00020), ambientColor = Color(0x337B1FA2) ) .background(Color.White, CircleShape) .border(width = 3.dp, brush = avatarGradientBorder, shape = CircleShape) ) { // Dashed Inner Circle Outline Canvas(modifier = Modifier.size(160.dp)) { val stroke = Stroke( width = 2f, pathEffect = PathEffect.dashPathEffect(floatArrayOf(10f, 10f), 0f) ) drawCircle( color = Color(0xFFE0C4CD), style = stroke ) } // Center Camera Icon Icon( imageVector = Icons.Default.AddAPhoto, contentDescription = "Add Photo", tint = Color(0xFFE5A8B8), modifier = Modifier.size(44.dp) ) } Spacer(modifier = Modifier.weight(1f)) // Secondary Action Options Column( verticalArrangement = Arrangement.spacedBy(12.dp), modifier = Modifier.fillMaxWidth() ) { // Upload from gallery Button Surface( onClick = onUploadFromGalleryClick, shape = RoundedCornerShape(12.dp), color = Color(0xFFE8DDED).copy(alpha = 0.6f), modifier = Modifier .fillMaxWidth() .height(48.dp) ) { Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Center ) { Icon( imageVector = Icons.Default.Image, contentDescription = null, tint = Color(0xFF6B008A), modifier = Modifier.size(18.dp) ) Spacer(modifier = Modifier.width(8.dp)) Text( text = "Upload from gallery", color = Color(0xFF6B008A), fontSize = 13.sp, fontWeight = FontWeight.SemiBold ) } } // Take a photo Button Surface( onClick = onTakePhotoClick, shape = RoundedCornerShape(12.dp), color = Color(0xFFE8DDED).copy(alpha = 0.6f), modifier = Modifier .fillMaxWidth() .height(48.dp) ) { Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Center ) { Icon( imageVector = Icons.Default.CameraAlt, contentDescription = null, tint = Color(0xFF6B008A), modifier = Modifier.size(18.dp) ) Spacer(modifier = Modifier.width(8.dp)) Text( text = "Take a photo", color = Color(0xFF6B008A), fontSize = 13.sp, fontWeight = FontWeight.SemiBold ) } } } Spacer(modifier = Modifier.height(20.dp)) // Main Gradient Continue Button Button( onClick = onContinueClick, modifier = Modifier .fillMaxWidth() .height(50.dp) .background( brush = buttonGradient, shape = RoundedCornerShape(12.dp) ), colors = ButtonDefaults.buttonColors(containerColor = Color.Transparent), shape = RoundedCornerShape(12.dp) ) { Text( text = "Continue", color = Color.White, fontWeight = FontWeight.Bold, fontSize = 16.sp ) } Spacer(modifier = Modifier.height(16.dp)) // Need help? Contact support Footer Row( horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically ) { Text( text = "Need help? ", fontSize = 12.sp, color = Color(0xFF666666) ) Text( text = "Contact support", fontSize = 12.sp, fontWeight = FontWeight.Bold, color = Color(0xFFB00020), modifier = Modifier.clickable { onContactSupportClick() } ) } Spacer(modifier = Modifier.height(16.dp)) } } } @Preview(showBackground = true, device = "spec:width=411dp,height=891dp") @Composable fun ProfileImageUploadScreenPreview() { ProfileImageUploadScreen() }