diff --git a/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt b/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt
index e7354d11e..1aaebdaa9 100644
--- a/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt
@@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.calculateEndPadding
 import androidx.compose.foundation.layout.calculateStartPadding
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.padding
+import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.Tab
 import androidx.compose.material3.TabRow
 import androidx.compose.runtime.Composable
@@ -80,9 +81,8 @@ fun TabbedScreen(
                     Tab(
                         selected = state.currentPage == index,
                         onClick = { scope.launch { state.animateScrollToPage(index) } },
-                        text = {
-                            TabText(stringResource(tab.titleRes), tab.badgeNumber, state.currentPage == index)
-                        },
+                        text = { TabText(text = stringResource(tab.titleRes), badgeCount = tab.badgeNumber) },
+                        unselectedContentColor = MaterialTheme.colorScheme.onSurface,
                     )
                 }
             }
diff --git a/app/src/main/java/eu/kanade/presentation/components/Tabs.kt b/app/src/main/java/eu/kanade/presentation/components/Tabs.kt
index 2ba0f1301..ce8c4b53f 100644
--- a/app/src/main/java/eu/kanade/presentation/components/Tabs.kt
+++ b/app/src/main/java/eu/kanade/presentation/components/Tabs.kt
@@ -30,17 +30,13 @@ fun TabIndicator(currentTabPosition: TabPosition) {
 fun TabText(
     text: String,
     badgeCount: Int? = null,
-    isCurrentPage: Boolean,
 ) {
     val pillAlpha = if (isSystemInDarkTheme()) 0.12f else 0.08f
 
     Row(
         verticalAlignment = Alignment.CenterVertically,
     ) {
-        Text(
-            text = text,
-            color = if (isCurrentPage) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onBackground,
-        )
+        Text(text = text)
         if (badgeCount != null) {
             Pill(
                 text = "$badgeCount",
diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt
index 134fa5936..b36186df0 100644
--- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt
+++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt
@@ -68,12 +68,13 @@ fun LibraryContent(
 
         if (isLibraryEmpty.not() && showPageTabs && categories.size > 1) {
             LibraryTabs(
-                state = pagerState,
                 categories = categories,
+                currentPageIndex = pagerState.currentPage,
                 showMangaCount = showMangaCount,
                 getNumberOfMangaForCategory = getNumberOfMangaForCategory,
                 isDownloadOnly = isDownloadOnly,
                 isIncognitoMode = isIncognitoMode,
+                onTabItemClick = { scope.launch { pagerState.animateScrollToPage(it) } },
             )
         }
 
diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt
index 621f29e95..f23ca01f4 100644
--- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt
+++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt
@@ -1,56 +1,54 @@
 package eu.kanade.presentation.library.components
 
 import androidx.compose.foundation.layout.Column
+import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.ScrollableTabRow
 import androidx.compose.material3.Tab
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.State
 import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
-import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.ui.unit.dp
 import eu.kanade.domain.category.model.Category
 import eu.kanade.presentation.category.visualName
 import eu.kanade.presentation.components.AppStateBanners
 import eu.kanade.presentation.components.Divider
-import eu.kanade.presentation.components.PagerState
 import eu.kanade.presentation.components.TabIndicator
 import eu.kanade.presentation.components.TabText
-import kotlinx.coroutines.launch
 
 @Composable
 fun LibraryTabs(
-    state: PagerState,
     categories: List<Category>,
+    currentPageIndex: Int,
     showMangaCount: Boolean,
     isDownloadOnly: Boolean,
     isIncognitoMode: Boolean,
     getNumberOfMangaForCategory: @Composable (Long) -> State<Int?>,
+    onTabItemClick: (Int) -> Unit,
 ) {
-    val scope = rememberCoroutineScope()
-
     Column {
         ScrollableTabRow(
-            selectedTabIndex = state.currentPage,
+            selectedTabIndex = currentPageIndex,
             edgePadding = 0.dp,
-            indicator = { TabIndicator(it[state.currentPage]) },
+            indicator = { TabIndicator(it[currentPageIndex]) },
             // TODO: use default when width is fixed upstream
             // https://issuetracker.google.com/issues/242879624
             divider = {},
         ) {
             categories.forEachIndexed { index, category ->
-                val count by if (showMangaCount) {
-                    getNumberOfMangaForCategory(category.id)
-                } else {
-                    remember { mutableStateOf<Int?>(null) }
-                }
                 Tab(
-                    selected = state.currentPage == index,
-                    onClick = { scope.launch { state.animateScrollToPage(index) } },
+                    selected = currentPageIndex == index,
+                    onClick = { onTabItemClick(index) },
                     text = {
-                        TabText(category.visualName, count, state.currentPage == index)
+                        TabText(
+                            text = category.visualName,
+                            badgeCount = if (showMangaCount) {
+                                getNumberOfMangaForCategory(category.id)
+                            } else {
+                                null
+                            }?.value,
+                        )
                     },
+                    unselectedContentColor = MaterialTheme.colorScheme.onSurface,
                 )
             }
         }