diff --git a/wallet_app/android/.idea/other.xml b/wallet_app/android/.idea/other.xml
index 4604c44..94c96f6 100644
--- a/wallet_app/android/.idea/other.xml
+++ b/wallet_app/android/.idea/other.xml
@@ -69,6 +69,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -91,6 +113,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -102,6 +135,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -146,6 +190,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -235,6 +290,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wallet_app/android/app/.idea/.gitignore b/wallet_app/android/app/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/wallet_app/android/app/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/wallet_app/android/app/.idea/.name b/wallet_app/android/app/.idea/.name
new file mode 100644
index 0000000..b2cf332
--- /dev/null
+++ b/wallet_app/android/app/.idea/.name
@@ -0,0 +1 @@
+ReceiverActivity.kt
\ No newline at end of file
diff --git a/wallet_app/android/app/.idea/gradle.xml b/wallet_app/android/app/.idea/gradle.xml
new file mode 100644
index 0000000..4019936
--- /dev/null
+++ b/wallet_app/android/app/.idea/gradle.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wallet_app/android/app/.idea/migrations.xml b/wallet_app/android/app/.idea/migrations.xml
new file mode 100644
index 0000000..f8051a6
--- /dev/null
+++ b/wallet_app/android/app/.idea/migrations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wallet_app/android/app/.idea/misc.xml b/wallet_app/android/app/.idea/misc.xml
new file mode 100644
index 0000000..3040d03
--- /dev/null
+++ b/wallet_app/android/app/.idea/misc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wallet_app/android/app/.idea/other.xml b/wallet_app/android/app/.idea/other.xml
new file mode 100644
index 0000000..94c96f6
--- /dev/null
+++ b/wallet_app/android/app/.idea/other.xml
@@ -0,0 +1,318 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wallet_app/android/app/.idea/vcs.xml b/wallet_app/android/app/.idea/vcs.xml
new file mode 100644
index 0000000..c2365ab
--- /dev/null
+++ b/wallet_app/android/app/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wallet_app/android/app/src/main/AndroidManifest.xml b/wallet_app/android/app/src/main/AndroidManifest.xml
index e6da76a..1ef4258 100644
--- a/wallet_app/android/app/src/main/AndroidManifest.xml
+++ b/wallet_app/android/app/src/main/AndroidManifest.xml
@@ -32,6 +32,16 @@
+
+
+
+
diff --git a/wallet_app/android/app/src/main/java/com/example/walletapp/AccountPassword.kt b/wallet_app/android/app/src/main/java/com/example/walletapp/AccountPassword.kt
new file mode 100644
index 0000000..7affb26
--- /dev/null
+++ b/wallet_app/android/app/src/main/java/com/example/walletapp/AccountPassword.kt
@@ -0,0 +1,172 @@
+package com.example.walletapp
+
+import android.app.Activity
+import android.content.Intent
+import android.os.Bundle
+import androidx.activity.ComponentActivity
+import androidx.activity.compose.setContent
+import androidx.activity.enableEdgeToEdge
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
+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.foundation.layout.size
+import androidx.compose.foundation.text.KeyboardOptions
+import androidx.compose.material.IconButton
+import androidx.compose.material.Button
+import androidx.compose.material.ButtonDefaults
+import androidx.compose.material.TextField
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.ui.unit.dp
+import androidx.compose.material.Surface
+import androidx.compose.material.Text
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.sharp.ArrowBack
+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.platform.LocalContext
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.text.font.Font
+import androidx.compose.ui.text.font.FontFamily
+import androidx.compose.ui.text.input.ImeAction
+import androidx.compose.ui.text.input.KeyboardType
+import androidx.compose.ui.unit.sp
+import androidx.core.graphics.toColorInt
+import androidx.core.view.WindowCompat
+import com.example.walletapp.ui.theme.WalletappTheme
+
+class AccountPasswordActivity : ComponentActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ WindowCompat.setDecorFitsSystemWindows(window, true)
+ setContent {
+ WalletappTheme {
+ Surface(modifier = Modifier.fillMaxSize()) {
+ AccountPasswordScreenView(
+ modifier = Modifier.padding(10.dp)
+ )
+ }
+ }
+ }
+ }
+
+ @Composable
+ fun AccountPasswordScreenView(modifier: Modifier){
+ val (password, setPassword) = remember { mutableStateOf("") }
+ val (confirmPassword, setConfirmPassword) = remember { mutableStateOf("") }
+ val context = (LocalContext.current as Activity)
+
+ Column(
+ modifier = Modifier
+ .fillMaxSize()
+ .background(Color("#0C0C4F".toColorInt()))
+ .padding(16.dp),
+ horizontalAlignment = Alignment.CenterHorizontally,
+ verticalArrangement = Arrangement.Center
+ ) {
+ Spacer(modifier = Modifier.height(20.dp))
+ Row(
+ modifier = Modifier
+ .fillMaxWidth(),
+ verticalAlignment = Alignment.CenterVertically
+ ) {
+ IconButton(onClick = { }) {
+ Image(
+ painter = painterResource(R.drawable.arrow_back_ios),
+ contentDescription = null,
+ modifier = Modifier.size(20.dp)
+ )
+ }
+ Text(
+ text = "Create Wallet Password",
+ color = Color.White,
+ fontSize = 18.sp,
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ modifier = Modifier.weight(2f),
+ )
+ }
+ Spacer(modifier = Modifier.height(40.dp))
+ Text(
+ text = "Include letters, numbers & symbol for a strong password ",
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ color = Color.White,
+ fontSize = 14.sp
+ )
+ Spacer(modifier = Modifier.height(20.dp))
+ TextField(
+ value = password,
+ onValueChange = { newValue -> setPassword(newValue) },
+ textStyle = TextStyle(
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ color = Color.White,
+ fontSize = 15.sp
+ ),
+ placeholder = {
+ Text(
+ text = "Enter your password *",
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ color = Color.White,
+ fontSize = 15.sp
+ )
+ },
+ keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, // Number-only keyboard
+ imeAction = ImeAction.Done),
+ modifier = Modifier.fillMaxWidth(),
+ )
+
+ Spacer(modifier = Modifier.height(20.dp))
+
+ TextField(
+ value = confirmPassword,
+ onValueChange = { newValue -> setConfirmPassword(newValue) },
+ textStyle = TextStyle(
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ color = Color.White,
+ fontSize = 15.sp
+ ),
+ placeholder = {
+ Text(
+ text = "Confirm Password *",
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ color = Color.White,
+ fontSize = 15.sp
+ )
+ },
+ keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, // Number-only keyboard
+ imeAction = ImeAction.Done),
+ modifier = Modifier.fillMaxWidth(),
+ )
+ Spacer(modifier = Modifier.weight(1f))
+ Image(
+ painterResource(id = R.drawable.progress_1),
+ contentDescription ="progress",
+ modifier = Modifier.fillMaxWidth().height(6.dp))
+
+ Spacer(modifier = Modifier.height(20.dp))
+ Button(
+ onClick = { val i = Intent(context, RecoveryPhraseActivity::class.java)
+ context.startActivity(i) },
+ colors = ButtonDefaults.buttonColors(backgroundColor = Color("#1B1B76".toColorInt())),
+ modifier = Modifier
+ .fillMaxWidth()
+ .height(49.dp)
+
+ ) {
+ Text(text = "Next", color = Color.White)
+ }
+ Spacer(modifier = Modifier.height(15.dp))
+ }
+
+ }
+}
diff --git a/wallet_app/android/app/src/main/java/com/example/walletapp/MainActivity.kt b/wallet_app/android/app/src/main/java/com/example/walletapp/MainActivity.kt
index 8513206..d71d006 100644
--- a/wallet_app/android/app/src/main/java/com/example/walletapp/MainActivity.kt
+++ b/wallet_app/android/app/src/main/java/com/example/walletapp/MainActivity.kt
@@ -7,6 +7,7 @@ import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.Image
+import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
@@ -18,26 +19,20 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
-import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Button
import androidx.compose.material.ButtonDefaults
import androidx.compose.material.Card
-import androidx.compose.material.Icon
import androidx.compose.material.Surface
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Scaffold
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.graphics.painter.Painter
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.Font
import androidx.compose.ui.text.font.FontFamily
-import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.core.graphics.toColorInt
@@ -52,7 +47,7 @@ class MainActivity : ComponentActivity() {
setContent {
WalletappTheme {
Surface(modifier = Modifier.fillMaxSize()) {
- Wallet(
+ CreateAccount(
modifier = Modifier.padding(10.dp)
)
}
@@ -61,10 +56,17 @@ class MainActivity : ComponentActivity() {
}
}
+
@Composable
-fun Wallet( modifier: Modifier) {
+fun StarknetLogo (modifier: Modifier = Modifier) {
+ Image(
+ painter = painterResource(id = R.drawable.starknet_icon ),
+ contentDescription = "Starknet Logo",
+ modifier = modifier.size(123.dp) )
+}
+@Composable
+fun CreateAccount( modifier: Modifier) {
val context = (LocalContext.current as Activity)
-
Column(
modifier = Modifier
.fillMaxSize()
@@ -72,7 +74,7 @@ fun Wallet( modifier: Modifier) {
.padding(20.dp)
) {
Text(
- text = "$11,625.48",
+ text = "Starknet Wallet",
fontFamily = FontFamily(Font(R.font.inter_regular)),
color = Color.White,
fontSize = 28.sp,
@@ -80,113 +82,56 @@ fun Wallet( modifier: Modifier) {
.align(Alignment.CenterHorizontally)
.padding(top = 70.dp)
)
- Text(
- text = "0xfoo...123",
- fontFamily = FontFamily(Font(R.font.inter_regular)),
- color = Color.White,
- fontSize = 16.sp,
+ Spacer(modifier = Modifier.height(50.dp))
+ StarknetLogo(
modifier = Modifier.align(Alignment.CenterHorizontally)
)
-
- Spacer(modifier = Modifier.height(32.dp))
-
- WalletCard(icon = painterResource(id = R.drawable.ic_ethereum), amount = "$11,625.7", exchange = 4.44 , type ="ETH" )
-
- WalletCard(icon = painterResource(id = R.drawable.token2), amount = "$1.78", exchange = 4.44 , type ="STRK" )
-
- Spacer(modifier = Modifier.height(32.dp))
-
- Text(
- text = "+ New Token",
- fontFamily = FontFamily(Font(R.font.publicsans_bold)),
- color = Color.White,
- fontSize = 14.sp,
- modifier = Modifier
- .clickable {
- val intent = Intent(context, AddTokenActivity::class.java)
- context.startActivity(intent)
- }
- .background(Color.Transparent)
- .padding(10.dp)
- .align(Alignment.CenterHorizontally)
- )
-
-
Spacer(modifier = Modifier.weight(1f))
- Row(
+ Column(
modifier = Modifier.fillMaxWidth(),
- horizontalArrangement = Arrangement.SpaceEvenly
+ verticalArrangement = Arrangement.spacedBy(8.dp) // Adjust space between buttons
) {
Button(
- onClick = { val i = Intent(context,ReceiverActivity::class.java)
+ onClick = { val i = Intent(context, AccountPasswordActivity::class.java)
context.startActivity(i) },
colors = ButtonDefaults.buttonColors(backgroundColor = Color("#1B1B76".toColorInt())),
- shape = RoundedCornerShape(15.dp),
+ shape = RoundedCornerShape(10.dp),
+ modifier = Modifier
+ .fillMaxWidth()
+ .height(48.dp)
) {
Text(
- text = "Receive", fontFamily = FontFamily(Font(R.font.publicsans_bold)),
+ text = "Create a New Wallet",
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
color = Color.White,
- fontSize = 14.sp
+ fontSize = 17.sp
)
}
+
+ Spacer(modifier = Modifier.height(10.dp))
+
+
Button(
- onClick = {val i = Intent(context,SendActivity::class.java)
- context.startActivity(i)},
- colors = ButtonDefaults.buttonColors(backgroundColor = Color("#1B1B76".toColorInt())),
- shape = RoundedCornerShape(15.dp),
+ onClick = { val i = Intent(context, RecoveryPhraseActivity::class.java)
+ context.startActivity(i) },
+ colors = ButtonDefaults.buttonColors(backgroundColor = Color("#EC796B".toColorInt())),
+ shape = RoundedCornerShape(10.dp),
+ modifier = Modifier
+ .fillMaxWidth()
+ .height(49.dp)
) {
- Text(text = "Send", fontFamily = FontFamily(Font(R.font.publicsans_bold)),
- color = Color.White,
- fontSize = 14.sp)
- }
- }
- Spacer(modifier = Modifier.height(15.dp))
-}
-}
-
-@Composable
-fun WalletCard(icon: Painter,amount:String,exchange:Double,type:String){
- Card(
- backgroundColor = Color(0xFF1E1E96),
- modifier = Modifier
- .fillMaxWidth()
- .padding(vertical = 8.dp)
- ) {
- Row(
- verticalAlignment = Alignment.CenterVertically,
- modifier = Modifier
- .padding(16.dp)
- .fillMaxWidth()
- ) {
- Image(
- painter = icon, // replace with your Ethereum icon
- contentDescription = null,
- )
- Spacer(modifier = Modifier.weight(1f))
- Column(modifier = Modifier, horizontalAlignment = Alignment.End) {
Text(
- text = amount,
+ text = "Import Starknet Wallet",
fontFamily = FontFamily(Font(R.font.inter_regular)),
color = Color.White,
- fontSize = 18.sp
+ fontSize = 17.sp
)
- Row {
- Text(
- text = exchange.toString(),
- fontFamily = FontFamily(Font(R.font.inter_regular)),
- color = Color.White,
- fontSize = 10.sp
- )
- Text(
- text = type,
- fontFamily = FontFamily(Font(R.font.publicsans_bold)),
- color = Color.White,
- fontSize = 10.sp
- )
-
- }
-
}
}
+
+ Spacer(modifier = Modifier.height(15.dp))
}
}
+
+
+
diff --git a/wallet_app/android/app/src/main/java/com/example/walletapp/RecoveryPhraseActivity.kt b/wallet_app/android/app/src/main/java/com/example/walletapp/RecoveryPhraseActivity.kt
new file mode 100644
index 0000000..4ecef97
--- /dev/null
+++ b/wallet_app/android/app/src/main/java/com/example/walletapp/RecoveryPhraseActivity.kt
@@ -0,0 +1,304 @@
+package com.example.walletapp
+import android.app.Activity
+import android.content.Intent
+import android.os.Bundle
+import androidx.activity.ComponentActivity
+import androidx.activity.compose.setContent
+import androidx.compose.foundation.Image
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.*
+import androidx.compose.foundation.lazy.grid.GridCells
+import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
+import androidx.compose.foundation.lazy.grid.items
+import androidx.compose.foundation.shape.CircleShape
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material.*
+import androidx.compose.runtime.*
+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.text.font.Font
+import androidx.compose.ui.text.font.FontFamily
+import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import androidx.core.graphics.toColorInt
+import androidx.core.view.WindowCompat
+import androidx.navigation.NavController
+import androidx.navigation.compose.rememberNavController
+import androidx.compose.runtime.Composable
+import androidx.compose.material3.Text
+import androidx.compose.foundation.layout.fillMaxWidth
+import com.example.walletapp.ui.theme.WalletappTheme
+
+class RecoveryPhraseActivity : ComponentActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ WindowCompat.setDecorFitsSystemWindows(window, true)
+ setContent {
+ WalletappTheme {
+ val navController = rememberNavController()
+ Surface(modifier = Modifier.fillMaxSize()) {
+ RecoveryPhraseScreenView(
+ modifier = Modifier.padding(10.dp),
+ navController = navController
+ )
+ }
+ }
+ }
+ }
+
+ @Composable
+ fun RecoveryPhraseScreenView(modifier: Modifier, navController: NavController) {
+ var isVisible by remember { mutableStateOf(false) }
+ var showDialog by remember { mutableStateOf(false) }
+
+ Column(
+ modifier = Modifier
+ .fillMaxSize()
+ .background(Color("#0C0C4F".toColorInt()))
+ .padding(16.dp),
+ horizontalAlignment = Alignment.CenterHorizontally,
+ verticalArrangement = Arrangement.Center
+ ) {
+ Spacer(modifier = Modifier.height(20.dp))
+ Row(
+ modifier = Modifier
+ .fillMaxWidth(),
+ verticalAlignment = Alignment.CenterVertically
+ ) {
+ IconButton(onClick = { navController.popBackStack() }) {
+ Image(
+ painter = painterResource(R.drawable.arrow_back_ios),
+ contentDescription = null,
+ modifier = Modifier.size(20.dp)
+ )
+ }
+ Text(
+ text = "Secret Recovery Seed Phrase",
+ color = Color.White,
+ fontSize = 18.sp,
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ modifier = Modifier.weight(2f),
+ )
+ }
+ Spacer(modifier = Modifier.height(20.dp))
+ Text(
+ text = "Secure it now! This is your only way to recover your wallet if your Starknet wallet is deleted, or if your device is lost, stolen, or becomes unusable.",
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ color = Color.White,
+ textAlign = TextAlign.Center,
+ fontSize = 14.sp
+ )
+ Spacer(modifier = Modifier.height(40.dp))
+
+ if (isVisible) SeedPhrases() else {
+ Column(
+ modifier = Modifier.fillMaxWidth(),
+ horizontalAlignment = Alignment.CenterHorizontally,
+ ) {
+ Image(
+ painter = painterResource(id = R.drawable.warning_sign),
+ contentDescription = "warning",
+ modifier = Modifier.size(60.dp)
+ )
+ Spacer(modifier = Modifier.height(40.dp))
+ Text(
+ text = "Hope no one is looking at your screen",
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ color = Color.White,
+ textAlign = TextAlign.Center,
+ fontSize = 15.sp
+ )
+ }
+ }
+
+ Spacer(modifier = Modifier.height(50.dp))
+
+ Row(
+ modifier = Modifier.fillMaxWidth(),
+ horizontalArrangement = Arrangement.SpaceBetween
+ ) {
+ Button(
+ onClick = { isVisible = !isVisible },
+ colors = ButtonDefaults.buttonColors(backgroundColor = Color("#1B1B76".toColorInt())),
+ shape = RoundedCornerShape(8.dp),
+ modifier = Modifier
+ .width(150.dp)
+ .height(40.dp)
+ ) {
+ Image(
+ painter = painterResource(if (isVisible) R.drawable.visibility_off else R.drawable.visibility),
+ contentDescription = null,
+ modifier = Modifier.size(20.dp)
+ )
+ Spacer(modifier = Modifier.size(10.dp))
+ Text(
+ text = if (isVisible) "Hide" else "Show",
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ color = Color.White,
+ fontSize = 14.sp
+ )
+ }
+
+ Button(
+ onClick = { /* Handle copy action */ },
+ colors = ButtonDefaults.buttonColors(backgroundColor = Color("#1B1B76".toColorInt())),
+ shape = RoundedCornerShape(8.dp),
+ modifier = Modifier
+ .width(150.dp)
+ .height(40.dp)
+ ) {
+ Image(
+ painter = painterResource(id = R.drawable.copy),
+ contentDescription = "copy",
+ modifier = Modifier.size(20.dp)
+ )
+ Spacer(modifier = Modifier.size(10.dp))
+ Text(
+ text = "Copy",
+ fontFamily = FontFamily(Font(R.font.publicsans_bold)),
+ color = Color.White,
+ fontSize = 14.sp
+ )
+ }
+ }
+
+ Spacer(modifier = Modifier.weight(1f))
+ Image(
+ painter = painterResource(id = R.drawable.progress_2),
+ contentDescription = "progress",
+ modifier = Modifier
+ .fillMaxWidth()
+ .height(6.dp)
+ )
+
+ Spacer(modifier = Modifier.height(20.dp))
+ Button(
+ onClick = { showDialog = !showDialog },
+ colors = ButtonDefaults.buttonColors(backgroundColor = Color("#1B1B76".toColorInt())),
+ modifier = Modifier
+ .fillMaxWidth()
+ .height(49.dp)
+ ) {
+ Text(text = "Next", color = Color.White, fontSize = 17.sp)
+ }
+
+ if (showDialog) {
+ CustomDialog(onDismiss = { showDialog = false })
+ }
+ Spacer(modifier = Modifier.height(15.dp))
+ }
+ }
+
+ @Composable
+ fun SeedPhrases() {
+ LazyVerticalGrid(
+ columns = GridCells.Fixed(2),
+ contentPadding = PaddingValues(8.dp),
+ modifier = Modifier.fillMaxWidth()
+ ) {
+ items(generateSeedWords()) { item ->
+ Row(
+ modifier = Modifier
+ .padding(8.dp)
+ .fillMaxWidth(),
+ horizontalArrangement = Arrangement.Start,
+ verticalAlignment = Alignment.CenterVertically
+ ) {
+ Box(
+ modifier = Modifier
+ .size(32.dp)
+ .background(Color("#1B1B76".toColorInt()), shape = CircleShape)
+ .wrapContentSize(Alignment.Center)
+ ) {
+ Text(
+ text = "${item.number}",
+ fontSize = 14.sp,
+ color = Color.White,
+ modifier = Modifier.align(Alignment.Center)
+ )
+ }
+ Spacer(modifier = Modifier.width(8.dp))
+ Text(text = item.text, fontSize = 16.sp, color = Color.White)
+ }
+ }
+ }
+ }
+}
+
+data class SeedWordItem(val number: Int, val text: String)
+
+fun generateSeedWords(): List {
+ val randomWords = listOf(
+ "apple", "banana", "cherry", "date", "elderberry", "fig", "grape", "honeydew",
+ "kiwi", "lemon", "mango", "nectarine", "orange", "papaya", "quince", "raspberry",
+ "strawberry", "tangerine", "ugli", "vanilla", "watermelon", "xigua", "yellow", "zucchini"
+ )
+ return List(12) { SeedWordItem(it + 1, randomWords.random()) }
+}
+
+@Composable
+fun CustomDialog(onDismiss: () -> Unit) {
+ val context = (LocalContext.current as Activity)
+ AlertDialog(
+ onDismissRequest = onDismiss,
+ title = {
+ Column(
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(bottom = 16.dp),
+ horizontalAlignment = Alignment.CenterHorizontally,
+ verticalArrangement = Arrangement.Center
+ ) {
+// Image(
+// painter = painterResource(id = R.drawable.check_symbol),
+// contentDescription = "success",
+// modifier = Modifier
+// .size(80.dp)
+// .background(Color.White, shape = CircleShape)
+// .padding(8.dp)
+// .align(Alignment.CenterHorizontally)
+// )
+ Spacer(modifier = Modifier.height(8.dp))
+ Text(
+ text = "Congratulations!",
+ fontSize = 20.sp,
+ color = Color.White,
+ textAlign = TextAlign.Center
+ )
+ }
+ },
+ text = {
+ Text(
+ text = "You’re done creating your wallet",
+ color = Color.White,
+ fontSize = 18.sp,
+ textAlign = TextAlign.Center
+ )
+ },
+ confirmButton = {
+ Button(
+ onClick = { val i = Intent(context, WalletActivity::class.java)
+ context.startActivity(i) },
+ modifier = Modifier
+ .fillMaxWidth()
+ .height(48.dp),
+ colors = ButtonDefaults.buttonColors(backgroundColor = Color("#2C74DD".toColorInt()))
+ ) {
+ Text(
+ text = "Let’s start!",
+ color = Color.White
+ )
+ }
+ },
+ shape = RoundedCornerShape(16.dp),
+ backgroundColor = Color("#0C0C4F".toColorInt()),
+ contentColor = Color.White,
+ modifier = Modifier
+ .width(500.dp)
+ .padding(8.dp)
+ )
+}
diff --git a/wallet_app/android/app/src/main/java/com/example/walletapp/WalletActivity.kt b/wallet_app/android/app/src/main/java/com/example/walletapp/WalletActivity.kt
new file mode 100644
index 0000000..2329842
--- /dev/null
+++ b/wallet_app/android/app/src/main/java/com/example/walletapp/WalletActivity.kt
@@ -0,0 +1,210 @@
+package com.example.walletapp
+
+import android.app.Activity
+import android.content.Intent
+import android.os.Bundle
+import androidx.activity.ComponentActivity
+import androidx.activity.compose.setContent
+import androidx.compose.foundation.Image
+import androidx.compose.ui.graphics.painter.Painter
+import androidx.compose.foundation.background
+import androidx.compose.foundation.clickable
+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.foundation.shape.RoundedCornerShape
+import androidx.compose.material.Button
+import androidx.compose.material.ButtonDefaults
+import androidx.compose.material.Card
+import androidx.compose.material.Surface
+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.platform.LocalContext
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.text.font.Font
+import androidx.compose.ui.text.font.FontFamily
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import androidx.core.graphics.toColorInt
+import androidx.core.view.WindowCompat
+import com.example.walletapp.ui.theme.WalletappTheme
+
+class WalletActivity : ComponentActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ WindowCompat.setDecorFitsSystemWindows(window, true)
+ setContent {
+ WalletappTheme {
+ Surface(modifier = Modifier.fillMaxSize()) {
+ Wallet(
+ modifier = Modifier.padding(10.dp),
+ )
+ }
+ }
+ }
+ }
+
+}
+
+
+ @Composable
+ fun Wallet(modifier: Modifier) {
+ val context = (LocalContext.current as Activity)
+ Column(
+ modifier = Modifier
+ .fillMaxSize()
+ .background(Color("#0C0C4F".toColorInt()))
+ .padding(20.dp)
+ ) {
+ Text(
+ text = "$11,625.48",
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ color = Color.White,
+ fontSize = 28.sp,
+ modifier = Modifier
+ .align(Alignment.CenterHorizontally)
+ .padding(top = 70.dp)
+ )
+ Text(
+ text = "0xfoo...123",
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ color = Color.White,
+ fontSize = 16.sp,
+ modifier = Modifier.align(Alignment.CenterHorizontally)
+ )
+
+ Spacer(modifier = Modifier.height(32.dp))
+
+ WalletCard(
+ icon = painterResource(id = R.drawable.ic_ethereum),
+ amount = "$11,625.7",
+ exchange = 4.44,
+ type = "ETH"
+ )
+
+ WalletCard(
+ icon = painterResource(id = R.drawable.token2),
+ amount = "$1.78",
+ exchange = 4.44,
+ type = "STRK"
+ )
+
+ Spacer(modifier = Modifier.height(32.dp))
+
+ Text(
+ text = "+ New Token",
+ fontFamily = FontFamily(Font(R.font.publicsans_bold)),
+ color = Color.White,
+ fontSize = 14.sp,
+ modifier = Modifier
+ .clickable {
+ val intent = Intent(context, AddTokenActivity::class.java)
+ context.startActivity(intent)
+ }
+ .background(Color.Transparent)
+ .padding(10.dp)
+ .align(Alignment.CenterHorizontally)
+ )
+
+
+ Spacer(modifier = Modifier.weight(1f))
+ Row(
+ modifier = Modifier.fillMaxWidth(),
+ horizontalArrangement = Arrangement.SpaceEvenly
+ ) {
+ Button(
+ onClick = {
+ val i = Intent(context, ReceiverActivity::class.java)
+ context.startActivity(i)
+ },
+ colors = ButtonDefaults.buttonColors(backgroundColor = Color("#1B1B76".toColorInt())),
+ shape = RoundedCornerShape(15.dp),
+ ) {
+ Text(
+ text = "Receive", fontFamily = FontFamily(Font(R.font.publicsans_bold)),
+ color = Color.White,
+ fontSize = 14.sp
+ )
+ }
+ Button(
+ onClick = {
+ val i = Intent(context, SendActivity::class.java)
+ context.startActivity(i)
+ },
+
+ colors = ButtonDefaults.buttonColors(backgroundColor = Color("#1B1B76".toColorInt())),
+ shape = RoundedCornerShape(15.dp),
+ ) {
+ Text(
+ text = "Send", fontFamily = FontFamily(Font(R.font.publicsans_bold)),
+ color = Color.White,
+ fontSize = 14.sp
+ )
+ }
+ }
+ Spacer(modifier = Modifier.height(15.dp))
+ }
+ }
+
+ @Composable
+ fun WalletCard(icon: Painter, amount: String, exchange: Double, type: String) {
+ Card(
+ backgroundColor = Color(0xFF1E1E96),
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(vertical = 8.dp)
+ ) {
+ Row(
+ verticalAlignment = Alignment.CenterVertically,
+ modifier = Modifier
+ .padding(16.dp)
+ .fillMaxWidth()
+ ) {
+ Image(
+ painter = icon, // replace with your Ethereum icon
+ contentDescription = null,
+ )
+ Spacer(modifier = Modifier.weight(1f))
+ Column(modifier = Modifier, horizontalAlignment = Alignment.End) {
+ Text(
+ text = amount,
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ color = Color.White,
+ fontSize = 18.sp
+ )
+ Row {
+ Text(
+ text = exchange.toString(),
+ fontFamily = FontFamily(Font(R.font.inter_regular)),
+ color = Color.White,
+ fontSize = 10.sp
+ )
+ Text(
+ text = type,
+ fontFamily = FontFamily(Font(R.font.publicsans_bold)),
+ color = Color.White,
+ fontSize = 10.sp
+ )
+
+ }
+
+ }
+ }
+ }
+ }
+
+
+
+
+
+
+
+
diff --git a/wallet_app/android/app/src/main/res/drawable/arrow_back_ios.png b/wallet_app/android/app/src/main/res/drawable/arrow_back_ios.png
new file mode 100644
index 0000000..b55ddd7
Binary files /dev/null and b/wallet_app/android/app/src/main/res/drawable/arrow_back_ios.png differ
diff --git a/wallet_app/android/app/src/main/res/drawable/check_circle.png b/wallet_app/android/app/src/main/res/drawable/check_circle.png
new file mode 100644
index 0000000..184ca50
Binary files /dev/null and b/wallet_app/android/app/src/main/res/drawable/check_circle.png differ
diff --git a/wallet_app/android/app/src/main/res/drawable/check_symbol.png b/wallet_app/android/app/src/main/res/drawable/check_symbol.png
new file mode 100644
index 0000000..0264439
Binary files /dev/null and b/wallet_app/android/app/src/main/res/drawable/check_symbol.png differ
diff --git a/wallet_app/android/app/src/main/res/drawable/copy.png b/wallet_app/android/app/src/main/res/drawable/copy.png
new file mode 100644
index 0000000..c2198fe
Binary files /dev/null and b/wallet_app/android/app/src/main/res/drawable/copy.png differ
diff --git a/wallet_app/android/app/src/main/res/drawable/progress_1.png b/wallet_app/android/app/src/main/res/drawable/progress_1.png
new file mode 100644
index 0000000..4c84f61
Binary files /dev/null and b/wallet_app/android/app/src/main/res/drawable/progress_1.png differ
diff --git a/wallet_app/android/app/src/main/res/drawable/progress_2.png b/wallet_app/android/app/src/main/res/drawable/progress_2.png
new file mode 100644
index 0000000..d4784b8
Binary files /dev/null and b/wallet_app/android/app/src/main/res/drawable/progress_2.png differ
diff --git a/wallet_app/android/app/src/main/res/drawable/starknet_icon.png b/wallet_app/android/app/src/main/res/drawable/starknet_icon.png
new file mode 100644
index 0000000..d8f046c
Binary files /dev/null and b/wallet_app/android/app/src/main/res/drawable/starknet_icon.png differ
diff --git a/wallet_app/android/app/src/main/res/drawable/visibility.png b/wallet_app/android/app/src/main/res/drawable/visibility.png
new file mode 100644
index 0000000..e09cc59
Binary files /dev/null and b/wallet_app/android/app/src/main/res/drawable/visibility.png differ
diff --git a/wallet_app/android/app/src/main/res/drawable/visibility_off.png b/wallet_app/android/app/src/main/res/drawable/visibility_off.png
new file mode 100644
index 0000000..04ba70e
Binary files /dev/null and b/wallet_app/android/app/src/main/res/drawable/visibility_off.png differ
diff --git a/wallet_app/android/app/src/main/res/drawable/warning_sign.png b/wallet_app/android/app/src/main/res/drawable/warning_sign.png
new file mode 100644
index 0000000..af764e8
Binary files /dev/null and b/wallet_app/android/app/src/main/res/drawable/warning_sign.png differ