From 86679752b034de1963a9f6ef80d7dc12154c6221 Mon Sep 17 00:00:00 2001 From: null Date: Fri, 26 Jun 2026 09:53:28 -0500 Subject: [PATCH] brand(art): wire Connection Challenges header (A3 banner) + Quiet hours (A9) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ConnectionChallenges series-list gains the illustration_connection_challenges_header banner (16:9, BrandIllustration) under the title. Notification settings Quiet-hours section gains the illustration_quiet_hours scene centered above the toggle. Verified live: Quiet hours on dark (night-window scene reads beautifully); A3 banner + A1 (transparent, tile=false) + A2 confirmed in the debug gallery — all crisp + on-brand. 0 FATAL. Co-Authored-By: Claude Opus 4.8 --- .../ui/challenges/ConnectionChallengesScreen.kt | 14 ++++++++++++++ .../ui/settings/NotificationSettingsScreen.kt | 11 +++++++++++ 2 files changed, 25 insertions(+) diff --git a/app/src/main/java/app/closer/ui/challenges/ConnectionChallengesScreen.kt b/app/src/main/java/app/closer/ui/challenges/ConnectionChallengesScreen.kt index 1016e4a1..957e1414 100644 --- a/app/src/main/java/app/closer/ui/challenges/ConnectionChallengesScreen.kt +++ b/app/src/main/java/app/closer/ui/challenges/ConnectionChallengesScreen.kt @@ -31,6 +31,9 @@ import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.TextButton import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults +import app.closer.R +import androidx.compose.foundation.layout.aspectRatio +import app.closer.ui.components.BrandIllustration import app.closer.ui.components.CloserHeartLoader import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -377,6 +380,17 @@ private fun ChallengesPickScreen( } } + item { + BrandIllustration( + res = R.drawable.illustration_connection_challenges_header, + contentDescription = null, + modifier = Modifier + .fillMaxWidth() + .padding(top = 12.dp, bottom = 4.dp) + .aspectRatio(16f / 9f) + ) + } + items(ChallengesCatalog.all) { challenge -> ChallengePickCard(challenge = challenge, hasPremium = hasPremium, onPick = onPick, onPaywall = onPaywall) } diff --git a/app/src/main/java/app/closer/ui/settings/NotificationSettingsScreen.kt b/app/src/main/java/app/closer/ui/settings/NotificationSettingsScreen.kt index d90ad830..4d755e0d 100644 --- a/app/src/main/java/app/closer/ui/settings/NotificationSettingsScreen.kt +++ b/app/src/main/java/app/closer/ui/settings/NotificationSettingsScreen.kt @@ -17,11 +17,14 @@ 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.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import app.closer.ui.components.BrandIllustration import androidx.compose.foundation.layout.safeDrawingPadding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape @@ -199,6 +202,14 @@ fun NotificationSettingsScreen( modifier = Modifier.padding(horizontal = 4.dp, vertical = 4.dp) ) + Box(modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.Center) { + BrandIllustration( + res = R.drawable.illustration_quiet_hours, + contentDescription = null, + modifier = Modifier.size(150.dp).padding(bottom = 8.dp) + ) + } + Card( modifier = Modifier.fillMaxWidth(), shape = RoundedCornerShape(16.dp),