From 5c998be2c22393ecb104339a2fa6ea1fbfc4ed91 Mon Sep 17 00:00:00 2001 From: tapframe <85391825+tapframe@users.noreply.github.com> Date: Wed, 11 Mar 2026 23:00:12 +0530 Subject: [PATCH] feat: add animated tab visibility with alpha transitions in AppScreen --- composeApp/src/commonMain/kotlin/com/nuvio/app/App.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/App.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/App.kt index 8f75feaa3..2dc1a9882 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/App.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/App.kt @@ -5,6 +5,8 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.tween import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Home import androidx.compose.material.icons.rounded.Search @@ -191,11 +193,16 @@ fun App() { .padding(innerPadding), ) { AppScreenTab.entries.forEach { tab -> + val tabAlpha by animateFloatAsState( + targetValue = if (selectedTab == tab) 1f else 0f, + animationSpec = tween(durationMillis = 220), + label = "tab_alpha_${tab.name}", + ) AppScreen( tab = tab, modifier = Modifier .fillMaxSize() - .alpha(if (selectedTab == tab) 1f else 0f) + .alpha(tabAlpha) .zIndex(if (selectedTab == tab) 1f else 0f), onCatalogClick = onCatalogClick, onPosterClick = { meta ->