Skip to content

Commit 050b3b3

Browse files
PM-15067 - Design Audit - Prevent Account Lockout Screen (#4361)
1 parent 249dbda commit 050b3b3

File tree

2 files changed

+31
-83
lines changed

2 files changed

+31
-83
lines changed

app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/preventaccountlockout/PreventAccountLockoutScreen.kt

Lines changed: 29 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,37 @@
11
package com.x8bit.bitwarden.ui.auth.feature.preventaccountlockout
22

3-
import androidx.compose.foundation.background
43
import androidx.compose.foundation.layout.Column
5-
import androidx.compose.foundation.layout.Row
64
import androidx.compose.foundation.layout.Spacer
75
import androidx.compose.foundation.layout.fillMaxSize
86
import androidx.compose.foundation.layout.fillMaxWidth
97
import androidx.compose.foundation.layout.height
108
import androidx.compose.foundation.layout.navigationBarsPadding
119
import androidx.compose.foundation.layout.padding
12-
import androidx.compose.foundation.layout.size
13-
import androidx.compose.foundation.layout.width
1410
import androidx.compose.foundation.rememberScrollState
15-
import androidx.compose.foundation.shape.RoundedCornerShape
1611
import androidx.compose.foundation.verticalScroll
1712
import androidx.compose.material3.ExperimentalMaterial3Api
18-
import androidx.compose.material3.Icon
1913
import androidx.compose.material3.Text
2014
import androidx.compose.material3.TopAppBarDefaults
2115
import androidx.compose.material3.rememberTopAppBarState
2216
import androidx.compose.runtime.Composable
2317
import androidx.compose.runtime.remember
24-
import androidx.compose.ui.Alignment
2518
import androidx.compose.ui.Modifier
26-
import androidx.compose.ui.draw.clip
27-
import androidx.compose.ui.graphics.painter.Painter
2819
import androidx.compose.ui.input.nestedscroll.nestedScroll
2920
import androidx.compose.ui.res.stringResource
30-
import androidx.compose.ui.semantics.clearAndSetSemantics
21+
import androidx.compose.ui.text.style.TextAlign
3122
import androidx.compose.ui.tooling.preview.Preview
3223
import androidx.compose.ui.unit.dp
3324
import androidx.hilt.navigation.compose.hiltViewModel
3425
import com.x8bit.bitwarden.R
3526
import com.x8bit.bitwarden.ui.platform.base.util.EventsEffect
3627
import com.x8bit.bitwarden.ui.platform.base.util.standardHorizontalMargin
3728
import com.x8bit.bitwarden.ui.platform.components.appbar.BitwardenTopAppBar
38-
import com.x8bit.bitwarden.ui.platform.components.divider.BitwardenHorizontalDivider
29+
import com.x8bit.bitwarden.ui.platform.components.card.BitwardenContentCard
30+
import com.x8bit.bitwarden.ui.platform.components.model.ContentBlockData
3931
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
4032
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
4133
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
34+
import kotlinx.collections.immutable.persistentListOf
4235

4336
/**
4437
* Top level screen component for the prevent account lockout info screen.
@@ -75,102 +68,57 @@ fun PreventAccountLockoutScreen(
7568
)
7669
},
7770
) {
78-
Column(
71+
PreventAccountLockoutContent(
7972
modifier = Modifier
8073
.fillMaxWidth()
8174
.standardHorizontalMargin()
8275
.verticalScroll(rememberScrollState()),
83-
) {
84-
NeverLoseAccessContent()
85-
Spacer(modifier = Modifier.navigationBarsPadding())
86-
}
76+
)
8777
}
8878
}
8979

9080
@Composable
91-
private fun NeverLoseAccessContent(
92-
modifier: Modifier = Modifier,
93-
) {
94-
Column(
95-
modifier = modifier
96-
.fillMaxWidth()
97-
.clip(RoundedCornerShape(size = 4.dp))
98-
.background(BitwardenTheme.colorScheme.background.tertiary),
99-
) {
81+
private fun PreventAccountLockoutContent(modifier: Modifier = Modifier) {
82+
Column(modifier = modifier) {
10083
Spacer(modifier = Modifier.height(24.dp))
10184
Text(
10285
text = stringResource(R.string.never_lose_access_to_your_vault),
86+
textAlign = TextAlign.Center,
10387
style = BitwardenTheme.typography.titleMedium,
10488
color = BitwardenTheme.colorScheme.text.primary,
105-
modifier = Modifier.padding(horizontal = 24.dp),
89+
modifier = Modifier
90+
.fillMaxWidth()
91+
.padding(horizontal = 12.dp),
10692
)
10793
Spacer(modifier = Modifier.height(8.dp))
10894
Text(
10995
text = stringResource(
11096
R.string.the_best_way_to_make_sure_you_can_always_access_your_account,
11197
),
98+
textAlign = TextAlign.Center,
11299
style = BitwardenTheme.typography.bodyMedium,
113100
color = BitwardenTheme.colorScheme.text.primary,
114-
modifier = Modifier.padding(horizontal = 24.dp),
101+
modifier = Modifier.padding(horizontal = 12.dp),
115102
)
116103
Spacer(modifier = Modifier.height(24.dp))
117-
BitwardenHorizontalDivider()
118-
Spacer(modifier = Modifier.height(16.dp))
119-
AccountRecoveryTipRow(
120-
title = stringResource(R.string.create_a_hint),
121-
description = stringResource(
122-
R.string.your_hint_will_be_send_to_you_via_email_when_you_request_it,
104+
BitwardenContentCard(
105+
contentItems = persistentListOf(
106+
ContentBlockData(
107+
headerText = stringResource(R.string.create_a_hint),
108+
subtitleText = stringResource(
109+
R.string.your_hint_will_be_send_to_you_via_email_when_you_request_it,
110+
),
111+
iconVectorResource = R.drawable.ic_light_bulb,
112+
),
113+
ContentBlockData(
114+
headerText = stringResource(R.string.write_your_password_down),
115+
subtitleText = stringResource(R.string.keep_it_secret_keep_it_safe),
116+
iconVectorResource = R.drawable.ic_pencil,
117+
),
123118
),
124-
icon = rememberVectorPainter(id = R.drawable.ic_light_bulb),
125-
modifier = Modifier.padding(horizontal = 16.dp),
126-
)
127-
Spacer(modifier = Modifier.height(16.dp))
128-
BitwardenHorizontalDivider()
129-
Spacer(modifier = Modifier.height(16.dp))
130-
AccountRecoveryTipRow(
131-
title = stringResource(R.string.write_your_password_down),
132-
description = stringResource(R.string.keep_it_secret_keep_it_safe),
133-
icon = rememberVectorPainter(id = R.drawable.ic_pencil),
134-
modifier = Modifier.padding(horizontal = 16.dp),
135-
)
136-
Spacer(modifier = Modifier.height(16.dp))
137-
}
138-
}
139-
140-
@Composable
141-
private fun AccountRecoveryTipRow(
142-
title: String,
143-
description: String,
144-
icon: Painter,
145-
modifier: Modifier = Modifier,
146-
) {
147-
Row(
148-
modifier = modifier,
149-
verticalAlignment = Alignment.CenterVertically,
150-
) {
151-
Icon(
152-
painter = icon,
153-
contentDescription = null,
154-
tint = BitwardenTheme.colorScheme.icon.primary,
155-
modifier = Modifier
156-
.size(32.dp)
157-
.clearAndSetSemantics { },
158119
)
159-
Spacer(modifier = Modifier.width(8.dp))
160-
Column {
161-
Text(
162-
text = title,
163-
style = BitwardenTheme.typography.titleSmall,
164-
color = BitwardenTheme.colorScheme.text.primary,
165-
)
166-
Spacer(modifier = Modifier.height(4.dp))
167-
Text(
168-
text = description,
169-
style = BitwardenTheme.typography.bodyMedium,
170-
color = BitwardenTheme.colorScheme.text.primary,
171-
)
172-
}
173120
}
121+
Spacer(modifier = Modifier.navigationBarsPadding())
174122
}
175123

176124
@Preview

app/src/main/java/com/x8bit/bitwarden/ui/platform/components/content/BitwardenContentBlock.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ private fun BitwardenContentBlock(
107107
?: Spacer(Modifier.width(16.dp))
108108
}
109109

110-
Column {
110+
Column(modifier = Modifier.weight(weight = 1f, fill = false)) {
111111
Spacer(Modifier.height(12.dp))
112112
Text(
113113
text = headerText,
@@ -123,7 +123,7 @@ private fun BitwardenContentBlock(
123123
}
124124
Spacer(Modifier.height(12.dp))
125125
}
126-
Spacer(Modifier.width(12.dp))
126+
Spacer(Modifier.width(16.dp))
127127
}
128128
}
129129

0 commit comments

Comments
 (0)