From 5953111897f8c8ef93e4de08894d3d2d38c80163 Mon Sep 17 00:00:00 2001 From: Achmad Setyabudi Susilo Date: Sun, 28 Jun 2026 21:22:09 +0700 Subject: [PATCH] fix(#25): render expense tab counts via TabText Replace the plain Text inside PrimaryTabRow's Tab with the shared TabText composable. Pass the current size of the expenses and recurring state flows as badgeCount so each tab shows a small pill with the (post-filter) list size. Counts update reactively as items are added, deleted, or filtered by search/date. --- .../ledgerr/ui/screens/expenses/ExpenseListScreen.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/dev/achmad/ledgerr/ui/screens/expenses/ExpenseListScreen.kt b/app/src/main/java/dev/achmad/ledgerr/ui/screens/expenses/ExpenseListScreen.kt index ba08737..51715dc 100644 --- a/app/src/main/java/dev/achmad/ledgerr/ui/screens/expenses/ExpenseListScreen.kt +++ b/app/src/main/java/dev/achmad/ledgerr/ui/screens/expenses/ExpenseListScreen.kt @@ -68,6 +68,7 @@ import dev.achmad.ledgerr.ui.components.ExpandedFabScrim import dev.achmad.ledgerr.ui.components.ExportAction import dev.achmad.ledgerr.ui.components.MiniFab import dev.achmad.ledgerr.ui.components.SingleSelectFilterChipGroup +import dev.achmad.ledgerr.ui.components.TabText import dev.achmad.ledgerr.ui.screens.add_edit_expense.AddEditExpenseScreen import dev.achmad.ledgerr.ui.screens.add_edit_recurring.AddEditRecurringScreen import dev.achmad.ledgerr.ui.screens.import_bank_statement.ImportBankStatementScreen @@ -136,10 +137,11 @@ object ExpenseListScreen : Screen { ) { Column(modifier = Modifier.fillMaxSize()) { PrimaryTabRow(selectedTabIndex = selectedTab) { - listOf( - stringResource(R.string.expense_list_tab_expenses), - stringResource(R.string.expense_list_tab_recurring), - ).forEachIndexed { index, title -> + val tabs = listOf( + stringResource(R.string.expense_list_tab_expenses) to expenses.size, + stringResource(R.string.expense_list_tab_recurring) to recurring.size, + ) + tabs.forEachIndexed { index, (title, count) -> Tab( selected = selectedTab == index, onClick = { @@ -147,7 +149,7 @@ object ExpenseListScreen : Screen { pagerState.animateScrollToPage(index) } }, - text = { Text(text = title) }, + text = { TabText(text = title, badgeCount = count) }, ) } }