diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f5bb609..091fe0b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,9 @@ plugins { alias(libs.plugins.androidApplication) alias(libs.plugins.jetbrainsKotlinAndroid) + id ("kotlin-kapt") + id ("com.google.dagger.hilt.android") + } android { @@ -51,6 +54,32 @@ android { dependencies { + //Dagger-Hilt + implementation("com.google.dagger:hilt-android:2.46.1") + implementation("androidx.hilt:hilt-navigation-compose:1.1.0") + kapt("com.google.dagger:hilt-compiler:2.46.1") + kapt("androidx.hilt:hilt-compiler:1.1.0") + //Room + implementation ("androidx.room:room-runtime:2.5.0") + implementation ("androidx.room:room-ktx:2.5.0") + kapt("androidx.room:room-compiler:2.5.0") + //MOSHI + implementation ("com.squareup.moshi:moshi:1.12.0") + implementation ("com.squareup.moshi:moshi-kotlin:1.12.0") + + //RETROFIT + implementation ("com.squareup.retrofit2:converter-moshi:2.9.0") + implementation ("com.squareup.retrofit2:retrofit:2.9.0") + implementation ("com.squareup.okhttp3:okhttp:4.9.0") + + //Compose Dependencies + implementation("androidx.compose.runtime:runtime-livedata:1.5.4") //вот эту добавил + implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.5.1") + implementation("androidx.navigation:navigation-compose:2.5.3") + implementation("androidx.constraintlayout:constraintlayout-compose:1.0.1") + implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1") + + implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.activity.compose) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ec9ec9d..a1c7de2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,9 +1,10 @@ - + 0) { + Button(onClick = { + if (currentScreenIndex > 0) { + currentScreenIndex-- + navController.popBackStack() + } + }) { + Text(text = "Назад") + } + } + + Spacer(modifier = Modifier.weight(1f)) + + // Кнопка "Далее" + Button(onClick = { + if (currentScreenIndex < screens.size - 1) { + currentScreenIndex++ + navController.navigate(screens[currentScreenIndex]) + } + }) { + Text(text = "Далее") + } + } + } + ) { + NavHost( + navController = navController, + startDestination = screens[0], + modifier = Modifier.padding(it) + ) { + composable(Routes.AUTH_SCREEN){ + AuthScreen(navController = navController) + } + composable(Routes.WELCOME_SCREEN) { + WelcomeScreen(navController = navController) + } + composable(Routes.CREATE_STORE_SCREEN) { + CreateStoreScreen(navController = navController) + } + composable(Routes.TYPE_OF_COMPANY_SCREEN) { + TypeOfCompanyScreen(navController = navController) + } + composable(Routes.SIZE_OF_ESTABLISHMENT_SCREEN) { + SizeOfEstablishmentScreen(navController = navController) + } + composable(Routes.TYPE_OF_SERVICE_SCREEN) { + TypeOfServiceScreen(navController = navController) + } + composable(Routes.COMPLETED_SCREEN) { + CompletedScreen(navController = navController) + } + } + } +} + + diff --git a/app/src/main/java/com/serpak/absolut_app/navigation/Routes.kt b/app/src/main/java/com/serpak/absolut_app/navigation/Routes.kt new file mode 100644 index 0000000..cf341ee --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/navigation/Routes.kt @@ -0,0 +1,12 @@ +package com.serpak.absolut_app.navigation + +object Routes { + const val AUTH_SCREEN = "auth_screen" + const val WELCOME_SCREEN = "welcome_screen" + const val CREATE_STORE_SCREEN = "create_store_screen" + const val TYPE_OF_COMPANY_SCREEN = "type_of_company_screen" + const val SIZE_OF_ESTABLISHMENT_SCREEN = "size_of_establishment_screen" + const val TYPE_OF_SERVICE_SCREEN = "type_of_service_screen" + const val COMPLETED_SCREEN = "completed_screen" + +} \ No newline at end of file diff --git a/app/src/main/java/com/serpak/absolut_app/screens/AuthScreen.kt b/app/src/main/java/com/serpak/absolut_app/screens/AuthScreen.kt new file mode 100644 index 0000000..3691da9 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/AuthScreen.kt @@ -0,0 +1,11 @@ +package com.serpak.absolut_app.screens + +import androidx.compose.runtime.Composable +import androidx.navigation.NavHostController + +@Composable +fun AuthScreen( + navController: NavHostController +){ + +} \ No newline at end of file diff --git a/app/src/main/java/com/serpak/absolut_app/screens/CheckBoxList.kt b/app/src/main/java/com/serpak/absolut_app/screens/CheckBoxList.kt new file mode 100644 index 0000000..e4b4594 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/CheckBoxList.kt @@ -0,0 +1,152 @@ +package com.serpak.absolut_app.screens + +import android.widget.CheckBox +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Column + +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.selection.toggleable + +import androidx.compose.material3.Checkbox +import androidx.compose.material3.Divider +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.serpak.absolut_app.R + +//@Preview(showBackground = true) +@Composable() +fun CheckBoxListOne(){ + + val itemsList = listOf( + Pair("Ресторан", R.drawable.ic_bar), + Pair("Бар", R.drawable.ic_bar), + Pair("Кафе", R.drawable.ic_bar), + Pair("Столовая", R.drawable.ic_bar), + Pair("Кофейня", R.drawable.ic_bar), + Pair("Кулинария", R.drawable.ic_bar), + Pair("Другое", R.drawable.ic_bar), + + ) + // Состояние для хранения, какие элементы выбраны + var selectedItems by remember { mutableStateOf(listOf()) } + + LazyColumn { + items(itemsList.size){ index -> + val item = itemsList[index] + Column { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(12.dp) + .toggleable( + value = selectedItems.contains(item.first), + onValueChange = { + selectedItems = if (it) { + selectedItems + item.first + } else { + selectedItems - item.first + } + } + ), + verticalAlignment = Alignment.CenterVertically + ){ + Image( + painter = painterResource(id = item.second), + contentDescription = null, + modifier = Modifier.size(24.dp) + ) + Text( + text = item.first, + fontSize = 18.sp, + modifier = Modifier + .weight(1f) + .padding(start = 8.dp) + ) + Checkbox( + checked = selectedItems.contains(item.first), + onCheckedChange = null + ) + } + Divider( + color = Color.Gray, + thickness = 1.dp, + modifier = Modifier.fillMaxWidth() + ) + } + } + } +} + + +@Composable +fun CheckBoxListTwo(){ + + val itemsList = listOf( + Pair("Навынос", R.drawable.ic_bar), + Pair("В заведении", R.drawable.ic_bar), + Pair("Доставка", R.drawable.ic_bar) + ) + // Состояние для хранения, какие элементы выбраны + var selectedItems by remember { mutableStateOf(listOf()) } + + LazyColumn { + items(itemsList.size){ index -> + val item = itemsList[index] + Column { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(12.dp) + .toggleable( + value = selectedItems.contains(item.first), + onValueChange = { + selectedItems = if (it) { + selectedItems + item.first + } else { + selectedItems - item.first + } + } + ), + verticalAlignment = Alignment.CenterVertically + ){ + Image( + painter = painterResource(id = item.second), + contentDescription = null, + modifier = Modifier.size(24.dp) + ) + Text( + text = item.first, + fontSize = 18.sp, + modifier = Modifier + .weight(1f) + .padding(start = 8.dp) + ) + Checkbox( + checked = selectedItems.contains(item.first), + onCheckedChange = null + ) + } + Divider( + color = Color.Gray, + thickness = 1.dp, + modifier = Modifier.fillMaxWidth() + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/serpak/absolut_app/screens/CompletedScreen.kt b/app/src/main/java/com/serpak/absolut_app/screens/CompletedScreen.kt new file mode 100644 index 0000000..2e63f81 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/CompletedScreen.kt @@ -0,0 +1,44 @@ +package com.serpak.absolut_app.screens + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController + +@Composable +fun CompletedScreen( + navController: NavHostController +) { + Column( + modifier = Modifier + .fillMaxSize() + .padding(20.dp) + ) { + Text( + text = "Спасибо за заявку", + style = TextStyle( + fontSize = 25.sp, + fontWeight = FontWeight.Bold + ) + ) + Spacer(modifier = Modifier.height(10.dp)) + Text( + modifier = Modifier.padding(top = 10.dp), + text = "Наш менеджер скоро свяжется с вами для предоставления доступа к сервису", + style = TextStyle( + fontSize = 15.sp, + color = Color.Gray + ) + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/serpak/absolut_app/screens/CreateStoreScreen.kt b/app/src/main/java/com/serpak/absolut_app/screens/CreateStoreScreen.kt new file mode 100644 index 0000000..36830b8 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/CreateStoreScreen.kt @@ -0,0 +1,188 @@ +package com.serpak.absolut_app.screens + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +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.material3.Checkbox +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController + +//@Preview(showBackground = true) +@Composable() +fun CreateStoreScreen( + navController: NavHostController +) { + + var textStateInputCompanyName by remember { mutableStateOf("") } + var textStateInputCountryAndCity by remember { mutableStateOf("") } + var textStateInputAddress by remember { mutableStateOf("") } + var textStateInputSystemAuto by remember { mutableStateOf("") } + var isChecked by remember { mutableStateOf(false) } + var isNewCompany by remember { mutableStateOf(true) } + + Column( + modifier = Modifier + .fillMaxSize() + .padding(20.dp) + ) { + Text( + text = "Создайте первое заведение", + style = TextStyle( + fontSize = 25.sp, + fontWeight = FontWeight.Bold + ) + ) + Spacer(modifier = Modifier.height(10.dp)) + Text( + text = "Вы всегда можете изменить данные в настройках", + style = TextStyle( + fontSize = 15.sp, + color = Color.Gray + ) + ) + Spacer(modifier = Modifier.height(10.dp)) + //InputCompanyName + OutlinedTextField( + modifier = Modifier + .fillMaxWidth(), + value = textStateInputCompanyName, + onValueChange = { textStateInputCompanyName = it }, + placeholder = { + Text( + text = "Название заведения", + style = TextStyle( + fontSize = 18.sp, + color = Color.Gray + ) + ) + }, + label = { Text(text = "Название заведения") } + ) + Text( + modifier = Modifier.padding(top = 5.dp, start = 15.dp), + text = "Далее вы сможете добавлять ещё заведения", + style = TextStyle( + fontSize = 12.sp, + color = Color.Gray + ) + ) + Spacer(modifier = Modifier.height(15.dp)) + //Input Country and City + OutlinedTextField( + modifier = Modifier.fillMaxWidth(), + value = textStateInputCountryAndCity, + onValueChange = { textStateInputCountryAndCity = it }, + placeholder = { + Text( + text = "Страна и город", + style = TextStyle( + fontSize = 18.sp, + color = Color.Gray + ) + ) + }, + label = { Text(text = "Страна и город") } + ) + Text( + modifier = Modifier.padding(top = 5.dp, start = 15.dp), + text = "Требуется для определения часового пояса", + style = TextStyle( + fontSize = 12.sp, + color = Color.Gray + ) + ) + Spacer(modifier = Modifier.height(15.dp)) + //Input Address + OutlinedTextField( + modifier = Modifier.fillMaxWidth(), + value = textStateInputAddress, + onValueChange = { textStateInputAddress = it }, + placeholder = { + Text( + text = "Адрес", + style = TextStyle( + fontSize = 18.sp, + color = Color.Gray + ) + ) + }, + label = { Text(text = "Адрес") } + ) + Spacer(modifier = Modifier.height(20.dp)) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Checkbox( + checked = isChecked, + onCheckedChange = { + isChecked = it + isNewCompany = !it + } + ) + Column { + Text( + modifier = Modifier.padding(bottom = 5.dp), + text = "Это новое заведение", + style = TextStyle( + fontWeight = FontWeight.Bold, + fontSize = 18.sp + ) + ) + Text( + text = "Отметьте галочкойб если ваше заведение только начало работу", + style = TextStyle( + color = Color.Gray + ) + ) + } + } + Spacer(modifier = Modifier.height(20.dp)) + if (isNewCompany) { + OutlinedTextField( + modifier = Modifier + .fillMaxWidth(), + value = textStateInputSystemAuto, + onValueChange = { textStateInputSystemAuto = it }, + placeholder = { + Text( + text = "Система автоматизации", + style = TextStyle( + fontSize = 18.sp, + color = Color.Gray + ) + ) + }, + label = { Text(text = "Система автоматизации") } + ) + Text( + modifier = Modifier.padding(top = 5.dp, start = 15.dp), + text = "Название системы, которой вы пользовались ранее", + style = TextStyle( + fontSize = 12.sp, + color = Color.Gray + ) + ) + } + + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/serpak/absolut_app/screens/SizeOfEstablishmentSreen.kt b/app/src/main/java/com/serpak/absolut_app/screens/SizeOfEstablishmentSreen.kt new file mode 100644 index 0000000..5d82d0c --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/SizeOfEstablishmentSreen.kt @@ -0,0 +1,116 @@ +package com.serpak.absolut_app.screens + +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.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.navigation.NavHostController + +@Composable() +fun SizeOfEstablishmentScreen( + navController: NavHostController, + viewModel: StoreViewModel = hiltViewModel() +){ + var textStateInputArea by remember{mutableStateOf("")} + var textStateInputQuantity by remember{mutableStateOf("")} + var textStateInputAreaForGuests by remember{mutableStateOf("")} + var textStateInputAreaKitchen by remember{mutableStateOf("")} + Column( + modifier = Modifier + .fillMaxSize() + .padding(20.dp) + ){ + Text( + text = "Укажите размеры вашего заведения", + style = TextStyle( + fontSize = 25.sp, + fontWeight = FontWeight.Bold + ) + ) + OutlinedTextField( + modifier = Modifier + .fillMaxWidth() + .padding(top = 20.dp), + value = textStateInputArea, + onValueChange = {textStateInputArea = it}, + placeholder = { + Text( + text="Общая площадь помещения", + style = TextStyle( + fontSize = 18.sp, + color = Color.Gray + ) + + ) + }, + label = {Text(text = "Общая площадь помещения")} + ) + Spacer(modifier = Modifier.height(20.dp)) + OutlinedTextField( + modifier = Modifier.fillMaxWidth(), + value = textStateInputQuantity, + onValueChange = {textStateInputQuantity = it}, + placeholder = { + Text( + text="Количество посадочных мест", + style = TextStyle( + fontSize = 18.sp, + color = Color.Gray + ) + + ) + }, + label = {Text(text = "Количество посадочных мест")} + ) + Spacer(modifier = Modifier.height(20.dp)) + OutlinedTextField( + modifier = Modifier.fillMaxWidth(), + value = textStateInputAreaForGuests, + onValueChange = {textStateInputAreaForGuests = it}, + placeholder = { + Text( + text="Площадь залов для посетителей", + style = TextStyle( + fontSize = 18.sp, + color = Color.Gray + ) + + ) + }, + label = {Text(text = "Площадь залов для посетителей")} + ) + Spacer(modifier = Modifier.height(20.dp)) + OutlinedTextField( + modifier = Modifier.fillMaxWidth(), + value = textStateInputAreaKitchen, + onValueChange = {textStateInputAreaKitchen = it}, + placeholder = { + Text( + text="Площадь кухни", + style = TextStyle( + fontSize = 18.sp, + color = Color.Gray + ) + + ) + }, + label = {Text(text = "Площадь кухни")} + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/serpak/absolut_app/screens/StoreViewModel.kt b/app/src/main/java/com/serpak/absolut_app/screens/StoreViewModel.kt new file mode 100644 index 0000000..7aec475 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/StoreViewModel.kt @@ -0,0 +1,13 @@ +package com.serpak.absolut_app.screens + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class StoreViewModel @Inject constructor( + +): ViewModel(){ + + +} \ No newline at end of file diff --git a/app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompanyScreen.kt b/app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompanyScreen.kt new file mode 100644 index 0000000..8d32a9f --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompanyScreen.kt @@ -0,0 +1,50 @@ +package com.serpak.absolut_app.screens + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController + +//@Preview(showBackground = true) +@Composable() +fun TypeOfCompanyScreen( + navController: NavHostController +) { + Column( + modifier = Modifier + .fillMaxSize() + .padding(20.dp) + ){ + Text( + text = "Каким типом заведения вы владеете?", + style = TextStyle( + fontSize = 25.sp, + fontWeight = FontWeight.Bold + ) + ) + Spacer(modifier = Modifier.height(10.dp)) + Text( + text = "Расскажите нмного больше о вашем бизнесе, чтобы мы смогли подобрать " + + "для вас полезные инструменты", + style = TextStyle( + fontSize = 15.sp, + color = Color.Gray + ) + ) + Spacer(modifier = Modifier.height(15.dp)) + CheckBoxListOne() + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/serpak/absolut_app/screens/TypeOfServiceScreen.kt b/app/src/main/java/com/serpak/absolut_app/screens/TypeOfServiceScreen.kt new file mode 100644 index 0000000..7ef14e5 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/TypeOfServiceScreen.kt @@ -0,0 +1,36 @@ +package com.serpak.absolut_app.screens + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController + +@Composable() +fun TypeOfServiceScreen( + navController: NavHostController +){ + Column( + modifier = Modifier + .fillMaxSize() + .padding(20.dp) + ){ + Text( + text ="Какие типы сервисов вы будете предоставлять в вашем заведении?", + style = TextStyle( + fontSize = 25.sp, + fontWeight = FontWeight.Bold + ) + ) + Spacer(modifier = Modifier.height(15.dp)) + CheckBoxListTwo() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/serpak/absolut_app/screens/WelcomeScreen.kt b/app/src/main/java/com/serpak/absolut_app/screens/WelcomeScreen.kt new file mode 100644 index 0000000..d437ab1 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/WelcomeScreen.kt @@ -0,0 +1,94 @@ +package com.serpak.absolut_app.screens + +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.material3.OutlinedTextField + +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController + + +//@Preview(showBackground = true) +@Composable +fun WelcomeScreen( + navController:NavHostController +){ + + var textStateInputName by remember{ mutableStateOf("")} + var textStateInputPhoneNumber by remember{ mutableStateOf("")} + + Column( + modifier = Modifier + .fillMaxSize() + .padding(20.dp) + ) { + Text( + text = "Добро пожаловать!", + style = TextStyle( + fontSize = 25.sp, + fontWeight = FontWeight.Bold + ) + ) + Spacer(modifier = Modifier.height(10.dp)) + Text( + modifier = Modifier.padding(top = 10.dp), + text = "Введите имя, номер телефона или адрес электронной почты для регистрации", + style = TextStyle( + fontSize = 15.sp, + color = Color.Gray + ) + ) + Spacer(modifier = Modifier.height(15.dp)) + + //InputName + OutlinedTextField( + modifier = Modifier + .fillMaxWidth(), + value = textStateInputName, + onValueChange = { textStateInputName = it }, + placeholder = { + Text( + text = "Ваше имя", + style = TextStyle( + fontSize = 18.sp, + color = Color.Gray + ) + ) + }, + label = { Text(text = "Ваше имя") } + ) + Spacer(modifier = Modifier.height(30.dp)) + //Input Phone number + OutlinedTextField( + modifier = Modifier.fillMaxWidth(), + value = textStateInputPhoneNumber, + onValueChange = { textStateInputPhoneNumber = it }, + placeholder = { + Text( + text = "Телефон или почта", + style = TextStyle( + fontSize = 18.sp, + color = Color.Gray + ) + ) + }, + label = {Text(text = "Телефон и почта")} + ) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_bar.xml b/app/src/main/res/drawable/ic_bar.xml new file mode 100644 index 0000000..75698ad --- /dev/null +++ b/app/src/main/res/drawable/ic_bar.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/build.gradle.kts b/build.gradle.kts index a0985ef..b1baf7c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,4 +2,5 @@ plugins { alias(libs.plugins.androidApplication) apply false alias(libs.plugins.jetbrainsKotlinAndroid) apply false + id ("com.google.dagger.hilt.android") version ("2.46.1") apply false } \ No newline at end of file