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

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

View File

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

View File

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

View File

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

View File

@@ -76,39 +76,33 @@ fun RegistrationScreen(
val horizontalPadding = (screenWidthDp * 0.04f).toInt().coerceIn(24, 48).dp val horizontalPadding = (screenWidthDp * 0.04f).toInt().coerceIn(24, 48).dp
val verticalPadding = (screenHeightDp * 0.03f).toInt().coerceIn(16, 32).dp val verticalPadding = (screenHeightDp * 0.03f).toInt().coerceIn(16, 32).dp
Column( Box(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
.padding(horizontal = horizontalPadding, vertical = verticalPadding), .padding(horizontal = horizontalPadding, vertical = verticalPadding)
horizontalAlignment = Alignment.CenterHorizontally
) { ) {
// Логотип вверху слева // Логотип вверху слева - увеличенный размер
val logoSizeByHeight = (screenHeightDp * 0.15f).toInt() val logoSizeByHeight = (screenHeightDp * 0.28f).toInt()
val logoSizeByWidth = screenWidthDp / 5 val logoSizeByWidth = screenWidthDp / 3
val logoSize = min(logoSizeByHeight, logoSizeByWidth).coerceIn(100, 160).dp val logoSize = min(logoSizeByHeight, logoSizeByWidth).coerceIn(180, 280).dp
Row( NovayaPlanetaLogo(
modifier = Modifier.fillMaxWidth(), modifier = Modifier
horizontalArrangement = Arrangement.Start .align(Alignment.TopStart)
) { .padding(bottom = 4.dp)
NovayaPlanetaLogo( .clickable {
modifier = Modifier navController.navigate("login") {
.padding(bottom = 4.dp) popUpTo("login") { inclusive = false }
.clickable { }
navController.navigate("login") { },
popUpTo("login") { inclusive = false } size = logoSize
} )
},
size = logoSize
)
}
Spacer(modifier = Modifier.weight(0.05f))
// Центрированный контент - адаптивная ширина (50-70% экрана) // Центрированный контент - адаптивная ширина (50-70% экрана)
val contentWidthRatio = if (isLandscape) 0.5f else 0.7f val contentWidthRatio = if (isLandscape) 0.5f else 0.7f
Column( Column(
modifier = Modifier modifier = Modifier
.align(Alignment.Center)
.fillMaxWidth(contentWidthRatio), .fillMaxWidth(contentWidthRatio),
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(24.dp) 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() .fillMaxHeight()
.padding(vertical = 20.dp, horizontal = 16.dp) .padding(vertical = 20.dp, horizontal = 16.dp)
) { ) {
// Логотип над панелью навигации (увеличен) // Логотип над панелью навигации
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.padding(bottom = 16.dp), .padding(bottom = 16.dp),
contentAlignment = Alignment.Center 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) NovayaPlanetaLogo(size = logoSize)
} }

View File

@@ -80,14 +80,14 @@ fun ScheduleScreen(
.fillMaxHeight() .fillMaxHeight()
.padding(vertical = 20.dp, horizontal = 16.dp) .padding(vertical = 20.dp, horizontal = 16.dp)
) { ) {
// Логотип над панелью навигации (увеличен) // Логотип над панелью навигации
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.padding(bottom = 16.dp), .padding(bottom = 16.dp),
contentAlignment = Alignment.Center 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) NovayaPlanetaLogo(size = logoSize)
} }

View File

@@ -81,14 +81,14 @@ fun SettingsScreen(
.fillMaxHeight() .fillMaxHeight()
.padding(vertical = 20.dp, horizontal = 16.dp) .padding(vertical = 20.dp, horizontal = 16.dp)
) { ) {
// Логотип над панелью навигации (увеличен) // Логотип над панелью навигации
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.padding(bottom = 16.dp), .padding(bottom = 16.dp),
contentAlignment = Alignment.Center 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) NovayaPlanetaLogo(size = logoSize)
} }

View File

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