package com.example.businesscard import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.background 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.Email import androidx.compose.material.icons.filled.Phone import androidx.compose.material.icons.filled.Share 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.draw.shadow import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { MaterialTheme { BusinessCardApp() } } } } @Composable fun BusinessCardApp() { Box( modifier = Modifier .fillMaxSize() .background( Brush.verticalGradient( colors = listOf( Color(0xFF0F2027), Color(0xFF203A43), Color(0xFF2C5364) ) ) ), contentAlignment = Alignment.Center ) { Card( modifier = Modifier .padding(24.dp) .fillMaxWidth() .shadow( elevation = 20.dp, shape = RoundedCornerShape(24.dp), spotColor = Color(0xFF00D4FF) ), shape = RoundedCornerShape(24.dp), colors = CardDefaults.cardColors( containerColor = Color(0xFF1A1A2E).copy(alpha = 0.95f) ) ) { Column( modifier = Modifier .padding(32.dp) .fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally ) { // Avatar Section Box( modifier = Modifier .size(120.dp) .clip(CircleShape) .background( Brush.linearGradient( colors = listOf( Color(0xFF00D4FF), Color(0xFF0094FF) ) ) ) .padding(4.dp), contentAlignment = Alignment.Center ) { Box( modifier = Modifier .fillMaxSize() .clip(CircleShape) .background(Color(0xFF16213E)), contentAlignment = Alignment.Center ) { Text( text = "DP", fontSize = 48.sp, fontWeight = FontWeight.Bold, color = Color(0xFF00D4FF) ) } } Spacer(modifier = Modifier.height(24.dp)) // Name Text( text = "Dendi Yogia Pratama", fontSize = 26.sp, fontWeight = FontWeight.Bold, color = Color.White ) Spacer(modifier = Modifier.height(8.dp)) // Title Text( text = "Market Analyze", fontSize = 18.sp, color = Color(0xFF00D4FF), fontWeight = FontWeight.Medium ) Spacer(modifier = Modifier.height(4.dp)) Text( text = "Teknikal Specialis", fontSize = 14.sp, color = Color(0xFFB0B0B0) ) Spacer(modifier = Modifier.height(32.dp)) // Divider Box( modifier = Modifier .fillMaxWidth() .height(1.dp) .background( Brush.horizontalGradient( colors = listOf( Color.Transparent, Color(0xFF00D4FF), Color.Transparent ) ) ) ) Spacer(modifier = Modifier.height(32.dp)) // Contact Info ContactItem( icon = Icons.Default.Phone, text = "+62 812 3456 7890" ) Spacer(modifier = Modifier.height(16.dp)) ContactItem( icon = Icons.Default.Share, text = "@dendiyogia" ) Spacer(modifier = Modifier.height(16.dp)) ContactItem( icon = Icons.Default.Email, text = "dendiyogiap@email.com" ) Spacer(modifier = Modifier.height(32.dp)) // Action Button Button( onClick = { }, modifier = Modifier .fillMaxWidth() .height(56.dp), shape = RoundedCornerShape(16.dp), colors = ButtonDefaults.buttonColors( containerColor = Color.Transparent ), contentPadding = PaddingValues(0.dp) ) { Box( modifier = Modifier .fillMaxSize() .background( Brush.horizontalGradient( colors = listOf( Color(0xFF00D4FF), Color(0xFF0094FF) ) ) ), contentAlignment = Alignment.Center ) { Text( text = "SAVE CONTACT", fontWeight = FontWeight.Bold, fontSize = 16.sp, color = Color.White ) } } } } } } @Composable fun ContactItem(icon: ImageVector, text: String) { Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically ) { Box( modifier = Modifier .size(48.dp) .clip(RoundedCornerShape(12.dp)) .background( Color(0xFF00D4FF).copy(alpha = 0.1f) ), contentAlignment = Alignment.Center ) { Icon( imageVector = icon, contentDescription = null, tint = Color(0xFF00D4FF), modifier = Modifier.size(24.dp) ) } Spacer(modifier = Modifier.width(16.dp)) Text( text = text, fontSize = 16.sp, color = Color.White.copy(alpha = 0.9f) ) } } @Preview(showBackground = true) @Composable fun PreviewBusinessCard() { MaterialTheme { BusinessCardApp() } }