Исправил баг с логотипом и формой (то что вниз улетала)

This commit is contained in:
2025-12-23 21:23:28 +03:00
parent 62c4fdb997
commit b809b1e6e6
10 changed files with 76 additions and 94 deletions

2
.idea/gradle.xml generated
View File

@@ -4,7 +4,6 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="CHOOSE_PER_TEST" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="modules">
@@ -13,6 +12,7 @@
<option value="$PROJECT_DIR$/app" />
</set>
</option>
<option name="resolveExternalAnnotations" value="false" />
</GradleProjectSettings>
</option>
</component>

View File

@@ -6,7 +6,9 @@ import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import com.novayaplaneta.ui.screens.ai.AIScreen
import com.novayaplaneta.ui.screens.auth.ForgotPasswordScreen
import com.novayaplaneta.ui.screens.auth.LoginScreen
import com.novayaplaneta.ui.screens.auth.RegistrationScreen
import com.novayaplaneta.ui.screens.rewards.RewardsScreen
import com.novayaplaneta.ui.screens.schedule.ScheduleScreen
import com.novayaplaneta.ui.screens.settings.SettingsScreen
@@ -27,12 +29,12 @@ fun NewPlanetNavigation(
composable("login") {
LoginScreen(navController = navController)
}
// composable("registration") {
// RegistrationScreen(navController = navController)
// }
// composable("forgot_password") {
// ForgotPasswordScreen(navController = navController)
// }
composable("registration") {
RegistrationScreen(navController = navController)
}
composable("forgot_password") {
ForgotPasswordScreen(navController = navController)
}
composable("schedule") {
ScheduleScreen(navController = navController)
}

View File

@@ -10,3 +10,6 @@ object EmailValidator {
}

View File

@@ -76,23 +76,19 @@ fun ForgotPasswordScreen(
val horizontalPadding = (screenWidthDp * 0.04f).toInt().coerceIn(24, 48).dp
val verticalPadding = (screenHeightDp * 0.03f).toInt().coerceIn(16, 32).dp
Column(
Box(
modifier = Modifier
.fillMaxSize()
.padding(horizontal = horizontalPadding, vertical = verticalPadding),
horizontalAlignment = Alignment.CenterHorizontally
.padding(horizontal = horizontalPadding, vertical = verticalPadding)
) {
// Логотип вверху слева
val logoSizeByHeight = (screenHeightDp * 0.15f).toInt()
val logoSizeByWidth = screenWidthDp / 5
val logoSize = min(logoSizeByHeight, logoSizeByWidth).coerceIn(100, 160).dp
// Логотип вверху слева - увеличенный размер
val logoSizeByHeight = (screenHeightDp * 0.28f).toInt()
val logoSizeByWidth = screenWidthDp / 3
val logoSize = min(logoSizeByHeight, logoSizeByWidth).coerceIn(180, 280).dp
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Start
) {
NovayaPlanetaLogo(
modifier = Modifier
.align(Alignment.TopStart)
.padding(bottom = 4.dp)
.clickable {
navController.navigate("login") {
@@ -101,14 +97,12 @@ fun ForgotPasswordScreen(
},
size = logoSize
)
}
Spacer(modifier = Modifier.weight(0.05f))
// Центрированный контент - адаптивная ширина (50-70% экрана)
val contentWidthRatio = if (isLandscape) 0.5f else 0.7f
Column(
modifier = Modifier
.align(Alignment.Center)
.fillMaxWidth(contentWidthRatio),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(24.dp)
@@ -370,8 +364,6 @@ fun ForgotPasswordScreen(
}
}
}
Spacer(modifier = Modifier.weight(0.1f))
}
}
}

View File

@@ -76,33 +76,28 @@ fun LoginScreen(
val horizontalPadding = (screenWidthDp * 0.04f).toInt().coerceIn(24, 48).dp
val verticalPadding = (screenHeightDp * 0.03f).toInt().coerceIn(16, 32).dp
Column(
Box(
modifier = Modifier
.fillMaxSize()
.padding(horizontal = horizontalPadding, vertical = verticalPadding),
horizontalAlignment = Alignment.CenterHorizontally
.padding(horizontal = horizontalPadding, vertical = verticalPadding)
) {
// Логотип вверху слева - уменьшенный размер
val logoSizeByHeight = (screenHeightDp * 0.15f).toInt()
val logoSizeByWidth = screenWidthDp / 5
val logoSize = min(logoSizeByHeight, logoSizeByWidth).coerceIn(100, 160).dp
// Логотип вверху слева - большой размер
val logoSizeByHeight = (screenHeightDp * 0.28f).toInt()
val logoSizeByWidth = screenWidthDp / 3
val logoSize = min(logoSizeByHeight, logoSizeByWidth).coerceIn(180, 280).dp
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Start
) {
NovayaPlanetaLogo(
modifier = Modifier.padding(bottom = 4.dp),
modifier = Modifier
.align(Alignment.TopStart)
.padding(bottom = 4.dp),
size = logoSize
)
}
Spacer(modifier = Modifier.weight(0.05f))
// Центрированный контент - адаптивная ширина (50-70% экрана)
val contentWidthRatio = if (isLandscape) 0.5f else 0.7f
Column(
modifier = Modifier
.align(Alignment.Center)
.fillMaxWidth(contentWidthRatio),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(24.dp)
@@ -228,7 +223,7 @@ fun LoginScreen(
enabled = uiState.isFormValid && !uiState.isLoading,
colors = if (uiState.isFormValid) {
ButtonDefaults.buttonColors(
containerColor = LoginButtonBlue,
containerColor = LoginGreenAccent,
contentColor = Color.White
)
} else {
@@ -283,8 +278,6 @@ fun LoginScreen(
)
}
}
Spacer(modifier = Modifier.weight(0.1f))
}
}
}

View File

@@ -76,23 +76,19 @@ fun RegistrationScreen(
val horizontalPadding = (screenWidthDp * 0.04f).toInt().coerceIn(24, 48).dp
val verticalPadding = (screenHeightDp * 0.03f).toInt().coerceIn(16, 32).dp
Column(
Box(
modifier = Modifier
.fillMaxSize()
.padding(horizontal = horizontalPadding, vertical = verticalPadding),
horizontalAlignment = Alignment.CenterHorizontally
.padding(horizontal = horizontalPadding, vertical = verticalPadding)
) {
// Логотип вверху слева
val logoSizeByHeight = (screenHeightDp * 0.15f).toInt()
val logoSizeByWidth = screenWidthDp / 5
val logoSize = min(logoSizeByHeight, logoSizeByWidth).coerceIn(100, 160).dp
// Логотип вверху слева - увеличенный размер
val logoSizeByHeight = (screenHeightDp * 0.28f).toInt()
val logoSizeByWidth = screenWidthDp / 3
val logoSize = min(logoSizeByHeight, logoSizeByWidth).coerceIn(180, 280).dp
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Start
) {
NovayaPlanetaLogo(
modifier = Modifier
.align(Alignment.TopStart)
.padding(bottom = 4.dp)
.clickable {
navController.navigate("login") {
@@ -101,14 +97,12 @@ fun RegistrationScreen(
},
size = logoSize
)
}
Spacer(modifier = Modifier.weight(0.05f))
// Центрированный контент - адаптивная ширина (50-70% экрана)
val contentWidthRatio = if (isLandscape) 0.5f else 0.7f
Column(
modifier = Modifier
.align(Alignment.Center)
.fillMaxWidth(contentWidthRatio),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(24.dp)
@@ -410,8 +404,6 @@ fun RegistrationScreen(
}
}
}
Spacer(modifier = Modifier.weight(0.1f))
}
}
}

View File

@@ -76,14 +76,14 @@ fun RewardsScreen(
.fillMaxHeight()
.padding(vertical = 20.dp, horizontal = 16.dp)
) {
// Логотип над панелью навигации (увеличен)
// Логотип над панелью навигации
Box(
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 16.dp),
contentAlignment = Alignment.Center
) {
val logoSize = (screenHeightDp * 0.18f).toInt().coerceIn(120, 200).dp
val logoSize = (screenHeightDp * 0.22f).toInt().coerceIn(140, 240).dp
NovayaPlanetaLogo(size = logoSize)
}

View File

@@ -80,14 +80,14 @@ fun ScheduleScreen(
.fillMaxHeight()
.padding(vertical = 20.dp, horizontal = 16.dp)
) {
// Логотип над панелью навигации (увеличен)
// Логотип над панелью навигации
Box(
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 16.dp),
contentAlignment = Alignment.Center
) {
val logoSize = (screenHeightDp * 0.18f).toInt().coerceIn(120, 200).dp
val logoSize = (screenHeightDp * 0.22f).toInt().coerceIn(140, 240).dp
NovayaPlanetaLogo(size = logoSize)
}

View File

@@ -81,14 +81,14 @@ fun SettingsScreen(
.fillMaxHeight()
.padding(vertical = 20.dp, horizontal = 16.dp)
) {
// Логотип над панелью навигации (увеличен)
// Логотип над панелью навигации
Box(
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 16.dp),
contentAlignment = Alignment.Center
) {
val logoSize = (screenHeightDp * 0.18f).toInt().coerceIn(120, 200).dp
val logoSize = (screenHeightDp * 0.22f).toInt().coerceIn(140, 240).dp
NovayaPlanetaLogo(size = logoSize)
}

View File

@@ -14,15 +14,15 @@ val SurfaceDark = Color(0xFF1A1A1A)
val OnBackgroundDark = Color(0xFFFFFFFF)
val OnSurfaceDark = Color(0xFFFFFFFF)
// Accent Colors
val AccentGreen = Color(0xFF4CAF50)
val AccentOrange = Color(0xFFFF6B35)
val AccentGold = Color(0xFFFFD700)
// Accent Colors - мягкие пастельные тона для комфорта детей с РАС
val AccentGreen = Color(0xFF7FD97F) // Мягкий пастельный зеленый
val AccentOrange = Color(0xFFFFB88C) // Мягкий пастельный персиковый
val AccentGold = Color(0xFFFFE68C) // Мягкий пастельный желтый
// Status Colors
val SuccessColor = Color(0xFF4CAF50)
val WarningColor = Color(0xFFFF6B35)
val ErrorColor = Color(0xFFE53935)
// Status Colors - приглушенные для комфорта
val SuccessColor = Color(0xFF7FD97F) // Мягкий зеленый
val WarningColor = Color(0xFFFFB88C) // Мягкий персиковый
val ErrorColor = Color(0xFFFF9E9E) // Мягкий розовый вместо яркого красного
// Цвета для экрана авторизации (благоприятные для РАС из PDF)
val LoginBackgroundTurquoise = Color(0xFFDAE7E9) // Мягкий голубой фон