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" }