feat(android): brand glyph migration sweep 2 — migrate remaining Material icons to CloserGlyphs catalog

This commit is contained in:
null 2026-06-28 17:52:49 -05:00
parent c3092ad8f6
commit 3ae3f36ad4
29 changed files with 68 additions and 157 deletions

View File

@ -24,8 +24,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Visibility
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
@ -383,7 +381,7 @@ private fun HistoryStateBadge(isRevealed: Boolean) {
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Icon( Icon(
imageVector = if (isRevealed) Icons.Filled.Visibility else CloserGlyphs.Lock, imageVector = if (isRevealed) CloserGlyphs.Eye else CloserGlyphs.Lock,
contentDescription = null, contentDescription = null,
tint = tint, tint = tint,
modifier = Modifier.size(14.dp) modifier = Modifier.size(14.dp)

View File

@ -23,9 +23,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Visibility
import androidx.compose.material.icons.filled.VisibilityOff
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@ -60,6 +57,7 @@ import androidx.hilt.navigation.compose.hiltViewModel
import app.closer.core.navigation.AppRoute import app.closer.core.navigation.AppRoute
import app.closer.ui.components.BrandMessageRotator import app.closer.ui.components.BrandMessageRotator
import app.closer.ui.components.CloserHeartLoader import app.closer.ui.components.CloserHeartLoader
import app.closer.ui.components.CloserGlyphs
@Composable @Composable
fun LoginScreen( fun LoginScreen(
@ -152,7 +150,7 @@ fun LoginScreen(
trailingIcon = { trailingIcon = {
IconButton(onClick = viewModel::togglePasswordVisibility) { IconButton(onClick = viewModel::togglePasswordVisibility) {
Icon( Icon(
imageVector = if (state.isPasswordVisible) Icons.Filled.VisibilityOff else Icons.Filled.Visibility, imageVector = if (state.isPasswordVisible) CloserGlyphs.EyeOff else CloserGlyphs.Eye,
contentDescription = if (state.isPasswordVisible) "Hide password" else "Show password" contentDescription = if (state.isPasswordVisible) "Hide password" else "Show password"
) )
} }

View File

@ -23,9 +23,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Visibility
import androidx.compose.material.icons.filled.VisibilityOff
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import app.closer.ui.components.BrandMessageRotator import app.closer.ui.components.BrandMessageRotator
@ -167,7 +164,7 @@ fun SignUpScreen(
trailingIcon = { trailingIcon = {
IconButton(onClick = viewModel::togglePasswordVisibility) { IconButton(onClick = viewModel::togglePasswordVisibility) {
Icon( Icon(
if (state.isPasswordVisible) Icons.Filled.VisibilityOff else Icons.Filled.Visibility, if (state.isPasswordVisible) CloserGlyphs.EyeOff else CloserGlyphs.Eye,
contentDescription = if (state.isPasswordVisible) "Hide password" else "Show password" contentDescription = if (state.isPasswordVisible) "Hide password" else "Show password"
) )
} }

View File

@ -17,8 +17,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.PlayArrow
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@ -152,7 +150,7 @@ private fun GamePromptCard(
) )
} else { } else {
Icon( Icon(
imageVector = Icons.Filled.PlayArrow, imageVector = CloserGlyphs.Play,
contentDescription = null, contentDescription = null,
tint = Color.White, tint = Color.White,
modifier = Modifier.size(22.dp) modifier = Modifier.size(22.dp)
@ -181,7 +179,7 @@ private fun GamePromptCard(
), ),
shape = RoundedCornerShape(14.dp) shape = RoundedCornerShape(14.dp)
) { ) {
Icon(Icons.Filled.PlayArrow, contentDescription = null, modifier = Modifier.size(18.dp)) Icon(CloserGlyphs.Play, contentDescription = null, modifier = Modifier.size(18.dp))
Text( Text(
text = "Join", text = "Join",
style = MaterialTheme.typography.labelLarge.copy(fontWeight = FontWeight.Bold), style = MaterialTheme.typography.labelLarge.copy(fontWeight = FontWeight.Bold),

View File

@ -6,8 +6,6 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Image
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
@ -46,7 +44,7 @@ fun IllustrationPlaceholder(
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
Icon( Icon(
imageVector = Icons.Filled.Image, imageVector = CloserGlyphs.Photo,
contentDescription = null, contentDescription = null,
tint = CloserPalette.PurpleRich, tint = CloserPalette.PurpleRich,
modifier = Modifier.size(40.dp) modifier = Modifier.size(40.dp)

View File

@ -11,8 +11,6 @@ import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.Chat
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
@ -159,7 +157,7 @@ fun MessageBubbleOverlay(
) )
} else { } else {
Icon( Icon(
imageVector = Icons.AutoMirrored.Filled.Chat, imageVector = CloserGlyphs.Chat,
contentDescription = "Open conversation", contentDescription = "Open conversation",
tint = Color.White, tint = Color.White,
modifier = Modifier.size(26.dp) modifier = Modifier.size(26.dp)

View File

@ -11,9 +11,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Cake
import androidx.compose.material.icons.filled.CardGiftcard
import androidx.compose.material3.Card import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@ -103,7 +100,7 @@ fun SpecialDatesSection(
} }
Icon( Icon(
imageVector = Icons.Filled.CardGiftcard, imageVector = CloserGlyphs.CardGiftcard,
contentDescription = null, contentDescription = null,
tint = Purple, tint = Purple,
modifier = Modifier.size(24.dp) modifier = Modifier.size(24.dp)
@ -145,7 +142,7 @@ private fun BirthdayRow(name: String, day: String, month: String) {
) )
Icon( Icon(
imageVector = Icons.Filled.Cake, imageVector = CloserGlyphs.Cake,
contentDescription = null, contentDescription = null,
tint = Purple.copy(alpha = 0.7f), tint = Purple.copy(alpha = 0.7f),
modifier = Modifier.size(20.dp) modifier = Modifier.size(20.dp)

View File

@ -25,10 +25,6 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material.icons.filled.FavoriteBorder
import androidx.compose.material.icons.filled.Sync
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card import androidx.compose.material3.Card
@ -559,7 +555,7 @@ private fun DSIntroScreen(total: Int, onReady: () -> Unit) {
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
StatusGlyph( StatusGlyph(
icon = Icons.Filled.FavoriteBorder, icon = CloserGlyphs.HeartOutline,
tint = CloserPalette.Romantic, tint = CloserPalette.Romantic,
container = CloserPalette.Romantic.copy(alpha = 0.12f) container = CloserPalette.Romantic.copy(alpha = 0.12f)
) )
@ -786,7 +782,7 @@ private fun DSRevealScreen(
verticalArrangement = Arrangement.spacedBy(10.dp) verticalArrangement = Arrangement.spacedBy(10.dp)
) { ) {
StatusGlyph( StatusGlyph(
icon = if (matches.isEmpty()) Icons.Filled.FavoriteBorder else CloserGlyphs.Heart, icon = if (matches.isEmpty()) CloserGlyphs.HeartOutline else CloserGlyphs.Heart,
tint = CloserPalette.Romantic, tint = CloserPalette.Romantic,
container = CloserPalette.Romantic.copy(alpha = 0.12f), container = CloserPalette.Romantic.copy(alpha = 0.12f),
size = 82.dp, size = 82.dp,
@ -916,7 +912,7 @@ private fun DesireRevealMeter(
modifier = Modifier.weight(1f) modifier = Modifier.weight(1f)
) )
StatusGlyph( StatusGlyph(
icon = Icons.Filled.Sync, icon = CloserGlyphs.Sync,
tint = CloserPalette.Romantic, tint = CloserPalette.Romantic,
container = CloserPalette.Romantic.copy(alpha = 0.12f), container = CloserPalette.Romantic.copy(alpha = 0.12f),
size = 38.dp, size = 38.dp,

View File

@ -18,10 +18,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.HourglassEmpty
import androidx.compose.material.icons.filled.LocalFireDepartment
import androidx.compose.material.icons.filled.NotificationsNone
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
@ -361,7 +357,7 @@ private fun PartnerIdentityCard(
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Icon( Icon(
imageVector = Icons.Filled.LocalFireDepartment, imageVector = CloserGlyphs.Streak,
contentDescription = null, contentDescription = null,
tint = CloserPalette.PinkAccentDeep, tint = CloserPalette.PinkAccentDeep,
modifier = Modifier.size(15.dp) modifier = Modifier.size(15.dp)
@ -422,7 +418,7 @@ private fun PartnerActivityCard(
) { ) {
Box(contentAlignment = Alignment.Center) { Box(contentAlignment = Alignment.Center) {
Icon( Icon(
imageVector = if (hasAnsweredToday) CloserGlyphs.Check else Icons.Filled.HourglassEmpty, imageVector = if (hasAnsweredToday) CloserGlyphs.Check else CloserGlyphs.Hourglass,
contentDescription = null, contentDescription = null,
tint = if (hasAnsweredToday) CloserPalette.PurpleDeep else MaterialTheme.colorScheme.onSurfaceVariant, tint = if (hasAnsweredToday) CloserPalette.PurpleDeep else MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.size(20.dp) modifier = Modifier.size(20.dp)
@ -457,7 +453,7 @@ private fun PartnerActivityCard(
) )
) { ) {
Icon( Icon(
Icons.Filled.NotificationsNone, CloserGlyphs.Bell,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(16.dp) modifier = Modifier.size(16.dp)
) )

View File

@ -25,9 +25,6 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Psychology
import androidx.compose.material.icons.filled.Sync
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card import androidx.compose.material3.Card
@ -609,7 +606,7 @@ private fun PlayerIntroScreen(
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
StatusGlyph( StatusGlyph(
icon = if (amSubject) CloserGlyphs.Person else Icons.Filled.Psychology, icon = if (amSubject) CloserGlyphs.Person else CloserGlyphs.Psychology,
tint = CloserPalette.PurpleDeep, tint = CloserPalette.PurpleDeep,
container = CloserPalette.PurpleMist container = CloserPalette.PurpleMist
) )
@ -657,7 +654,7 @@ private fun HowWellWaitingScreen(amSubject: Boolean, partnerName: String, onBack
) { ) {
Spacer(Modifier.weight(1f)) Spacer(Modifier.weight(1f))
StatusGlyph( StatusGlyph(
icon = Icons.Filled.Sync, icon = CloserGlyphs.Sync,
tint = CloserPalette.PurpleDeep, tint = CloserPalette.PurpleDeep,
container = CloserPalette.PurpleMist container = CloserPalette.PurpleMist
) )

View File

@ -24,12 +24,6 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material.icons.filled.Edit
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material.icons.filled.LockOpen
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
@ -536,7 +530,7 @@ private fun CapsuleListScreen(
} }
IconButton(onClick = onNew) { IconButton(onClick = onNew) {
Surface(shape = RoundedCornerShape(12.dp), color = CloserPalette.PurpleDeep) { Surface(shape = RoundedCornerShape(12.dp), color = CloserPalette.PurpleDeep) {
Icon(Icons.Filled.Add, contentDescription = "New capsule", tint = Color.White, modifier = Modifier.padding(6.dp).size(20.dp)) Icon(CloserGlyphs.Add, contentDescription = "New capsule", tint = Color.White, modifier = Modifier.padding(6.dp).size(20.dp))
} }
} }
} }
@ -570,7 +564,7 @@ private fun CapsuleListScreen(
} }
item { item {
TextButton(onClick = onNew, modifier = Modifier.fillMaxWidth()) { TextButton(onClick = onNew, modifier = Modifier.fillMaxWidth()) {
Icon(Icons.Filled.Add, contentDescription = null, modifier = Modifier.size(16.dp)) Icon(CloserGlyphs.Add, contentDescription = null, modifier = Modifier.size(16.dp))
Spacer(Modifier.width(6.dp)) Spacer(Modifier.width(6.dp))
Text("Add another capsule") Text("Add another capsule")
} }
@ -605,7 +599,7 @@ private fun CapsuleCard(capsule: TimeCapsule, onClick: () -> Unit) {
) { ) {
Box(contentAlignment = Alignment.Center) { Box(contentAlignment = Alignment.Center) {
Icon( Icon(
imageVector = if (unlocked) Icons.Filled.LockOpen else CloserGlyphs.Lock, imageVector = if (unlocked) CloserGlyphs.LockOpen else CloserGlyphs.Lock,
contentDescription = null, contentDescription = null,
tint = if (unlocked) CloserPalette.Evergreen else CloserPalette.PurpleDeep, tint = if (unlocked) CloserPalette.Evergreen else CloserPalette.PurpleDeep,
modifier = Modifier.size(22.dp) modifier = Modifier.size(22.dp)
@ -843,13 +837,13 @@ private fun CapsuleDetailScreen(
} }
if (onEdit != null) { if (onEdit != null) {
IconButton(onClick = onEdit, enabled = !isDeleting) { IconButton(onClick = onEdit, enabled = !isDeleting) {
Icon(Icons.Filled.Edit, contentDescription = "Edit", tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(20.dp)) Icon(CloserGlyphs.Edit, contentDescription = "Edit", tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(20.dp))
} }
} }
if (onDelete != null) { if (onDelete != null) {
IconButton(onClick = onDelete, enabled = !isDeleting) { IconButton(onClick = onDelete, enabled = !isDeleting) {
if (isDeleting) CloserHeartLoader(size = 20.dp) if (isDeleting) CloserHeartLoader(size = 20.dp)
else Icon(Icons.Filled.Delete, contentDescription = "Delete", tint = MaterialTheme.colorScheme.error.copy(alpha = 0.7f), modifier = Modifier.size(20.dp)) else Icon(CloserGlyphs.Trash, contentDescription = "Delete", tint = MaterialTheme.colorScheme.error.copy(alpha = 0.7f), modifier = Modifier.size(20.dp))
} }
} }
} }
@ -859,7 +853,7 @@ private fun CapsuleDetailScreen(
item { item {
Surface(shape = RoundedCornerShape(999.dp), color = CloserPalette.Evergreen.copy(alpha = 0.12f)) { Surface(shape = RoundedCornerShape(999.dp), color = CloserPalette.Evergreen.copy(alpha = 0.12f)) {
Row(modifier = Modifier.padding(horizontal = 12.dp, vertical = 6.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(6.dp)) { Row(modifier = Modifier.padding(horizontal = 12.dp, vertical = 6.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(6.dp)) {
Icon(Icons.Filled.LockOpen, contentDescription = null, tint = CloserPalette.Evergreen, modifier = Modifier.size(14.dp)) Icon(CloserGlyphs.LockOpen, contentDescription = null, tint = CloserPalette.Evergreen, modifier = Modifier.size(14.dp))
Text("Opened ${formatDate(capsule.unlockAt)}", style = MaterialTheme.typography.labelSmall, color = CloserPalette.Evergreen, fontWeight = FontWeight.SemiBold) Text("Opened ${formatDate(capsule.unlockAt)}", style = MaterialTheme.typography.labelSmall, color = CloserPalette.Evergreen, fontWeight = FontWeight.SemiBold)
} }
} }

View File

@ -16,8 +16,6 @@ import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Refresh
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@ -219,7 +217,7 @@ private fun PendingMediaChip(
color = MaterialTheme.colorScheme.error color = MaterialTheme.colorScheme.error
) )
IconButton(onClick = onRetry, modifier = Modifier.size(48.dp)) { IconButton(onClick = onRetry, modifier = Modifier.size(48.dp)) {
Icon(Icons.Filled.Refresh, contentDescription = "Retry", tint = MaterialTheme.colorScheme.primary) Icon(CloserGlyphs.Refresh, contentDescription = "Retry", tint = MaterialTheme.colorScheme.primary)
} }
IconButton(onClick = onDismiss, modifier = Modifier.size(48.dp)) { IconButton(onClick = onDismiss, modifier = Modifier.size(48.dp)) {
Icon(CloserGlyphs.Close, contentDescription = "Dismiss", tint = MaterialTheme.colorScheme.onSurfaceVariant) Icon(CloserGlyphs.Close, contentDescription = "Dismiss", tint = MaterialTheme.colorScheme.onSurfaceVariant)

View File

@ -29,15 +29,6 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape 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.ContentCopy
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material.icons.filled.Image
import androidx.compose.material.icons.filled.Mic
import androidx.compose.material.icons.filled.Pause
import androidx.compose.material.icons.filled.PhotoCamera
import androidx.compose.material.icons.filled.PlayArrow
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
@ -253,14 +244,14 @@ private fun MessageActionMenu(
DropdownMenuItem( DropdownMenuItem(
text = { Text("Copy") }, text = { Text("Copy") },
onClick = onCopy, onClick = onCopy,
leadingIcon = { Icon(Icons.Filled.ContentCopy, contentDescription = null) } leadingIcon = { Icon(CloserGlyphs.Copy, contentDescription = null) }
) )
} }
if (canDelete) { if (canDelete) {
DropdownMenuItem( DropdownMenuItem(
text = { Text("Delete") }, text = { Text("Delete") },
onClick = onDelete, onClick = onDelete,
leadingIcon = { Icon(Icons.Filled.Delete, contentDescription = null) } leadingIcon = { Icon(CloserGlyphs.Trash, contentDescription = null) }
) )
} }
} }
@ -469,7 +460,7 @@ private fun EncryptedVoiceMessage(
CircularProgressIndicator(strokeWidth = 2.dp, modifier = Modifier.size(20.dp), color = tint) CircularProgressIndicator(strokeWidth = 2.dp, modifier = Modifier.size(20.dp), color = tint)
} else { } else {
Icon( Icon(
imageVector = if (playing) Icons.Filled.Pause else Icons.Filled.PlayArrow, imageVector = if (playing) CloserGlyphs.Pause else CloserGlyphs.Play,
contentDescription = if (playing) "Pause" else "Play", contentDescription = if (playing) "Pause" else "Play",
tint = tint tint = tint
) )
@ -637,7 +628,7 @@ fun ChatComposer(
modifier = Modifier.weight(1f) modifier = Modifier.weight(1f)
) )
IconButton(onClick = { finishRecording(send = true) }, modifier = Modifier.size(48.dp)) { IconButton(onClick = { finishRecording(send = true) }, modifier = Modifier.size(48.dp)) {
Icon(Icons.AutoMirrored.Filled.Send, contentDescription = "Send", tint = MaterialTheme.colorScheme.primary) Icon(CloserGlyphs.Send, contentDescription = "Send", tint = MaterialTheme.colorScheme.primary)
} }
} }
return return
@ -649,14 +640,14 @@ fun ChatComposer(
horizontalArrangement = Arrangement.spacedBy(2.dp) horizontalArrangement = Arrangement.spacedBy(2.dp)
) { ) {
ComposerMediaButton( ComposerMediaButton(
icon = Icons.Filled.Image, icon = CloserGlyphs.Photo,
description = "Send a photo", description = "Send a photo",
locked = !canSendMedia, locked = !canSendMedia,
onClick = { galleryLauncher.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)) }, onClick = { galleryLauncher.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)) },
onUpgrade = onUpgrade onUpgrade = onUpgrade
) )
ComposerMediaButton( ComposerMediaButton(
icon = Icons.Filled.PhotoCamera, icon = CloserGlyphs.Camera,
description = "Take a photo", description = "Take a photo",
locked = !canSendMedia, locked = !canSendMedia,
onClick = { onClick = {
@ -686,7 +677,7 @@ fun ChatComposer(
if (value.isBlank()) { if (value.isBlank()) {
// Mic when there's nothing typed (tap to record a voice note) — gated behind premium. // Mic when there's nothing typed (tap to record a voice note) — gated behind premium.
ComposerMediaButton( ComposerMediaButton(
icon = Icons.Filled.Mic, icon = CloserGlyphs.Mic,
description = "Record a voice note", description = "Record a voice note",
locked = !canSendMedia, locked = !canSendMedia,
size = 48.dp, size = 48.dp,
@ -698,7 +689,7 @@ fun ChatComposer(
) )
} else { } else {
IconButton(onClick = onSend, modifier = Modifier.size(48.dp)) { IconButton(onClick = onSend, modifier = Modifier.size(48.dp)) {
Icon(Icons.AutoMirrored.Filled.Send, contentDescription = "Send", tint = MaterialTheme.colorScheme.primary) Icon(CloserGlyphs.Send, contentDescription = "Send", tint = MaterialTheme.colorScheme.primary)
} }
} }
} }

View File

@ -27,9 +27,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AddAPhoto
import androidx.compose.material.icons.filled.PhotoLibrary
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import app.closer.ui.components.CloserHeartLoader import app.closer.ui.components.CloserHeartLoader
@ -416,7 +413,7 @@ private fun PhotoStep(
contentColor = AuthInk contentColor = AuthInk
) )
) { ) {
Icon(Icons.Filled.PhotoLibrary, contentDescription = null, modifier = Modifier.padding(end = 8.dp)) Icon(CloserGlyphs.Photo, contentDescription = null, modifier = Modifier.padding(end = 8.dp))
Text("Choose from gallery", style = MaterialTheme.typography.labelLarge) Text("Choose from gallery", style = MaterialTheme.typography.labelLarge)
} }
@ -430,7 +427,7 @@ private fun PhotoStep(
contentColor = AuthInk contentColor = AuthInk
) )
) { ) {
Icon(Icons.Filled.AddAPhoto, contentDescription = null, modifier = Modifier.padding(end = 8.dp)) Icon(CloserGlyphs.Camera, contentDescription = null, modifier = Modifier.padding(end = 8.dp))
Text("Take a photo", style = MaterialTheme.typography.labelLarge) Text("Take a photo", style = MaterialTheme.typography.labelLarge)
} }

View File

@ -15,8 +15,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.TrendingUp
import androidx.compose.material3.Card import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults import androidx.compose.material3.CardDefaults
import app.closer.ui.components.CloserHeartLoader import app.closer.ui.components.CloserHeartLoader
@ -146,7 +144,7 @@ private fun ProgressHeader(baseline: Outcome?) {
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Icon( Icon(
imageVector = Icons.AutoMirrored.Filled.TrendingUp, imageVector = CloserGlyphs.TrendingUp,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(40.dp), modifier = Modifier.size(40.dp),
tint = SettingsPrimaryDeep tint = SettingsPrimaryDeep

View File

@ -19,9 +19,6 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ContentCopy
import androidx.compose.material.icons.filled.Share
import androidx.compose.foundation.border import androidx.compose.foundation.border
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
@ -190,7 +187,7 @@ fun CreateInviteScreen(
horizontalArrangement = Arrangement.Center, horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Icon(Icons.Filled.ContentCopy, contentDescription = null, modifier = Modifier.size(18.dp)) Icon(CloserGlyphs.Copy, contentDescription = null, modifier = Modifier.size(18.dp))
Spacer(Modifier.width(8.dp)) Spacer(Modifier.width(8.dp))
Text("Copy", style = MaterialTheme.typography.labelLarge) Text("Copy", style = MaterialTheme.typography.labelLarge)
} }
@ -217,7 +214,7 @@ fun CreateInviteScreen(
horizontalArrangement = Arrangement.Center, horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Icon(Icons.Filled.Share, contentDescription = null, modifier = Modifier.size(18.dp)) Icon(CloserGlyphs.Share, contentDescription = null, modifier = Modifier.size(18.dp))
Spacer(Modifier.width(8.dp)) Spacer(Modifier.width(8.dp))
Text("Share", style = MaterialTheme.typography.labelLarge) Text("Share", style = MaterialTheme.typography.labelLarge)
} }
@ -289,7 +286,7 @@ fun CreateInviteScreen(
contentColor = SettingsPrimaryDeep contentColor = SettingsPrimaryDeep
) )
) { ) {
Icon(Icons.Filled.ContentCopy, contentDescription = null, modifier = Modifier.size(16.dp)) Icon(CloserGlyphs.Copy, contentDescription = null, modifier = Modifier.size(16.dp))
Spacer(Modifier.width(6.dp)) Spacer(Modifier.width(6.dp))
Text("Copy phrase", style = MaterialTheme.typography.labelMedium) Text("Copy phrase", style = MaterialTheme.typography.labelMedium)
} }

View File

@ -15,8 +15,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.FavoriteBorder
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import app.closer.ui.components.CloserHeartLoader import app.closer.ui.components.CloserHeartLoader
@ -112,7 +110,7 @@ fun InviteConfirmScreen(
Spacer(Modifier.height(24.dp)) Spacer(Modifier.height(24.dp))
StatusGlyph( StatusGlyph(
icon = Icons.Filled.FavoriteBorder, icon = CloserGlyphs.HeartOutline,
tint = SettingsPrimaryDeep, tint = SettingsPrimaryDeep,
container = SettingsSoft container = SettingsSoft
) )

View File

@ -26,7 +26,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.selection.selectable import androidx.compose.foundation.selection.selectable
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card import androidx.compose.material3.Card
@ -68,8 +67,7 @@ import app.closer.ui.components.ErrorState
import app.closer.ui.components.LoadingState import app.closer.ui.components.LoadingState
import app.closer.ui.theme.CloserPalette import app.closer.ui.theme.CloserPalette
import com.revenuecat.purchases.Package import com.revenuecat.purchases.Package
import androidx.compose.material.icons.filled.Check import app.closer.ui.components.CloserGlyphs
import androidx.compose.material.icons.filled.Close
private val BENEFITS = listOf( private val BENEFITS = listOf(
"Unlimited questions every day", "Unlimited questions every day",
@ -206,7 +204,7 @@ private fun HeaderSection(
TextButton(onClick = onClose, modifier = Modifier.size(48.dp)) { TextButton(onClick = onClose, modifier = Modifier.size(48.dp)) {
Icon( Icon(
imageVector = Icons.Default.Close, imageVector = CloserGlyphs.Close,
contentDescription = "Close", contentDescription = "Close",
tint = Color(0xFF9B8AA6) tint = Color(0xFF9B8AA6)
) )
@ -256,7 +254,7 @@ private fun BenefitPill(label: String) {
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Icon( Icon(
imageVector = Icons.Default.Check, imageVector = CloserGlyphs.Check,
contentDescription = null, contentDescription = null,
tint = CloserPalette.PurpleDeep, tint = CloserPalette.PurpleDeep,
modifier = Modifier.size(15.dp) modifier = Modifier.size(15.dp)
@ -484,7 +482,7 @@ private fun ThankYouOverlay(onDismiss: () -> Unit) {
verticalArrangement = Arrangement.spacedBy(14.dp) verticalArrangement = Arrangement.spacedBy(14.dp)
) { ) {
Icon( Icon(
imageVector = Icons.Default.Check, imageVector = CloserGlyphs.Check,
contentDescription = null, contentDescription = null,
tint = Color(0xFF56306F), tint = Color(0xFF56306F),
modifier = Modifier.size(48.dp) modifier = Modifier.size(48.dp)

View File

@ -25,8 +25,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Visibility
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.FilledTonalButton
@ -276,7 +274,7 @@ private fun SubmittedAnswerCard(
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
Icon( Icon(
imageVector = if (state.isRevealed) Icons.Filled.Visibility else CloserGlyphs.Lock, imageVector = if (state.isRevealed) CloserGlyphs.Eye else CloserGlyphs.Lock,
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.onPrimaryContainer, tint = MaterialTheme.colorScheme.onPrimaryContainer,
modifier = Modifier.size(18.dp) modifier = Modifier.size(18.dp)

View File

@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
@ -34,7 +33,7 @@ import androidx.compose.ui.unit.dp
import app.closer.domain.model.Question import app.closer.domain.model.Question
import app.closer.domain.model.QuestionAnswer import app.closer.domain.model.QuestionAnswer
import app.closer.domain.model.QuestionReaction import app.closer.domain.model.QuestionReaction
import androidx.compose.material.icons.filled.Person import app.closer.ui.components.CloserGlyphs
private val REACTION_EMOJIS = listOf("❤️", "😊", "😂", "😮", "👏", "🥺") private val REACTION_EMOJIS = listOf("❤️", "😊", "😂", "😮", "👏", "🥺")
@ -138,7 +137,7 @@ private fun AvatarCircle(name: String?) {
) )
} else { } else {
Icon( Icon(
imageVector = Icons.Default.Person, imageVector = CloserGlyphs.Person,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(18.dp), modifier = Modifier.size(18.dp),
tint = MaterialTheme.colorScheme.onSecondaryContainer tint = MaterialTheme.colorScheme.onSecondaryContainer

View File

@ -22,10 +22,6 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape 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.PhotoCamera
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@ -327,7 +323,7 @@ private fun DiscussionInputBar(
modifier = Modifier.size(40.dp) modifier = Modifier.size(40.dp)
) { ) {
Icon( Icon(
imageVector = Icons.Filled.Image, imageVector = CloserGlyphs.Photo,
contentDescription = "Send a photo", contentDescription = "Send a photo",
tint = MaterialTheme.colorScheme.primary tint = MaterialTheme.colorScheme.primary
) )
@ -345,7 +341,7 @@ private fun DiscussionInputBar(
modifier = Modifier.size(40.dp) modifier = Modifier.size(40.dp)
) { ) {
Icon( Icon(
imageVector = Icons.Filled.PhotoCamera, imageVector = CloserGlyphs.Camera,
contentDescription = "Take a photo", contentDescription = "Take a photo",
tint = MaterialTheme.colorScheme.primary tint = MaterialTheme.colorScheme.primary
) )
@ -381,7 +377,7 @@ private fun DiscussionInputBar(
modifier = Modifier.size(48.dp) modifier = Modifier.size(48.dp)
) { ) {
Icon( Icon(
imageVector = Icons.AutoMirrored.Filled.Send, imageVector = CloserGlyphs.Send,
contentDescription = "Send", contentDescription = "Send",
tint = if (value.isNotBlank()) tint = if (value.isNotBlank())
MaterialTheme.colorScheme.primary MaterialTheme.colorScheme.primary

View File

@ -13,7 +13,6 @@ import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
@ -25,8 +24,7 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import app.closer.domain.model.Question import app.closer.domain.model.Question
import androidx.compose.material.icons.filled.Add import app.closer.ui.components.CloserGlyphs
import androidx.compose.material.icons.filled.Close
@Composable @Composable
fun QuestionHelpExpandable( fun QuestionHelpExpandable(
@ -61,7 +59,7 @@ fun QuestionHelpExpandable(
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )
Icon( Icon(
imageVector = if (expanded) Icons.Default.Close else Icons.Default.Add, imageVector = if (expanded) CloserGlyphs.Close else CloserGlyphs.Add,
contentDescription = if (expanded) "Collapse" else "Expand", contentDescription = if (expanded) "Collapse" else "Expand",
modifier = Modifier.size(18.dp), modifier = Modifier.size(18.dp),
tint = MaterialTheme.colorScheme.onSurfaceVariant tint = MaterialTheme.colorScheme.onSurfaceVariant

View File

@ -16,10 +16,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ContentCopy
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material.icons.filled.Key
import androidx.compose.material3.Card import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults import androidx.compose.material3.CardDefaults
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
@ -121,7 +117,7 @@ fun AccountScreen(
horizontalArrangement = Arrangement.spacedBy(10.dp) horizontalArrangement = Arrangement.spacedBy(10.dp)
) { ) {
Icon( Icon(
Icons.Filled.Key, CloserGlyphs.Key,
contentDescription = null, contentDescription = null,
tint = SettingsMuted, tint = SettingsMuted,
modifier = Modifier.size(20.dp) modifier = Modifier.size(20.dp)
@ -141,7 +137,7 @@ fun AccountScreen(
modifier = Modifier.size(36.dp) modifier = Modifier.size(36.dp)
) { ) {
Icon( Icon(
Icons.Filled.ContentCopy, CloserGlyphs.Copy,
contentDescription = stringResource(R.string.account_recovery_phrase_copy_desc), contentDescription = stringResource(R.string.account_recovery_phrase_copy_desc),
tint = SettingsMuted, tint = SettingsMuted,
modifier = Modifier.size(18.dp) modifier = Modifier.size(18.dp)
@ -176,7 +172,7 @@ fun AccountScreen(
colors = CardDefaults.cardColors(containerColor = SettingsCard) colors = CardDefaults.cardColors(containerColor = SettingsCard)
) { ) {
AccountRow( AccountRow(
icon = Icons.Filled.Delete, icon = CloserGlyphs.Trash,
label = stringResource(R.string.action_delete_account), label = stringResource(R.string.action_delete_account),
tint = SettingsDanger, tint = SettingsDanger,
onClick = { onNavigate(AppRoute.DELETE_ACCOUNT) } onClick = { onNavigate(AppRoute.DELETE_ACCOUNT) }

View File

@ -26,9 +26,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AddAPhoto
import androidx.compose.material.icons.filled.PhotoLibrary
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import app.closer.ui.components.CloserHeartLoader import app.closer.ui.components.CloserHeartLoader
@ -237,7 +234,7 @@ fun EditProfileContent(
contentColor = SettingsInk contentColor = SettingsInk
) )
) { ) {
Icon(Icons.Filled.PhotoLibrary, contentDescription = null, modifier = Modifier.padding(end = 8.dp)) Icon(CloserGlyphs.Photo, contentDescription = null, modifier = Modifier.padding(end = 8.dp))
Text("Gallery") Text("Gallery")
} }
OutlinedButton( OutlinedButton(
@ -253,7 +250,7 @@ fun EditProfileContent(
contentColor = SettingsInk contentColor = SettingsInk
) )
) { ) {
Icon(Icons.Filled.AddAPhoto, contentDescription = null, modifier = Modifier.padding(end = 8.dp)) Icon(CloserGlyphs.Camera, contentDescription = null, modifier = Modifier.padding(end = 8.dp))
Text("Camera") Text("Camera")
} }
} }

View File

@ -18,8 +18,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.OpenInNew
import androidx.compose.material3.Card import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Divider import androidx.compose.material3.Divider
@ -44,9 +42,6 @@ import androidx.compose.ui.unit.dp
import app.closer.R import app.closer.R
import app.closer.core.navigation.ExternalLinks import app.closer.core.navigation.ExternalLinks
import app.closer.ui.components.CloserGlyphs 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) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
@ -92,7 +87,7 @@ fun PrivacyScreen(
// ── What your partner can see ───────────────────────────────────── // ── What your partner can see ─────────────────────────────────────
PrivacySectionHeader( PrivacySectionHeader(
icon = Icons.Default.CheckCircle, icon = CloserGlyphs.Check,
iconTint = SettingsPrimary, iconTint = SettingsPrimary,
title = stringResource(R.string.privacy_section_partner_visible) title = stringResource(R.string.privacy_section_partner_visible)
) )
@ -137,7 +132,7 @@ fun PrivacyScreen(
// ── What stays private ──────────────────────────────────────────── // ── What stays private ────────────────────────────────────────────
PrivacySectionHeader( PrivacySectionHeader(
icon = Icons.Default.Lock, icon = CloserGlyphs.Lock,
iconTint = MaterialTheme.colorScheme.secondary, iconTint = MaterialTheme.colorScheme.secondary,
title = stringResource(R.string.privacy_section_data) title = stringResource(R.string.privacy_section_data)
) )
@ -172,7 +167,7 @@ fun PrivacyScreen(
// ── Deleting your account ───────────────────────────────────────── // ── Deleting your account ─────────────────────────────────────────
PrivacySectionHeader( PrivacySectionHeader(
icon = Icons.Default.VisibilityOff, icon = CloserGlyphs.EyeOff,
iconTint = SettingsDanger, iconTint = SettingsDanger,
title = stringResource(R.string.account_delete_title) title = stringResource(R.string.account_delete_title)
) )
@ -318,7 +313,7 @@ private fun LegalLinkRow(
) )
} }
Icon( Icon(
Icons.AutoMirrored.Filled.OpenInNew, CloserGlyphs.OpenInNew,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(16.dp), modifier = Modifier.size(16.dp),
tint = SettingsPrimaryDeep tint = SettingsPrimaryDeep

View File

@ -18,8 +18,6 @@ import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Fingerprint
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Card import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults import androidx.compose.material3.CardDefaults
@ -206,7 +204,7 @@ fun SecurityScreen(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(12.dp) horizontalArrangement = Arrangement.spacedBy(12.dp)
) { ) {
Icon(Icons.Filled.Fingerprint, contentDescription = null, tint = SettingsMuted) Icon(CloserGlyphs.Fingerprint, contentDescription = null, tint = SettingsMuted)
Text( Text(
text = "Biometric login", text = "Biometric login",
style = MaterialTheme.typography.bodyLarge, style = MaterialTheme.typography.bodyLarge,

View File

@ -21,12 +21,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.TrendingUp
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material.icons.filled.FavoriteBorder
import androidx.compose.material.icons.filled.Notifications
import androidx.compose.material.icons.filled.Palette
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card import androidx.compose.material3.Card
@ -407,7 +401,7 @@ fun SettingsScreen(
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
Icon( Icon(
Icons.Filled.FavoriteBorder, CloserGlyphs.HeartOutline,
contentDescription = null, contentDescription = null,
tint = partnerAccent, tint = partnerAccent,
modifier = Modifier.size(24.dp) modifier = Modifier.size(24.dp)
@ -487,7 +481,7 @@ fun SettingsScreen(
) )
SettingsSectionDivider() SettingsSectionDivider()
SettingsRow( SettingsRow(
icon = Icons.AutoMirrored.Filled.TrendingUp, icon = CloserGlyphs.TrendingUp,
label = "Your Progress", label = "Your Progress",
subtitle = "See patterns, check-ins, and growth", subtitle = "See patterns, check-ins, and growth",
onClick = { onNavigate(AppRoute.YOUR_PROGRESS) } onClick = { onNavigate(AppRoute.YOUR_PROGRESS) }
@ -496,14 +490,14 @@ fun SettingsScreen(
SettingsSection(title = "Your rhythm", accent = Color(0xFFD9B8FF)) { SettingsSection(title = "Your rhythm", accent = Color(0xFFD9B8FF)) {
SettingsRow( SettingsRow(
icon = Icons.Filled.Notifications, icon = CloserGlyphs.Bell,
label = "Notifications", label = "Notifications",
subtitle = "Set gentle reminders that fit your day", subtitle = "Set gentle reminders that fit your day",
onClick = { onNavigate(AppRoute.NOTIFICATIONS) } onClick = { onNavigate(AppRoute.NOTIFICATIONS) }
) )
SettingsSectionDivider() SettingsSectionDivider()
SettingsRow( SettingsRow(
icon = Icons.Filled.Palette, icon = CloserGlyphs.Palette,
label = "Appearance", label = "Appearance",
subtitle = "Make Closer feel comfortable to open", subtitle = "Make Closer feel comfortable to open",
onClick = { onNavigate(AppRoute.APPEARANCE) } onClick = { onNavigate(AppRoute.APPEARANCE) }

View File

@ -17,8 +17,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.OpenInNew
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@ -275,7 +273,7 @@ private fun PremiumContent(
) )
) { ) {
Icon( Icon(
Icons.AutoMirrored.Filled.OpenInNew, CloserGlyphs.OpenInNew,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(16.dp) modifier = Modifier.size(16.dp)
) )

View File

@ -15,8 +15,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.PlayArrow
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card import androidx.compose.material3.Card
@ -212,7 +210,7 @@ private fun WheelPickerHeader(
) { ) {
Box(contentAlignment = Alignment.Center) { Box(contentAlignment = Alignment.Center) {
Icon( Icon(
imageVector = Icons.Filled.PlayArrow, imageVector = CloserGlyphs.Play,
contentDescription = null, contentDescription = null,
tint = CloserPalette.PurpleDeep, tint = CloserPalette.PurpleDeep,
modifier = Modifier.size(24.dp) modifier = Modifier.size(24.dp)