Skip to content

Commit b0b6697

Browse files
ui: migrate secondary screens to NightGlow UI
1 parent ff67d1f commit b0b6697

3 files changed

Lines changed: 501 additions & 532 deletions

File tree

app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/ui/screens/drawer/SettingsScreen.kt

Lines changed: 94 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,77 +5,101 @@
55

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

8+
import androidx.compose.foundation.background
9+
import androidx.compose.foundation.border
810
import androidx.compose.foundation.clickable
11+
import androidx.compose.foundation.layout.Box
12+
import androidx.compose.foundation.layout.Column
913
import androidx.compose.foundation.layout.Row
1014
import androidx.compose.foundation.layout.Spacer
1115
import androidx.compose.foundation.layout.fillMaxSize
1216
import androidx.compose.foundation.layout.fillMaxWidth
17+
import androidx.compose.foundation.layout.height
1318
import androidx.compose.foundation.layout.padding
19+
import androidx.compose.foundation.layout.size
1420
import androidx.compose.foundation.layout.width
15-
import androidx.compose.foundation.lazy.LazyColumn
21+
import androidx.compose.foundation.shape.RoundedCornerShape
22+
import androidx.compose.material3.HorizontalDivider
1623
import androidx.compose.material3.Icon
24+
import androidx.compose.material3.MaterialTheme
1725
import androidx.compose.material3.Scaffold
1826
import androidx.compose.material3.Text
1927
import androidx.compose.runtime.Composable
2028
import androidx.compose.ui.Alignment
2129
import androidx.compose.ui.Modifier
30+
import androidx.compose.ui.draw.clip
31+
import androidx.compose.ui.graphics.Color
32+
import androidx.compose.ui.graphics.vector.ImageVector
2233
import androidx.compose.ui.unit.dp
34+
import androidx.compose.ui.unit.sp
2335
import androidx.navigation.NavController
2436
import com.composables.icons.lucide.Info
25-
import com.composables.icons.lucide.History
2637
import com.composables.icons.lucide.Lucide
27-
import com.composables.icons.lucide.SatelliteDish
38+
import com.composables.icons.lucide.Palette
2839
import com.composables.icons.lucide.ScrollText
2940
import org.bitcoindevkit.devkitwallet.presentation.navigation.AboutScreen
30-
import org.bitcoindevkit.devkitwallet.presentation.navigation.BlockchainClientScreen
3141
import org.bitcoindevkit.devkitwallet.presentation.navigation.LogsScreen
32-
import org.bitcoindevkit.devkitwallet.presentation.navigation.RecoveryPhraseScreen
3342
import org.bitcoindevkit.devkitwallet.presentation.theme.DevkitWalletColors
34-
import org.bitcoindevkit.devkitwallet.presentation.theme.quattroRegular
43+
import org.bitcoindevkit.devkitwallet.presentation.theme.inter
3544
import org.bitcoindevkit.devkitwallet.presentation.ui.components.SecondaryScreensAppBar
3645

