feat(android): migrate all UI surfaces from Material icons to brand glyphs (CloserGlyphs catalog)

This commit is contained in:
null 2026-06-28 17:46:11 -05:00
parent c31ae4b1f7
commit 6cc78209af
49 changed files with 158 additions and 214 deletions

View File

@ -2,8 +2,6 @@ package app.closer.core.navigation
import androidx.annotation.DrawableRes
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
@ -83,6 +81,7 @@ import app.closer.ui.wheel.WheelCompleteScreen
import app.closer.ui.wheel.GameHistoryScreen
import app.closer.ui.wheel.WheelSessionScreen
import app.closer.ui.games.WaitingForPartnerScreen
import app.closer.ui.components.CloserGlyphs
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -190,7 +189,7 @@ fun AppNavigation(
navigationIcon = {
IconButton(onClick = navigateBackOrHome) {
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
imageVector = CloserGlyphs.Back,
contentDescription = "Back"
)
}

View File

@ -25,7 +25,6 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material.icons.filled.Visibility
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
@ -59,6 +58,7 @@ import app.closer.ui.components.CategoryGlyph
import app.closer.ui.components.EmptyState
import app.closer.ui.theme.CloserPalette
import app.closer.ui.questions.displayCategoryName
import app.closer.ui.components.CloserGlyphs
private enum class AnswerHistoryFilter {
ALL, PRIVATE, REVEALED
@ -383,7 +383,7 @@ private fun HistoryStateBadge(isRevealed: Boolean) {
verticalAlignment = Alignment.CenterVertically
) {
Icon(
imageVector = if (isRevealed) Icons.Filled.Visibility else Icons.Filled.Lock,
imageVector = if (isRevealed) Icons.Filled.Visibility else CloserGlyphs.Lock,
contentDescription = null,
tint = tint,
modifier = Modifier.size(14.dp)

View File

@ -15,9 +15,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.Check
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import app.closer.ui.components.BrandMessageRotator
@ -50,6 +47,7 @@ import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import app.closer.core.navigation.AppRoute
import app.closer.ui.components.StatusGlyph
import app.closer.ui.components.CloserGlyphs
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -75,7 +73,7 @@ fun ForgotPasswordScreen(
navigationIcon = {
IconButton(onClick = { onNavigate(AppRoute.LOGIN) }) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = AuthInk
)
@ -101,7 +99,7 @@ fun ForgotPasswordScreen(
if (state.sent) {
Spacer(Modifier.height(48.dp))
StatusGlyph(
icon = Icons.Filled.Check,
icon = CloserGlyphs.Check,
tint = AuthPrimaryDeep,
container = AuthPrimary.copy(alpha = 0.16f)
)

View File

@ -24,7 +24,6 @@ import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.Visibility
import androidx.compose.material.icons.filled.VisibilityOff
import androidx.compose.material3.Button
@ -64,6 +63,7 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import app.closer.core.navigation.AppRoute
import app.closer.ui.components.CloserGlyphs
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -97,7 +97,7 @@ fun SignUpScreen(
navigationIcon = {
IconButton(onClick = { onNavigate(AppRoute.LOGIN) }) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = AuthInk
)

View File

@ -21,10 +21,6 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
@ -84,6 +80,7 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import app.closer.ui.components.CloserGlyphs
// ── ViewModel ─────────────────────────────────────────────────────────────────
@ -359,7 +356,7 @@ private fun ChallengesPickScreen(
) {
IconButton(onClick = onBack) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = MaterialTheme.colorScheme.onBackground
)
@ -458,7 +455,7 @@ private fun ChallengePickCard(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(3.dp)
) {
Icon(Icons.Filled.Lock, contentDescription = null, tint = CloserPalette.Gold, modifier = Modifier.size(10.dp))
Icon(CloserGlyphs.Lock, contentDescription = null, tint = CloserPalette.Gold, modifier = Modifier.size(10.dp))
Text("Premium", style = MaterialTheme.typography.labelSmall, color = CloserPalette.Gold, fontWeight = FontWeight.SemiBold)
}
}
@ -558,7 +555,7 @@ private fun ChallengesActiveScreen(
) {
IconButton(onClick = onBack) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = MaterialTheme.colorScheme.onBackground
)
@ -694,7 +691,7 @@ private fun ChallengesActiveScreen(
horizontalArrangement = Arrangement.spacedBy(10.dp)
) {
val icon = when {
isBothDone -> Icons.Filled.Check
isBothDone -> CloserGlyphs.Check
else -> null
}
if (icon != null) {
@ -839,7 +836,7 @@ private fun DayTrackerStrip(
contentAlignment = Alignment.Center
) {
if (jointDone) {
Icon(Icons.Filled.Check, contentDescription = null, tint = Color.White, modifier = Modifier.size(14.dp))
Icon(CloserGlyphs.Check, contentDescription = null, tint = Color.White, modifier = Modifier.size(14.dp))
} else {
Text(
text = "$day",

View File

@ -18,7 +18,6 @@ import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.PlayArrow
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
@ -192,7 +191,7 @@ private fun GamePromptCard(
IconButton(onClick = onDismiss) {
Icon(
imageVector = Icons.Filled.Close,
imageVector = CloserGlyphs.Close,
contentDescription = "Dismiss",
tint = Color.White.copy(alpha = 0.8f),
modifier = Modifier.size(20.dp)

View File

@ -13,7 +13,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.Chat
import androidx.compose.material.icons.filled.Close
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
@ -101,7 +100,7 @@ fun MessageBubbleOverlay(
contentAlignment = Alignment.Center
) {
Icon(
imageVector = Icons.Filled.Close,
imageVector = CloserGlyphs.Close,
contentDescription = "Dismiss",
tint = Color.White,
modifier = Modifier.size(28.dp)

View File

@ -22,9 +22,6 @@ import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.rememberScrollState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.Info
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
@ -56,6 +53,7 @@ import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import app.closer.domain.model.BucketListCategory
import app.closer.domain.model.BucketListItem
import app.closer.ui.components.CloserGlyphs
@Composable
fun BucketListScreen(
@ -175,7 +173,7 @@ private fun Header(
modifier = Modifier.padding(top = 4.dp)
) {
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
imageVector = CloserGlyphs.Back,
contentDescription = "Back",
tint = MaterialTheme.colorScheme.onSurface
)

View File

@ -22,8 +22,6 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.DatePicker
@ -60,6 +58,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import app.closer.ui.components.CloserGlyphs
@Composable
fun DateBuilderScreen(
@ -165,7 +164,7 @@ private fun Header(
modifier = Modifier.padding(top = 4.dp)
) {
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
imageVector = CloserGlyphs.Back,
contentDescription = "Back",
tint = MaterialTheme.colorScheme.onSurface
)

View File

@ -27,10 +27,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material.icons.filled.Star
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card
@ -70,6 +66,7 @@ import app.closer.ui.components.EmptyState
import app.closer.ui.components.ErrorState
import app.closer.ui.components.LoadingState
import kotlin.math.roundToInt
import app.closer.ui.components.CloserGlyphs
@Composable
fun DateMatchScreen(
@ -243,7 +240,7 @@ private fun DateMatchHeader(
) {
Box(modifier = Modifier.padding(8.dp)) {
Icon(
imageVector = Icons.Filled.Favorite,
imageVector = CloserGlyphs.Heart,
contentDescription = "View matches",
tint = MaterialTheme.colorScheme.onPrimaryContainer
)
@ -405,7 +402,7 @@ private fun PremiumBadge() {
verticalAlignment = Alignment.CenterVertically
) {
Icon(
imageVector = Icons.Filled.Star,
imageVector = CloserGlyphs.Star,
contentDescription = null,
modifier = Modifier.size(14.dp),
tint = MaterialTheme.colorScheme.onSecondaryContainer
@ -467,14 +464,14 @@ private fun ActionButtons(
verticalAlignment = Alignment.CenterVertically
) {
CircularActionButton(
icon = Icons.Filled.Close,
icon = CloserGlyphs.Close,
contentDescription = "Skip",
color = MaterialTheme.colorScheme.errorContainer,
iconColor = Color(0xFF8D2D35),
onClick = onSkip
)
CircularActionButton(
icon = Icons.Filled.Star,
icon = CloserGlyphs.Star,
contentDescription = "Maybe",
color = MaterialTheme.colorScheme.tertiaryContainer.copy(alpha = 0.74f),
iconColor = Color(0xFF6B5D00),
@ -482,7 +479,7 @@ private fun ActionButtons(
size = 72.dp
)
CircularActionButton(
icon = Icons.Filled.Favorite,
icon = CloserGlyphs.Heart,
contentDescription = "Love",
color = closerSoftPinkColor(),
iconColor = Color(0xFF9B1B5A),

View File

@ -22,9 +22,6 @@ import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
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.Star
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Icon
@ -51,6 +48,7 @@ import app.closer.domain.model.SwipeAction
import app.closer.ui.components.EmptyState
import app.closer.ui.components.ErrorState
import app.closer.ui.components.LoadingState
import app.closer.ui.components.CloserGlyphs
@Composable
fun DateMatchesScreen(
@ -145,7 +143,7 @@ private fun DateMatchesContent(
SectionHeader(
title = "Mutual love",
count = state.mutualMatches.size,
icon = Icons.Filled.Favorite,
icon = CloserGlyphs.Heart,
iconColor = Color(0xFF9B1B5A),
modifier = Modifier.padding(top = 8.dp)
)
@ -160,7 +158,7 @@ private fun DateMatchesContent(
SectionHeader(
title = "Maybe together",
count = state.maybeMatches.size,
icon = Icons.Filled.Star,
icon = CloserGlyphs.Star,
iconColor = Color(0xFF6B5D00),
modifier = Modifier.padding(top = 8.dp)
)
@ -236,7 +234,7 @@ private fun MatchCard(match: DateMatch) {
verticalAlignment = Alignment.CenterVertically
) {
Icon(
imageVector = Icons.Filled.Favorite,
imageVector = CloserGlyphs.Heart,
contentDescription = null,
modifier = Modifier.size(14.dp),
tint = Color(0xFF9B1B5A)
@ -268,7 +266,7 @@ private fun SuggestionCard(suggestion: DateMatchSuggestion) {
verticalAlignment = Alignment.CenterVertically
) {
Icon(
imageVector = Icons.Filled.Star,
imageVector = CloserGlyphs.Star,
contentDescription = null,
modifier = Modifier.size(14.dp),
tint = Color(0xFF6B5D00)

View File

@ -83,6 +83,7 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import app.closer.ui.components.CloserGlyphs
// ── Domain ────────────────────────────────────────────────────────────────────
@ -599,7 +600,7 @@ private fun DSWaitingScreen(partnerName: String, onBack: () -> Unit, onAbandon:
) {
Spacer(Modifier.weight(1f))
StatusGlyph(
icon = Icons.Filled.Favorite,
icon = CloserGlyphs.Heart,
tint = CloserPalette.Romantic,
container = CloserPalette.Romantic.copy(alpha = 0.12f)
)
@ -785,7 +786,7 @@ private fun DSRevealScreen(
verticalArrangement = Arrangement.spacedBy(10.dp)
) {
StatusGlyph(
icon = if (matches.isEmpty()) Icons.Filled.FavoriteBorder else Icons.Filled.Favorite,
icon = if (matches.isEmpty()) Icons.Filled.FavoriteBorder else CloserGlyphs.Heart,
tint = CloserPalette.Romantic,
container = CloserPalette.Romantic.copy(alpha = 0.12f),
size = 82.dp,
@ -994,7 +995,7 @@ private fun DesireMatchCard(match: DesireMatch) {
verticalAlignment = Alignment.CenterVertically
) {
StatusGlyph(
icon = Icons.Filled.Favorite,
icon = CloserGlyphs.Heart,
tint = CloserPalette.Romantic,
container = CloserPalette.Romantic.copy(alpha = 0.12f),
size = 34.dp,

View File

@ -19,8 +19,6 @@ import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.HourglassEmpty
import androidx.compose.material.icons.filled.LocalFireDepartment
import androidx.compose.material.icons.filled.NotificationsNone
@ -75,6 +73,7 @@ import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import kotlinx.coroutines.tasks.await
import app.closer.ui.components.CloserGlyphs
data class PartnerHomeUiState(
val isLoading: Boolean = true,
@ -237,7 +236,7 @@ fun PartnerHomeScreen(
},
navigationIcon = {
IconButton(onClick = { onNavigate("back") }) {
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")
Icon(CloserGlyphs.Back, contentDescription = "Back")
}
},
colors = TopAppBarDefaults.topAppBarColors(containerColor = Color.Transparent)
@ -423,7 +422,7 @@ private fun PartnerActivityCard(
) {
Box(contentAlignment = Alignment.Center) {
Icon(
imageVector = if (hasAnsweredToday) Icons.Filled.Check else Icons.Filled.HourglassEmpty,
imageVector = if (hasAnsweredToday) CloserGlyphs.Check else Icons.Filled.HourglassEmpty,
contentDescription = null,
tint = if (hasAnsweredToday) CloserPalette.PurpleDeep else MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.size(20.dp)

View File

@ -26,10 +26,8 @@ import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.ui.draw.clip
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Person
import androidx.compose.material.icons.filled.Psychology
import androidx.compose.material.icons.filled.Sync
import androidx.compose.material.icons.filled.Timeline
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card
@ -91,6 +89,7 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import app.closer.ui.components.CloserGlyphs
// ── Domain ────────────────────────────────────────────────────────────────────
@ -610,7 +609,7 @@ private fun PlayerIntroScreen(
horizontalAlignment = Alignment.CenterHorizontally
) {
StatusGlyph(
icon = if (amSubject) Icons.Filled.Person else Icons.Filled.Psychology,
icon = if (amSubject) CloserGlyphs.Person else Icons.Filled.Psychology,
tint = CloserPalette.PurpleDeep,
container = CloserPalette.PurpleMist
)

View File

@ -25,7 +25,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material.icons.filled.Edit
@ -91,6 +90,7 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import app.closer.ui.components.CloserGlyphs
// ── Unlock presets ─────────────────────────────────────────────────────────────
@ -462,7 +462,7 @@ private fun MemoryLaneLockedScreen(onBack: () -> Unit, onUnlock: () -> Unit) {
) {
Surface(shape = RoundedCornerShape(50.dp), color = CloserPalette.Romantic.copy(alpha = 0.12f)) {
Icon(
Icons.Filled.Lock,
CloserGlyphs.Lock,
contentDescription = null,
modifier = Modifier.padding(20.dp).size(32.dp),
tint = CloserPalette.Romantic
@ -527,7 +527,7 @@ private fun CapsuleListScreen(
verticalAlignment = Alignment.CenterVertically
) {
IconButton(onClick = onBack) {
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back", tint = MaterialTheme.colorScheme.onBackground)
Icon(CloserGlyphs.Back, contentDescription = "Back", tint = MaterialTheme.colorScheme.onBackground)
}
Spacer(Modifier.width(4.dp))
Column(modifier = Modifier.weight(1f)) {
@ -605,7 +605,7 @@ private fun CapsuleCard(capsule: TimeCapsule, onClick: () -> Unit) {
) {
Box(contentAlignment = Alignment.Center) {
Icon(
imageVector = if (unlocked) Icons.Filled.LockOpen else Icons.Filled.Lock,
imageVector = if (unlocked) Icons.Filled.LockOpen else CloserGlyphs.Lock,
contentDescription = null,
tint = if (unlocked) CloserPalette.Evergreen else CloserPalette.PurpleDeep,
modifier = Modifier.size(22.dp)
@ -671,7 +671,7 @@ private fun CapsuleCreateScreen(
// Header
Row(verticalAlignment = Alignment.CenterVertically) {
IconButton(onClick = onBack) {
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back", tint = MaterialTheme.colorScheme.onBackground)
Icon(CloserGlyphs.Back, contentDescription = "Back", tint = MaterialTheme.colorScheme.onBackground)
}
Spacer(Modifier.width(4.dp))
Text(if (isEditing) "Edit Capsule" else "New Capsule", style = MaterialTheme.typography.headlineSmall.copy(fontWeight = FontWeight.SemiBold), color = MaterialTheme.colorScheme.onBackground)
@ -830,7 +830,7 @@ private fun CapsuleDetailScreen(
item {
Row(verticalAlignment = Alignment.CenterVertically) {
IconButton(onClick = onBack) {
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back", tint = MaterialTheme.colorScheme.onBackground)
Icon(CloserGlyphs.Back, contentDescription = "Back", tint = MaterialTheme.colorScheme.onBackground)
}
Spacer(Modifier.width(4.dp))
Column(modifier = Modifier.weight(1f)) {
@ -899,7 +899,7 @@ private fun CapsuleDetailScreen(
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(12.dp)
) {
Icon(Icons.Filled.Lock, contentDescription = null, tint = CloserPalette.PurpleDeep.copy(alpha = 0.5f), modifier = Modifier.size(40.dp))
Icon(CloserGlyphs.Lock, contentDescription = null, tint = CloserPalette.PurpleDeep.copy(alpha = 0.5f), modifier = Modifier.size(40.dp))
Text("Still sealed", style = MaterialTheme.typography.titleMedium.copy(fontWeight = FontWeight.SemiBold), color = MaterialTheme.colorScheme.onSurface, textAlign = TextAlign.Center)
Text(
text = "Opens ${countdown(capsule.unlockAt)}${formatDate(capsule.unlockAt)}",

View File

@ -17,9 +17,6 @@ import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.Person
import androidx.compose.material.icons.filled.Refresh
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.ExperimentalMaterial3Api
@ -57,6 +54,7 @@ import app.closer.ui.messages.components.ChatMessageRow
import app.closer.ui.messages.components.isSameChatDay
import app.closer.ui.theme.closerBackgroundBrush
import coil.compose.AsyncImage
import app.closer.ui.components.CloserGlyphs
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -119,7 +117,7 @@ fun ConversationScreen(
},
navigationIcon = {
IconButton(onClick = { onNavigate("back") }) {
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")
Icon(CloserGlyphs.Back, contentDescription = "Back")
}
},
colors = TopAppBarDefaults.topAppBarColors(containerColor = Color.Transparent)
@ -224,7 +222,7 @@ private fun PendingMediaChip(
Icon(Icons.Filled.Refresh, contentDescription = "Retry", tint = MaterialTheme.colorScheme.primary)
}
IconButton(onClick = onDismiss, modifier = Modifier.size(48.dp)) {
Icon(Icons.Filled.Close, contentDescription = "Dismiss", tint = MaterialTheme.colorScheme.onSurfaceVariant)
Icon(CloserGlyphs.Close, contentDescription = "Dismiss", tint = MaterialTheme.colorScheme.onSurfaceVariant)
}
} else {
CircularProgressIndicator(
@ -254,7 +252,7 @@ private fun ConversationAvatar(url: String?) {
)
} else {
Icon(
imageVector = Icons.Filled.Person,
imageVector = CloserGlyphs.Person,
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.size(size).clip(CircleShape)

View File

@ -14,8 +14,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Person
import androidx.compose.material3.Button
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
@ -37,6 +35,7 @@ import app.closer.ui.components.EmptyState
import app.closer.ui.theme.CloserPalette
import coil.compose.AsyncImage
import java.util.concurrent.TimeUnit
import app.closer.ui.components.CloserGlyphs
@Composable
fun MessagesInboxScreen(
@ -132,7 +131,7 @@ private fun ConversationRow(
modifier = Modifier.size(52.dp).clip(CircleShape).background(MaterialTheme.colorScheme.surfaceVariant),
contentAlignment = Alignment.Center
) {
Icon(Icons.Filled.Person, contentDescription = null, tint = MaterialTheme.colorScheme.onSurfaceVariant)
Icon(CloserGlyphs.Person, contentDescription = null, tint = MaterialTheme.colorScheme.onSurfaceVariant)
}
}

View File

@ -31,14 +31,11 @@ import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.Send
import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.ContentCopy
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material.icons.filled.Image
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material.icons.filled.Mic
import androidx.compose.material.icons.filled.Pause
import androidx.compose.material.icons.filled.Person
import androidx.compose.material.icons.filled.PhotoCamera
import androidx.compose.material.icons.filled.PlayArrow
import androidx.compose.material3.CircularProgressIndicator
@ -87,6 +84,7 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.File
import java.nio.ByteBuffer
import app.closer.ui.components.CloserGlyphs
/**
* One chat row Messenger style: only the partner's avatar shows (on the left); our own messages
@ -391,7 +389,7 @@ private fun FullScreenImageViewer(
onClick = onDismiss,
modifier = Modifier.align(Alignment.TopEnd).padding(12.dp)
) {
Icon(Icons.Filled.Close, contentDescription = "Close", tint = Color.White)
Icon(CloserGlyphs.Close, contentDescription = "Close", tint = Color.White)
}
}
}
@ -511,7 +509,7 @@ private fun ChatAvatar(url: String?, visible: Boolean) {
modifier = Modifier.size(size).clip(CircleShape).background(MaterialTheme.colorScheme.surfaceVariant),
contentAlignment = Alignment.Center
) {
Icon(Icons.Filled.Person, contentDescription = null, tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(16.dp))
Icon(CloserGlyphs.Person, contentDescription = null, tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(16.dp))
}
}
}
@ -629,7 +627,7 @@ fun ChatComposer(
horizontalArrangement = Arrangement.spacedBy(8.dp)
) {
IconButton(onClick = { finishRecording(send = false) }, modifier = Modifier.size(48.dp)) {
Icon(Icons.Filled.Close, contentDescription = "Cancel", tint = MaterialTheme.colorScheme.error)
Icon(CloserGlyphs.Close, contentDescription = "Cancel", tint = MaterialTheme.colorScheme.error)
}
Box(modifier = Modifier.size(10.dp).clip(CircleShape).background(MaterialTheme.colorScheme.error))
Text(
@ -730,7 +728,7 @@ private fun ComposerMediaButton(
}
if (locked) {
Icon(
imageVector = Icons.Filled.Lock,
imageVector = CloserGlyphs.Lock,
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.size(12.dp).align(Alignment.BottomEnd)

View File

@ -28,9 +28,7 @@ import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.AddAPhoto
import androidx.compose.material.icons.filled.Person
import androidx.compose.material.icons.filled.PhotoLibrary
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
@ -80,6 +78,7 @@ import app.closer.ui.auth.AuthPrimaryDeep
import app.closer.ui.auth.authTextFieldColors
import coil.compose.AsyncImage
import java.io.File
import app.closer.ui.components.CloserGlyphs
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -139,7 +138,7 @@ fun CreateProfileScreen(
navigationIcon = {
IconButton(onClick = viewModel::goBack) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = AuthInk
)
@ -394,12 +393,12 @@ private fun PhotoStep(
contentDescription = "Profile photo",
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop,
placeholder = rememberVectorPainter(Icons.Filled.Person),
error = rememberVectorPainter(Icons.Filled.Person)
placeholder = rememberVectorPainter(CloserGlyphs.Person),
error = rememberVectorPainter(CloserGlyphs.Person)
)
} else {
Icon(
Icons.Filled.Person,
CloserGlyphs.Person,
contentDescription = "Profile photo",
modifier = Modifier.size(64.dp),
tint = AuthMuted

View File

@ -16,7 +16,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.automirrored.filled.TrendingUp
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
@ -49,6 +48,7 @@ import app.closer.ui.settings.SettingsInk
import app.closer.ui.settings.SettingsMuted
import app.closer.ui.settings.SettingsPrimaryDeep
import app.closer.ui.settings.SettingsSoft
import app.closer.ui.components.CloserGlyphs
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -69,7 +69,7 @@ fun YourProgressScreen(
navigationIcon = {
IconButton(onClick = onBack) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = SettingsInk
)

View File

@ -20,8 +20,6 @@ import androidx.compose.foundation.text.BasicTextField
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card
@ -68,6 +66,7 @@ import app.closer.ui.settings.SettingsOnPrimary
import app.closer.ui.settings.SettingsPrimary
import app.closer.ui.settings.SettingsPrimaryDeep
import app.closer.ui.settings.SettingsSoft
import app.closer.ui.components.CloserGlyphs
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -94,7 +93,7 @@ fun AcceptInviteScreen(
navigationIcon = {
IconButton(onClick = onBack) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = SettingsInk
)

View File

@ -20,11 +20,9 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.ContentCopy
import androidx.compose.material.icons.filled.Share
import androidx.compose.foundation.border
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card
@ -66,6 +64,7 @@ import app.closer.ui.settings.SettingsPrimary
import app.closer.ui.settings.SettingsPrimaryDeep
import app.closer.ui.settings.SettingsSoft
import kotlinx.coroutines.launch
import app.closer.ui.components.CloserGlyphs
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -102,7 +101,7 @@ fun CreateInviteScreen(
navigationIcon = {
IconButton(onClick = onBack) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = SettingsInk
)
@ -255,7 +254,7 @@ fun CreateInviteScreen(
verticalAlignment = Alignment.CenterVertically
) {
Icon(
Icons.Filled.Lock,
CloserGlyphs.Lock,
contentDescription = null,
tint = SettingsPrimaryDeep,
modifier = Modifier.size(16.dp)

View File

@ -16,7 +16,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.FavoriteBorder
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
@ -53,6 +52,7 @@ import app.closer.ui.settings.SettingsOnPrimary
import app.closer.ui.settings.SettingsPrimary
import app.closer.ui.settings.SettingsPrimaryDeep
import app.closer.ui.settings.SettingsSoft
import app.closer.ui.components.CloserGlyphs
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -84,7 +84,7 @@ fun InviteConfirmScreen(
navigationIcon = {
IconButton(onClick = onBack) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = SettingsInk
)

View File

@ -16,8 +16,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Check
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon
@ -44,6 +42,7 @@ import app.closer.ui.auth.AuthOnPrimary
import app.closer.ui.auth.AuthPrimary
import app.closer.ui.auth.AuthPrimaryDeep
import app.closer.ui.theme.CloserPalette
import app.closer.ui.components.CloserGlyphs
private val WHY_ITEMS = listOf(
"Daily questions reveal together — both answer privately, then see each other's response at the same time.",
@ -165,7 +164,7 @@ private fun WhyRow(text: String) {
modifier = Modifier.size(22.dp)
) {
Icon(
imageVector = Icons.Filled.Check,
imageVector = CloserGlyphs.Check,
contentDescription = null,
tint = AuthOnPrimary,
modifier = Modifier

View File

@ -27,8 +27,6 @@ import androidx.compose.foundation.layout.size
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.Person
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon
@ -78,6 +76,7 @@ import app.closer.ui.settings.SettingsMuted
import app.closer.ui.settings.SettingsOnPrimary
import app.closer.ui.settings.SettingsPrimary
import app.closer.ui.settings.SettingsSoft
import app.closer.ui.components.CloserGlyphs
// ── ViewModel ────────────────────────────────────────────────────────────────
@ -278,8 +277,8 @@ private fun PairAvatar(url: String, modifier: Modifier = Modifier) {
model = cleanUrl,
contentDescription = null,
contentScale = ContentScale.Crop,
placeholder = rememberVectorPainter(Icons.Filled.Person),
error = rememberVectorPainter(Icons.Filled.Person),
placeholder = rememberVectorPainter(CloserGlyphs.Person),
error = rememberVectorPainter(CloserGlyphs.Person),
modifier = modifier
.clip(CircleShape)
.border(4.dp, Color.White, CircleShape)
@ -295,7 +294,7 @@ private fun PairAvatar(url: String, modifier: Modifier = Modifier) {
contentAlignment = Alignment.Center
) {
Icon(
Icons.Filled.Person,
CloserGlyphs.Person,
contentDescription = null,
tint = SettingsPrimary,
modifier = Modifier.fillMaxSize(0.5f)

View File

@ -16,8 +16,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import app.closer.ui.components.CloserHeartLoader
@ -48,6 +46,7 @@ import app.closer.ui.settings.SettingsMuted
import app.closer.ui.settings.SettingsOnPrimary
import app.closer.ui.settings.SettingsPrimary
import app.closer.ui.settings.SettingsPrimaryDeep
import app.closer.ui.components.CloserGlyphs
@Composable
fun RecoveryScreen(
@ -83,7 +82,7 @@ fun RecoveryScreen(
Spacer(Modifier.height(48.dp))
StatusGlyph(
icon = Icons.Filled.Lock,
icon = CloserGlyphs.Lock,
tint = SettingsPrimaryDeep,
container = SettingsPrimary.copy(alpha = 0.12f)
)

View File

@ -27,8 +27,6 @@ import androidx.compose.foundation.selection.selectable
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.Close
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card
@ -70,6 +68,8 @@ import app.closer.ui.components.ErrorState
import app.closer.ui.components.LoadingState
import app.closer.ui.theme.CloserPalette
import com.revenuecat.purchases.Package
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.Close
private val BENEFITS = listOf(
"Unlimited questions every day",

View File

@ -16,13 +16,6 @@ import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowForward
import androidx.compose.material.icons.filled.Done
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material.icons.filled.Home
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material.icons.filled.Star
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
@ -53,6 +46,7 @@ import app.closer.ui.components.CloserPill
import app.closer.ui.components.CloserRadii
import app.closer.ui.theme.closerBackgroundBrush
import app.closer.ui.theme.closerPlayCardBrush
import app.closer.ui.components.CloserGlyphs
@Composable
fun PlayHubScreen(
@ -280,7 +274,7 @@ private fun ThisOrThatCard(
)
}
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
imageVector = CloserGlyphs.Forward,
contentDescription = null,
tint = MaterialTheme.colorScheme.secondary,
modifier = Modifier.size(18.dp)
@ -351,7 +345,7 @@ private fun DesireSyncCard(
verticalAlignment = Alignment.CenterVertically
) {
Icon(
imageVector = Icons.Filled.Lock,
imageVector = CloserGlyphs.Lock,
contentDescription = null,
tint = MaterialTheme.colorScheme.secondary,
modifier = Modifier.size(13.dp)
@ -375,7 +369,7 @@ private fun DesireSyncCard(
)
}
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
imageVector = CloserGlyphs.Forward,
contentDescription = null,
tint = MaterialTheme.colorScheme.secondary,
modifier = Modifier.size(18.dp)
@ -448,7 +442,7 @@ private fun HowWellCard(
)
}
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
imageVector = CloserGlyphs.Forward,
contentDescription = null,
tint = MaterialTheme.colorScheme.secondary,
modifier = Modifier.size(18.dp)
@ -522,7 +516,7 @@ private fun ConnectionChallengesCard(
)
}
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
imageVector = CloserGlyphs.Forward,
contentDescription = null,
tint = MaterialTheme.colorScheme.primary,
modifier = Modifier.size(18.dp)
@ -592,7 +586,7 @@ private fun MemoryLaneCard(
verticalAlignment = Alignment.CenterVertically
) {
Icon(
imageVector = Icons.Filled.Lock,
imageVector = CloserGlyphs.Lock,
contentDescription = null,
tint = MaterialTheme.colorScheme.secondary,
modifier = Modifier.size(13.dp)
@ -616,7 +610,7 @@ private fun MemoryLaneCard(
)
}
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
imageVector = CloserGlyphs.Forward,
contentDescription = null,
tint = MaterialTheme.colorScheme.secondary,
modifier = Modifier.size(18.dp)
@ -759,7 +753,7 @@ private fun CompactPlayCard(
) {
if (locked) {
Icon(
imageVector = Icons.Filled.Lock,
imageVector = CloserGlyphs.Lock,
contentDescription = null,
tint = MaterialTheme.colorScheme.tertiary,
modifier = Modifier.size(11.dp)
@ -774,7 +768,7 @@ private fun CompactPlayCard(
)
}
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
imageVector = CloserGlyphs.Forward,
contentDescription = null,
tint = tint,
modifier = Modifier.size(18.dp)

View File

@ -26,8 +26,6 @@ import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material.icons.filled.Visibility
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
@ -59,6 +57,7 @@ import app.closer.ui.components.ErrorState
import app.closer.ui.components.LoadingState
import app.closer.ui.questions.components.QuestionAnswerInput
import app.closer.ui.questions.components.QuestionHeader
import app.closer.ui.components.CloserGlyphs
@Composable
fun LocalQuestionContent(
@ -97,7 +96,7 @@ fun LocalQuestionContent(
if (onBack != null) {
IconButton(onClick = onBack) {
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
imageVector = CloserGlyphs.Back,
contentDescription = "Back"
)
}
@ -277,7 +276,7 @@ private fun SubmittedAnswerCard(
contentAlignment = Alignment.Center
) {
Icon(
imageVector = if (state.isRevealed) Icons.Filled.Visibility else Icons.Filled.Lock,
imageVector = if (state.isRevealed) Icons.Filled.Visibility else CloserGlyphs.Lock,
contentDescription = null,
tint = MaterialTheme.colorScheme.onPrimaryContainer,
modifier = Modifier.size(18.dp)

View File

@ -23,8 +23,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card
@ -55,6 +53,7 @@ import app.closer.core.navigation.AppRoute
import app.closer.domain.model.Question
import app.closer.domain.model.QuestionCategory
import app.closer.ui.components.CategoryGlyph
import app.closer.ui.components.CloserGlyphs
@Composable
fun QuestionCategoryScreen(
@ -113,7 +112,7 @@ private fun QuestionCategoryContent(
) {
IconButton(onClick = onBack) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = MaterialTheme.colorScheme.onBackground
)

View File

@ -20,8 +20,6 @@ import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon
@ -48,6 +46,7 @@ import app.closer.ui.questions.components.AnswerBubble
import app.closer.ui.questions.components.QuestionAnswerInput
import app.closer.ui.questions.components.QuestionHeader
import app.closer.ui.theme.closerBackgroundBrush
import app.closer.ui.components.CloserGlyphs
@Composable
fun QuestionThreadScreen(
@ -77,7 +76,7 @@ fun QuestionThreadScreen(
) {
IconButton(onClick = onBack) {
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
imageVector = CloserGlyphs.Back,
contentDescription = "Back"
)
}

View File

@ -15,7 +15,6 @@ import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Person
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
@ -35,6 +34,7 @@ import androidx.compose.ui.unit.dp
import app.closer.domain.model.Question
import app.closer.domain.model.QuestionAnswer
import app.closer.domain.model.QuestionReaction
import androidx.compose.material.icons.filled.Person
private val REACTION_EMOJIS = listOf("❤️", "😊", "😂", "😮", "👏", "🥺")

View File

@ -25,7 +25,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.Send
import androidx.compose.material.icons.filled.Image
import androidx.compose.material.icons.filled.Person
import androidx.compose.material.icons.filled.PhotoCamera
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.HorizontalDivider
@ -61,6 +60,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.File
import app.closer.ui.components.CloserGlyphs
@Composable
fun QuestionDiscussionThread(
@ -261,7 +261,7 @@ private fun MessageAvatar(url: String?, visible: Boolean) {
contentAlignment = Alignment.Center
) {
Icon(
imageVector = Icons.Filled.Person,
imageVector = CloserGlyphs.Person,
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.size(16.dp)

View File

@ -14,8 +14,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Close
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
@ -27,6 +25,8 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import app.closer.domain.model.Question
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Close
@Composable
fun QuestionHelpExpandable(

View File

@ -6,9 +6,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.automirrored.filled.ArrowForward
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.FilledTonalButton
import androidx.compose.material3.Icon
@ -19,6 +16,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import app.closer.ui.components.CloserGlyphs
@Composable
fun QuestionNavigationBar(
@ -46,7 +44,7 @@ fun QuestionNavigationBar(
)
) {
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
imageVector = CloserGlyphs.Back,
contentDescription = null,
modifier = Modifier.padding(end = 4.dp)
)
@ -75,7 +73,7 @@ fun QuestionNavigationBar(
fontWeight = FontWeight.Medium
)
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
imageVector = CloserGlyphs.Forward,
contentDescription = null,
modifier = Modifier.padding(start = 4.dp)
)

View File

@ -17,8 +17,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.automirrored.filled.ArrowForwardIos
import androidx.compose.material.icons.filled.ContentCopy
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material.icons.filled.Key
@ -54,6 +52,7 @@ import androidx.hilt.navigation.compose.hiltViewModel
import app.closer.R
import app.closer.core.navigation.AppRoute
import kotlinx.coroutines.launch
import app.closer.ui.components.CloserGlyphs
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -77,7 +76,7 @@ fun AccountScreen(
navigationIcon = {
IconButton(onClick = { onNavigate("back") }) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = stringResource(R.string.action_back),
tint = SettingsInk
)
@ -221,7 +220,7 @@ private fun AccountRow(
)
if (enabled) {
Icon(
Icons.AutoMirrored.Filled.ArrowForwardIos,
CloserGlyphs.Forward,
contentDescription = null,
modifier = Modifier.size(14.dp),
tint = SettingsMuted

View File

@ -15,8 +15,6 @@ import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Divider
@ -40,6 +38,7 @@ import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import app.closer.R
import app.closer.domain.repository.ThemeMode
import app.closer.ui.components.CloserGlyphs
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -58,7 +57,7 @@ fun AppearanceScreen(
navigationIcon = {
IconButton(onClick = { onNavigate("back") }) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = stringResource(R.string.action_back),
tint = SettingsInk
)

View File

@ -31,8 +31,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.foundation.clickable
import androidx.compose.material3.Checkbox
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
@ -62,6 +60,7 @@ import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import app.closer.ui.components.CloserGlyphs
data class DeleteAccountUiState(
val showConfirm: Boolean = false,
@ -278,7 +277,7 @@ fun DeleteAccountScreen(
navigationIcon = {
IconButton(onClick = { onNavigate("back") }) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = SettingsInk
)

View File

@ -27,10 +27,7 @@ import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.AddAPhoto
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.Person
import androidx.compose.material.icons.filled.PhotoLibrary
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
@ -79,6 +76,7 @@ import app.closer.ui.settings.SettingsMuted
import app.closer.ui.settings.SettingsOnPrimary
import app.closer.ui.settings.SettingsPrimary
import app.closer.ui.settings.SettingsPrimaryDeep
import app.closer.ui.components.CloserGlyphs
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -98,7 +96,7 @@ fun EditProfileScreen(
navigationIcon = {
IconButton(onClick = { onNavigate("back") }) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = SettingsInk
)
@ -197,12 +195,12 @@ fun EditProfileContent(
contentDescription = "Profile photo",
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop,
placeholder = rememberVectorPainter(Icons.Filled.Person),
error = rememberVectorPainter(Icons.Filled.Person)
placeholder = rememberVectorPainter(CloserGlyphs.Person),
error = rememberVectorPainter(CloserGlyphs.Person)
)
} else {
Icon(
Icons.Filled.Person,
CloserGlyphs.Person,
contentDescription = "Profile photo",
modifier = Modifier.size(56.dp),
tint = SettingsMuted
@ -407,7 +405,7 @@ private fun SexEditOption(
Row(verticalAlignment = Alignment.CenterVertically) {
if (selected) {
Icon(
Icons.Filled.Check,
CloserGlyphs.Check,
contentDescription = null,
modifier = Modifier.size(18.dp).padding(end = 6.dp),
tint = contentColor

View File

@ -29,8 +29,6 @@ import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Divider
@ -55,6 +53,7 @@ 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.ui.components.CloserGlyphs
data class NotificationSettingsUiState(
val dailyReminderEnabled: Boolean = true,
@ -155,7 +154,7 @@ fun NotificationSettingsScreen(
navigationIcon = {
IconButton(onClick = { onNavigate("back") }) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = stringResource(R.string.action_back),
tint = SettingsInk
)

View File

@ -19,11 +19,7 @@ import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.automirrored.filled.OpenInNew
import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material.icons.filled.VisibilityOff
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Divider
@ -47,6 +43,10 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import app.closer.R
import app.closer.core.navigation.ExternalLinks
import app.closer.ui.components.CloserGlyphs
import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material.icons.filled.VisibilityOff
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -64,7 +64,7 @@ fun PrivacyScreen(
navigationIcon = {
IconButton(onClick = { onNavigate("back") }) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = stringResource(R.string.action_back),
tint = SettingsInk
)

View File

@ -27,8 +27,6 @@ import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
@ -53,6 +51,7 @@ 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.ui.components.CloserGlyphs
data class RelationshipSettingsUiState(
val showLeaveConfirm: Boolean = false,
@ -136,7 +135,7 @@ fun RelationshipSettingsScreen(
navigationIcon = {
IconButton(onClick = { onNavigate("back") }) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = SettingsInk
)

View File

@ -20,7 +20,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Fingerprint
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
@ -60,6 +59,7 @@ import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import javax.inject.Inject
import app.closer.ui.components.CloserGlyphs
data class SecurityUiState(
val biometricLoginEnabled: Boolean = false,
@ -235,7 +235,7 @@ fun SecurityScreen(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(12.dp)
) {
Icon(Icons.Filled.Lock, contentDescription = null, tint = SettingsMuted)
Icon(CloserGlyphs.Lock, contentDescription = null, tint = SettingsMuted)
Text(
text = "Recovery phrase",
style = MaterialTheme.typography.bodyLarge,

View File

@ -22,17 +22,11 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.automirrored.filled.ArrowForwardIos
import androidx.compose.material.icons.automirrored.filled.TrendingUp
import androidx.compose.material.icons.filled.Done
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material.icons.filled.FavoriteBorder
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material.icons.filled.Notifications
import androidx.compose.material.icons.filled.Palette
import androidx.compose.material.icons.filled.Person
import androidx.compose.material.icons.filled.Warning
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card
@ -80,6 +74,7 @@ import app.closer.ui.settings.SettingsMuted
import app.closer.ui.settings.SettingsPrimaryDeep
import app.closer.ui.settings.SettingsSoft
import coil.compose.AsyncImage
import app.closer.ui.components.CloserGlyphs
// ====================
// Settings Subpages
@ -104,7 +99,7 @@ fun SettingsSubpage(
navigationIcon = {
IconButton(onClick = onBack) {
Icon(
Icons.AutoMirrored.Filled.ArrowBack,
CloserGlyphs.Back,
contentDescription = "Back",
tint = SettingsInk
)
@ -334,7 +329,7 @@ fun SettingsScreen(
) {
ProfileAvatar(
imageUrl = state.photoUrl,
fallbackIcon = Icons.Filled.Person,
fallbackIcon = CloserGlyphs.Person,
fallbackTint = SettingsPrimaryDeep
)
Column(
@ -358,7 +353,7 @@ fun SettingsScreen(
)
}
Icon(
Icons.AutoMirrored.Filled.ArrowForwardIos,
CloserGlyphs.Forward,
contentDescription = null,
modifier = Modifier.size(16.dp),
tint = SettingsPrimaryDeep
@ -400,7 +395,7 @@ fun SettingsScreen(
if (state.isPaired) {
ProfileAvatar(
imageUrl = state.partnerPhotoUrl,
fallbackIcon = Icons.Filled.Favorite,
fallbackIcon = CloserGlyphs.Heart,
fallbackTint = SettingsPrimaryDeep
)
} else {
@ -451,7 +446,7 @@ fun SettingsScreen(
}
}
Icon(
Icons.AutoMirrored.Filled.ArrowForwardIos,
CloserGlyphs.Forward,
contentDescription = null,
modifier = Modifier.size(16.dp),
tint = partnerAccent
@ -461,7 +456,7 @@ fun SettingsScreen(
SettingsSection(title = "For the two of you", accent = Color(0xFFF7C8E4)) {
SettingsRow(
icon = Icons.Filled.Favorite,
icon = CloserGlyphs.Heart,
label = "Together",
subtitle = "Your shared activity, answers, and milestones",
onClick = { onNavigate(AppRoute.ACTIVITY) },
@ -470,14 +465,14 @@ fun SettingsScreen(
SettingsSectionDivider()
if (app.closer.BuildConfig.DEBUG) {
SettingsRow(
icon = Icons.Filled.Favorite,
icon = CloserGlyphs.Heart,
label = "Art preview (debug)",
subtitle = "Preview celebration art without pairing",
onClick = { onNavigate(AppRoute.ART_PREVIEW) }
)
SettingsSectionDivider()
SettingsRow(
icon = Icons.Filled.Favorite,
icon = CloserGlyphs.Heart,
label = "Paired home (debug)",
subtitle = "Preview the paired Home without pairing",
onClick = { onNavigate(AppRoute.PAIRED_HOME_PREVIEW) }
@ -485,7 +480,7 @@ fun SettingsScreen(
SettingsSectionDivider()
}
SettingsRow(
icon = Icons.Filled.Done,
icon = CloserGlyphs.Check,
label = "Answer History",
subtitle = "Revisit the moments you have shared",
onClick = { onNavigate(AppRoute.ANSWER_HISTORY) }
@ -670,7 +665,7 @@ private fun SettingsRow(
}
}
Icon(
Icons.AutoMirrored.Filled.ArrowForwardIos,
CloserGlyphs.Forward,
contentDescription = null,
modifier = Modifier.size(14.dp),
tint = SettingsMuted

View File

@ -19,7 +19,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.OpenInNew
import androidx.compose.material.icons.filled.Check
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon
@ -70,6 +69,7 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import app.closer.ui.components.CloserGlyphs
private val BENEFITS = listOf(
"Unlimited questions every day",
@ -250,7 +250,7 @@ private fun PremiumContent(
verticalAlignment = Alignment.CenterVertically
) {
Icon(
imageVector = Icons.Filled.Check,
imageVector = CloserGlyphs.Check,
contentDescription = null,
tint = MaterialTheme.colorScheme.primary,
modifier = Modifier.size(16.dp)
@ -351,7 +351,7 @@ private fun FreeContent(
verticalAlignment = Alignment.CenterVertically
) {
Icon(
imageVector = Icons.Filled.Check,
imageVector = CloserGlyphs.Check,
contentDescription = null,
tint = MaterialTheme.colorScheme.primary,
modifier = Modifier.size(16.dp)

View File

@ -15,7 +15,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.automirrored.filled.ArrowForward
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.PlayArrow
import androidx.compose.material3.Button
@ -44,6 +43,7 @@ import app.closer.ui.components.CategoryGlyph
import app.closer.ui.questions.displayCategoryName
import app.closer.ui.theme.CloserPalette
import app.closer.ui.theme.closerBackgroundBrush
import app.closer.ui.components.CloserGlyphs
@Composable
fun CategoryPickerScreen(
@ -291,7 +291,7 @@ private fun CategoryCard(
}
}
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
imageVector = CloserGlyphs.Forward,
contentDescription = if (item.isLocked) "Unlock" else "Spin",
tint = if (item.isLocked) MaterialTheme.colorScheme.outline else CloserPalette.PurpleDeep,
modifier = Modifier.size(20.dp)

View File

@ -27,9 +27,6 @@ import androidx.compose.foundation.layout.size
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.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import app.closer.ui.components.CloserHeartLoader
@ -65,6 +62,7 @@ import androidx.hilt.navigation.compose.hiltViewModel
import app.closer.R
import app.closer.ui.theme.CloserPalette
import app.closer.ui.theme.closerBackgroundBrush
import app.closer.ui.components.CloserGlyphs
@Composable
fun SpinWheelScreen(
@ -126,7 +124,7 @@ private fun SpinWheelContent(
) {
IconButton(onClick = onBack) {
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
imageVector = CloserGlyphs.Back,
contentDescription = "Back",
tint = MaterialTheme.colorScheme.onBackground
)
@ -240,7 +238,7 @@ private fun SpinWheelContent(
) {
if (!state.hasPremium) {
Icon(
imageVector = Icons.Filled.Lock,
imageVector = CloserGlyphs.Lock,
contentDescription = null,
modifier = Modifier.size(14.dp)
)
@ -309,7 +307,7 @@ private fun ChooseCategoryButton(hasPremium: Boolean, onClick: () -> Unit) {
) {
if (!hasPremium) {
Icon(
imageVector = Icons.Filled.Lock,
imageVector = CloserGlyphs.Lock,
contentDescription = null,
modifier = Modifier.size(14.dp)
)

View File

@ -20,8 +20,6 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Check
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card
@ -67,6 +65,7 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import app.closer.ui.components.CloserGlyphs
// ── ViewModel ──────────────────────────────────────────────────────────────────
@ -277,7 +276,7 @@ private fun WheelWaitingContent(
Spacer(Modifier.weight(1f))
StatusGlyph(
icon = Icons.Filled.Check,
icon = CloserGlyphs.Check,
tint = CloserPalette.PurpleDeep,
container = CloserPalette.PurpleMist,
size = 82.dp,
@ -342,7 +341,7 @@ private fun WheelRevealContent(
verticalArrangement = Arrangement.spacedBy(8.dp)
) {
StatusGlyph(
icon = Icons.Filled.Check,
icon = CloserGlyphs.Check,
tint = CloserPalette.PurpleDeep,
container = CloserPalette.PurpleMist,
size = 72.dp,

View File

@ -18,9 +18,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card
@ -57,6 +54,7 @@ import app.closer.ui.questions.displayCategoryName
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
import app.closer.ui.components.CloserGlyphs
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@ -72,7 +70,7 @@ fun GameHistoryScreen(
title = { Text("Past Games") },
navigationIcon = {
IconButton(onClick = { onNavigate("back") }) {
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")
Icon(CloserGlyphs.Back, contentDescription = "Back")
}
}
)
@ -358,7 +356,7 @@ private fun GameHistoryLockedCard(onUnlock: () -> Unit) {
color = MaterialTheme.colorScheme.surfaceVariant
) {
Icon(
Icons.Filled.Lock,
CloserGlyphs.Lock,
contentDescription = null,
modifier = Modifier.padding(16.dp).size(28.dp),
tint = MaterialTheme.colorScheme.primary