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 <noreply@anthropic.com>
This commit is contained in:
parent
86679752b0
commit
9b1e946ed8
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
Loading…
Reference in New Issue