3746
@Composable
3847
internal fun SettingsScreen(navController: NavController) {
48+
val colorScheme = MaterialTheme.colorScheme
49+
3950
Scaffold(
4051
topBar = {
4152
SecondaryScreensAppBar(
4253
title = "Settings",
4354
navigation = { navController.popBackStack() },
4455
)
4556
},
46-
containerColor = DevkitWalletColors.primary,
57+
containerColor = colorScheme.surface,
4758
) { paddingValues ->
48-
LazyColumn(
59+
Column(
4960
modifier = Modifier
5061
.fillMaxSize()
51-
.padding(paddingValues),
62+
.padding(paddingValues)
63+
.padding(horizontal = 20.dp, vertical = 16.dp),
5264
) {
53-
item {
65+
Column(
66+
modifier = Modifier
67+
.fillMaxWidth()
68+
.border(
69+
width = 1.5.dp,
70+
color = colorScheme.outline.copy(alpha = 0.10f),
71+
shape = RoundedCornerShape(20.dp),
72+
)
73+
.clip(RoundedCornerShape(20.dp)),
74+
) {
5475
SettingsItem(
55-
icon = { Icon(Lucide.Info, contentDescription = "About", tint = DevkitWalletColors.white) },
56-
label = "About",
76+
icon = Lucide.Info,
77+
iconTint = colorScheme.primary,
78+
title = "About",
79+
description = "Version and project info",
5780
onClick = { navController.navigate(AboutScreen) },
5881
)
59-
}
60-
item {
61-
SettingsItem(
62-
icon = { Icon(Lucide.History, contentDescription = "Wallet Recovery Data", tint = DevkitWalletColors.white) },
63-
label = "Wallet Recovery Data",
64-
onClick = { navController.navigate(RecoveryPhraseScreen) },
82+
HorizontalDivider(
83+
thickness = 1.dp,
84+
color = colorScheme.outline.copy(alpha = 0.06f),
6585
)
66-
}
67-
item {
6886
SettingsItem(
69-
icon = { Icon(Lucide.SatelliteDish, contentDescription = "Compact Block Filters Node", tint = DevkitWalletColors.white) },
70-
label = "Compact Block Filters Node",
71-
onClick = { navController.navigate(BlockchainClientScreen) },
87+
icon = Lucide.ScrollText,
88+
iconTint = DevkitWalletColors.historyAccent,
89+
title = "Logs",
90+
description = "View application logs",
91+
onClick = { navController.navigate(LogsScreen) },
92+
)
93+
HorizontalDivider(
94+
thickness = 1.dp,
95+
color = colorScheme.outline.copy(alpha = 0.06f),
7296
)
73-
}
74-
item {
7597
SettingsItem(
76-
icon = { Icon(Lucide.ScrollText, contentDescription = "Logs", tint = DevkitWalletColors.white) },
77-
label = "Logs",
78-
onClick = { navController.navigate(LogsScreen) },
98+
icon = Lucide.Palette,
99+
iconTint = colorScheme.tertiary,
100+
title = "Theme",
101+
description = "Appearance and display",
102+
onClick = { },
79103
)
80104
}
81105
}
@@ -84,23 +108,55 @@ internal fun SettingsScreen(navController: NavController) {
84108

85109
@Composable
86110
private fun SettingsItem(
87-
icon: @Composable () -> Unit,
88-
label: String,
111+
icon: ImageVector,
112+
iconTint: Color,
113+
title: String,
114+
description: String,
89115
onClick: () -> Unit,
90116
) {
117+
val colorScheme = MaterialTheme.colorScheme
118+
91119
Row(
92120
modifier = Modifier
93121
.fillMaxWidth()
94122
.clickable(onClick = onClick)
95-
.padding(horizontal = 24.dp, vertical = 16.dp),
123+
.padding(horizontal = 16.dp, vertical = 14.dp),
96124
verticalAlignment = Alignment.CenterVertically,
97125
) {
98-
icon()
99-
Spacer(modifier = Modifier.width(16.dp))
100-
Text(
101-
text = label,
102-
color = DevkitWalletColors.white,
103-
fontFamily = quattroRegular,
104-
)
126+
Box(
127+
modifier = Modifier
128+
.size(44.dp)
129+
.clip(RoundedCornerShape(14.dp))
130+
.background(iconTint.copy(alpha = 0.08f))
131+
.border(
132+
width = 1.dp,
133+
color = iconTint.copy(alpha = 0.12f),
134+
shape = RoundedCornerShape(14.dp),
135+
),
136+
contentAlignment = Alignment.Center,
137+
) {
138+
Icon(
139+
imageVector = icon,
140+
contentDescription = title,
141+
tint = iconTint,
142+
modifier = Modifier.size(20.dp),
143+
)
144+
}
145+
Spacer(modifier = Modifier.width(14.dp))
146+
Column {
147+
Text(
148+
text = title,
149+
color = colorScheme.onSurface,
150+
fontFamily = inter,
151+
fontSize = 15.sp,
152+
)
153+
Spacer(modifier = Modifier.height(2.dp))
154+
Text(
155+
text = description,
156+
color = colorScheme.onSurface.copy(alpha = 0.5f),
157+
fontFamily = inter,
158+
fontSize = 12.sp,
159+
)
160+
}
105161
}
106162
}

0 commit comments

Comments
 (0)