diff --git a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/season/SeasonOverviewScreen.kt b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/season/SeasonOverviewScreen.kt index cd25ac9..3282a8a 100644 --- a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/season/SeasonOverviewScreen.kt +++ b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/overview/season/SeasonOverviewScreen.kt @@ -3,10 +3,8 @@ package ru.shadowsparky.vbox.shared.presentation.overview.season import androiddev.apps.vbox.client.shared.generated.resources.Res import androiddev.apps.vbox.client.shared.generated.resources.retry import androiddev.apps.vbox.client.shared.generated.resources.seasons_overview -import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -18,7 +16,6 @@ import androidx.compose.runtime.withFrameNanos import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester -import androidx.compose.ui.unit.dp import org.jetbrains.compose.resources.stringResource import ru.shadowsparky.ui.LocalBlurState import ru.shadowsparky.ui.applyBlurSource @@ -26,6 +23,7 @@ import ru.shadowsparky.ui.components.BackButton import ru.shadowsparky.ui.components.ErrorContent import ru.shadowsparky.ui.components.ExpressiveLazyColumn import ru.shadowsparky.ui.components.Loading +import ru.shadowsparky.ui.components.TextPreference import ru.shadowsparky.ui.components.TopAppBar import ru.shadowsparky.ui.rememberBlurState import ru.shadowsparky.vbox.shared.domain.model.Season @@ -79,14 +77,15 @@ fun SeasonsInfo( content = { section { itemsIndexed(seasons) { index, season -> - SeasonInfo( - if (index == 0) { + TextPreference( + season.title, + onClick = { onClick(season.id) }, + modifier = if (index == 0) { Modifier.focusRequester(requester) } else { Modifier - }, - season.title - ) { onClick(season.id) } + } + ) } } } @@ -99,8 +98,3 @@ fun SeasonsInfo( } } } - -@Composable -fun SeasonInfo(modifier: Modifier, titleText: String, onClick: () -> Unit) { - Text(titleText, modifier = modifier.fillMaxWidth().clickable { onClick() }.padding(16.dp)) -} diff --git a/feature/chat/chat-client/src/commonMain/kotlin/ru/shadowsparky/chat/presentation/ChatScreen.kt b/feature/chat/chat-client/src/commonMain/kotlin/ru/shadowsparky/chat/presentation/ChatScreen.kt index 4ab5098..36e9801 100644 --- a/feature/chat/chat-client/src/commonMain/kotlin/ru/shadowsparky/chat/presentation/ChatScreen.kt +++ b/feature/chat/chat-client/src/commonMain/kotlin/ru/shadowsparky/chat/presentation/ChatScreen.kt @@ -6,6 +6,7 @@ import androiddev.feature.chat.chat_client.generated.resources.chat_load_error import androiddev.feature.chat.chat_client.generated.resources.chat_ok import androiddev.feature.chat.chat_client.generated.resources.chat_retry_button import androiddev.feature.chat.chat_client.generated.resources.send +import androidx.compose.foundation.focusable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -17,14 +18,17 @@ import androidx.compose.foundation.layout.calculateStartPadding import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.selection.SelectionContainer +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -213,6 +217,7 @@ private fun MessageBubble( onParseMessage: (String) -> List, onClickLink: (String) -> Unit ) { + val scrollState = rememberScrollState() val isUser = message.role == ChatRoles.USER val alignment = if (isUser) Alignment.CenterEnd else Alignment.CenterStart val containerColor = if (isUser) MaterialTheme.colorScheme.primaryContainer else MaterialTheme.colorScheme.surfaceVariant @@ -248,7 +253,11 @@ private fun MessageBubble( } } Box( - modifier = Modifier.fillMaxWidth(), + modifier = Modifier.fillMaxWidth() + .heightIn(max = 400.dp) + .focusable() + .verticalScroll(scrollState) + , contentAlignment = alignment ) { Card( diff --git a/libs/ui/src/commonMain/kotlin/ru/shadowsparky/ui/components/Expressive.kt b/libs/ui/src/commonMain/kotlin/ru/shadowsparky/ui/components/Expressive.kt index 4bbe94c..772c152 100644 --- a/libs/ui/src/commonMain/kotlin/ru/shadowsparky/ui/components/Expressive.kt +++ b/libs/ui/src/commonMain/kotlin/ru/shadowsparky/ui/components/Expressive.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Card