update colors, use new LargeFlexibleTopAppBar

This commit is contained in:
2026-08-30 14:29:18 +03:00
parent 63116b4a08
commit 71d611f936
7 changed files with 125 additions and 202 deletions
@@ -3,9 +3,10 @@ package ru.shadowsparky.vbox.shared.presentation
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import ru.shadowsparky.ui.AppScaffold
import ru.shadowsparky.ui.components.TopAppBar
import ru.shadowsparky.ui.components.LargeFlexibleTopAppBar
import ru.shadowsparky.vbox.shared.presentation.chat.ChatScreen
import ru.shadowsparky.vbox.shared.presentation.list.VideoContent
import ru.shadowsparky.vbox.shared.presentation.nav.Child
@@ -39,7 +40,8 @@ fun MainScreenScaffold(
appBar = { appBar() },
currentRoute = route,
onSelectNavigation = { onNavigate(it) },
navigationEntries = createNavigationList()
navigationEntries = createNavigationList(),
scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior()
) { padding -> content(padding) }
}
@@ -49,7 +51,9 @@ private fun MainScreenInternal(route: Route, child: Child, onNavigate: (Route) -
val navList = createNavigationList()
MainScreenScaffold(
appBar = {
navList.findTitle(route)?.let { title -> TopAppBar(title = { Text(title) }) }
navList.findTitle(route)?.let { title ->
LargeFlexibleTopAppBar(title = { Text(title) })
}
},
route = route,
onNavigate = onNavigate,
@@ -30,8 +30,8 @@ import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.resources.stringResource
import ru.shadowsparky.ui.components.AlertContent
import ru.shadowsparky.ui.components.IconButton
import ru.shadowsparky.ui.components.LargeFlexibleTopAppBar
import ru.shadowsparky.ui.components.LazyColumn
import ru.shadowsparky.ui.components.TopAppBar
import ru.shadowsparky.vbox.shared.domain.tag.TagInfo
import ru.shadowsparky.vbox.shared.presentation.MainScreenScaffold
import ru.shadowsparky.vbox.shared.presentation.list.VideoScreenContent
@@ -44,7 +44,7 @@ fun SavedMovieScreen(comp: SavedMovieComponent, route: Route, onNavigate: (Route
var filterBottomSheetVisible by rememberSaveable { mutableStateOf(false) }
MainScreenScaffold(
appBar = {
TopAppBar(
LargeFlexibleTopAppBar(
title = { Text(stringResource(Res.string.saved_movies)) },
actions = {
IconButton(
@@ -19,7 +19,6 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState
@@ -29,7 +28,6 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.unit.dp
@@ -38,6 +36,7 @@ import org.jetbrains.compose.resources.stringResource
import ru.shadowsparky.ui.AppScaffold
import ru.shadowsparky.ui.components.BackButton
import ru.shadowsparky.ui.components.ErrorAlert
import ru.shadowsparky.ui.components.LargeFlexibleTopAppBar
import ru.shadowsparky.ui.components.Loading
import ru.shadowsparky.ui.components.PasswordTextField
import ru.shadowsparky.vbox.shared.domain.model.EmptyLoginException
@@ -95,22 +94,19 @@ fun BaseLogin(
}
AppScaffold(
appBar = {
TopAppBar(
LargeFlexibleTopAppBar(
title = { Text(title) },
navigationIcon = {
doBack?.let { BackButton { it() } }
}
navigationIcon = { doBack?.let { BackButton { it() } } }
)
},
content = {
if (state is AuthState.Loading) {
Loading()
} else {
Box(Modifier.padding(it).fillMaxSize()) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.padding(8.dp)
) {
Box(
Modifier.fillMaxSize().padding(it)
) {
Column(modifier = Modifier.padding(8.dp)) {
if (errorInfo != null && state is AuthState.Error) {
ErrorAlert(
errorInfo!!.toMessage(),