From 135ac010c3731fcad4eea7d42145e5a20d17a351 Mon Sep 17 00:00:00 2001 From: denis0001-dev Date: Sat, 4 Apr 2026 02:44:38 +0300 Subject: [PATCH] Add contacts screen placeholder --- .../composeResources/values-ru/strings.xml | 2 + .../composeResources/values/strings.xml | 2 + .../kotlin/ru/fromchat/ui/main/ContactsTab.kt | 123 ++++++++++++++++++ .../kotlin/ru/fromchat/ui/main/MainScreen.kt | 2 +- 4 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/ContactsTab.kt diff --git a/app/shared/src/commonMain/composeResources/values-ru/strings.xml b/app/shared/src/commonMain/composeResources/values-ru/strings.xml index c5ecffd..7c61a51 100644 --- a/app/shared/src/commonMain/composeResources/values-ru/strings.xml +++ b/app/shared/src/commonMain/composeResources/values-ru/strings.xml @@ -30,6 +30,8 @@ Профиль Личные чаты Скоро… + Скоро + Список контактов появится здесь, когда функция будет готова. Общий чат Вы: последнее сообщение Напишите сообщение… diff --git a/app/shared/src/commonMain/composeResources/values/strings.xml b/app/shared/src/commonMain/composeResources/values/strings.xml index b76be73..b376422 100644 --- a/app/shared/src/commonMain/composeResources/values/strings.xml +++ b/app/shared/src/commonMain/composeResources/values/strings.xml @@ -39,6 +39,8 @@ Profile Private chats Coming soon… + Coming soon + Your contacts will appear here when this feature is ready. Main chat You: last message Write a message… diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/ContactsTab.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/ContactsTab.kt new file mode 100644 index 0000000..93d5bae --- /dev/null +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/ContactsTab.kt @@ -0,0 +1,123 @@ +package ru.fromchat.ui.main + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Contacts +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import org.jetbrains.compose.resources.stringResource +import ru.fromchat.Res +import ru.fromchat.* + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun ContactsTab() { + Scaffold( + topBar = { + TopAppBar( + title = { + Text( + text = stringResource(Res.string.contacts), + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + } + ) + } + ) { innerPadding -> + Box( + modifier = Modifier + .fillMaxSize() + .padding(innerPadding), + contentAlignment = Alignment.Center + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 40.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + val tonal = ButtonDefaults.filledTonalButtonColors() + val pillWidth = 148.dp + val pillHeight = 66.dp + val pillShape = RoundedCornerShape(pillHeight / 2) + + Box( + contentAlignment = Alignment.Center, + modifier = Modifier.width(pillWidth) + ) { + Column( + modifier = Modifier.width(pillWidth), + verticalArrangement = Arrangement.spacedBy(0.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Surface( + modifier = Modifier + .width(pillWidth) + .height(pillHeight), + shape = pillShape, + color = tonal.containerColor + ) { + Box(Modifier.fillMaxSize()) + } + Surface( + modifier = Modifier + .width(pillWidth) + .height(pillHeight), + shape = pillShape, + color = tonal.containerColor + ) { + Box(Modifier.fillMaxSize()) + } + } + Icon( + imageVector = Icons.Filled.Contacts, + contentDescription = null, + modifier = Modifier.size(88.dp), + tint = tonal.contentColor + ) + } + + Spacer(modifier = Modifier.height(28.dp)) + + Text( + text = stringResource(Res.string.contacts_empty_title), + style = MaterialTheme.typography.headlineSmall, + color = MaterialTheme.colorScheme.onSurface, + textAlign = TextAlign.Center + ) + + Spacer(modifier = Modifier.height(12.dp)) + + Text( + text = stringResource(Res.string.contacts_empty_body), + style = MaterialTheme.typography.bodyLarge, + color = MaterialTheme.colorScheme.onSurfaceVariant, + textAlign = TextAlign.Center + ) + } + } + } +} diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/MainScreen.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/MainScreen.kt index 9e62a64..ede4305 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/MainScreen.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/MainScreen.kt @@ -96,7 +96,7 @@ fun MainScreen(onLogout: () -> Unit = {}) { ) { page -> when (page) { PAGE_CHATS -> ChatsTab() - PAGE_CONTACTS -> Text(stringResource(Res.string.coming_soon)) + PAGE_CONTACTS -> ContactsTab() PAGE_SETTINGS -> SettingsTab(onLogout = onLogout) PAGE_PROFILE -> { val currentUserId = ApiClient.user?.id