feat(folio): add focused_input indicator to App

This commit is contained in:
pj committed 2026-04-25 19:19:31 +07:00
1 parent fc99e31e85
commit 1c8a9be2e4
1 file changed
+9
@@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.safeDrawing import androidx.compose.foundation.layout.safeDrawing
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
@@ -13,6 +14,9 @@ import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import app.folio.data.Repository import app.folio.data.Repository
import app.folio.feature.account.AddAccountScreen import app.folio.feature.account.AddAccountScreen
import app.folio.feature.auth.LoginScreen import app.folio.feature.auth.LoginScreen
@@ -21,6 +25,7 @@ import app.folio.feature.ledger.AddTransactionScreen
import app.folio.feature.ledger.LedgerScreen import app.folio.feature.ledger.LedgerScreen
import app.folio.navigation.Navigator import app.folio.navigation.Navigator
import app.folio.navigation.Route import app.folio.navigation.Route
import app.folio.FocusTracker
import app.folio.ui.theme.LedgerTheme import app.folio.ui.theme.LedgerTheme
import app.folio.ui.theme.LocalTokens import app.folio.ui.theme.LocalTokens
import app.folio.ui.theme.Tokens import app.folio.ui.theme.Tokens
@@ -29,6 +34,7 @@ import app.folio.ui.theme.Tokens
fun App() { fun App() {
val session by Repository.session.collectAsState() val session by Repository.session.collectAsState()
val route by Navigator.current.collectAsState() val route by Navigator.current.collectAsState()
val focusedInput by FocusTracker.current.collectAsState()
LaunchedEffect(session, route) { LaunchedEffect(session, route) {
if (session == null && route !is Route.Login) { if (session == null && route !is Route.Login) {
@@ -47,6 +53,9 @@ fun App() {
.background(t.bg) .background(t.bg)
.windowInsetsPadding(WindowInsets.safeDrawing), .windowInsetsPadding(WindowInsets.safeDrawing),
) { ) {
if (focusedInput != null) {
Box(Modifier.size(1.dp).semantics { contentDescription = "focused_input:$focusedInput" })
}
Column(Modifier.fillMaxSize()) { Column(Modifier.fillMaxSize()) {
when (val r = route) { when (val r = route) {
Route.Login -> LoginScreen(onLoggedIn = { Navigator.replace(Route.Home) }) Route.Login -> LoginScreen(onLoggedIn = { Navigator.replace(Route.Home) })