55
66package org.bitcoindevkit.devkitwallet.presentation.ui.screens.drawer
77
8+ import androidx.compose.foundation.background
9+ import androidx.compose.foundation.border
810import androidx.compose.foundation.clickable
11+ import androidx.compose.foundation.layout.Box
12+ import androidx.compose.foundation.layout.Column
913import androidx.compose.foundation.layout.Row
1014import androidx.compose.foundation.layout.Spacer
1115import androidx.compose.foundation.layout.fillMaxSize
1216import androidx.compose.foundation.layout.fillMaxWidth
17+ import androidx.compose.foundation.layout.height
1318import androidx.compose.foundation.layout.padding
19+ import androidx.compose.foundation.layout.size
1420import 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
1623import androidx.compose.material3.Icon
24+ import androidx.compose.material3.MaterialTheme
1725import androidx.compose.material3.Scaffold
1826import androidx.compose.material3.Text
1927import androidx.compose.runtime.Composable
2028import androidx.compose.ui.Alignment
2129import 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
2233import androidx.compose.ui.unit.dp
34+ import androidx.compose.ui.unit.sp
2335import androidx.navigation.NavController
2436import com.composables.icons.lucide.Info
25- import com.composables.icons.lucide.History
2637import com.composables.icons.lucide.Lucide
27- import com.composables.icons.lucide.SatelliteDish
38+ import com.composables.icons.lucide.Palette
2839import com.composables.icons.lucide.ScrollText
2940import org.bitcoindevkit.devkitwallet.presentation.navigation.AboutScreen
30- import org.bitcoindevkit.devkitwallet.presentation.navigation.BlockchainClientScreen
3141import org.bitcoindevkit.devkitwallet.presentation.navigation.LogsScreen
32- import org.bitcoindevkit.devkitwallet.presentation.navigation.RecoveryPhraseScreen
3342import org.bitcoindevkit.devkitwallet.presentation.theme.DevkitWalletColors
34- import org.bitcoindevkit.devkitwallet.presentation.theme.quattroRegular
43+ import org.bitcoindevkit.devkitwallet.presentation.theme.inter
3544import org.bitcoindevkit.devkitwallet.presentation.ui.components.SecondaryScreensAppBar
3645
3746@Composable
3847internal 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
86110private 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