package com.aistudio.bonjuteri.jwlry.ui.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Category import androidx.compose.material.icons.filled.Favorite import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.filled.Person import androidx.compose.material.icons.filled.ShoppingCart import androidx.compose.material.icons.outlined.Category import androidx.compose.material.icons.outlined.FavoriteBorder import androidx.compose.material.icons.outlined.Home import androidx.compose.material.icons.outlined.PersonOutline import androidx.compose.material.icons.outlined.ShoppingCart import androidx.compose.material3.BadgedBox import androidx.compose.material3.Icon import androidx.compose.material3.NavigationBar import androidx.compose.material3.NavigationBarItem import androidx.compose.material3.NavigationBarItemDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector 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.aistudio.bonjuteri.jwlry.ui.theme.GoldPrimary import com.aistudio.bonjuteri.jwlry.ui.theme.GoldSubtle import com.aistudio.bonjuteri.jwlry.ui.theme.MutedGrey import com.aistudio.bonjuteri.jwlry.ui.theme.PrimaryBlack import com.aistudio.bonjuteri.jwlry.ui.theme.PureWhite enum class BottomNavDestination( val title: String, val selectedIcon: ImageVector, val unselectedIcon: ImageVector, val testTag: String ) { HOME("Ana Sayfa", Icons.Filled.Home, Icons.Outlined.Home, "bottom_nav_home"), CATEGORIES("Kategoriler", Icons.Filled.Category, Icons.Outlined.Category, "bottom_nav_categories"), FAVORITES("Favoriler", Icons.Filled.Favorite, Icons.Outlined.FavoriteBorder, "bottom_nav_favorites"), CART("Sepet", Icons.Filled.ShoppingCart, Icons.Outlined.ShoppingCart, "bottom_nav_cart"), PROFILE("Hesabım", Icons.Filled.Person, Icons.Outlined.PersonOutline, "bottom_nav_profile") } @Composable fun BonjuteriBottomBar( currentDestination: BottomNavDestination, onDestinationSelected: (BottomNavDestination) -> Unit, cartCount: Int = 0, favoritesCount: Int = 0, modifier: Modifier = Modifier ) { NavigationBar( modifier = modifier.navigationBarsPadding(), containerColor = PureWhite, tonalElevation = 6.dp ) { BottomNavDestination.entries.forEach { dest -> val isSelected = currentDestination == dest NavigationBarItem( selected = isSelected, onClick = { onDestinationSelected(dest) }, icon = { val badgeCount = when (dest) { BottomNavDestination.CART -> cartCount BottomNavDestination.FAVORITES -> favoritesCount else -> 0 } BadgedBox( badge = { if (badgeCount > 0) { Box( modifier = Modifier .background(GoldPrimary, CircleShape) .padding(horizontal = 4.dp, vertical = 1.dp) ) { Text( text = if (badgeCount > 99) "99+" else badgeCount.toString(), color = PureWhite, fontSize = 9.sp, fontWeight = FontWeight.Bold ) } } } ) { Icon( imageVector = if (isSelected) dest.selectedIcon else dest.unselectedIcon, contentDescription = dest.title ) } }, label = { Text( text = dest.title, fontSize = 11.sp, fontWeight = if (isSelected) FontWeight.Bold else FontWeight.Normal ) }, colors = NavigationBarItemDefaults.colors( selectedIconColor = PrimaryBlack, selectedTextColor = PrimaryBlack, indicatorColor = GoldSubtle, unselectedIconColor = MutedGrey, unselectedTextColor = MutedGrey ), modifier = Modifier.testTag(dest.testTag) ) } } }