Skip to content

Commit 839205c

Browse files
Migrate intro screens to new NightGlow UI
1 parent 2640e90 commit 839205c

8 files changed

Lines changed: 760 additions & 671 deletions

File tree

app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/theme/DevkitWalletColors.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ object DevkitWalletColors {
2121
val onSurface: Color = Color(0xFFE6E1E5)
2222
val onSurfaceVariant: Color = Color(0xFFCAC4D0)
2323
val outline: Color = Color(0xFFCAC4D0)
24-
val receiveAccent: Color = Color(0xFFEFDBCB)
25-
val sendAccent: Color = Color(0xFFC8BCD8)
26-
val nodeAccent: Color = Color(0xFFA0D7A5)
27-
val historyAccent: Color = Color(0xFFDDD199)
24+
val receiveAccent: Color = Color(0xFFF2D2B6)
25+
val sendAccent: Color = Color(0xFFC6B2E0)
26+
val nodeAccent: Color = Color(0xFF8FD998)
27+
val historyAccent: Color = Color(0xFFE3D082)
2828
val subtle: Color = Color(0xFF79747E)
2929
}
3030

app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/theme/Theme.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ private val DevkitDarkColorScheme = darkColorScheme(
1919
onBackground = Color(0xFFE6E1E5),
2020
outline = Color(0xFFCAC4D0),
2121
outlineVariant = Color(0xFF49454F),
22-
primary = Color(0xFFEFDBCB),
22+
primary = Color(0xFFF2D2B6),
2323
onPrimary = Color(0xFF1C1B1F),
24-
secondary = Color(0xFFC8BCD8),
24+
secondary = Color(0xFFC6B2E0),
2525
onSecondary = Color(0xFF1C1B1F),
26-
tertiary = Color(0xFFA0D7A5),
26+
tertiary = Color(0xFF8FD998),
2727
onTertiary = Color(0xFF1C1B1F),
2828
)
2929

app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/ui/components/SecondaryScreensAppBar.kt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,38 +10,40 @@ import androidx.compose.material.icons.automirrored.rounded.ArrowBack
1010
import androidx.compose.material3.ExperimentalMaterial3Api
1111
import androidx.compose.material3.Icon
1212
import androidx.compose.material3.IconButton
13+
import androidx.compose.material3.MaterialTheme
1314
import androidx.compose.material3.Text
1415
import androidx.compose.material3.TopAppBar
1516
import androidx.compose.material3.TopAppBarDefaults
1617
import androidx.compose.runtime.Composable
18+
import androidx.compose.ui.text.font.FontWeight
1719
import androidx.compose.ui.unit.sp
18-
import org.bitcoindevkit.devkitwallet.presentation.theme.DevkitWalletColors
19-
import org.bitcoindevkit.devkitwallet.presentation.theme.quattroRegular
20+
import org.bitcoindevkit.devkitwallet.presentation.theme.inter
2021

2122
@OptIn(ExperimentalMaterial3Api::class)
2223
@Composable
2324
internal fun SecondaryScreensAppBar(title: String, navigation: () -> Unit) {
25+
val colorScheme = MaterialTheme.colorScheme
2426
TopAppBar(
2527
title = {
2628
Text(
2729
text = title,
28-
color = DevkitWalletColors.white,
30+
color = colorScheme.onSurface,
2931
fontSize = 18.sp,
30-
fontFamily = quattroRegular,
32+
fontFamily = inter,
33+
fontWeight = FontWeight.Medium,
3134
)
3235
},
3336
navigationIcon = {
3437
IconButton(onClick = navigation) {
3538
Icon(
3639
imageVector = Icons.AutoMirrored.Rounded.ArrowBack,
3740
contentDescription = "Back",
38-
tint = DevkitWalletColors.white,
41+
tint = colorScheme.onSurface,
3942
)
4043
}
4144
},
42-
colors =
43-
TopAppBarDefaults.topAppBarColors(
44-
containerColor = DevkitWalletColors.primaryDark,
45-
),
45+
colors = TopAppBarDefaults.topAppBarColors(
46+
containerColor = colorScheme.surface,
47+
),
4648
)
4749
}

app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/ui/screens/intro/ActiveWalletsScreen.kt

Lines changed: 78 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,37 @@
55

66
package org.bitcoindevkit.devkitwallet.presentation.ui.screens.intro
77

8-
import androidx.compose.foundation.background
9-
import androidx.compose.foundation.clickable
8+
import androidx.compose.foundation.BorderStroke
109
import androidx.compose.foundation.layout.Arrangement
1110
import androidx.compose.foundation.layout.Column
1211
import androidx.compose.foundation.layout.Row
1312
import androidx.compose.foundation.layout.fillMaxSize
1413
import androidx.compose.foundation.layout.fillMaxWidth
1514
import androidx.compose.foundation.layout.padding
15+
import androidx.compose.foundation.layout.size
1616
import androidx.compose.foundation.shape.RoundedCornerShape
17+
import androidx.compose.material3.CardDefaults
18+
import androidx.compose.material3.Icon
19+
import androidx.compose.material3.MaterialTheme
20+
import androidx.compose.material3.OutlinedCard
1721
import androidx.compose.material3.Scaffold
1822
import androidx.compose.material3.Text
1923
import androidx.compose.runtime.Composable
2024
import androidx.compose.ui.Alignment
2125
import androidx.compose.ui.Modifier
26+
import androidx.compose.ui.graphics.Color
27+
import androidx.compose.ui.text.font.FontWeight
2228
import androidx.compose.ui.unit.dp
2329
import androidx.compose.ui.unit.sp
2430
import androidx.navigation.NavController
31+
import com.composables.icons.lucide.ChevronRight
32+
import com.composables.icons.lucide.Lucide
2533
import org.bitcoindevkit.devkitwallet.data.SingleWallet
2634
import org.bitcoindevkit.devkitwallet.domain.DwLogger
2735
import org.bitcoindevkit.devkitwallet.domain.DwLogger.LogLevel.INFO
2836
import org.bitcoindevkit.devkitwallet.presentation.WalletCreateType
2937
import org.bitcoindevkit.devkitwallet.presentation.theme.DevkitWalletColors
30-
import org.bitcoindevkit.devkitwallet.presentation.theme.monoRegular
31-
import org.bitcoindevkit.devkitwallet.presentation.theme.quattroRegular
38+
import org.bitcoindevkit.devkitwallet.presentation.theme.inter
3239
import org.bitcoindevkit.devkitwallet.presentation.ui.components.SecondaryScreensAppBar
3340

