From 9b1e946ed8ed09e8c16215ae1e92bb1bcbcafd59 Mon Sep 17 00:00:00 2001 From: null Date: Fri, 26 Jun 2026 09:57:26 -0500 Subject: [PATCH] brand(art): pairing-success hero -> A1 celebration; Security header -> A11 privacy-lock PairingSuccessScreen replaces the white-keyhole app-icon chip joining the two partner avatars with the illustration_pairing_success celebration (transparent, tile=false, keeps the spring + pulse) so the "you're connected" beat shows the mark resolving with a burst of hearts. SecurityScreen gains the illustration_privacy_recovery scene at the top. Verified live: Security on dark (warm privacy-lock, not cold vault); A1 confirmed in the debug gallery (transparent floats cleanly). 0 FATAL. Pairing-success needs a fresh pairing to see in situ; A1 render proven via gallery. Co-Authored-By: Claude Opus 4.8 --- .../closer/ui/pairing/PairingSuccessScreen.kt | 31 ++++++------------- .../app/closer/ui/settings/SecurityScreen.kt | 12 +++++++ 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/app/closer/ui/pairing/PairingSuccessScreen.kt b/app/src/main/java/app/closer/ui/pairing/PairingSuccessScreen.kt index 0943e4c5..54679fff 100644 --- a/app/src/main/java/app/closer/ui/pairing/PairingSuccessScreen.kt +++ b/app/src/main/java/app/closer/ui/pairing/PairingSuccessScreen.kt @@ -42,6 +42,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.Color +import app.closer.ui.components.BrandIllustration import app.closer.ui.components.CelebrationOverlay import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -198,32 +199,18 @@ fun PairingSuccessScreen( .align(Alignment.CenterEnd) .zIndex(1f) ) - Box( + // Celebration: the Closer mark resolving into place with a burst of hearts, + // floating over where the two partners meet. + BrandIllustration( + res = R.drawable.illustration_pairing_success, + contentDescription = null, + tile = false, modifier = Modifier - .size(60.dp) + .size(132.dp) .zIndex(2f) .align(Alignment.Center) .scale(pulse) - .clip(CircleShape) - .background(MaterialTheme.colorScheme.background) - .padding(4.dp) - .clip(CircleShape), - contentAlignment = Alignment.Center - ) { - // White-keyhole app-icon chip: aubergine gradient + the brand mark. - Image( - painter = painterResource(R.drawable.ic_launcher_background), - contentDescription = null, - contentScale = ContentScale.Crop, - modifier = Modifier.matchParentSize() - ) - Image( - painter = painterResource(R.drawable.ic_launcher_foreground), - contentDescription = null, - contentScale = ContentScale.Fit, - modifier = Modifier.matchParentSize() - ) - } + ) } Spacer(Modifier.height(32.dp)) diff --git a/app/src/main/java/app/closer/ui/settings/SecurityScreen.kt b/app/src/main/java/app/closer/ui/settings/SecurityScreen.kt index 88d6578e..6194dffd 100644 --- a/app/src/main/java/app/closer/ui/settings/SecurityScreen.kt +++ b/app/src/main/java/app/closer/ui/settings/SecurityScreen.kt @@ -7,7 +7,9 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding @@ -43,7 +45,9 @@ import androidx.fragment.app.FragmentActivity import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import app.closer.R import app.closer.data.local.RecoveryPhraseStore +import app.closer.ui.components.BrandIllustration import app.closer.domain.repository.SettingsRepository import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow @@ -161,6 +165,14 @@ fun SecurityScreen( .padding(horizontal = 16.dp, vertical = 8.dp), verticalArrangement = Arrangement.spacedBy(12.dp) ) { + Box(modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.Center) { + BrandIllustration( + res = R.drawable.illustration_privacy_recovery, + contentDescription = null, + modifier = Modifier.size(150.dp).padding(vertical = 4.dp) + ) + } + Card( modifier = Modifier.fillMaxWidth(), shape = RoundedCornerShape(16.dp),