@@ -5,6 +5,7 @@ import android.widget.Toast
5
5
import androidx.activity.compose.BackHandler
6
6
import androidx.compose.foundation.Image
7
7
import androidx.compose.foundation.layout.Column
8
+ import androidx.compose.foundation.layout.PaddingValues
8
9
import androidx.compose.foundation.layout.Row
9
10
import androidx.compose.foundation.layout.Spacer
10
11
import androidx.compose.foundation.layout.fillMaxSize
@@ -52,6 +53,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
52
53
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenTwoButtonDialog
53
54
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenPasswordField
54
55
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextField
56
+ import com.x8bit.bitwarden.ui.platform.components.model.CardStyle
55
57
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
56
58
import com.x8bit.bitwarden.ui.platform.components.text.BitwardenClickableText
57
59
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitch
@@ -162,6 +164,7 @@ fun CompleteRegistrationScreen(
162
164
.fillMaxSize()
163
165
.verticalScroll(rememberScrollState()),
164
166
) {
167
+ Spacer (modifier = Modifier .height(height = 12 .dp))
165
168
CompleteRegistrationContent (
166
169
passwordInput = state.passwordInput,
167
170
passwordStrengthState = state.passwordStrengthState,
@@ -175,6 +178,7 @@ fun CompleteRegistrationScreen(
175
178
showNewOnboardingUi = state.onboardingEnabled,
176
179
userEmail = state.userEmail,
177
180
)
181
+ Spacer (modifier = Modifier .height(height = 16 .dp))
178
182
Spacer (modifier = Modifier .navigationBarsPadding())
179
183
}
180
184
}
@@ -200,7 +204,6 @@ private fun CompleteRegistrationContent(
200
204
modifier = modifier
201
205
.fillMaxWidth(),
202
206
) {
203
- Spacer (modifier = Modifier .height(8 .dp))
204
207
if (showNewOnboardingUi) {
205
208
CompleteRegistrationContentHeader (
206
209
modifier = Modifier
@@ -242,23 +245,22 @@ private fun CompleteRegistrationContent(
242
245
showPasswordChange = { showPassword = it },
243
246
value = passwordInput,
244
247
onValueChange = handler.onPasswordInputChange,
245
- hint = stringResource(id = R .string.master_password_important_hint)
246
- .takeIf { ! showNewOnboardingUi },
248
+ showPasswordTestTag = " PasswordVisibilityToggle" ,
249
+ imeAction = ImeAction .Next ,
250
+ supportingTextContent = {
251
+ PasswordStrengthIndicator (
252
+ state = passwordStrengthState,
253
+ currentCharacterCount = passwordInput.length,
254
+ minimumCharacterCount = minimumPasswordLength.takeIf { showNewOnboardingUi },
255
+ modifier = Modifier .fillMaxWidth(),
256
+ )
257
+ },
258
+ cardStyle = CardStyle .Top (dividerPadding = 0 .dp),
247
259
modifier = Modifier
248
260
.testTag(" MasterPasswordEntry" )
249
261
.fillMaxWidth()
250
262
.standardHorizontalMargin(),
251
- showPasswordTestTag = " PasswordVisibilityToggle" ,
252
- imeAction = ImeAction .Next ,
253
263
)
254
- Spacer (modifier = Modifier .height(8 .dp))
255
- PasswordStrengthIndicator (
256
- state = passwordStrengthState,
257
- currentCharacterCount = passwordInput.length,
258
- minimumCharacterCount = minimumPasswordLength.takeIf { showNewOnboardingUi },
259
- modifier = Modifier .standardHorizontalMargin(),
260
- )
261
- Spacer (modifier = Modifier .height(16 .dp))
262
264
BitwardenPasswordField (
263
265
label = stringResource(
264
266
id = R .string.retype_master_password_required
@@ -269,13 +271,13 @@ private fun CompleteRegistrationContent(
269
271
showPassword = showPassword,
270
272
showPasswordChange = { showPassword = it },
271
273
onValueChange = handler.onConfirmPasswordInputChange,
274
+ showPasswordTestTag = " ConfirmPasswordVisibilityToggle" ,
275
+ cardStyle = CardStyle .Middle (dividerPadding = 0 .dp),
272
276
modifier = Modifier
273
277
.testTag(" ConfirmMasterPasswordEntry" )
274
278
.fillMaxWidth()
275
279
.standardHorizontalMargin(),
276
- showPasswordTestTag = " ConfirmPasswordVisibilityToggle" ,
277
280
)
278
- Spacer (modifier = Modifier .height(16 .dp))
279
281
BitwardenTextField (
280
282
label = stringResource(
281
283
id = R .string.master_password_hint_not_specified
@@ -284,37 +286,46 @@ private fun CompleteRegistrationContent(
284
286
),
285
287
value = passwordHintInput,
286
288
onValueChange = handler.onPasswordHintChange,
287
- hint = stringResource(
288
- id = R .string.bitwarden_cannot_recover_a_lost_or_forgotten_master_password
289
- .takeIf { showNewOnboardingUi }
290
- ? : R .string.master_password_hint_description,
291
- ),
289
+ supportingTextContent = {
290
+ Text (
291
+ text = stringResource(
292
+ id = R .string.bitwarden_cannot_recover_a_lost_or_forgotten_master_password
293
+ .takeIf { showNewOnboardingUi }
294
+ ? : R .string.master_password_hint_description,
295
+ ),
296
+ style = BitwardenTheme .typography.bodySmall,
297
+ color = BitwardenTheme .colorScheme.text.secondary,
298
+ modifier = Modifier .fillMaxWidth(),
299
+ )
300
+ if (showNewOnboardingUi) {
301
+ BitwardenClickableText (
302
+ label = stringResource(
303
+ id = R .string.learn_about_other_ways_to_prevent_account_lockout,
304
+ ),
305
+ onClick = handler.onLearnToPreventLockout,
306
+ style = BitwardenTheme .typography.labelMedium,
307
+ innerPadding = PaddingValues (vertical = 4 .dp),
308
+ )
309
+ }
310
+ },
311
+ textFieldTestTag = " MasterPasswordHintLabel" ,
312
+ cardStyle = CardStyle .Bottom ,
292
313
modifier = Modifier
293
314
.fillMaxWidth()
294
315
.standardHorizontalMargin(),
295
- textFieldTestTag = " MasterPasswordHintLabel" ,
296
316
)
297
- if (showNewOnboardingUi) {
298
- BitwardenClickableText (
299
- label = stringResource(
300
- id = R .string.learn_about_other_ways_to_prevent_account_lockout,
301
- ),
302
- onClick = handler.onLearnToPreventLockout,
303
- style = BitwardenTheme .typography.labelMedium,
304
- modifier = Modifier .standardHorizontalMargin(),
305
- )
306
- }
307
- Spacer (modifier = Modifier .height(24 .dp))
317
+ Spacer (modifier = Modifier .height(height = 8 .dp))
308
318
BitwardenSwitch (
309
319
label = stringResource(id = R .string.check_known_data_breaches_for_this_password),
310
320
isChecked = isCheckDataBreachesToggled,
311
321
onCheckedChange = handler.onCheckDataBreachesToggle,
322
+ cardStyle = CardStyle .Full ,
312
323
modifier = Modifier
313
324
.testTag(" CheckExposedMasterPasswordToggle" )
314
325
.standardHorizontalMargin(),
315
326
)
316
327
if (showNewOnboardingUi) {
317
- Spacer (modifier = Modifier .height(24 .dp))
328
+ Spacer (modifier = Modifier .height(height = 16 .dp))
318
329
BitwardenFilledButton (
319
330
label = callToActionText,
320
331
isEnabled = nextButtonEnabled,
0 commit comments