diff --git a/.gitignore b/.gitignore index 160a2747..0a826448 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,6 @@ docs/img/sam.jpg ClaudeReport.md ClaudeReport.md ClaudeReport.md +docs/brand/visual-identity.md +docs/brand/asset-system.md +docs/brand/visual-identity.md diff --git a/app/src/main/java/app/closer/ui/auth/AuthVisuals.kt b/app/src/main/java/app/closer/ui/auth/AuthVisuals.kt index 4e9b9a2a..440eb607 100644 --- a/app/src/main/java/app/closer/ui/auth/AuthVisuals.kt +++ b/app/src/main/java/app/closer/ui/auth/AuthVisuals.kt @@ -20,7 +20,6 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.shadow import androidx.compose.ui.geometry.Offset @@ -80,7 +79,7 @@ internal fun AuthLogoMark( painter = painterResource(R.drawable.ic_launcher_foreground), contentDescription = "Closer", contentScale = ContentScale.Fit, - modifier = Modifier.matchParentSize().alpha(0.96f) + modifier = Modifier.matchParentSize() ) } } 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 d6c18a27..73b5e9d5 100644 --- a/app/src/main/java/app/closer/ui/pairing/PairingSuccessScreen.kt +++ b/app/src/main/java/app/closer/ui/pairing/PairingSuccessScreen.kt @@ -9,6 +9,7 @@ import androidx.compose.animation.core.Spring import androidx.compose.animation.core.infiniteRepeatable import androidx.compose.animation.core.rememberInfiniteTransition import androidx.compose.animation.core.tween +import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement @@ -27,7 +28,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Favorite import androidx.compose.material.icons.filled.Person import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults @@ -49,6 +49,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.scale import androidx.compose.ui.graphics.vector.rememberVectorPainter 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.TextAlign import androidx.compose.ui.unit.dp @@ -57,6 +58,7 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import app.closer.R import app.closer.core.navigation.AppRoute import app.closer.domain.repository.AuthRepository import app.closer.domain.repository.CoupleRepository @@ -205,15 +207,14 @@ fun PairingSuccessScreen( .background(MaterialTheme.colorScheme.background) .padding(5.dp) .clip(CircleShape) - .background(SettingsPrimary), + .background(Color(0xFFFFF8FC)), contentAlignment = Alignment.Center ) { - Icon( - Icons.Filled.Favorite, + Image( + painter = painterResource(R.drawable.closer_mark_loader), contentDescription = null, - tint = SettingsOnPrimary, modifier = Modifier - .size(28.dp) + .size(38.dp) .scale(pulse) ) } diff --git a/app/src/main/res/drawable-nodpi/closer_launcher_foreground.png b/app/src/main/res/drawable-nodpi/closer_launcher_foreground.png index 5cba8845..97d8a1e9 100644 Binary files a/app/src/main/res/drawable-nodpi/closer_launcher_foreground.png and b/app/src/main/res/drawable-nodpi/closer_launcher_foreground.png differ diff --git a/docs/brand/asset-system.md b/docs/brand/asset-system.md index 95a81665..fca16732 100644 --- a/docs/brand/asset-system.md +++ b/docs/brand/asset-system.md @@ -66,6 +66,8 @@ This section is only about the artwork used to represent notifications, not noti | Asset | Use | Source / Target | | --- | --- | --- | | Primary app mark | Launcher, favicon, small brand moments | `docs/brand/sources/closer-approved-icon-source.png` | +| Mark for dark backgrounds | Logo use on aubergine/purple surfaces | `docs/brand/sources/closer-mark-on-dark.svg` | +| Mark for light backgrounds | Logo use on blush/white/light surfaces | `docs/brand/sources/closer-mark-on-light.svg` | | Adaptive foreground | Android launcher layer | `app/src/main/res/drawable/ic_launcher_foreground.xml` | | Adaptive background | Android launcher layer | `app/src/main/res/drawable/ic_launcher_background.xml` | | Monochrome mark | Android themed icon, single-color use | `app/src/main/res/drawable/ic_launcher_monochrome.xml` | @@ -80,6 +82,10 @@ approved pink upper C, lavender lower sweep, heart-shaped inner space, and true redraw it as a generic `C`, turn the keyhole into a heart, add a key or lock shackle, add faces, add text inside it, or use it as a reaction emoji. +Keyhole rule: keep the dark keyhole in the official launcher/store icon. Use the white keyhole only +when the transparent mark sits directly on dark aubergine/purple. Use the aubergine keyhole on light +or blush backgrounds. + ### 2. App Icons | Platform | Required Assets | diff --git a/docs/brand/sources/closer-approved-icon-square-white-keyhole.png b/docs/brand/sources/closer-approved-icon-square-white-keyhole.png new file mode 100644 index 00000000..208cda74 Binary files /dev/null and b/docs/brand/sources/closer-approved-icon-square-white-keyhole.png differ diff --git a/docs/brand/visual-identity.md b/docs/brand/visual-identity.md index de2ad2fd..6e8843c0 100644 --- a/docs/brand/visual-identity.md +++ b/docs/brand/visual-identity.md @@ -17,6 +17,8 @@ meeting in one private space; the keyhole represents trust and privacy. - Master mark source: `docs/brand/sources/closer-approved-icon-source.png` - Transparent mark source: `docs/brand/sources/closer-mark-transparent-keyhole-aubergine.png` +- Dark-background mark source: `docs/brand/sources/closer-mark-on-dark.svg` +- Light-background mark source: `docs/brand/sources/closer-mark-on-light.svg` - Launcher source: `docs/store/sources/app-icon.svg` - Android adaptive layers: `app/src/main/res/drawable/ic_launcher_*` - Android notification glyph: `app/src/main/res/drawable-nodpi/ic_notification_closer.png` @@ -27,6 +29,20 @@ Keep the mark visually faithful to the approved artwork. Do not redraw it as a g the aperture into an `O`, add a padlock shackle, turn the keyhole into a heart, add a separate key, or place text inside the icon. +### Keyhole color + +Use the keyhole color to support contrast without changing the official icon: + +- **Primary app icon / launcher / store icon:** keep the approved dark keyhole. It feels private and + premium, and keeps the icon from looking like a generic security app. +- **Transparent mark on dark aubergine or purple:** use the white-keyhole variant so the privacy + cue stays visible. +- **Transparent mark on blush, white, or light UI:** use the aubergine-keyhole variant first; use + the black-keyhole variant only when maximum contrast is needed. +- **Notification small icon:** use the single-color platform glyph; do not use the full-color + launcher art. +- **Loading mark:** use the aubergine-keyhole variant on light/card surfaces. + ## Core colors | Role | Color | Hex | diff --git a/docs/store/feature-graphic-1024x500.png b/docs/store/feature-graphic-1024x500.png index 9e46d407..f04950b3 100644 Binary files a/docs/store/feature-graphic-1024x500.png and b/docs/store/feature-graphic-1024x500.png differ diff --git a/docs/store/sources/feature-graphic.svg b/docs/store/sources/feature-graphic.svg index 3eeabe90..0d1816ac 100644 --- a/docs/store/sources/feature-graphic.svg +++ b/docs/store/sources/feature-graphic.svg @@ -13,7 +13,7 @@ - + Closer A private space