diff --git a/app/src/main/java/app/closer/ui/questions/QuestionPackLibraryScreen.kt b/app/src/main/java/app/closer/ui/questions/QuestionPackLibraryScreen.kt index 52b2d850..09eddbd8 100644 --- a/app/src/main/java/app/closer/ui/questions/QuestionPackLibraryScreen.kt +++ b/app/src/main/java/app/closer/ui/questions/QuestionPackLibraryScreen.kt @@ -2,6 +2,7 @@ package app.closer.ui.questions import app.closer.ui.theme.closerCardColor import app.closer.ui.theme.closerBackgroundBrush +import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.horizontalScroll @@ -37,14 +38,18 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel +import app.closer.R import app.closer.core.navigation.AppRoute import app.closer.domain.model.QuestionCategory import app.closer.ui.components.CategoryGlyph @@ -212,9 +217,23 @@ private fun QuestionPackCard( Box( modifier = Modifier .fillMaxWidth() - .height(5.dp) - .background(if (item.isLocked) Color(0xFFE3D4EB) else accent) - ) + .height(94.dp) + .clip(RoundedCornerShape(topStart = 22.dp, topEnd = 22.dp)) + ) { + Image( + painter = painterResource(packArtworkRes(item.category.id)), + contentDescription = null, + contentScale = ContentScale.Crop, + modifier = Modifier.fillMaxSize() + ) + Box( + modifier = Modifier + .align(Alignment.BottomStart) + .fillMaxWidth() + .height(5.dp) + .background(if (item.isLocked) Color(0xFFE3D4EB) else accent) + ) + } Column( modifier = Modifier .fillMaxWidth() @@ -366,6 +385,33 @@ private fun packAccent(categoryId: String): Color { return palette[kotlin.math.abs(categoryId.hashCode()) % palette.size] } +private fun packArtworkRes(categoryId: String): Int = when (categoryId) { + "communication" -> R.drawable.pack_art_communication + "trust", + "boundaries", + "conflict", + "conflict_repair", + "rebuilding_trust" -> R.drawable.pack_art_trust_repair + "emotional_intimacy", + "gratitude", + "couple_intimacy" -> R.drawable.pack_art_intimacy + "fun", + "date_night", + "quality_time" -> R.drawable.pack_art_fun_date + "future", + "values" -> R.drawable.pack_art_future_goals + "home_life", + "stress" -> R.drawable.pack_art_home_life + "money" -> R.drawable.pack_art_money_values + "marriage", + "parenting" -> R.drawable.pack_art_family_commitment + "sex_and_desire", + "sexual_preferences", + "physical_intimacy" -> R.drawable.pack_art_desire + "difficult_conversations" -> R.drawable.pack_art_deep_reflection + else -> R.drawable.pack_art_deep_reflection +} + @Composable private fun LoadingPackCard() { Card( diff --git a/app/src/main/res/drawable-nodpi/pack_art_communication.png b/app/src/main/res/drawable-nodpi/pack_art_communication.png new file mode 100644 index 00000000..faac167f Binary files /dev/null and b/app/src/main/res/drawable-nodpi/pack_art_communication.png differ diff --git a/app/src/main/res/drawable-nodpi/pack_art_deep_reflection.png b/app/src/main/res/drawable-nodpi/pack_art_deep_reflection.png new file mode 100644 index 00000000..bb021392 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/pack_art_deep_reflection.png differ diff --git a/app/src/main/res/drawable-nodpi/pack_art_desire.png b/app/src/main/res/drawable-nodpi/pack_art_desire.png new file mode 100644 index 00000000..63b86a15 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/pack_art_desire.png differ diff --git a/app/src/main/res/drawable-nodpi/pack_art_family_commitment.png b/app/src/main/res/drawable-nodpi/pack_art_family_commitment.png new file mode 100644 index 00000000..75782d43 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/pack_art_family_commitment.png differ diff --git a/app/src/main/res/drawable-nodpi/pack_art_fun_date.png b/app/src/main/res/drawable-nodpi/pack_art_fun_date.png new file mode 100644 index 00000000..dd702137 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/pack_art_fun_date.png differ diff --git a/app/src/main/res/drawable-nodpi/pack_art_future_goals.png b/app/src/main/res/drawable-nodpi/pack_art_future_goals.png new file mode 100644 index 00000000..4ee9f286 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/pack_art_future_goals.png differ diff --git a/app/src/main/res/drawable-nodpi/pack_art_home_life.png b/app/src/main/res/drawable-nodpi/pack_art_home_life.png new file mode 100644 index 00000000..191d1efb Binary files /dev/null and b/app/src/main/res/drawable-nodpi/pack_art_home_life.png differ diff --git a/app/src/main/res/drawable-nodpi/pack_art_intimacy.png b/app/src/main/res/drawable-nodpi/pack_art_intimacy.png new file mode 100644 index 00000000..6fc899a5 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/pack_art_intimacy.png differ diff --git a/app/src/main/res/drawable-nodpi/pack_art_money_values.png b/app/src/main/res/drawable-nodpi/pack_art_money_values.png new file mode 100644 index 00000000..b7ec34de Binary files /dev/null and b/app/src/main/res/drawable-nodpi/pack_art_money_values.png differ diff --git a/app/src/main/res/drawable-nodpi/pack_art_trust_repair.png b/app/src/main/res/drawable-nodpi/pack_art_trust_repair.png new file mode 100644 index 00000000..203dd8d3 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/pack_art_trust_repair.png differ diff --git a/iphone/Closer/Questions/QuestionViews.swift b/iphone/Closer/Questions/QuestionViews.swift index 067e66ee..53f1768e 100644 --- a/iphone/Closer/Questions/QuestionViews.swift +++ b/iphone/Closer/Questions/QuestionViews.swift @@ -409,6 +409,13 @@ struct PackCard: View { var body: some View { VStack(alignment: .leading, spacing: CloserSpacing.sm) { + Image(packArtworkName(pack.id)) + .resizable() + .scaledToFill() + .frame(maxWidth: .infinity) + .frame(height: 82) + .clipShape(RoundedRectangle(cornerRadius: CloserRadius.medium, style: .continuous)) + CategoryGlyph(name: pack.name, color: .closerPrimary) Text(pack.name) @@ -431,6 +438,33 @@ struct PackCard: View { } } +private func packArtworkName(_ packId: String) -> String { + switch packId { + case "communication": + return "pack-art-communication" + case "trust", "boundaries", "conflict", "conflict_repair", "rebuilding_trust": + return "pack-art-trust-repair" + case "emotional_intimacy", "gratitude", "couple_intimacy": + return "pack-art-intimacy" + case "fun", "date_night", "quality_time": + return "pack-art-fun-date" + case "future", "values": + return "pack-art-future-goals" + case "home_life", "stress": + return "pack-art-home-life" + case "money": + return "pack-art-money-values" + case "marriage", "parenting": + return "pack-art-family-commitment" + case "sex_and_desire", "sexual_preferences", "physical_intimacy": + return "pack-art-desire" + case "difficult_conversations": + return "pack-art-deep-reflection" + default: + return "pack-art-deep-reflection" + } +} + // MARK: - Question Category struct QuestionCategoryView: View { diff --git a/iphone/Closer/Resources/pack-art-communication.png b/iphone/Closer/Resources/pack-art-communication.png new file mode 100644 index 00000000..faac167f Binary files /dev/null and b/iphone/Closer/Resources/pack-art-communication.png differ diff --git a/iphone/Closer/Resources/pack-art-deep-reflection.png b/iphone/Closer/Resources/pack-art-deep-reflection.png new file mode 100644 index 00000000..bb021392 Binary files /dev/null and b/iphone/Closer/Resources/pack-art-deep-reflection.png differ diff --git a/iphone/Closer/Resources/pack-art-desire.png b/iphone/Closer/Resources/pack-art-desire.png new file mode 100644 index 00000000..63b86a15 Binary files /dev/null and b/iphone/Closer/Resources/pack-art-desire.png differ diff --git a/iphone/Closer/Resources/pack-art-family-commitment.png b/iphone/Closer/Resources/pack-art-family-commitment.png new file mode 100644 index 00000000..75782d43 Binary files /dev/null and b/iphone/Closer/Resources/pack-art-family-commitment.png differ diff --git a/iphone/Closer/Resources/pack-art-fun-date.png b/iphone/Closer/Resources/pack-art-fun-date.png new file mode 100644 index 00000000..dd702137 Binary files /dev/null and b/iphone/Closer/Resources/pack-art-fun-date.png differ diff --git a/iphone/Closer/Resources/pack-art-future-goals.png b/iphone/Closer/Resources/pack-art-future-goals.png new file mode 100644 index 00000000..4ee9f286 Binary files /dev/null and b/iphone/Closer/Resources/pack-art-future-goals.png differ diff --git a/iphone/Closer/Resources/pack-art-home-life.png b/iphone/Closer/Resources/pack-art-home-life.png new file mode 100644 index 00000000..191d1efb Binary files /dev/null and b/iphone/Closer/Resources/pack-art-home-life.png differ diff --git a/iphone/Closer/Resources/pack-art-intimacy.png b/iphone/Closer/Resources/pack-art-intimacy.png new file mode 100644 index 00000000..6fc899a5 Binary files /dev/null and b/iphone/Closer/Resources/pack-art-intimacy.png differ diff --git a/iphone/Closer/Resources/pack-art-money-values.png b/iphone/Closer/Resources/pack-art-money-values.png new file mode 100644 index 00000000..b7ec34de Binary files /dev/null and b/iphone/Closer/Resources/pack-art-money-values.png differ diff --git a/iphone/Closer/Resources/pack-art-trust-repair.png b/iphone/Closer/Resources/pack-art-trust-repair.png new file mode 100644 index 00000000..203dd8d3 Binary files /dev/null and b/iphone/Closer/Resources/pack-art-trust-repair.png differ