diff --git a/.gradle-local/wrapper/dists/gradle-9.4.1-bin/arn2x92ynaizyzdaamcbpbhtj/gradle-9.4.1-bin.zip.lck b/.gradle-local/wrapper/dists/gradle-9.4.1-bin/arn2x92ynaizyzdaamcbpbhtj/gradle-9.4.1-bin.zip.lck new file mode 100644 index 0000000..e69de29 diff --git a/.gradle-local/wrapper/dists/gradle-9.4.1-bin/arn2x92ynaizyzdaamcbpbhtj/gradle-9.4.1-bin.zip.part b/.gradle-local/wrapper/dists/gradle-9.4.1-bin/arn2x92ynaizyzdaamcbpbhtj/gradle-9.4.1-bin.zip.part new file mode 100644 index 0000000..e69de29 diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index ca16a99..c7b5db6 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,6 +4,13 @@ diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 08acc47..e94f37c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -42,6 +42,7 @@ android { dependencies { implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.activity.compose) + implementation(libs.androidx.compose.foundation) implementation(libs.androidx.compose.material3) implementation(libs.androidx.compose.ui) implementation(libs.androidx.compose.ui.graphics) diff --git a/app/src/main/java/com/mob/ustmm/ui/amount/AmountScreen.kt b/app/src/main/java/com/mob/ustmm/ui/amount/AmountScreen.kt new file mode 100644 index 0000000..d6e5611 --- /dev/null +++ b/app/src/main/java/com/mob/ustmm/ui/amount/AmountScreen.kt @@ -0,0 +1,313 @@ +package com.mob.ustmm.ui.amount + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.CenterAlignedTopAppBar +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.res.painterResource +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.dp +import androidx.compose.ui.unit.sp +import com.mob.ustmm.R +import com.mob.ustmm.ui.theme.MOBPOSTheme +import com.mob.ustmm.ui.theme.Primary +import com.mob.ustmm.ui.theme.White + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun AmountScreen( + action: String, + onBackClick: () -> Unit, + onCancelClick: () -> Unit = {}, + onNextClick: (String) -> Unit = {} +) { + + var amount by remember { mutableStateOf("0") } + + val config = LocalConfiguration.current + val isSmallScreen = config.screenHeightDp < 700 + + Scaffold( + topBar = { + CenterAlignedTopAppBar( + title = { + Text( + text = action.uppercase(), + color = White, + fontSize = 16.sp, + fontWeight = FontWeight.SemiBold + ) + }, + navigationIcon = { + IconButton(onClick = onBackClick) { + Icon( + painter = painterResource(R.drawable.ic_left_arrow), + contentDescription = "Back", + modifier = Modifier.size(24.dp), + tint = White + ) + } + }, + colors = TopAppBarDefaults.topAppBarColors( + containerColor = Primary + ) + ) + }, + containerColor = White + ) { paddingValues -> + + Column( + modifier = Modifier + .fillMaxSize() + .padding(paddingValues) + .background(White) + .verticalScroll(rememberScrollState()) + .padding(horizontal = if (isSmallScreen) 20.dp else 24.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.SpaceBetween + ) { + + Spacer( + modifier = Modifier.height( + 16.dp + ) + ) + + AmountBox( + amount = amount, + height = if (isSmallScreen) 115.dp else 142.dp + ) + + Spacer( + modifier = Modifier.height( + 100.dp + ) + ) + + Keypad( + buttonHeight = if (isSmallScreen) 60.dp else 74.dp, + buttonSpacing = if (isSmallScreen) 8.dp else 12.dp, + onKeyClick = { key -> + + amount = when (key) { + + "del" -> { + if (amount.length <= 1) { + "0" + } else { + amount.dropLast(1) + } + } + + "." -> { + if (amount.contains(".")) { + amount + } else { + "$amount." + } + } + + else -> { + if (amount == "0") { + key + } else { + amount + key + } + } + } + } + ) + + Spacer( + modifier = Modifier.height( + if (isSmallScreen) 14.dp else 18.dp + ) + ) + + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(14.dp) + ) { + + Button( + onClick = onCancelClick, + modifier = Modifier + .weight(1f) + .height(if (isSmallScreen) 58.dp else 68.dp), + shape = RoundedCornerShape(18.dp), + colors = ButtonDefaults.buttonColors( + containerColor = White, + contentColor = Primary + ), + border = ButtonDefaults.outlinedButtonBorder + ) { + Text( + text = "Cancel", + fontSize = if (isSmallScreen) 18.sp else 20.sp, + fontWeight = FontWeight.Bold + ) + } + + Button( + onClick = { + onNextClick(amount) + }, + modifier = Modifier + .weight(1f) + .height(if (isSmallScreen) 58.dp else 68.dp), + shape = RoundedCornerShape(18.dp), + colors = ButtonDefaults.buttonColors( + containerColor = Primary, + contentColor = White + ) + ) { + Text( + text = "Next", + fontSize = if (isSmallScreen) 18.sp else 20.sp, + fontWeight = FontWeight.Bold + ) + } + } + + Spacer(modifier = Modifier.height(12.dp)) + } + } +} + +@Composable +private fun AmountBox( + amount: String, + height: Dp +) { + + Box( + modifier = Modifier + .fillMaxWidth() + .height(height) + .background( + color = Primary, + shape = RoundedCornerShape(20.dp) + ) + .padding(horizontal = 24.dp), + contentAlignment = Alignment.CenterEnd + ) { + + Row( + verticalAlignment = Alignment.CenterVertically + ) { + + Text( + text = amount, + color = White, + fontSize = 26.sp, + fontWeight = FontWeight.Bold + ) + + Spacer(modifier = Modifier.width(14.dp)) + + Box( + modifier = Modifier + .background( + color = White, + shape = RoundedCornerShape(10.dp) + ) + .padding( + horizontal = 16.dp, + vertical = 6.dp + ) + ) { + + Text( + text = "MMK", + color = Primary, + fontSize = 20.sp, + fontWeight = FontWeight.Bold + ) + } + } + } +} + +@Composable +private fun Keypad( + buttonHeight: Dp, + buttonSpacing: Dp, + onKeyClick: (String) -> Unit +) { + + val keys = listOf( + listOf("1", "2", "3"), + listOf("4", "5", "6"), + listOf("7", "8", "9"), + listOf(".", "0", "del") + ) + + Column( + verticalArrangement = Arrangement.spacedBy(buttonSpacing) + ) { + + keys.forEach { row -> + + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(8.dp) + ) { + + row.forEach { key -> + + Button( + onClick = { + onKeyClick(key) + }, + modifier = Modifier + .weight(1f) + .height(buttonHeight), + shape = RoundedCornerShape(18.dp), + colors = ButtonDefaults.buttonColors( + containerColor = Primary, + contentColor = White + ), + contentPadding = PaddingValues(0.dp) + ) { + + Text( + text = key, + fontSize = if (buttonHeight < 70.dp) 20.sp else 22.sp, + fontWeight = FontWeight.Bold + ) + } + } + } + } + } +} + +@Preview(showBackground = true, showSystemUi = false) +@Composable +private fun AmountScreenPreview() { + + MOBPOSTheme { + + AmountScreen( + action = "Amount", + onBackClick = {} + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mob/ustmm/ui/components/SquareButton.kt b/app/src/main/java/com/mob/ustmm/ui/components/SquareButton.kt new file mode 100644 index 0000000..658b268 --- /dev/null +++ b/app/src/main/java/com/mob/ustmm/ui/components/SquareButton.kt @@ -0,0 +1,95 @@ +package com.mob.ustmm.ui.components + +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.mob.ustmm.R +import com.mob.ustmm.ui.theme.MOBPOSTheme +import com.mob.ustmm.ui.theme.Primary +import com.mob.ustmm.ui.theme.White + +@Composable +fun SquareButton( + title: String, + icon: Int, + modifier: Modifier = Modifier, + enabled: Boolean = true, + containerColor: Color = White, + contentColor: Color = Primary, + iconTint: Color = contentColor, + disabledContainerColor: Color = White, + disabledContentColor: Color = Primary, + border: BorderStroke? = null, + shape: Shape = RoundedCornerShape(20.dp), + onClick: () -> Unit +) { + Button( + onClick = onClick, + enabled = enabled, + modifier = modifier + .height(180.dp), + shape = shape, + border = border, + colors = ButtonDefaults.buttonColors( + containerColor = containerColor, + contentColor = contentColor, + disabledContainerColor = disabledContainerColor, + disabledContentColor = disabledContentColor + ), + contentPadding = PaddingValues(12.dp) + ) { + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Icon( + painter = painterResource(icon), + contentDescription = title, + tint = if (enabled) iconTint else disabledContentColor, + modifier = Modifier.size(60.dp) + ) + + Spacer(modifier = Modifier.height(10.dp)) + + Text( + text = title, + fontSize = 24.sp, + fontWeight = FontWeight.SemiBold, + textAlign = TextAlign.Center, + maxLines = 1 + ) + } + } +} + +@Preview(showBackground = true) +@Composable +private fun SquareButtonPreview() { + MOBPOSTheme { + SquareButton( + title = "Sale", + icon = R.drawable.ic_menu, + modifier = Modifier + .fillMaxWidth() + .padding(16.dp), + containerColor = White, + contentColor = White, + iconTint = Primary, + border = null, + onClick = {} + ) + } +} diff --git a/app/src/main/java/com/mob/ustmm/ui/dashboard/BottomDashboardButton.kt b/app/src/main/java/com/mob/ustmm/ui/dashboard/BottomDashboardButton.kt deleted file mode 100644 index b98b3a3..0000000 --- a/app/src/main/java/com/mob/ustmm/ui/dashboard/BottomDashboardButton.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.mob.ustmm.ui.dashboard - -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Button -import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.SegmentedButtonDefaults.Icon -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp - -@Composable -fun BottomDashboardButton( - text: String, - icon: Int, - modifier: Modifier = Modifier, - enabled: Boolean = true, - onClick: () -> Unit -) { - Button( - onClick = onClick, - enabled = enabled, - modifier = modifier - .padding(8.dp) - .height(81.dp), - shape = RoundedCornerShape(12.dp), - colors = ButtonDefaults.buttonColors( - containerColor = Color.Yellow, - contentColor = Color.White, - disabledContainerColor = Color.Gray, - disabledContentColor = Color.White - ), - contentPadding = PaddingValues(12.dp) - ) { - Column( - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center - ) { -// Icon( -// painter = painterResource(id = icon), -// contentDescription = null, -// tint = Color.White -// ) - - Spacer(modifier = Modifier.height(4.dp)) - - Text( - text = text, - fontSize = 17.sp - ) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/mob/ustmm/ui/dashboard/DashboardMenuButton.kt b/app/src/main/java/com/mob/ustmm/ui/dashboard/DashboardMenuButton.kt deleted file mode 100644 index 402bec1..0000000 --- a/app/src/main/java/com/mob/ustmm/ui/dashboard/DashboardMenuButton.kt +++ /dev/null @@ -1,64 +0,0 @@ -package com.mob.ustmm.ui.dashboard - -import androidx.compose.foundation.BorderStroke -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Button -import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.Icon -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -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.unit.dp -import androidx.compose.ui.unit.sp - -@Composable -fun DashboardMenuButton( - text: String, - icon: Int, - modifier: Modifier = Modifier, - enabled: Boolean = true, - onClick: () -> Unit -) { - Button( - onClick = onClick, - enabled = enabled, - modifier = modifier - .padding(8.dp) - .height(81.dp), - shape = RoundedCornerShape(8.dp), - colors = ButtonDefaults.buttonColors( - containerColor = Color.White, - contentColor = Color.Yellow, - disabledContainerColor = Color.LightGray, - disabledContentColor = Color.Gray - ), - border = BorderStroke(1.dp, Color.Black), - contentPadding = PaddingValues(8.dp) - ) { - Column( - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center - ) { - Icon( - painter = painterResource(id = icon), - contentDescription = null - ) - - Spacer(modifier = Modifier.height(4.dp)) - - Text( - text = text, - fontSize = 14.sp - ) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/mob/ustmm/ui/dashboard/DashboardScreen.kt b/app/src/main/java/com/mob/ustmm/ui/dashboard/DashboardScreen.kt index f55942e..9706173 100644 --- a/app/src/main/java/com/mob/ustmm/ui/dashboard/DashboardScreen.kt +++ b/app/src/main/java/com/mob/ustmm/ui/dashboard/DashboardScreen.kt @@ -4,25 +4,21 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.pager.HorizontalPager -import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.* import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.ui.* +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.mob.ustmm.R +import com.mob.ustmm.ui.components.SquareButton +import com.mob.ustmm.ui.theme.MOBPOSTheme import com.mob.ustmm.ui.theme.* -import kotlinx.coroutines.delay import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3Api::class) @@ -30,6 +26,7 @@ import kotlinx.coroutines.launch fun DashboardScreen( settlementEnabled: Boolean, wavePayEnabled: Boolean, + onAmountClick: (String) -> Unit, onTransactionClick: () -> Unit, onSettlementClick: () -> Unit, onHistoryClick: () -> Unit, @@ -38,28 +35,7 @@ fun DashboardScreen( ) { val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed) val scope = rememberCoroutineScope() - - - val images = listOf( - R.drawable.box_christmas_delivery_gift_package_present_svgrepo_com, - R.drawable.buy_ecommerce_finance_payment_pos_shop_svgrepo_com, - R.drawable.appointment_calendar_date_event_month_plan_svgrepo_com - ) - val startPage = Int.MAX_VALUE / 2; - - val pagerState = rememberPagerState( - initialPage = startPage, - pageCount = { Int.MAX_VALUE } - ) - LaunchedEffect(Unit) { - while(true){ - delay(3000) - pagerState.animateScrollToPage( - pagerState.currentPage + 1 - ) - } - } ModalNavigationDrawer( drawerState = drawerState, @@ -129,7 +105,7 @@ fun DashboardScreen( onWavePayClick() } .padding(horizontal = 24.dp, vertical = 14.dp), - color = if (wavePayEnabled) Black else White, + color = if (wavePayEnabled) Black else White, fontSize = 16.sp ) } @@ -139,7 +115,6 @@ fun DashboardScreen( topBar = { CenterAlignedTopAppBar( title = { - Text(text = "Dashboard", color = White, fontWeight = FontWeight.SemiBold) }, navigationIcon = { @@ -150,7 +125,11 @@ fun DashboardScreen( } } ) { - Icon(painter = painterResource(R.drawable.ic_menu), contentDescription = "Menu Icon", tint = White) + Icon( + painter = painterResource(R.drawable.ic_menu), + contentDescription = "Menu Icon", + tint = White + ) } }, colors = TopAppBarDefaults.topAppBarColors( @@ -158,20 +137,116 @@ fun DashboardScreen( ) ) } - ) { paddingValues -> + ) { paddingValues -> Column( - modifier = Modifier.fillMaxSize().padding(paddingValues).background(White) + modifier = Modifier + .fillMaxSize() + .padding(paddingValues) + .background(White) ) { - HorizontalPager(state = pagerState) { page -> - val index = page % images.size; + Box( + modifier = Modifier + .fillMaxWidth() + .padding(20.dp), + contentAlignment = Alignment.Center + ) { Image( - painter = painterResource(images[index]), - contentDescription = "Banner images", - modifier = Modifier.fillMaxSize(), - contentScale = ContentScale.Crop + painter = painterResource(R.drawable.logo_mob), + contentDescription = "Mob logo" ) } + + Box( + modifier = Modifier + .fillMaxSize() + .background( + color = Primary, + shape = RoundedCornerShape( + topStart = 16.dp, + topEnd = 16.dp, + bottomStart = 0.dp, + bottomEnd = 0.dp + ) + ) + ) { + Column( + modifier = Modifier + .fillMaxSize() + .padding(16.dp), + verticalArrangement = Arrangement.spacedBy(12.dp) + ) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(12.dp) + ) { + SquareButton( + title = "Sale", + icon = R.drawable.ic_sale, + modifier = Modifier.weight(1f), + containerColor = White, + contentColor = Primary, + iconTint = Primary, + border = null, + onClick = { onAmountClick("Sale") }, + ) + SquareButton( + title = "Sign On", + icon = R.drawable.ic_menu, + modifier = Modifier.weight(1f), + containerColor = White, + contentColor = Primary, + iconTint = Primary, + border = null, + onClick = { onAmountClick("Sign On") } + ) + } + + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(12.dp) + ) { + SquareButton( + title = "Settlement", + icon = R.drawable.ic_menu, + modifier = Modifier.weight(1f), + enabled = settlementEnabled, + containerColor = White, + contentColor = Primary, + iconTint = Primary, + border = null, + onClick = onSettlementClick + ) + SquareButton( + title = "Others", + icon = R.drawable.ic_menu, + modifier = Modifier.weight(1f), + containerColor = White, + contentColor = Primary, + iconTint = Primary, + border = null, + onClick = onCardClick + ) + } + } + } } } } } + +@Preview(showBackground = true, showSystemUi = true) +@Composable +private fun DashboardScreenPreview() { + MOBPOSTheme { + DashboardScreen( + settlementEnabled = true, + wavePayEnabled = true, + onAmountClick = {}, + onTransactionClick = {}, + onSettlementClick = {}, + onHistoryClick = {}, + onCardClick = {}, + onWavePayClick = {} + ) + } +} diff --git a/app/src/main/java/com/mob/ustmm/ui/navigation/AppNavGraph.kt b/app/src/main/java/com/mob/ustmm/ui/navigation/AppNavGraph.kt index 67ce050..2df137c 100644 --- a/app/src/main/java/com/mob/ustmm/ui/navigation/AppNavGraph.kt +++ b/app/src/main/java/com/mob/ustmm/ui/navigation/AppNavGraph.kt @@ -1,15 +1,16 @@ package com.mob.ustmm.ui.navigation - import androidx.compose.runtime.Composable +import androidx.navigation.NavHostController +import androidx.navigation.NavType import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable -import androidx.navigation.NavHostController +import androidx.navigation.navArgument +import com.mob.ustmm.ui.amount.AmountScreen import com.mob.ustmm.ui.dashboard.DashboardScreen - @Composable - fun AppNavGraph( +fun AppNavGraph( navController: NavHostController ) { NavHost( @@ -20,6 +21,9 @@ import com.mob.ustmm.ui.dashboard.DashboardScreen DashboardScreen( settlementEnabled = true, wavePayEnabled = true, + onAmountClick = { action -> + navController.navigate(Routes.Amount.createRoute(action)) + }, onTransactionClick = {}, onSettlementClick = {}, onHistoryClick = {}, @@ -27,6 +31,19 @@ import com.mob.ustmm.ui.dashboard.DashboardScreen onWavePayClick = {} ) } - + + composable( + route = Routes.Amount.route, + arguments = listOf( + navArgument("action") { + type = NavType.StringType + } + ) + ) { backStackEntry -> + AmountScreen( + action = backStackEntry.arguments?.getString("action").orEmpty(), + onBackClick = { navController.popBackStack() } + ) + } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/mob/ustmm/ui/navigation/Routes.kt b/app/src/main/java/com/mob/ustmm/ui/navigation/Routes.kt index b93424b..8e75413 100644 --- a/app/src/main/java/com/mob/ustmm/ui/navigation/Routes.kt +++ b/app/src/main/java/com/mob/ustmm/ui/navigation/Routes.kt @@ -1,5 +1,8 @@ package com.mob.ustmm.ui.navigation -sealed class Routes(val route: String){ - data object Dashboard: Routes("dashboard") -} \ No newline at end of file +sealed class Routes(val route: String) { + data object Dashboard : Routes("dashboard") + data object Amount : Routes("amount/{action}") { + fun createRoute(action: String): String = "amount/$action" + } +} diff --git a/app/src/main/res/drawable/ic_left_arrow.xml b/app/src/main/res/drawable/ic_left_arrow.xml new file mode 100644 index 0000000..ef8fd74 --- /dev/null +++ b/app/src/main/res/drawable/ic_left_arrow.xml @@ -0,0 +1,24 @@ + + + + diff --git a/app/src/main/res/drawable/ic_sale.xml b/app/src/main/res/drawable/ic_sale.xml new file mode 100644 index 0000000..866c086 --- /dev/null +++ b/app/src/main/res/drawable/ic_sale.xml @@ -0,0 +1,24 @@ + + + + diff --git a/app/src/main/res/drawable/logo_mob.png b/app/src/main/res/drawable/logo_mob.png new file mode 100644 index 0000000..ac98898 Binary files /dev/null and b/app/src/main/res/drawable/logo_mob.png differ diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f2845ef..2e222ec 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,6 +10,7 @@ kotlin = "2.2.10" composeBom = "2026.02.01" navigationCompose = "2.9.8" hilt = "2.57.1" +foundation = "1.11.1" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -29,6 +30,7 @@ androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-te androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" } hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" } hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" } +androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "foundation" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" }