brand: update launcher foreground, feature graphic, auth visuals, brand docs

This commit is contained in:
null 2026-06-25 14:48:57 -05:00
parent 93b5599605
commit 520eea2236
9 changed files with 34 additions and 9 deletions

3
.gitignore vendored
View File

@ -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

View File

@ -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()
)
}
}

View File

@ -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)
)
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 47 KiB

View File

@ -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 |

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

@ -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 |

Binary file not shown.

Before

Width:  |  Height:  |  Size: 477 KiB

After

Width:  |  Height:  |  Size: 458 KiB

View File

@ -13,7 +13,7 @@
<path d="M0 372c144-62 292-57 449-14 142 39 259 43 358 7 70-25 142-33 217-13v148H0Z" fill="#180C20" opacity=".34"/>
<path d="M900 0h124v500H820c31-76 34-154 8-236C800 174 812 88 900 0Z" fill="#F7C8E4" opacity=".08"/>
<image x="68" y="74" width="312" height="312" href="docs/brand/sources/closer-approved-icon-square.png" preserveAspectRatio="xMidYMid slice" filter="url(#markShadow)"/>
<image x="68" y="74" width="312" height="312" href="docs/brand/sources/closer-approved-icon-square-white-keyhole.png" preserveAspectRatio="xMidYMid slice" filter="url(#markShadow)"/>
<text x="408" y="142" fill="#FFF8FC" font-family="DejaVu Sans" font-size="72" font-weight="700">Closer</text>
<text x="412" y="198" fill="#F7C8E4" font-family="DejaVu Sans" font-size="26" font-weight="600">A private space</text>

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB