Compare commits
4 Commits
62c4fdb997
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 59087fe6d9 | |||
| c56399dde9 | |||
| b809b1e6e6 | |||
| 103c69d7d1 |
2
.idea/gradle.xml
generated
2
.idea/gradle.xml
generated
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -10,3 +10,6 @@ object EmailValidator {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -76,39 +76,33 @@ 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
|
||||
.padding(bottom = 4.dp)
|
||||
.clickable {
|
||||
navController.navigate("login") {
|
||||
popUpTo("login") { inclusive = false }
|
||||
}
|
||||
},
|
||||
size = logoSize
|
||||
)
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.weight(0.05f))
|
||||
NovayaPlanetaLogo(
|
||||
modifier = Modifier
|
||||
.align(Alignment.TopStart)
|
||||
.padding(bottom = 4.dp)
|
||||
.clickable {
|
||||
navController.navigate("login") {
|
||||
popUpTo("login") { inclusive = false }
|
||||
}
|
||||
},
|
||||
size = logoSize
|
||||
)
|
||||
|
||||
// Центрированный контент - адаптивная ширина (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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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),
|
||||
size = logoSize
|
||||
)
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.weight(0.05f))
|
||||
NovayaPlanetaLogo(
|
||||
modifier = Modifier
|
||||
.align(Alignment.TopStart)
|
||||
.padding(bottom = 4.dp),
|
||||
size = logoSize
|
||||
)
|
||||
|
||||
// Центрированный контент - адаптивная ширина (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 {
|
||||
@@ -261,12 +256,12 @@ fun LoginScreen(
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
val linkTextSize = (screenHeightDp * 0.024f).toInt().coerceIn(18, 26).sp
|
||||
val linkTextSize = (screenHeightDp * 0.032f).toInt().coerceIn(24, 32).sp
|
||||
Text(
|
||||
text = "Нет логина и пароля?",
|
||||
fontSize = linkTextSize,
|
||||
color = LoginGreenAccent,
|
||||
fontWeight = FontWeight.Medium,
|
||||
fontWeight = FontWeight.Bold,
|
||||
modifier = Modifier.clickable {
|
||||
navController.navigate("registration")
|
||||
}
|
||||
@@ -276,15 +271,13 @@ fun LoginScreen(
|
||||
text = "Не помнишь пароль?",
|
||||
fontSize = linkTextSize,
|
||||
color = LoginGreenAccent,
|
||||
fontWeight = FontWeight.Medium,
|
||||
fontWeight = FontWeight.Bold,
|
||||
modifier = Modifier.clickable {
|
||||
navController.navigate("forgot_password")
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.weight(0.1f))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,39 +76,33 @@ 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
|
||||
.padding(bottom = 4.dp)
|
||||
.clickable {
|
||||
navController.navigate("login") {
|
||||
popUpTo("login") { inclusive = false }
|
||||
}
|
||||
},
|
||||
size = logoSize
|
||||
)
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.weight(0.05f))
|
||||
NovayaPlanetaLogo(
|
||||
modifier = Modifier
|
||||
.align(Alignment.TopStart)
|
||||
.padding(bottom = 4.dp)
|
||||
.clickable {
|
||||
navController.navigate("login") {
|
||||
popUpTo("login") { inclusive = false }
|
||||
}
|
||||
},
|
||||
size = logoSize
|
||||
)
|
||||
|
||||
// Центрированный контент - адаптивная ширина (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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -14,22 +14,22 @@ 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(0xFFA8D5BA) // Очень мягкий мятно-зеленый (низкая насыщенность)
|
||||
val AccentOrange = Color(0xFFFFD4B3) // Очень мягкий персиковый (теплый, успокаивающий)
|
||||
val AccentGold = Color(0xFFFFEEC7) // Очень мягкий бежево-желтый (кремовый оттенок)
|
||||
|
||||
// Status Colors
|
||||
val SuccessColor = Color(0xFF4CAF50)
|
||||
val WarningColor = Color(0xFFFF6B35)
|
||||
val ErrorColor = Color(0xFFE53935)
|
||||
// Status Colors - очень приглушенные для комфорта
|
||||
val SuccessColor = Color(0xFFA8D5BA) // Очень мягкий зеленый
|
||||
val WarningColor = Color(0xFFFFD4B3) // Очень мягкий персиковый
|
||||
val ErrorColor = Color(0xFFFFC8C8) // Очень мягкий розовый (вместо яркого красного)
|
||||
|
||||
// Цвета для экрана авторизации (благоприятные для РАС из PDF)
|
||||
val LoginBackgroundTurquoise = Color(0xFFDAE7E9) // Мягкий голубой фон
|
||||
val LoginCardLightBlue = Color(0xFFBCDAEC) // Спокойный светло-голубой
|
||||
val LoginInputLightBlue = Color(0xFFBCDAEC) // Для полей ввода
|
||||
val LoginButtonBlue = Color(0xFFBCDAEC) // Для кнопки
|
||||
val LoginGreenAccent = Color(0xFF80EF80) // Пастельно-зелёный акцент
|
||||
val LoginGreenSoft = Color(0xFFC5E6C5) // Мягкий пастельно-зелёный
|
||||
val LoginGreenDark = Color(0xFF80EF80) // Пастельно-зелёный темнее
|
||||
// Цвета для экрана авторизации (оптимизированные для РАС - очень мягкие тона)
|
||||
val LoginBackgroundTurquoise = Color(0xFFE8F4F5) // Очень мягкий мятный фон (еще мягче)
|
||||
val LoginCardLightBlue = Color(0xFFD4E8F0) // Очень мягкий голубой для карточек
|
||||
val LoginInputLightBlue = Color(0xFFD4E8F0) // Очень мягкий голубой для полей ввода
|
||||
val LoginButtonBlue = Color(0xFFD4E8F0) // Очень мягкий голубой для кнопок
|
||||
val LoginGreenAccent = Color(0xFF95D5A3) // Очень мягкий зеленый акцент (приглушенный)
|
||||
val LoginGreenSoft = Color(0xFFD1E8D7) // Очень мягкий светло-зеленый
|
||||
val LoginGreenDark = Color(0xFF95D5A3) // Очень мягкий зеленый для темных элементов
|
||||
|
||||
|
||||
Reference in New Issue
Block a user