From 2df61e685770208d3d44d79c1dac21e4cdf54d7a Mon Sep 17 00:00:00 2001 From: Safonov Sergei Date: Thu, 22 Aug 2024 01:22:14 +0300 Subject: [PATCH 1/4] Add some composable functions --- .../com/serpak/absolut_app/MainActivity.kt | 3 +- .../absolut_app/navigation/AppNavigation.kt | 7 + .../absolut_app/screens/CreateStoreScreen.kt | 185 ++++++++++++++++++ .../absolut_app/screens/TypeOfCompany.kt | 20 ++ .../absolut_app/screens/WelcomeScreen.kt | 91 +++++++++ 5 files changed, 305 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/serpak/absolut_app/navigation/AppNavigation.kt create mode 100644 app/src/main/java/com/serpak/absolut_app/screens/CreateStoreScreen.kt create mode 100644 app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompany.kt create mode 100644 app/src/main/java/com/serpak/absolut_app/screens/WelcomeScreen.kt diff --git a/app/src/main/java/com/serpak/absolut_app/MainActivity.kt b/app/src/main/java/com/serpak/absolut_app/MainActivity.kt index fa6aec4..8183c36 100644 --- a/app/src/main/java/com/serpak/absolut_app/MainActivity.kt +++ b/app/src/main/java/com/serpak/absolut_app/MainActivity.kt @@ -10,6 +10,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview +import com.serpak.absolut_app.screens.CreateStoreScreen import com.serpak.absolut_app.ui.theme.Absolut_appTheme class MainActivity : ComponentActivity() { @@ -22,7 +23,7 @@ class MainActivity : ComponentActivity() { modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { - Greeting("Android") + CreateStoreScreen() } } } diff --git a/app/src/main/java/com/serpak/absolut_app/navigation/AppNavigation.kt b/app/src/main/java/com/serpak/absolut_app/navigation/AppNavigation.kt new file mode 100644 index 0000000..1dfc301 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/navigation/AppNavigation.kt @@ -0,0 +1,7 @@ +package com.serpak.absolut_app.navigation + +import androidx.compose.runtime.Composable + +@Composable() +fun AppNavigation() { +} \ 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..87abccc --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/CreateStoreScreen.kt @@ -0,0 +1,185 @@ +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 + +@Preview(showBackground = true) +@Composable() +fun CreateStoreScreen() { + + 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/TypeOfCompany.kt b/app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompany.kt new file mode 100644 index 0000000..3fce3f6 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompany.kt @@ -0,0 +1,20 @@ +package com.serpak.absolut_app.screens + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview + +@Preview(showBackground = true) +@Composable() +fun TypeOfCompany() { + Column( + modifier = Modifier.fillMaxSize() + ){ + Text( + text = "Каким типом заведения вы владеете?" + ) + } +} \ 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..856bb1a --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/WelcomeScreen.kt @@ -0,0 +1,91 @@ +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 + + +@Preview(showBackground = true) +@Composable +fun WelcomeScreen(){ + + 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 From f6cfb4ad33a10bf28efad85f55cd7cf4e93581bf Mon Sep 17 00:00:00 2001 From: Safonov Sergei Date: Thu, 22 Aug 2024 21:54:13 +0300 Subject: [PATCH 2/4] Add some composable functions --- .../com/serpak/absolut_app/MainActivity.kt | 3 +- .../absolut_app/navigation/AppNavigation.kt | 33 +++++++++++++++++++ .../serpak/absolut_app/navigation/Routes.kt | 11 +++++++ .../absolut_app/screens/CompletedScreen.kt | 19 +++++++++++ .../absolut_app/screens/CreateStoreScreen.kt | 7 ++-- .../screens/SizeOfEstablishmentSreen.kt | 19 +++++++++++ ...ypeOfCompany.kt => TypeOfCompanyScreen.kt} | 8 +++-- .../screens/TypeOfServiceScreen.kt | 19 +++++++++++ .../absolut_app/screens/WelcomeScreen.kt | 7 ++-- 9 files changed, 118 insertions(+), 8 deletions(-) create mode 100644 app/src/main/java/com/serpak/absolut_app/navigation/Routes.kt create mode 100644 app/src/main/java/com/serpak/absolut_app/screens/CompletedScreen.kt create mode 100644 app/src/main/java/com/serpak/absolut_app/screens/SizeOfEstablishmentSreen.kt rename app/src/main/java/com/serpak/absolut_app/screens/{TypeOfCompany.kt => TypeOfCompanyScreen.kt} (75%) create mode 100644 app/src/main/java/com/serpak/absolut_app/screens/TypeOfServiceScreen.kt diff --git a/app/src/main/java/com/serpak/absolut_app/MainActivity.kt b/app/src/main/java/com/serpak/absolut_app/MainActivity.kt index 8183c36..1f1516c 100644 --- a/app/src/main/java/com/serpak/absolut_app/MainActivity.kt +++ b/app/src/main/java/com/serpak/absolut_app/MainActivity.kt @@ -10,6 +10,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview +import com.serpak.absolut_app.navigation.AppNavigation import com.serpak.absolut_app.screens.CreateStoreScreen import com.serpak.absolut_app.ui.theme.Absolut_appTheme @@ -23,7 +24,7 @@ class MainActivity : ComponentActivity() { modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { - CreateStoreScreen() + AppNavigation() } } } diff --git a/app/src/main/java/com/serpak/absolut_app/navigation/AppNavigation.kt b/app/src/main/java/com/serpak/absolut_app/navigation/AppNavigation.kt index 1dfc301..288094f 100644 --- a/app/src/main/java/com/serpak/absolut_app/navigation/AppNavigation.kt +++ b/app/src/main/java/com/serpak/absolut_app/navigation/AppNavigation.kt @@ -1,7 +1,40 @@ package com.serpak.absolut_app.navigation import androidx.compose.runtime.Composable +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import com.serpak.absolut_app.screens.CompletedScreen +import com.serpak.absolut_app.screens.CreateStoreScreen +import com.serpak.absolut_app.screens.SizeOfEstablishmentScreen +import com.serpak.absolut_app.screens.TypeOfCompanyScreen +import com.serpak.absolut_app.screens.TypeOfServiceScreen +import com.serpak.absolut_app.screens.WelcomeScreen @Composable() fun AppNavigation() { + val navController = rememberNavController() + NavHost( + navController = navController, + startDestination = Routes.WELCOME_SCREEN + ){ + 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) + } + } } \ No newline at end of file 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..b48dda4 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/navigation/Routes.kt @@ -0,0 +1,11 @@ +package com.serpak.absolut_app.navigation + +object Routes { + 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/CompletedScreen.kt b/app/src/main/java/com/serpak/absolut_app/screens/CompletedScreen.kt new file mode 100644 index 0000000..3768500 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/CompletedScreen.kt @@ -0,0 +1,19 @@ +package com.serpak.absolut_app.screens + +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController + +@Composable +fun CompletedScreen( + navController: NavHostController +){ + Text( + text = "Completed Screen", + style = TextStyle( + fontSize = 32.sp + ) + ) +} \ 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 index 87abccc..36830b8 100644 --- a/app/src/main/java/com/serpak/absolut_app/screens/CreateStoreScreen.kt +++ b/app/src/main/java/com/serpak/absolut_app/screens/CreateStoreScreen.kt @@ -23,10 +23,13 @@ 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) +//@Preview(showBackground = true) @Composable() -fun CreateStoreScreen() { +fun CreateStoreScreen( + navController: NavHostController +) { var textStateInputCompanyName by remember { mutableStateOf("") } var textStateInputCountryAndCity by remember { mutableStateOf("") } 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..55433b5 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/SizeOfEstablishmentSreen.kt @@ -0,0 +1,19 @@ +package com.serpak.absolut_app.screens + +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController + +@Composable() +fun SizeOfEstablishmentScreen( + navController: NavHostController +){ + Text( + text = "Size Of Establishment Screen", + style = TextStyle( + fontSize = 30.sp + ) + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompany.kt b/app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompanyScreen.kt similarity index 75% rename from app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompany.kt rename to app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompanyScreen.kt index 3fce3f6..5cf93e3 100644 --- a/app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompany.kt +++ b/app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompanyScreen.kt @@ -5,11 +5,13 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview +import androidx.navigation.NavHostController -@Preview(showBackground = true) +//@Preview(showBackground = true) @Composable() -fun TypeOfCompany() { +fun TypeOfCompanyScreen( + navController: NavHostController +) { Column( modifier = Modifier.fillMaxSize() ){ 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..434005b --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/screens/TypeOfServiceScreen.kt @@ -0,0 +1,19 @@ +package com.serpak.absolut_app.screens + +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController + +@Composable() +fun TypeOfServiceScreen( + navController: NavHostController +){ + Text( + text = "Type Of Service Screen", + style = TextStyle( + fontSize = 32.sp + ) + ) +} \ 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 index 856bb1a..d437ab1 100644 --- a/app/src/main/java/com/serpak/absolut_app/screens/WelcomeScreen.kt +++ b/app/src/main/java/com/serpak/absolut_app/screens/WelcomeScreen.kt @@ -21,11 +21,14 @@ 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) +//@Preview(showBackground = true) @Composable -fun WelcomeScreen(){ +fun WelcomeScreen( + navController:NavHostController +){ var textStateInputName by remember{ mutableStateOf("")} var textStateInputPhoneNumber by remember{ mutableStateOf("")} From f32f58762730b21bdd40ab366333e8021b977c3e Mon Sep 17 00:00:00 2001 From: Safonov Sergei Date: Mon, 26 Aug 2024 21:59:38 +0300 Subject: [PATCH 3/4] Add some composable functions --- app/build.gradle.kts | 36 +++++ app/src/main/AndroidManifest.xml | 3 +- .../com/serpak/absolut_app/MainActivity.kt | 21 +-- .../com/serpak/absolut_app/MyApplication.kt | 8 + .../com/serpak/absolut_app/di/AppModule.kt | 4 + .../absolut_app/navigation/AppNavigation.kt | 129 ++++++++++++--- .../absolut_app/screens/CheckBoxList.kt | 152 ++++++++++++++++++ .../absolut_app/screens/CompletedScreen.kt | 37 ++++- .../screens/SizeOfEstablishmentSreen.kt | 109 ++++++++++++- .../absolut_app/screens/StoreViewModel.kt | 13 ++ .../screens/TypeOfCompanyScreen.kt | 32 +++- .../screens/TypeOfServiceScreen.kt | 29 +++- app/src/main/res/drawable/ic_bar.xml | 5 + build.gradle.kts | 1 + 14 files changed, 516 insertions(+), 63 deletions(-) create mode 100644 app/src/main/java/com/serpak/absolut_app/MyApplication.kt create mode 100644 app/src/main/java/com/serpak/absolut_app/di/AppModule.kt create mode 100644 app/src/main/java/com/serpak/absolut_app/screens/CheckBoxList.kt create mode 100644 app/src/main/java/com/serpak/absolut_app/screens/StoreViewModel.kt create mode 100644 app/src/main/res/drawable/ic_bar.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f5bb609..3e85442 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,16 @@ plugins { alias(libs.plugins.androidApplication) alias(libs.plugins.jetbrainsKotlinAndroid) + id ("kotlin-kapt") + id ("com.google.dagger.hilt.android") + +} + +apollo { + service("service"){ + schemaFile.set(file("/src/main/graphql/schema.sdl")) + packageName.set("com.serpak.absolut_app") + } } android { @@ -51,6 +61,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 = "Далее") + } + } } - composable(Routes.COMPLETED_SCREEN){ - CompletedScreen(navController = navController) + ) { + NavHost( + navController = navController, + startDestination = screens[0], + modifier = Modifier.padding(it) + ) { + 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) + } } } -} \ 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 index 3768500..2e63f81 100644 --- a/app/src/main/java/com/serpak/absolut_app/screens/CompletedScreen.kt +++ b/app/src/main/java/com/serpak/absolut_app/screens/CompletedScreen.kt @@ -1,19 +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 -){ - Text( - text = "Completed Screen", - style = TextStyle( - fontSize = 32.sp +) { + 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/SizeOfEstablishmentSreen.kt b/app/src/main/java/com/serpak/absolut_app/screens/SizeOfEstablishmentSreen.kt index 55433b5..5d82d0c 100644 --- a/app/src/main/java/com/serpak/absolut_app/screens/SizeOfEstablishmentSreen.kt +++ b/app/src/main/java/com/serpak/absolut_app/screens/SizeOfEstablishmentSreen.kt @@ -1,19 +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 + navController: NavHostController, + viewModel: StoreViewModel = hiltViewModel() ){ - Text( - text = "Size Of Establishment Screen", - style = TextStyle( - fontSize = 30.sp + 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 index 5cf93e3..8d32a9f 100644 --- a/app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompanyScreen.kt +++ b/app/src/main/java/com/serpak/absolut_app/screens/TypeOfCompanyScreen.kt @@ -1,10 +1,20 @@ 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) @@ -13,10 +23,28 @@ fun TypeOfCompanyScreen( navController: NavHostController ) { Column( - modifier = Modifier.fillMaxSize() + modifier = Modifier + .fillMaxSize() + .padding(20.dp) ){ Text( - 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 index 434005b..7ef14e5 100644 --- a/app/src/main/java/com/serpak/absolut_app/screens/TypeOfServiceScreen.kt +++ b/app/src/main/java/com/serpak/absolut_app/screens/TypeOfServiceScreen.kt @@ -1,8 +1,16 @@ 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 @@ -10,10 +18,19 @@ import androidx.navigation.NavHostController fun TypeOfServiceScreen( navController: NavHostController ){ - Text( - text = "Type Of Service Screen", - style = TextStyle( - fontSize = 32.sp - ) - ) + 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/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 From a765cd3f6d015afd931c5f77a7e72680cca8d391 Mon Sep 17 00:00:00 2001 From: Safonov Sergei Date: Mon, 26 Aug 2024 23:09:25 +0300 Subject: [PATCH 4/4] Add some composable functions --- app/build.gradle.kts | 7 -- .../com/serpak/absolut_app/di/ApiModule.kt | 68 +++++++++++++++++++ .../serpak/absolut_app/di/AuthInterceptor.kt | 18 +++++ .../absolut_app/navigation/AppNavigation.kt | 4 ++ .../serpak/absolut_app/navigation/Routes.kt | 1 + .../serpak/absolut_app/screens/AuthScreen.kt | 11 +++ 6 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/com/serpak/absolut_app/di/ApiModule.kt create mode 100644 app/src/main/java/com/serpak/absolut_app/di/AuthInterceptor.kt create mode 100644 app/src/main/java/com/serpak/absolut_app/screens/AuthScreen.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 3e85442..091fe0b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -6,13 +6,6 @@ plugins { } -apollo { - service("service"){ - schemaFile.set(file("/src/main/graphql/schema.sdl")) - packageName.set("com.serpak.absolut_app") - } -} - android { namespace = "com.serpak.absolut_app" compileSdk = 34 diff --git a/app/src/main/java/com/serpak/absolut_app/di/ApiModule.kt b/app/src/main/java/com/serpak/absolut_app/di/ApiModule.kt new file mode 100644 index 0000000..6b19e79 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/di/ApiModule.kt @@ -0,0 +1,68 @@ +package com.serpak.absolut_app.di + +import android.content.SharedPreferences +import com.squareup.moshi.Moshi +import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import okhttp3.OkHttpClient +import retrofit2.Retrofit +import retrofit2.converter.moshi.MoshiConverterFactory +import java.util.concurrent.TimeUnit +import javax.inject.Singleton + + +@Module +@InstallIn(SingletonComponent::class) +object ApiModule { + + private const val BASE_URL = "http://127.0.0.1:8000/api/v1/" + + @Provides + @Singleton + fun provideAuthInterceptor(sharedPreferences: SharedPreferences):AuthInterceptor{ + return AuthInterceptor(sharedPreferences) + } + + @Provides + @Singleton + fun provideOkHttpClient(authInterceptor: AuthInterceptor): OkHttpClient{ + return OkHttpClient.Builder() + .addInterceptor(authInterceptor) + .connectTimeout(5, TimeUnit.SECONDS) + .readTimeout(5, TimeUnit.SECONDS) + .writeTimeout(5, TimeUnit.SECONDS) + .build() + } + + @Provides + @Singleton + fun provideKotlinJsonAdapterFactory(): KotlinJsonAdapterFactory = KotlinJsonAdapterFactory() + + @Provides + @Singleton + fun provideMoshi(kotlinJsonAdapterFactory: KotlinJsonAdapterFactory): Moshi = Moshi.Builder() + .add(kotlinJsonAdapterFactory) + .build() + + @Provides + @Singleton + fun provideMoshiConverterFactory(moshi: Moshi):MoshiConverterFactory = MoshiConverterFactory + .create(moshi) + + @Provides + @Singleton + fun providerRetrofitClient( + okHttpClient: OkHttpClient, + moshiConverterFactory: MoshiConverterFactory + ): Retrofit{ + return Retrofit.Builder() + .addConverterFactory(moshiConverterFactory) + .client(okHttpClient) + .baseUrl(BASE_URL) + .build() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/serpak/absolut_app/di/AuthInterceptor.kt b/app/src/main/java/com/serpak/absolut_app/di/AuthInterceptor.kt new file mode 100644 index 0000000..eabcbc1 --- /dev/null +++ b/app/src/main/java/com/serpak/absolut_app/di/AuthInterceptor.kt @@ -0,0 +1,18 @@ +package com.serpak.absolut_app.di + +import android.content.SharedPreferences +import okhttp3.Interceptor +import okhttp3.Response + +class AuthInterceptor(private val sharedPreferences: SharedPreferences): Interceptor { + override fun intercept(chain: Interceptor.Chain): Response { + val token = sharedPreferences.getString("token", "") ?: "" + val originalRequest = chain.request() + val newRequest = originalRequest.newBuilder() + .header("Authorization", "Bearer $token") + .build() + return chain.proceed(newRequest) + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/serpak/absolut_app/navigation/AppNavigation.kt b/app/src/main/java/com/serpak/absolut_app/navigation/AppNavigation.kt index 7c1e098..840a13c 100644 --- a/app/src/main/java/com/serpak/absolut_app/navigation/AppNavigation.kt +++ b/app/src/main/java/com/serpak/absolut_app/navigation/AppNavigation.kt @@ -18,6 +18,7 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import com.serpak.absolut_app.R import com.serpak.absolut_app.navigation.Routes +import com.serpak.absolut_app.screens.AuthScreen import com.serpak.absolut_app.screens.CompletedScreen import com.serpak.absolut_app.screens.CreateStoreScreen import com.serpak.absolut_app.screens.SizeOfEstablishmentScreen @@ -92,6 +93,9 @@ fun AppNavigation() { startDestination = screens[0], modifier = Modifier.padding(it) ) { + composable(Routes.AUTH_SCREEN){ + AuthScreen(navController = navController) + } composable(Routes.WELCOME_SCREEN) { WelcomeScreen(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 index b48dda4..cf341ee 100644 --- a/app/src/main/java/com/serpak/absolut_app/navigation/Routes.kt +++ b/app/src/main/java/com/serpak/absolut_app/navigation/Routes.kt @@ -1,6 +1,7 @@ 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" 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