diff --git a/app/src/main/java/app/closer/core/navigation/AppNavigation.kt b/app/src/main/java/app/closer/core/navigation/AppNavigation.kt index 84e1f6bd..b71a77b7 100644 --- a/app/src/main/java/app/closer/core/navigation/AppNavigation.kt +++ b/app/src/main/java/app/closer/core/navigation/AppNavigation.kt @@ -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" ) } diff --git a/app/src/main/java/app/closer/ui/answers/AnswerHistoryScreen.kt b/app/src/main/java/app/closer/ui/answers/AnswerHistoryScreen.kt index c15177ae..6987c6f6 100644 --- a/app/src/main/java/app/closer/ui/answers/AnswerHistoryScreen.kt +++ b/app/src/main/java/app/closer/ui/answers/AnswerHistoryScreen.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/auth/ForgotPasswordScreen.kt b/app/src/main/java/app/closer/ui/auth/ForgotPasswordScreen.kt index 96ab1cc2..4bd66211 100644 --- a/app/src/main/java/app/closer/ui/auth/ForgotPasswordScreen.kt +++ b/app/src/main/java/app/closer/ui/auth/ForgotPasswordScreen.kt @@ -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) ) diff --git a/app/src/main/java/app/closer/ui/auth/SignUpScreen.kt b/app/src/main/java/app/closer/ui/auth/SignUpScreen.kt index 6dd01750..6af16dd7 100644 --- a/app/src/main/java/app/closer/ui/auth/SignUpScreen.kt +++ b/app/src/main/java/app/closer/ui/auth/SignUpScreen.kt @@ -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 ) diff --git a/app/src/main/java/app/closer/ui/challenges/ConnectionChallengesScreen.kt b/app/src/main/java/app/closer/ui/challenges/ConnectionChallengesScreen.kt index 957e1414..078a3203 100644 --- a/app/src/main/java/app/closer/ui/challenges/ConnectionChallengesScreen.kt +++ b/app/src/main/java/app/closer/ui/challenges/ConnectionChallengesScreen.kt @@ -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", diff --git a/app/src/main/java/app/closer/ui/components/GamePromptBanner.kt b/app/src/main/java/app/closer/ui/components/GamePromptBanner.kt index 01b08aa4..76d72c46 100644 --- a/app/src/main/java/app/closer/ui/components/GamePromptBanner.kt +++ b/app/src/main/java/app/closer/ui/components/GamePromptBanner.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/components/MessageBubbleOverlay.kt b/app/src/main/java/app/closer/ui/components/MessageBubbleOverlay.kt index dae0c143..d09aa9a4 100644 --- a/app/src/main/java/app/closer/ui/components/MessageBubbleOverlay.kt +++ b/app/src/main/java/app/closer/ui/components/MessageBubbleOverlay.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/dates/BucketListScreen.kt b/app/src/main/java/app/closer/ui/dates/BucketListScreen.kt index fc283740..53a47edb 100644 --- a/app/src/main/java/app/closer/ui/dates/BucketListScreen.kt +++ b/app/src/main/java/app/closer/ui/dates/BucketListScreen.kt @@ -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 ) diff --git a/app/src/main/java/app/closer/ui/dates/DateBuilderScreen.kt b/app/src/main/java/app/closer/ui/dates/DateBuilderScreen.kt index 5e1fed63..8af979b4 100644 --- a/app/src/main/java/app/closer/ui/dates/DateBuilderScreen.kt +++ b/app/src/main/java/app/closer/ui/dates/DateBuilderScreen.kt @@ -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 ) diff --git a/app/src/main/java/app/closer/ui/dates/DateMatchScreen.kt b/app/src/main/java/app/closer/ui/dates/DateMatchScreen.kt index 0c455d28..5f501cde 100644 --- a/app/src/main/java/app/closer/ui/dates/DateMatchScreen.kt +++ b/app/src/main/java/app/closer/ui/dates/DateMatchScreen.kt @@ -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), diff --git a/app/src/main/java/app/closer/ui/dates/DateMatchesScreen.kt b/app/src/main/java/app/closer/ui/dates/DateMatchesScreen.kt index 0e8698ce..a99c9a99 100644 --- a/app/src/main/java/app/closer/ui/dates/DateMatchesScreen.kt +++ b/app/src/main/java/app/closer/ui/dates/DateMatchesScreen.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/desiresync/DesireSyncScreen.kt b/app/src/main/java/app/closer/ui/desiresync/DesireSyncScreen.kt index 7c9b44b0..451e8b48 100644 --- a/app/src/main/java/app/closer/ui/desiresync/DesireSyncScreen.kt +++ b/app/src/main/java/app/closer/ui/desiresync/DesireSyncScreen.kt @@ -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, diff --git a/app/src/main/java/app/closer/ui/home/PartnerHomeScreen.kt b/app/src/main/java/app/closer/ui/home/PartnerHomeScreen.kt index 8a4c4a15..b96b3513 100644 --- a/app/src/main/java/app/closer/ui/home/PartnerHomeScreen.kt +++ b/app/src/main/java/app/closer/ui/home/PartnerHomeScreen.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/howwell/HowWellScreen.kt b/app/src/main/java/app/closer/ui/howwell/HowWellScreen.kt index 423b1dbb..bc9f3265 100644 --- a/app/src/main/java/app/closer/ui/howwell/HowWellScreen.kt +++ b/app/src/main/java/app/closer/ui/howwell/HowWellScreen.kt @@ -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 ) diff --git a/app/src/main/java/app/closer/ui/memorylane/MemoryLaneScreen.kt b/app/src/main/java/app/closer/ui/memorylane/MemoryLaneScreen.kt index 6d56aa0c..9da42937 100644 --- a/app/src/main/java/app/closer/ui/memorylane/MemoryLaneScreen.kt +++ b/app/src/main/java/app/closer/ui/memorylane/MemoryLaneScreen.kt @@ -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)}", diff --git a/app/src/main/java/app/closer/ui/messages/ConversationScreen.kt b/app/src/main/java/app/closer/ui/messages/ConversationScreen.kt index 72351d33..d55d74aa 100644 --- a/app/src/main/java/app/closer/ui/messages/ConversationScreen.kt +++ b/app/src/main/java/app/closer/ui/messages/ConversationScreen.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/messages/MessagesInboxScreen.kt b/app/src/main/java/app/closer/ui/messages/MessagesInboxScreen.kt index d49d7ffd..ed68049d 100644 --- a/app/src/main/java/app/closer/ui/messages/MessagesInboxScreen.kt +++ b/app/src/main/java/app/closer/ui/messages/MessagesInboxScreen.kt @@ -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) } } diff --git a/app/src/main/java/app/closer/ui/messages/components/ChatComponents.kt b/app/src/main/java/app/closer/ui/messages/components/ChatComponents.kt index ab6fa3dc..4ddca48b 100644 --- a/app/src/main/java/app/closer/ui/messages/components/ChatComponents.kt +++ b/app/src/main/java/app/closer/ui/messages/components/ChatComponents.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/onboarding/CreateProfileScreen.kt b/app/src/main/java/app/closer/ui/onboarding/CreateProfileScreen.kt index a42c9c20..aaff74f9 100644 --- a/app/src/main/java/app/closer/ui/onboarding/CreateProfileScreen.kt +++ b/app/src/main/java/app/closer/ui/onboarding/CreateProfileScreen.kt @@ -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 diff --git a/app/src/main/java/app/closer/ui/outcomes/YourProgressScreen.kt b/app/src/main/java/app/closer/ui/outcomes/YourProgressScreen.kt index d72d84af..074afa2d 100644 --- a/app/src/main/java/app/closer/ui/outcomes/YourProgressScreen.kt +++ b/app/src/main/java/app/closer/ui/outcomes/YourProgressScreen.kt @@ -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 ) diff --git a/app/src/main/java/app/closer/ui/pairing/AcceptInviteScreen.kt b/app/src/main/java/app/closer/ui/pairing/AcceptInviteScreen.kt index 4a1bf72f..b18021ea 100644 --- a/app/src/main/java/app/closer/ui/pairing/AcceptInviteScreen.kt +++ b/app/src/main/java/app/closer/ui/pairing/AcceptInviteScreen.kt @@ -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 ) diff --git a/app/src/main/java/app/closer/ui/pairing/CreateInviteScreen.kt b/app/src/main/java/app/closer/ui/pairing/CreateInviteScreen.kt index 5b17a9ce..8907006f 100644 --- a/app/src/main/java/app/closer/ui/pairing/CreateInviteScreen.kt +++ b/app/src/main/java/app/closer/ui/pairing/CreateInviteScreen.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/pairing/InviteConfirmScreen.kt b/app/src/main/java/app/closer/ui/pairing/InviteConfirmScreen.kt index 85dce986..bb6fa977 100644 --- a/app/src/main/java/app/closer/ui/pairing/InviteConfirmScreen.kt +++ b/app/src/main/java/app/closer/ui/pairing/InviteConfirmScreen.kt @@ -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 ) diff --git a/app/src/main/java/app/closer/ui/pairing/PairPromptScreen.kt b/app/src/main/java/app/closer/ui/pairing/PairPromptScreen.kt index 57185477..1acfa849 100644 --- a/app/src/main/java/app/closer/ui/pairing/PairPromptScreen.kt +++ b/app/src/main/java/app/closer/ui/pairing/PairPromptScreen.kt @@ -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 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 54679fff..45e42a1f 100644 --- a/app/src/main/java/app/closer/ui/pairing/PairingSuccessScreen.kt +++ b/app/src/main/java/app/closer/ui/pairing/PairingSuccessScreen.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/pairing/RecoveryScreen.kt b/app/src/main/java/app/closer/ui/pairing/RecoveryScreen.kt index 1abad798..2bb68c2d 100644 --- a/app/src/main/java/app/closer/ui/pairing/RecoveryScreen.kt +++ b/app/src/main/java/app/closer/ui/pairing/RecoveryScreen.kt @@ -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) ) diff --git a/app/src/main/java/app/closer/ui/paywall/PaywallScreen.kt b/app/src/main/java/app/closer/ui/paywall/PaywallScreen.kt index a32a438b..f0fff517 100644 --- a/app/src/main/java/app/closer/ui/paywall/PaywallScreen.kt +++ b/app/src/main/java/app/closer/ui/paywall/PaywallScreen.kt @@ -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", diff --git a/app/src/main/java/app/closer/ui/play/PlayHubScreen.kt b/app/src/main/java/app/closer/ui/play/PlayHubScreen.kt index db199703..052961b7 100644 --- a/app/src/main/java/app/closer/ui/play/PlayHubScreen.kt +++ b/app/src/main/java/app/closer/ui/play/PlayHubScreen.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/questions/LocalQuestionContent.kt b/app/src/main/java/app/closer/ui/questions/LocalQuestionContent.kt index a989a0be..b6c470d0 100644 --- a/app/src/main/java/app/closer/ui/questions/LocalQuestionContent.kt +++ b/app/src/main/java/app/closer/ui/questions/LocalQuestionContent.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/questions/QuestionCategoryScreen.kt b/app/src/main/java/app/closer/ui/questions/QuestionCategoryScreen.kt index ead42eed..b902233b 100644 --- a/app/src/main/java/app/closer/ui/questions/QuestionCategoryScreen.kt +++ b/app/src/main/java/app/closer/ui/questions/QuestionCategoryScreen.kt @@ -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 ) diff --git a/app/src/main/java/app/closer/ui/questions/QuestionThreadScreen.kt b/app/src/main/java/app/closer/ui/questions/QuestionThreadScreen.kt index 4f9456bb..71efa370 100644 --- a/app/src/main/java/app/closer/ui/questions/QuestionThreadScreen.kt +++ b/app/src/main/java/app/closer/ui/questions/QuestionThreadScreen.kt @@ -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" ) } diff --git a/app/src/main/java/app/closer/ui/questions/components/AnswerBubble.kt b/app/src/main/java/app/closer/ui/questions/components/AnswerBubble.kt index 530aa254..91e18017 100644 --- a/app/src/main/java/app/closer/ui/questions/components/AnswerBubble.kt +++ b/app/src/main/java/app/closer/ui/questions/components/AnswerBubble.kt @@ -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("❤️", "😊", "😂", "😮", "👏", "🥺") diff --git a/app/src/main/java/app/closer/ui/questions/components/QuestionDiscussionThread.kt b/app/src/main/java/app/closer/ui/questions/components/QuestionDiscussionThread.kt index 1b16b125..98571f4c 100644 --- a/app/src/main/java/app/closer/ui/questions/components/QuestionDiscussionThread.kt +++ b/app/src/main/java/app/closer/ui/questions/components/QuestionDiscussionThread.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/questions/components/QuestionHelpExpandable.kt b/app/src/main/java/app/closer/ui/questions/components/QuestionHelpExpandable.kt index 2a1374cb..239c8a51 100644 --- a/app/src/main/java/app/closer/ui/questions/components/QuestionHelpExpandable.kt +++ b/app/src/main/java/app/closer/ui/questions/components/QuestionHelpExpandable.kt @@ -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( diff --git a/app/src/main/java/app/closer/ui/questions/components/QuestionNavigationBar.kt b/app/src/main/java/app/closer/ui/questions/components/QuestionNavigationBar.kt index 611ed383..78bab1b7 100644 --- a/app/src/main/java/app/closer/ui/questions/components/QuestionNavigationBar.kt +++ b/app/src/main/java/app/closer/ui/questions/components/QuestionNavigationBar.kt @@ -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) ) diff --git a/app/src/main/java/app/closer/ui/settings/AccountScreen.kt b/app/src/main/java/app/closer/ui/settings/AccountScreen.kt index 9ed0979a..9f7aa946 100644 --- a/app/src/main/java/app/closer/ui/settings/AccountScreen.kt +++ b/app/src/main/java/app/closer/ui/settings/AccountScreen.kt @@ -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 diff --git a/app/src/main/java/app/closer/ui/settings/AppearanceScreen.kt b/app/src/main/java/app/closer/ui/settings/AppearanceScreen.kt index bd7d356d..5265d87d 100644 --- a/app/src/main/java/app/closer/ui/settings/AppearanceScreen.kt +++ b/app/src/main/java/app/closer/ui/settings/AppearanceScreen.kt @@ -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 ) diff --git a/app/src/main/java/app/closer/ui/settings/DeleteAccountScreen.kt b/app/src/main/java/app/closer/ui/settings/DeleteAccountScreen.kt index ed0eb171..0a4ed910 100644 --- a/app/src/main/java/app/closer/ui/settings/DeleteAccountScreen.kt +++ b/app/src/main/java/app/closer/ui/settings/DeleteAccountScreen.kt @@ -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 ) diff --git a/app/src/main/java/app/closer/ui/settings/EditProfileScreen.kt b/app/src/main/java/app/closer/ui/settings/EditProfileScreen.kt index 24836b67..b7ce855b 100644 --- a/app/src/main/java/app/closer/ui/settings/EditProfileScreen.kt +++ b/app/src/main/java/app/closer/ui/settings/EditProfileScreen.kt @@ -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 diff --git a/app/src/main/java/app/closer/ui/settings/NotificationSettingsScreen.kt b/app/src/main/java/app/closer/ui/settings/NotificationSettingsScreen.kt index fd3cfc7d..a6657070 100644 --- a/app/src/main/java/app/closer/ui/settings/NotificationSettingsScreen.kt +++ b/app/src/main/java/app/closer/ui/settings/NotificationSettingsScreen.kt @@ -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 ) diff --git a/app/src/main/java/app/closer/ui/settings/PrivacyScreen.kt b/app/src/main/java/app/closer/ui/settings/PrivacyScreen.kt index d32e82c1..a594fa06 100644 --- a/app/src/main/java/app/closer/ui/settings/PrivacyScreen.kt +++ b/app/src/main/java/app/closer/ui/settings/PrivacyScreen.kt @@ -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 ) diff --git a/app/src/main/java/app/closer/ui/settings/RelationshipSettingsScreen.kt b/app/src/main/java/app/closer/ui/settings/RelationshipSettingsScreen.kt index c634617e..001772f8 100644 --- a/app/src/main/java/app/closer/ui/settings/RelationshipSettingsScreen.kt +++ b/app/src/main/java/app/closer/ui/settings/RelationshipSettingsScreen.kt @@ -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 ) diff --git a/app/src/main/java/app/closer/ui/settings/SecurityScreen.kt b/app/src/main/java/app/closer/ui/settings/SecurityScreen.kt index 5ddb6d27..2023690c 100644 --- a/app/src/main/java/app/closer/ui/settings/SecurityScreen.kt +++ b/app/src/main/java/app/closer/ui/settings/SecurityScreen.kt @@ -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, diff --git a/app/src/main/java/app/closer/ui/settings/SettingsScreen.kt b/app/src/main/java/app/closer/ui/settings/SettingsScreen.kt index 323ea900..d1385b32 100644 --- a/app/src/main/java/app/closer/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/app/closer/ui/settings/SettingsScreen.kt @@ -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 diff --git a/app/src/main/java/app/closer/ui/settings/SubscriptionScreen.kt b/app/src/main/java/app/closer/ui/settings/SubscriptionScreen.kt index e8d9dc1d..06b90af9 100644 --- a/app/src/main/java/app/closer/ui/settings/SubscriptionScreen.kt +++ b/app/src/main/java/app/closer/ui/settings/SubscriptionScreen.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/wheel/CategoryPickerScreen.kt b/app/src/main/java/app/closer/ui/wheel/CategoryPickerScreen.kt index 0333d0c2..78a72fa2 100644 --- a/app/src/main/java/app/closer/ui/wheel/CategoryPickerScreen.kt +++ b/app/src/main/java/app/closer/ui/wheel/CategoryPickerScreen.kt @@ -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) diff --git a/app/src/main/java/app/closer/ui/wheel/SpinWheelScreen.kt b/app/src/main/java/app/closer/ui/wheel/SpinWheelScreen.kt index 612c4601..469da087 100644 --- a/app/src/main/java/app/closer/ui/wheel/SpinWheelScreen.kt +++ b/app/src/main/java/app/closer/ui/wheel/SpinWheelScreen.kt @@ -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) ) diff --git a/app/src/main/java/app/closer/ui/wheel/WheelCompleteScreen.kt b/app/src/main/java/app/closer/ui/wheel/WheelCompleteScreen.kt index 0b24c726..1c794a60 100644 --- a/app/src/main/java/app/closer/ui/wheel/WheelCompleteScreen.kt +++ b/app/src/main/java/app/closer/ui/wheel/WheelCompleteScreen.kt @@ -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, diff --git a/app/src/main/java/app/closer/ui/wheel/WheelHistoryScreen.kt b/app/src/main/java/app/closer/ui/wheel/WheelHistoryScreen.kt index 4fca2cb1..d8d6cbf5 100644 --- a/app/src/main/java/app/closer/ui/wheel/WheelHistoryScreen.kt +++ b/app/src/main/java/app/closer/ui/wheel/WheelHistoryScreen.kt @@ -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