brand: update launcher foreground, feature graphic, auth visuals, brand docs
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 47 KiB |
|
|
@ -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 |
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 1.5 MiB |
|
|
@ -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 |
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 477 KiB After Width: | Height: | Size: 458 KiB |
|
|
@ -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 |