diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt index a76a38bb..8f3c187e 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt @@ -87,6 +87,7 @@ fun LobstersApp( label = "Hottest", route = Destinations.Hottest.getRoute(), icon = ClawIcons.Flame, + selectedIcon = ClawIcons.FlameFilled, ) { coroutineScope.launch { hottestListState.animateScrollToItem(index = 0) } }, @@ -94,6 +95,7 @@ fun LobstersApp( label = "Newest", route = Destinations.Newest.getRoute(), icon = ClawIcons.New, + selectedIcon = ClawIcons.NewFilled, ) { coroutineScope.launch { newestListState.animateScrollToItem(index = 0) } }, @@ -101,6 +103,7 @@ fun LobstersApp( label = "Saved", route = Destinations.Saved.getRoute(), icon = ClawIcons.HeartBorder, + selectedIcon = ClawIcons.Heart, ) { coroutineScope.launch { savedListState.animateScrollToItem(index = 0) } }, diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt index 09525450..e688d9d2 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt @@ -1,6 +1,7 @@ package dev.msfjarvis.claw.android.ui.decorations import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.Crossfade import androidx.compose.material3.Icon import androidx.compose.material3.NavigationBar import androidx.compose.material3.NavigationBarItem @@ -28,12 +29,20 @@ fun ClawNavigationBar( ) { NavigationBar(modifier = modifier) { items.forEach { navItem -> + val isCurrentDestination = navController.currentDestination?.route == navItem.route NavigationBarItem( - icon = { Icon(painter = navItem.icon, contentDescription = navItem.label.uppercase()) }, + icon = { + Crossfade(isCurrentDestination) { + Icon( + painter = if (it) navItem.selectedIcon else navItem.icon, + contentDescription = navItem.label.uppercase() + ) + } + }, label = { Text(text = navItem.label) }, - selected = navController.currentDestination?.route == navItem.route, + selected = isCurrentDestination, onClick = { - if (navController.currentDestination?.route == navItem.route) { + if (isCurrentDestination) { navItem.listStateResetCallback() return@NavigationBarItem } @@ -52,5 +61,6 @@ class NavigationItem( val label: String, val route: String, val icon: Painter, + val selectedIcon: Painter, val listStateResetCallback: () -> Unit, ) diff --git a/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/res/ClawIcons.kt b/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/res/ClawIcons.kt index b7d212d0..b6bcec73 100644 --- a/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/res/ClawIcons.kt +++ b/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/res/ClawIcons.kt @@ -5,8 +5,10 @@ import dev.msfjarvis.claw.common.res.clawicons.comment_black_24dp import dev.msfjarvis.claw.common.res.clawicons.favorite_black_24dp import dev.msfjarvis.claw.common.res.clawicons.favorite_border_black_24dp import dev.msfjarvis.claw.common.res.clawicons.new_releases_black_24dp +import dev.msfjarvis.claw.common.res.clawicons.new_releases_filled_black_24dp import dev.msfjarvis.claw.common.res.clawicons.public_black_24dp import dev.msfjarvis.claw.common.res.clawicons.whatshot_black_24dp +import dev.msfjarvis.claw.common.res.clawicons.whatshot_filled_black_24dp object ClawIcons { @@ -16,11 +18,15 @@ object ClawIcons { val Flame = whatshot_black_24dp() + val FlameFilled = whatshot_filled_black_24dp() + val Heart = favorite_black_24dp() val HeartBorder = favorite_border_black_24dp() val New = new_releases_black_24dp() + val NewFilled = new_releases_filled_black_24dp() + val Web = public_black_24dp() } diff --git a/common/src/commonMain/svgs/new_releases_filled_black_24dp.svg b/common/src/commonMain/svgs/new_releases_filled_black_24dp.svg new file mode 100644 index 00000000..c66063fe --- /dev/null +++ b/common/src/commonMain/svgs/new_releases_filled_black_24dp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/common/src/commonMain/svgs/whatshot_filled_black_24dp.svg b/common/src/commonMain/svgs/whatshot_filled_black_24dp.svg new file mode 100644 index 00000000..8b4e7a8a --- /dev/null +++ b/common/src/commonMain/svgs/whatshot_filled_black_24dp.svg @@ -0,0 +1 @@ + \ No newline at end of file