From 753b574e1aafdf2474d864d276622d92aaf34225 Mon Sep 17 00:00:00 2001 From: b-dev-mobile Date: Fri, 10 Jul 2026 03:20:42 +0000 Subject: [PATCH] =?UTF-8?q?design(login):=20=D1=84=D0=BE=D0=BD,=20=D0=BB?= =?UTF-8?q?=D0=BE=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BB=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=B8=D0=BF,=20QR-=D0=BA=D0=BD=D0=BE=D0=BF?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D0=B6=D0=B8=D0=B2=D0=BE=D0=B9=20?= =?UTF-8?q?=D1=82=D0=B5=D0=BC=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _page-login.css: фон страницы #E5EFE8 (был белый); big-forbion.svg забандлен в assets/login/ — логотип виден офлайн и до ввода адреса сервера (грузился с сервера); кнопка QR — «ссылка-кнопка» 40dp с фоном #F0F1F4 r8 и чёрным текстом 14 (была текстовая). Карточка 440/r8/24, заголовок 18/600, поля — уже совпадали. Co-Authored-By: Claude Fable 5 --- app/src/main/assets/login/big-forbion.svg | 54 +++++++++++++++++++ .../forbion/f7cloud/mobile/ui/LoginScreen.kt | 35 ++++++++---- 2 files changed, 80 insertions(+), 9 deletions(-) create mode 100644 app/src/main/assets/login/big-forbion.svg diff --git a/app/src/main/assets/login/big-forbion.svg b/app/src/main/assets/login/big-forbion.svg new file mode 100644 index 0000000..a893e60 --- /dev/null +++ b/app/src/main/assets/login/big-forbion.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/ru/forbion/f7cloud/mobile/ui/LoginScreen.kt b/app/src/main/java/ru/forbion/f7cloud/mobile/ui/LoginScreen.kt index a08ff30..c790f3f 100644 --- a/app/src/main/java/ru/forbion/f7cloud/mobile/ui/LoginScreen.kt +++ b/app/src/main/java/ru/forbion/f7cloud/mobile/ui/LoginScreen.kt @@ -3,6 +3,8 @@ package ru.forbion.f7cloud.mobile.ui import android.app.Activity import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -31,9 +33,11 @@ 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.draw.clip import androidx.compose.ui.focus.focusProperties import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalFocusManager @@ -148,13 +152,15 @@ internal fun LoginScreen(onLogin: (AuthSession) -> Unit) { } } - val logoUrl = remember(serverUrl) { - "${normalizeServerUrl(serverUrl).trimEnd('/')}/themes/forbion/images/login/big-forbion.svg" - } + // Логотип — локальный (assets/login/big-forbion.svg из живой темы): виден офлайн и до + // ввода адреса сервера. + val logoUrl = "file:///android_asset/login/big-forbion.svg" Box( modifier = Modifier .fillMaxSize() + // Живая тема логина: фон страницы --backgroud-color-main-darkgray + .background(Color(0xFFE5EFE8)) .f7SafeTopInsets() .verticalScroll(rememberScrollState()) .padding(horizontal = 16.dp, vertical = 24.dp), @@ -269,12 +275,23 @@ internal fun LoginScreen(onLogin: (AuthSession) -> Unit) { enabled = !loading && serverUrl.isNotBlank() && username.isNotBlank() && password.isNotBlank(), modifier = Modifier.fillMaxWidth(), ) - F7TextButton( - text = "Сканировать QR для входа", - onClick = { launchQrScan() }, - enabled = !loading, - modifier = Modifier.fillMaxWidth(), - ) + // Живая тема: вторичная кнопка-ссылка 40dp, фон #F0F1F4, r8, текст 14 чёрный + Box( + modifier = Modifier + .fillMaxWidth() + .height(40.dp) + .clip(RoundedCornerShape(8.dp)) + .background(Color(0xFFF0F1F4)) + .clickable(enabled = !loading, onClick = { launchQrScan() }), + contentAlignment = Alignment.Center, + ) { + Text( + "Сканировать QR для входа", + fontSize = 14.sp, + lineHeight = 20.sp, + color = F7Colors.TextPrimary, + ) + } if (loading) { CircularProgressIndicator(color = F7Colors.Primary) }