package id.ac.ubharajaya.sistemakademik import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.* import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Modifier import id.ac.ubharajaya.sistemakademik.ui.screens.AbsensiScreen import id.ac.ubharajaya.sistemakademik.ui.screens.LoginScreen import id.ac.ubharajaya.sistemakademik.ui.screens.ProfilScreen import id.ac.ubharajaya.sistemakademik.ui.screens.RiwayatScreen import id.ac.ubharajaya.sistemakademik.ui.theme.SistemAkademikTheme import id.ac.ubharajaya.sistemakademik.utils.SessionManager class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() val sessionManager = SessionManager(this) setContent { SistemAkademikTheme { var isLoggedIn by remember { mutableStateOf(sessionManager.isLoggedIn()) } Surface(modifier = Modifier.fillMaxSize()) { if (isLoggedIn) { MainNavigation( activity = this, sessionManager = sessionManager, onLogout = { sessionManager.logout() isLoggedIn = false } ) } else { LoginScreen( onLoginSuccess = { isLoggedIn = true }, sessionManager = sessionManager ) } } } } } } @Composable fun MainNavigation( activity: ComponentActivity, sessionManager: SessionManager, onLogout: () -> Unit ) { var selectedTab by remember { mutableStateOf(0) } Scaffold( bottomBar = { NavigationBar { NavigationBarItem( selected = selectedTab == 0, onClick = { selectedTab = 0 }, icon = { Icon(Icons.Default.CheckCircle, "Absensi") }, label = { Text("Absensi") } ) NavigationBarItem( selected = selectedTab == 1, onClick = { selectedTab = 1 }, icon = { Icon(Icons.Default.List, "Riwayat") }, label = { Text("Riwayat") } ) NavigationBarItem( selected = selectedTab == 2, onClick = { selectedTab = 2 }, icon = { Icon(Icons.Default.Person, "Profil") }, label = { Text("Profil") } ) } } ) { padding -> when (selectedTab) { 0 -> AbsensiScreen( modifier = Modifier.padding(padding), activity = activity, sessionManager = sessionManager ) 1 -> RiwayatScreen( modifier = Modifier.padding(padding), sessionManager = sessionManager ) 2 -> ProfilScreen( modifier = Modifier.padding(padding), sessionManager = sessionManager, onLogout = onLogout ) } } }