3441
private const val TAG = "ActiveWalletsScreen"
@@ -39,57 +46,84 @@ internal fun ActiveWalletsScreen(
3946
navController: NavController,
4047
onBuildWalletButtonClicked: (WalletCreateType) -> Unit,
4148
) {
49+
val colorScheme = MaterialTheme.colorScheme
50+
4251
Scaffold(
4352
topBar = {
4453
SecondaryScreensAppBar(title = "Choose a Wallet", navigation = { navController.navigateUp() })
4554
},
46-
containerColor = DevkitWalletColors.primary,
4755
) { paddingValues ->
4856
Column(
49-
modifier =
50-
Modifier
51-
.fillMaxSize()
52-
.padding(paddingValues),
57+
modifier = Modifier
58+
.fillMaxSize()
59+
.padding(paddingValues)
60+
.padding(horizontal = 24.dp, vertical = 16.dp),
61+
verticalArrangement = Arrangement.spacedBy(10.dp),
5362
) {
54-
activeWallets.forEach {
55-
ActiveWalletCard(wallet = it, onBuildWalletButtonClicked)
63+
if (activeWallets.isEmpty()) {
64+
Text(
65+
text = "No active wallets.",
66+
fontFamily = inter,
67+
fontSize = 14.sp,
68+
color = DevkitWalletColors.subtle,
69+
)
70+
} else {
71+
activeWallets.forEach { wallet ->
72+
OutlinedCard(
73+
onClick = {
74+
DwLogger.log(INFO, "Activating existing wallet: ${wallet.name}")
75+
onBuildWalletButtonClicked(WalletCreateType.LOADEXISTING(wallet))
76+
},
77+
shape = RoundedCornerShape(20.dp),
78+
border = BorderStroke(1.5.dp, colorScheme.outline.copy(alpha = 0.12f)),
79+
colors = CardDefaults.outlinedCardColors(containerColor = Color.Transparent),
80+
) {
81+
Row(
82+
modifier = Modifier
83+
.fillMaxWidth()
84+
.padding(20.dp),
85+
verticalAlignment = Alignment.CenterVertically,
86+
) {
87+
Column(modifier = Modifier.weight(1f)) {
88+
Text(
89+
text = wallet.name,
90+
fontFamily = inter,
91+
fontSize = 15.sp,
92+
fontWeight = FontWeight.Medium,
93+
color = colorScheme.onSurface,
94+
)
95+
Row(
96+
horizontalArrangement = Arrangement.spacedBy(8.dp),
97+
modifier = Modifier.padding(top = 4.dp),
98+
) {
99+
WalletChip(text = wallet.network.name)
100+
WalletChip(text = wallet.scriptType.name)
101+
}
102+
}
103+
Icon(
104+
imageVector = Lucide.ChevronRight,
105+
contentDescription = "Open",
106+
tint = colorScheme.outlineVariant,
107+
modifier = Modifier.size(18.dp),
108+
)
109+
}
110+
}
111+
}
56112
}
57113
}
58-
if (activeWallets.isEmpty()) {
59-
Text(
60-
text = "No active wallets.",
61-
fontSize = 16.sp,
62-
fontFamily = quattroRegular,
63-
color = DevkitWalletColors.white,
64-
modifier = Modifier.padding(16.dp),
65-
)
66-
}
67114
}
68115
}
69116

70117
@Composable
71-
fun ActiveWalletCard(wallet: SingleWallet, onBuildWalletButtonClicked: (WalletCreateType) -> Unit) {
72-
Row(
73-
Modifier
74-
.padding(horizontal = 8.dp, vertical = 6.dp)
75-
.fillMaxWidth()
76-
.background(
77-
color = DevkitWalletColors.primaryLight,
78-
shape = RoundedCornerShape(16.dp),
79-
).clickable {
80-
DwLogger.log(INFO, "Activating existing wallet: ${wallet.name}")
81-
onBuildWalletButtonClicked(WalletCreateType.LOADEXISTING(wallet))
82-
},
83-
verticalAlignment = Alignment.CenterVertically,
84-
horizontalArrangement = Arrangement.Absolute.SpaceBetween,
85-
) {
86-
Text(
87-
"Name: ${wallet.name}\nNetwork: ${wallet.network}\nScript Type: ${wallet.scriptType}",
88-
fontFamily = monoRegular,
89-
fontSize = 12.sp,
90-
lineHeight = 20.sp,
91-
color = DevkitWalletColors.white,
92-
modifier = Modifier.padding(16.dp),
93-
)
94-
}
118+
private fun WalletChip(text: String) {
119+
val colorScheme = MaterialTheme.colorScheme
120+
Text(
121+
text = text,
122+
fontFamily = inter,
123+
fontSize = 11.sp,
124+
fontWeight = FontWeight.Medium,
125+
color = colorScheme.onSurfaceVariant,
126+
modifier = Modifier
127+
.padding(0.dp),
128+
)
95129
}

0 commit comments

Comments
 (0)