feat(android): migrate all UI surfaces from Material icons to brand glyphs (CloserGlyphs catalog)
This commit is contained in:
parent
c31ae4b1f7
commit
6cc78209af
|
|
@ -2,8 +2,6 @@ package app.closer.core.navigation
|
||||||
|
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
import androidx.compose.foundation.layout.padding
|
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.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.IconButton
|
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.GameHistoryScreen
|
||||||
import app.closer.ui.wheel.WheelSessionScreen
|
import app.closer.ui.wheel.WheelSessionScreen
|
||||||
import app.closer.ui.games.WaitingForPartnerScreen
|
import app.closer.ui.games.WaitingForPartnerScreen
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -190,7 +189,7 @@ fun AppNavigation(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = navigateBackOrHome) {
|
IconButton(onClick = navigateBackOrHome) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
|
imageVector = CloserGlyphs.Back,
|
||||||
contentDescription = "Back"
|
contentDescription = "Back"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,7 +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.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.Lock
|
|
||||||
import androidx.compose.material.icons.filled.Visibility
|
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
|
||||||
|
|
@ -59,6 +58,7 @@ import app.closer.ui.components.CategoryGlyph
|
||||||
import app.closer.ui.components.EmptyState
|
import app.closer.ui.components.EmptyState
|
||||||
import app.closer.ui.theme.CloserPalette
|
import app.closer.ui.theme.CloserPalette
|
||||||
import app.closer.ui.questions.displayCategoryName
|
import app.closer.ui.questions.displayCategoryName
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
private enum class AnswerHistoryFilter {
|
private enum class AnswerHistoryFilter {
|
||||||
ALL, PRIVATE, REVEALED
|
ALL, PRIVATE, REVEALED
|
||||||
|
|
@ -383,7 +383,7 @@ private fun HistoryStateBadge(isRevealed: Boolean) {
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = if (isRevealed) Icons.Filled.Visibility else Icons.Filled.Lock,
|
imageVector = if (isRevealed) Icons.Filled.Visibility else CloserGlyphs.Lock,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = tint,
|
tint = tint,
|
||||||
modifier = Modifier.size(14.dp)
|
modifier = Modifier.size(14.dp)
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,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.automirrored.filled.ArrowBack
|
|
||||||
import androidx.compose.material.icons.filled.Check
|
|
||||||
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
|
||||||
|
|
@ -50,6 +47,7 @@ import androidx.compose.ui.unit.dp
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import app.closer.core.navigation.AppRoute
|
import app.closer.core.navigation.AppRoute
|
||||||
import app.closer.ui.components.StatusGlyph
|
import app.closer.ui.components.StatusGlyph
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -75,7 +73,7 @@ fun ForgotPasswordScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { onNavigate(AppRoute.LOGIN) }) {
|
IconButton(onClick = { onNavigate(AppRoute.LOGIN) }) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = AuthInk
|
tint = AuthInk
|
||||||
)
|
)
|
||||||
|
|
@ -101,7 +99,7 @@ fun ForgotPasswordScreen(
|
||||||
if (state.sent) {
|
if (state.sent) {
|
||||||
Spacer(Modifier.height(48.dp))
|
Spacer(Modifier.height(48.dp))
|
||||||
StatusGlyph(
|
StatusGlyph(
|
||||||
icon = Icons.Filled.Check,
|
icon = CloserGlyphs.Check,
|
||||||
tint = AuthPrimaryDeep,
|
tint = AuthPrimaryDeep,
|
||||||
container = AuthPrimary.copy(alpha = 0.16f)
|
container = AuthPrimary.copy(alpha = 0.16f)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,6 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
|
||||||
import androidx.compose.material.icons.filled.Visibility
|
import androidx.compose.material.icons.filled.Visibility
|
||||||
import androidx.compose.material.icons.filled.VisibilityOff
|
import androidx.compose.material.icons.filled.VisibilityOff
|
||||||
import androidx.compose.material3.Button
|
import androidx.compose.material3.Button
|
||||||
|
|
@ -64,6 +63,7 @@ import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import app.closer.core.navigation.AppRoute
|
import app.closer.core.navigation.AppRoute
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -97,7 +97,7 @@ fun SignUpScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { onNavigate(AppRoute.LOGIN) }) {
|
IconButton(onClick = { onNavigate(AppRoute.LOGIN) }) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = AuthInk
|
tint = AuthInk
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,6 @@ import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.items
|
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.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.AlertDialog
|
||||||
import androidx.compose.material3.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material3.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
|
|
@ -84,6 +80,7 @@ import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
// ── ViewModel ─────────────────────────────────────────────────────────────────
|
// ── ViewModel ─────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|
@ -359,7 +356,7 @@ private fun ChallengesPickScreen(
|
||||||
) {
|
) {
|
||||||
IconButton(onClick = onBack) {
|
IconButton(onClick = onBack) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = MaterialTheme.colorScheme.onBackground
|
tint = MaterialTheme.colorScheme.onBackground
|
||||||
)
|
)
|
||||||
|
|
@ -458,7 +455,7 @@ private fun ChallengePickCard(
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
horizontalArrangement = Arrangement.spacedBy(3.dp)
|
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)
|
Text("Premium", style = MaterialTheme.typography.labelSmall, color = CloserPalette.Gold, fontWeight = FontWeight.SemiBold)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -558,7 +555,7 @@ private fun ChallengesActiveScreen(
|
||||||
) {
|
) {
|
||||||
IconButton(onClick = onBack) {
|
IconButton(onClick = onBack) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = MaterialTheme.colorScheme.onBackground
|
tint = MaterialTheme.colorScheme.onBackground
|
||||||
)
|
)
|
||||||
|
|
@ -694,7 +691,7 @@ private fun ChallengesActiveScreen(
|
||||||
horizontalArrangement = Arrangement.spacedBy(10.dp)
|
horizontalArrangement = Arrangement.spacedBy(10.dp)
|
||||||
) {
|
) {
|
||||||
val icon = when {
|
val icon = when {
|
||||||
isBothDone -> Icons.Filled.Check
|
isBothDone -> CloserGlyphs.Check
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
if (icon != null) {
|
if (icon != null) {
|
||||||
|
|
@ -839,7 +836,7 @@ private fun DayTrackerStrip(
|
||||||
contentAlignment = Alignment.Center
|
contentAlignment = Alignment.Center
|
||||||
) {
|
) {
|
||||||
if (jointDone) {
|
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 {
|
} else {
|
||||||
Text(
|
Text(
|
||||||
text = "$day",
|
text = "$day",
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.filled.Close
|
|
||||||
import androidx.compose.material.icons.filled.PlayArrow
|
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
|
||||||
|
|
@ -192,7 +191,7 @@ private fun GamePromptCard(
|
||||||
|
|
||||||
IconButton(onClick = onDismiss) {
|
IconButton(onClick = onDismiss) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Close,
|
imageVector = CloserGlyphs.Close,
|
||||||
contentDescription = "Dismiss",
|
contentDescription = "Dismiss",
|
||||||
tint = Color.White.copy(alpha = 0.8f),
|
tint = Color.White.copy(alpha = 0.8f),
|
||||||
modifier = Modifier.size(20.dp)
|
modifier = Modifier.size(20.dp)
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.Chat
|
import androidx.compose.material.icons.automirrored.filled.Chat
|
||||||
import androidx.compose.material.icons.filled.Close
|
|
||||||
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
|
||||||
|
|
@ -101,7 +100,7 @@ fun MessageBubbleOverlay(
|
||||||
contentAlignment = Alignment.Center
|
contentAlignment = Alignment.Center
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Close,
|
imageVector = CloserGlyphs.Close,
|
||||||
contentDescription = "Dismiss",
|
contentDescription = "Dismiss",
|
||||||
tint = Color.White,
|
tint = Color.White,
|
||||||
modifier = Modifier.size(28.dp)
|
modifier = Modifier.size(28.dp)
|
||||||
|
|
|
||||||
|
|
@ -22,9 +22,6 @@ import androidx.compose.foundation.layout.statusBarsPadding
|
||||||
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.rememberScrollState
|
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.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material3.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material3.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
|
|
@ -56,6 +53,7 @@ import androidx.compose.ui.unit.dp
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import app.closer.domain.model.BucketListCategory
|
import app.closer.domain.model.BucketListCategory
|
||||||
import app.closer.domain.model.BucketListItem
|
import app.closer.domain.model.BucketListItem
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun BucketListScreen(
|
fun BucketListScreen(
|
||||||
|
|
@ -175,7 +173,7 @@ private fun Header(
|
||||||
modifier = Modifier.padding(top = 4.dp)
|
modifier = Modifier.padding(top = 4.dp)
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
|
imageVector = CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = MaterialTheme.colorScheme.onSurface
|
tint = MaterialTheme.colorScheme.onSurface
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,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.automirrored.filled.ArrowBack
|
|
||||||
import androidx.compose.material3.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material3.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
import androidx.compose.material3.DatePicker
|
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.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DateBuilderScreen(
|
fun DateBuilderScreen(
|
||||||
|
|
@ -165,7 +164,7 @@ private fun Header(
|
||||||
modifier = Modifier.padding(top = 4.dp)
|
modifier = Modifier.padding(top = 4.dp)
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
|
imageVector = CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = MaterialTheme.colorScheme.onSurface
|
tint = MaterialTheme.colorScheme.onSurface
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -27,10 +27,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.Close
|
|
||||||
import androidx.compose.material.icons.filled.Favorite
|
|
||||||
import androidx.compose.material.icons.filled.Star
|
|
||||||
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
|
||||||
|
|
@ -70,6 +66,7 @@ import app.closer.ui.components.EmptyState
|
||||||
import app.closer.ui.components.ErrorState
|
import app.closer.ui.components.ErrorState
|
||||||
import app.closer.ui.components.LoadingState
|
import app.closer.ui.components.LoadingState
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DateMatchScreen(
|
fun DateMatchScreen(
|
||||||
|
|
@ -243,7 +240,7 @@ private fun DateMatchHeader(
|
||||||
) {
|
) {
|
||||||
Box(modifier = Modifier.padding(8.dp)) {
|
Box(modifier = Modifier.padding(8.dp)) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Favorite,
|
imageVector = CloserGlyphs.Heart,
|
||||||
contentDescription = "View matches",
|
contentDescription = "View matches",
|
||||||
tint = MaterialTheme.colorScheme.onPrimaryContainer
|
tint = MaterialTheme.colorScheme.onPrimaryContainer
|
||||||
)
|
)
|
||||||
|
|
@ -405,7 +402,7 @@ private fun PremiumBadge() {
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Star,
|
imageVector = CloserGlyphs.Star,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(14.dp),
|
modifier = Modifier.size(14.dp),
|
||||||
tint = MaterialTheme.colorScheme.onSecondaryContainer
|
tint = MaterialTheme.colorScheme.onSecondaryContainer
|
||||||
|
|
@ -467,14 +464,14 @@ private fun ActionButtons(
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
CircularActionButton(
|
CircularActionButton(
|
||||||
icon = Icons.Filled.Close,
|
icon = CloserGlyphs.Close,
|
||||||
contentDescription = "Skip",
|
contentDescription = "Skip",
|
||||||
color = MaterialTheme.colorScheme.errorContainer,
|
color = MaterialTheme.colorScheme.errorContainer,
|
||||||
iconColor = Color(0xFF8D2D35),
|
iconColor = Color(0xFF8D2D35),
|
||||||
onClick = onSkip
|
onClick = onSkip
|
||||||
)
|
)
|
||||||
CircularActionButton(
|
CircularActionButton(
|
||||||
icon = Icons.Filled.Star,
|
icon = CloserGlyphs.Star,
|
||||||
contentDescription = "Maybe",
|
contentDescription = "Maybe",
|
||||||
color = MaterialTheme.colorScheme.tertiaryContainer.copy(alpha = 0.74f),
|
color = MaterialTheme.colorScheme.tertiaryContainer.copy(alpha = 0.74f),
|
||||||
iconColor = Color(0xFF6B5D00),
|
iconColor = Color(0xFF6B5D00),
|
||||||
|
|
@ -482,7 +479,7 @@ private fun ActionButtons(
|
||||||
size = 72.dp
|
size = 72.dp
|
||||||
)
|
)
|
||||||
CircularActionButton(
|
CircularActionButton(
|
||||||
icon = Icons.Filled.Favorite,
|
icon = CloserGlyphs.Heart,
|
||||||
contentDescription = "Love",
|
contentDescription = "Love",
|
||||||
color = closerSoftPinkColor(),
|
color = closerSoftPinkColor(),
|
||||||
iconColor = Color(0xFF9B1B5A),
|
iconColor = Color(0xFF9B1B5A),
|
||||||
|
|
|
||||||
|
|
@ -22,9 +22,6 @@ import androidx.compose.foundation.layout.statusBarsPadding
|
||||||
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.Favorite
|
|
||||||
import androidx.compose.material.icons.filled.Star
|
|
||||||
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
|
||||||
|
|
@ -51,6 +48,7 @@ import app.closer.domain.model.SwipeAction
|
||||||
import app.closer.ui.components.EmptyState
|
import app.closer.ui.components.EmptyState
|
||||||
import app.closer.ui.components.ErrorState
|
import app.closer.ui.components.ErrorState
|
||||||
import app.closer.ui.components.LoadingState
|
import app.closer.ui.components.LoadingState
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DateMatchesScreen(
|
fun DateMatchesScreen(
|
||||||
|
|
@ -145,7 +143,7 @@ private fun DateMatchesContent(
|
||||||
SectionHeader(
|
SectionHeader(
|
||||||
title = "Mutual love",
|
title = "Mutual love",
|
||||||
count = state.mutualMatches.size,
|
count = state.mutualMatches.size,
|
||||||
icon = Icons.Filled.Favorite,
|
icon = CloserGlyphs.Heart,
|
||||||
iconColor = Color(0xFF9B1B5A),
|
iconColor = Color(0xFF9B1B5A),
|
||||||
modifier = Modifier.padding(top = 8.dp)
|
modifier = Modifier.padding(top = 8.dp)
|
||||||
)
|
)
|
||||||
|
|
@ -160,7 +158,7 @@ private fun DateMatchesContent(
|
||||||
SectionHeader(
|
SectionHeader(
|
||||||
title = "Maybe together",
|
title = "Maybe together",
|
||||||
count = state.maybeMatches.size,
|
count = state.maybeMatches.size,
|
||||||
icon = Icons.Filled.Star,
|
icon = CloserGlyphs.Star,
|
||||||
iconColor = Color(0xFF6B5D00),
|
iconColor = Color(0xFF6B5D00),
|
||||||
modifier = Modifier.padding(top = 8.dp)
|
modifier = Modifier.padding(top = 8.dp)
|
||||||
)
|
)
|
||||||
|
|
@ -236,7 +234,7 @@ private fun MatchCard(match: DateMatch) {
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Favorite,
|
imageVector = CloserGlyphs.Heart,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(14.dp),
|
modifier = Modifier.size(14.dp),
|
||||||
tint = Color(0xFF9B1B5A)
|
tint = Color(0xFF9B1B5A)
|
||||||
|
|
@ -268,7 +266,7 @@ private fun SuggestionCard(suggestion: DateMatchSuggestion) {
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Star,
|
imageVector = CloserGlyphs.Star,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(14.dp),
|
modifier = Modifier.size(14.dp),
|
||||||
tint = Color(0xFF6B5D00)
|
tint = Color(0xFF6B5D00)
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,7 @@ import kotlinx.coroutines.flow.StateFlow
|
||||||
import kotlinx.coroutines.flow.asStateFlow
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
// ── Domain ────────────────────────────────────────────────────────────────────
|
// ── Domain ────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|
@ -599,7 +600,7 @@ private fun DSWaitingScreen(partnerName: String, onBack: () -> Unit, onAbandon:
|
||||||
) {
|
) {
|
||||||
Spacer(Modifier.weight(1f))
|
Spacer(Modifier.weight(1f))
|
||||||
StatusGlyph(
|
StatusGlyph(
|
||||||
icon = Icons.Filled.Favorite,
|
icon = CloserGlyphs.Heart,
|
||||||
tint = CloserPalette.Romantic,
|
tint = CloserPalette.Romantic,
|
||||||
container = CloserPalette.Romantic.copy(alpha = 0.12f)
|
container = CloserPalette.Romantic.copy(alpha = 0.12f)
|
||||||
)
|
)
|
||||||
|
|
@ -785,7 +786,7 @@ private fun DSRevealScreen(
|
||||||
verticalArrangement = Arrangement.spacedBy(10.dp)
|
verticalArrangement = Arrangement.spacedBy(10.dp)
|
||||||
) {
|
) {
|
||||||
StatusGlyph(
|
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,
|
tint = CloserPalette.Romantic,
|
||||||
container = CloserPalette.Romantic.copy(alpha = 0.12f),
|
container = CloserPalette.Romantic.copy(alpha = 0.12f),
|
||||||
size = 82.dp,
|
size = 82.dp,
|
||||||
|
|
@ -994,7 +995,7 @@ private fun DesireMatchCard(match: DesireMatch) {
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
StatusGlyph(
|
StatusGlyph(
|
||||||
icon = Icons.Filled.Favorite,
|
icon = CloserGlyphs.Heart,
|
||||||
tint = CloserPalette.Romantic,
|
tint = CloserPalette.Romantic,
|
||||||
container = CloserPalette.Romantic.copy(alpha = 0.12f),
|
container = CloserPalette.Romantic.copy(alpha = 0.12f),
|
||||||
size = 34.dp,
|
size = 34.dp,
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,6 @@ 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.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.HourglassEmpty
|
||||||
import androidx.compose.material.icons.filled.LocalFireDepartment
|
import androidx.compose.material.icons.filled.LocalFireDepartment
|
||||||
import androidx.compose.material.icons.filled.NotificationsNone
|
import androidx.compose.material.icons.filled.NotificationsNone
|
||||||
|
|
@ -75,6 +73,7 @@ import kotlinx.coroutines.flow.asStateFlow
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.tasks.await
|
import kotlinx.coroutines.tasks.await
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
data class PartnerHomeUiState(
|
data class PartnerHomeUiState(
|
||||||
val isLoading: Boolean = true,
|
val isLoading: Boolean = true,
|
||||||
|
|
@ -237,7 +236,7 @@ fun PartnerHomeScreen(
|
||||||
},
|
},
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { onNavigate("back") }) {
|
IconButton(onClick = { onNavigate("back") }) {
|
||||||
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")
|
Icon(CloserGlyphs.Back, contentDescription = "Back")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
colors = TopAppBarDefaults.topAppBarColors(containerColor = Color.Transparent)
|
colors = TopAppBarDefaults.topAppBarColors(containerColor = Color.Transparent)
|
||||||
|
|
@ -423,7 +422,7 @@ private fun PartnerActivityCard(
|
||||||
) {
|
) {
|
||||||
Box(contentAlignment = Alignment.Center) {
|
Box(contentAlignment = Alignment.Center) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = if (hasAnsweredToday) Icons.Filled.Check else Icons.Filled.HourglassEmpty,
|
imageVector = if (hasAnsweredToday) CloserGlyphs.Check else Icons.Filled.HourglassEmpty,
|
||||||
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)
|
||||||
|
|
|
||||||
|
|
@ -26,10 +26,8 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.filled.Person
|
|
||||||
import androidx.compose.material.icons.filled.Psychology
|
import androidx.compose.material.icons.filled.Psychology
|
||||||
import androidx.compose.material.icons.filled.Sync
|
import androidx.compose.material.icons.filled.Sync
|
||||||
import androidx.compose.material.icons.filled.Timeline
|
|
||||||
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
|
||||||
|
|
@ -91,6 +89,7 @@ import kotlinx.coroutines.flow.StateFlow
|
||||||
import kotlinx.coroutines.flow.asStateFlow
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
// ── Domain ────────────────────────────────────────────────────────────────────
|
// ── Domain ────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|
@ -610,7 +609,7 @@ private fun PlayerIntroScreen(
|
||||||
horizontalAlignment = Alignment.CenterHorizontally
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
) {
|
) {
|
||||||
StatusGlyph(
|
StatusGlyph(
|
||||||
icon = if (amSubject) Icons.Filled.Person else Icons.Filled.Psychology,
|
icon = if (amSubject) CloserGlyphs.Person else Icons.Filled.Psychology,
|
||||||
tint = CloserPalette.PurpleDeep,
|
tint = CloserPalette.PurpleDeep,
|
||||||
container = CloserPalette.PurpleMist
|
container = CloserPalette.PurpleMist
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
|
||||||
import androidx.compose.material.icons.filled.Add
|
import androidx.compose.material.icons.filled.Add
|
||||||
import androidx.compose.material.icons.filled.Delete
|
import androidx.compose.material.icons.filled.Delete
|
||||||
import androidx.compose.material.icons.filled.Edit
|
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.asStateFlow
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
// ── Unlock presets ─────────────────────────────────────────────────────────────
|
// ── 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)) {
|
Surface(shape = RoundedCornerShape(50.dp), color = CloserPalette.Romantic.copy(alpha = 0.12f)) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.Filled.Lock,
|
CloserGlyphs.Lock,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.padding(20.dp).size(32.dp),
|
modifier = Modifier.padding(20.dp).size(32.dp),
|
||||||
tint = CloserPalette.Romantic
|
tint = CloserPalette.Romantic
|
||||||
|
|
@ -527,7 +527,7 @@ private fun CapsuleListScreen(
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
IconButton(onClick = onBack) {
|
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))
|
Spacer(Modifier.width(4.dp))
|
||||||
Column(modifier = Modifier.weight(1f)) {
|
Column(modifier = Modifier.weight(1f)) {
|
||||||
|
|
@ -605,7 +605,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 Icons.Filled.Lock,
|
imageVector = if (unlocked) Icons.Filled.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)
|
||||||
|
|
@ -671,7 +671,7 @@ private fun CapsuleCreateScreen(
|
||||||
// Header
|
// Header
|
||||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||||
IconButton(onClick = onBack) {
|
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))
|
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)
|
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 {
|
item {
|
||||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||||
IconButton(onClick = onBack) {
|
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))
|
Spacer(Modifier.width(4.dp))
|
||||||
Column(modifier = Modifier.weight(1f)) {
|
Column(modifier = Modifier.weight(1f)) {
|
||||||
|
|
@ -899,7 +899,7 @@ private fun CapsuleDetailScreen(
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
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("Still sealed", style = MaterialTheme.typography.titleMedium.copy(fontWeight = FontWeight.SemiBold), color = MaterialTheme.colorScheme.onSurface, textAlign = TextAlign.Center)
|
||||||
Text(
|
Text(
|
||||||
text = "Opens ${countdown(capsule.unlockAt)} — ${formatDate(capsule.unlockAt)}",
|
text = "Opens ${countdown(capsule.unlockAt)} — ${formatDate(capsule.unlockAt)}",
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,6 @@ 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.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.material.icons.filled.Refresh
|
||||||
import androidx.compose.material3.CircularProgressIndicator
|
import androidx.compose.material3.CircularProgressIndicator
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
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.messages.components.isSameChatDay
|
||||||
import app.closer.ui.theme.closerBackgroundBrush
|
import app.closer.ui.theme.closerBackgroundBrush
|
||||||
import coil.compose.AsyncImage
|
import coil.compose.AsyncImage
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -119,7 +117,7 @@ fun ConversationScreen(
|
||||||
},
|
},
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { onNavigate("back") }) {
|
IconButton(onClick = { onNavigate("back") }) {
|
||||||
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")
|
Icon(CloserGlyphs.Back, contentDescription = "Back")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
colors = TopAppBarDefaults.topAppBarColors(containerColor = Color.Transparent)
|
colors = TopAppBarDefaults.topAppBarColors(containerColor = Color.Transparent)
|
||||||
|
|
@ -224,7 +222,7 @@ private fun PendingMediaChip(
|
||||||
Icon(Icons.Filled.Refresh, contentDescription = "Retry", tint = MaterialTheme.colorScheme.primary)
|
Icon(Icons.Filled.Refresh, contentDescription = "Retry", tint = MaterialTheme.colorScheme.primary)
|
||||||
}
|
}
|
||||||
IconButton(onClick = onDismiss, modifier = Modifier.size(48.dp)) {
|
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 {
|
} else {
|
||||||
CircularProgressIndicator(
|
CircularProgressIndicator(
|
||||||
|
|
@ -254,7 +252,7 @@ private fun ConversationAvatar(url: String?) {
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Person,
|
imageVector = CloserGlyphs.Person,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.onSurfaceVariant,
|
tint = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
modifier = Modifier.size(size).clip(CircleShape)
|
modifier = Modifier.size(size).clip(CircleShape)
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,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.CircleShape
|
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.Button
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
|
@ -37,6 +35,7 @@ import app.closer.ui.components.EmptyState
|
||||||
import app.closer.ui.theme.CloserPalette
|
import app.closer.ui.theme.CloserPalette
|
||||||
import coil.compose.AsyncImage
|
import coil.compose.AsyncImage
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun MessagesInboxScreen(
|
fun MessagesInboxScreen(
|
||||||
|
|
@ -132,7 +131,7 @@ private fun ConversationRow(
|
||||||
modifier = Modifier.size(52.dp).clip(CircleShape).background(MaterialTheme.colorScheme.surfaceVariant),
|
modifier = Modifier.size(52.dp).clip(CircleShape).background(MaterialTheme.colorScheme.surfaceVariant),
|
||||||
contentAlignment = Alignment.Center
|
contentAlignment = Alignment.Center
|
||||||
) {
|
) {
|
||||||
Icon(Icons.Filled.Person, contentDescription = null, tint = MaterialTheme.colorScheme.onSurfaceVariant)
|
Icon(CloserGlyphs.Person, contentDescription = null, tint = MaterialTheme.colorScheme.onSurfaceVariant)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,14 +31,11 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.Send
|
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.ContentCopy
|
||||||
import androidx.compose.material.icons.filled.Delete
|
import androidx.compose.material.icons.filled.Delete
|
||||||
import androidx.compose.material.icons.filled.Image
|
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.Mic
|
||||||
import androidx.compose.material.icons.filled.Pause
|
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.PhotoCamera
|
||||||
import androidx.compose.material.icons.filled.PlayArrow
|
import androidx.compose.material.icons.filled.PlayArrow
|
||||||
import androidx.compose.material3.CircularProgressIndicator
|
import androidx.compose.material3.CircularProgressIndicator
|
||||||
|
|
@ -87,6 +84,7 @@ import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.nio.ByteBuffer
|
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
|
* 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,
|
onClick = onDismiss,
|
||||||
modifier = Modifier.align(Alignment.TopEnd).padding(12.dp)
|
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),
|
modifier = Modifier.size(size).clip(CircleShape).background(MaterialTheme.colorScheme.surfaceVariant),
|
||||||
contentAlignment = Alignment.Center
|
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)
|
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
||||||
) {
|
) {
|
||||||
IconButton(onClick = { finishRecording(send = false) }, modifier = Modifier.size(48.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))
|
Box(modifier = Modifier.size(10.dp).clip(CircleShape).background(MaterialTheme.colorScheme.error))
|
||||||
Text(
|
Text(
|
||||||
|
|
@ -730,7 +728,7 @@ private fun ComposerMediaButton(
|
||||||
}
|
}
|
||||||
if (locked) {
|
if (locked) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Lock,
|
imageVector = CloserGlyphs.Lock,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.onSurfaceVariant,
|
tint = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
modifier = Modifier.size(12.dp).align(Alignment.BottomEnd)
|
modifier = Modifier.size(12.dp).align(Alignment.BottomEnd)
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,7 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
|
||||||
import androidx.compose.material.icons.filled.AddAPhoto
|
import androidx.compose.material.icons.filled.AddAPhoto
|
||||||
import androidx.compose.material.icons.filled.Person
|
|
||||||
import androidx.compose.material.icons.filled.PhotoLibrary
|
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
|
||||||
|
|
@ -80,6 +78,7 @@ import app.closer.ui.auth.AuthPrimaryDeep
|
||||||
import app.closer.ui.auth.authTextFieldColors
|
import app.closer.ui.auth.authTextFieldColors
|
||||||
import coil.compose.AsyncImage
|
import coil.compose.AsyncImage
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -139,7 +138,7 @@ fun CreateProfileScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = viewModel::goBack) {
|
IconButton(onClick = viewModel::goBack) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = AuthInk
|
tint = AuthInk
|
||||||
)
|
)
|
||||||
|
|
@ -394,12 +393,12 @@ private fun PhotoStep(
|
||||||
contentDescription = "Profile photo",
|
contentDescription = "Profile photo",
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
contentScale = ContentScale.Crop,
|
contentScale = ContentScale.Crop,
|
||||||
placeholder = rememberVectorPainter(Icons.Filled.Person),
|
placeholder = rememberVectorPainter(CloserGlyphs.Person),
|
||||||
error = rememberVectorPainter(Icons.Filled.Person)
|
error = rememberVectorPainter(CloserGlyphs.Person)
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.Filled.Person,
|
CloserGlyphs.Person,
|
||||||
contentDescription = "Profile photo",
|
contentDescription = "Profile photo",
|
||||||
modifier = Modifier.size(64.dp),
|
modifier = Modifier.size(64.dp),
|
||||||
tint = AuthMuted
|
tint = AuthMuted
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
|
||||||
import androidx.compose.material.icons.automirrored.filled.TrendingUp
|
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
|
||||||
|
|
@ -49,6 +48,7 @@ import app.closer.ui.settings.SettingsInk
|
||||||
import app.closer.ui.settings.SettingsMuted
|
import app.closer.ui.settings.SettingsMuted
|
||||||
import app.closer.ui.settings.SettingsPrimaryDeep
|
import app.closer.ui.settings.SettingsPrimaryDeep
|
||||||
import app.closer.ui.settings.SettingsSoft
|
import app.closer.ui.settings.SettingsSoft
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -69,7 +69,7 @@ fun YourProgressScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = onBack) {
|
IconButton(onClick = onBack) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = SettingsInk
|
tint = SettingsInk
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,6 @@ import androidx.compose.foundation.text.BasicTextField
|
||||||
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.automirrored.filled.ArrowBack
|
|
||||||
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,6 +66,7 @@ import app.closer.ui.settings.SettingsOnPrimary
|
||||||
import app.closer.ui.settings.SettingsPrimary
|
import app.closer.ui.settings.SettingsPrimary
|
||||||
import app.closer.ui.settings.SettingsPrimaryDeep
|
import app.closer.ui.settings.SettingsPrimaryDeep
|
||||||
import app.closer.ui.settings.SettingsSoft
|
import app.closer.ui.settings.SettingsSoft
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -94,7 +93,7 @@ fun AcceptInviteScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = onBack) {
|
IconButton(onClick = onBack) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = SettingsInk
|
tint = SettingsInk
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,9 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
|
||||||
import androidx.compose.material.icons.filled.ContentCopy
|
import androidx.compose.material.icons.filled.ContentCopy
|
||||||
import androidx.compose.material.icons.filled.Share
|
import androidx.compose.material.icons.filled.Share
|
||||||
import androidx.compose.foundation.border
|
import androidx.compose.foundation.border
|
||||||
import androidx.compose.material.icons.filled.Lock
|
|
||||||
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
|
||||||
|
|
@ -66,6 +64,7 @@ import app.closer.ui.settings.SettingsPrimary
|
||||||
import app.closer.ui.settings.SettingsPrimaryDeep
|
import app.closer.ui.settings.SettingsPrimaryDeep
|
||||||
import app.closer.ui.settings.SettingsSoft
|
import app.closer.ui.settings.SettingsSoft
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -102,7 +101,7 @@ fun CreateInviteScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = onBack) {
|
IconButton(onClick = onBack) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = SettingsInk
|
tint = SettingsInk
|
||||||
)
|
)
|
||||||
|
|
@ -255,7 +254,7 @@ fun CreateInviteScreen(
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.Filled.Lock,
|
CloserGlyphs.Lock,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = SettingsPrimaryDeep,
|
tint = SettingsPrimaryDeep,
|
||||||
modifier = Modifier.size(16.dp)
|
modifier = Modifier.size(16.dp)
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
|
||||||
import androidx.compose.material.icons.filled.FavoriteBorder
|
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
|
||||||
|
|
@ -53,6 +52,7 @@ import app.closer.ui.settings.SettingsOnPrimary
|
||||||
import app.closer.ui.settings.SettingsPrimary
|
import app.closer.ui.settings.SettingsPrimary
|
||||||
import app.closer.ui.settings.SettingsPrimaryDeep
|
import app.closer.ui.settings.SettingsPrimaryDeep
|
||||||
import app.closer.ui.settings.SettingsSoft
|
import app.closer.ui.settings.SettingsSoft
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -84,7 +84,7 @@ fun InviteConfirmScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = onBack) {
|
IconButton(onClick = onBack) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = SettingsInk
|
tint = SettingsInk
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -16,8 +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.Check
|
|
||||||
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
|
||||||
|
|
@ -44,6 +42,7 @@ import app.closer.ui.auth.AuthOnPrimary
|
||||||
import app.closer.ui.auth.AuthPrimary
|
import app.closer.ui.auth.AuthPrimary
|
||||||
import app.closer.ui.auth.AuthPrimaryDeep
|
import app.closer.ui.auth.AuthPrimaryDeep
|
||||||
import app.closer.ui.theme.CloserPalette
|
import app.closer.ui.theme.CloserPalette
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
private val WHY_ITEMS = listOf(
|
private val WHY_ITEMS = listOf(
|
||||||
"Daily questions reveal together — both answer privately, then see each other's response at the same time.",
|
"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)
|
modifier = Modifier.size(22.dp)
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Check,
|
imageVector = CloserGlyphs.Check,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = AuthOnPrimary,
|
tint = AuthOnPrimary,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,6 @@ import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
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.Person
|
|
||||||
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
|
||||||
|
|
@ -78,6 +76,7 @@ import app.closer.ui.settings.SettingsMuted
|
||||||
import app.closer.ui.settings.SettingsOnPrimary
|
import app.closer.ui.settings.SettingsOnPrimary
|
||||||
import app.closer.ui.settings.SettingsPrimary
|
import app.closer.ui.settings.SettingsPrimary
|
||||||
import app.closer.ui.settings.SettingsSoft
|
import app.closer.ui.settings.SettingsSoft
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
// ── ViewModel ────────────────────────────────────────────────────────────────
|
// ── ViewModel ────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|
@ -278,8 +277,8 @@ private fun PairAvatar(url: String, modifier: Modifier = Modifier) {
|
||||||
model = cleanUrl,
|
model = cleanUrl,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
contentScale = ContentScale.Crop,
|
contentScale = ContentScale.Crop,
|
||||||
placeholder = rememberVectorPainter(Icons.Filled.Person),
|
placeholder = rememberVectorPainter(CloserGlyphs.Person),
|
||||||
error = rememberVectorPainter(Icons.Filled.Person),
|
error = rememberVectorPainter(CloserGlyphs.Person),
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
.clip(CircleShape)
|
.clip(CircleShape)
|
||||||
.border(4.dp, Color.White, CircleShape)
|
.border(4.dp, Color.White, CircleShape)
|
||||||
|
|
@ -295,7 +294,7 @@ private fun PairAvatar(url: String, modifier: Modifier = Modifier) {
|
||||||
contentAlignment = Alignment.Center
|
contentAlignment = Alignment.Center
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.Filled.Person,
|
CloserGlyphs.Person,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = SettingsPrimary,
|
tint = SettingsPrimary,
|
||||||
modifier = Modifier.fillMaxSize(0.5f)
|
modifier = Modifier.fillMaxSize(0.5f)
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,6 @@ import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
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.Lock
|
|
||||||
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
|
||||||
|
|
@ -48,6 +46,7 @@ import app.closer.ui.settings.SettingsMuted
|
||||||
import app.closer.ui.settings.SettingsOnPrimary
|
import app.closer.ui.settings.SettingsOnPrimary
|
||||||
import app.closer.ui.settings.SettingsPrimary
|
import app.closer.ui.settings.SettingsPrimary
|
||||||
import app.closer.ui.settings.SettingsPrimaryDeep
|
import app.closer.ui.settings.SettingsPrimaryDeep
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RecoveryScreen(
|
fun RecoveryScreen(
|
||||||
|
|
@ -83,7 +82,7 @@ fun RecoveryScreen(
|
||||||
Spacer(Modifier.height(48.dp))
|
Spacer(Modifier.height(48.dp))
|
||||||
|
|
||||||
StatusGlyph(
|
StatusGlyph(
|
||||||
icon = Icons.Filled.Lock,
|
icon = CloserGlyphs.Lock,
|
||||||
tint = SettingsPrimaryDeep,
|
tint = SettingsPrimaryDeep,
|
||||||
container = SettingsPrimary.copy(alpha = 0.12f)
|
container = SettingsPrimary.copy(alpha = 0.12f)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,6 @@ 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.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.Button
|
||||||
import androidx.compose.material3.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
import androidx.compose.material3.Card
|
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.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 androidx.compose.material.icons.filled.Close
|
||||||
|
|
||||||
private val BENEFITS = listOf(
|
private val BENEFITS = listOf(
|
||||||
"Unlimited questions every day",
|
"Unlimited questions every day",
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,6 @@ import androidx.compose.foundation.layout.safeDrawingPadding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
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.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.Icon
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.Surface
|
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.components.CloserRadii
|
||||||
import app.closer.ui.theme.closerBackgroundBrush
|
import app.closer.ui.theme.closerBackgroundBrush
|
||||||
import app.closer.ui.theme.closerPlayCardBrush
|
import app.closer.ui.theme.closerPlayCardBrush
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun PlayHubScreen(
|
fun PlayHubScreen(
|
||||||
|
|
@ -280,7 +274,7 @@ private fun ThisOrThatCard(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
|
imageVector = CloserGlyphs.Forward,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.secondary,
|
tint = MaterialTheme.colorScheme.secondary,
|
||||||
modifier = Modifier.size(18.dp)
|
modifier = Modifier.size(18.dp)
|
||||||
|
|
@ -351,7 +345,7 @@ private fun DesireSyncCard(
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Lock,
|
imageVector = CloserGlyphs.Lock,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.secondary,
|
tint = MaterialTheme.colorScheme.secondary,
|
||||||
modifier = Modifier.size(13.dp)
|
modifier = Modifier.size(13.dp)
|
||||||
|
|
@ -375,7 +369,7 @@ private fun DesireSyncCard(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
|
imageVector = CloserGlyphs.Forward,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.secondary,
|
tint = MaterialTheme.colorScheme.secondary,
|
||||||
modifier = Modifier.size(18.dp)
|
modifier = Modifier.size(18.dp)
|
||||||
|
|
@ -448,7 +442,7 @@ private fun HowWellCard(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
|
imageVector = CloserGlyphs.Forward,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.secondary,
|
tint = MaterialTheme.colorScheme.secondary,
|
||||||
modifier = Modifier.size(18.dp)
|
modifier = Modifier.size(18.dp)
|
||||||
|
|
@ -522,7 +516,7 @@ private fun ConnectionChallengesCard(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
|
imageVector = CloserGlyphs.Forward,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.primary,
|
tint = MaterialTheme.colorScheme.primary,
|
||||||
modifier = Modifier.size(18.dp)
|
modifier = Modifier.size(18.dp)
|
||||||
|
|
@ -592,7 +586,7 @@ private fun MemoryLaneCard(
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Lock,
|
imageVector = CloserGlyphs.Lock,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.secondary,
|
tint = MaterialTheme.colorScheme.secondary,
|
||||||
modifier = Modifier.size(13.dp)
|
modifier = Modifier.size(13.dp)
|
||||||
|
|
@ -616,7 +610,7 @@ private fun MemoryLaneCard(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
|
imageVector = CloserGlyphs.Forward,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.secondary,
|
tint = MaterialTheme.colorScheme.secondary,
|
||||||
modifier = Modifier.size(18.dp)
|
modifier = Modifier.size(18.dp)
|
||||||
|
|
@ -759,7 +753,7 @@ private fun CompactPlayCard(
|
||||||
) {
|
) {
|
||||||
if (locked) {
|
if (locked) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Lock,
|
imageVector = CloserGlyphs.Lock,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.tertiary,
|
tint = MaterialTheme.colorScheme.tertiary,
|
||||||
modifier = Modifier.size(11.dp)
|
modifier = Modifier.size(11.dp)
|
||||||
|
|
@ -774,7 +768,7 @@ private fun CompactPlayCard(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
|
imageVector = CloserGlyphs.Forward,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = tint,
|
tint = tint,
|
||||||
modifier = Modifier.size(18.dp)
|
modifier = Modifier.size(18.dp)
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,6 @@ 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.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.material.icons.filled.Visibility
|
||||||
import androidx.compose.material3.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material3.ButtonDefaults
|
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.components.LoadingState
|
||||||
import app.closer.ui.questions.components.QuestionAnswerInput
|
import app.closer.ui.questions.components.QuestionAnswerInput
|
||||||
import app.closer.ui.questions.components.QuestionHeader
|
import app.closer.ui.questions.components.QuestionHeader
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun LocalQuestionContent(
|
fun LocalQuestionContent(
|
||||||
|
|
@ -97,7 +96,7 @@ fun LocalQuestionContent(
|
||||||
if (onBack != null) {
|
if (onBack != null) {
|
||||||
IconButton(onClick = onBack) {
|
IconButton(onClick = onBack) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
|
imageVector = CloserGlyphs.Back,
|
||||||
contentDescription = "Back"
|
contentDescription = "Back"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -277,7 +276,7 @@ private fun SubmittedAnswerCard(
|
||||||
contentAlignment = Alignment.Center
|
contentAlignment = Alignment.Center
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = if (state.isRevealed) Icons.Filled.Visibility else Icons.Filled.Lock,
|
imageVector = if (state.isRevealed) Icons.Filled.Visibility 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)
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,6 @@ import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
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.ArrowBack
|
|
||||||
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
|
||||||
|
|
@ -55,6 +53,7 @@ import app.closer.core.navigation.AppRoute
|
||||||
import app.closer.domain.model.Question
|
import app.closer.domain.model.Question
|
||||||
import app.closer.domain.model.QuestionCategory
|
import app.closer.domain.model.QuestionCategory
|
||||||
import app.closer.ui.components.CategoryGlyph
|
import app.closer.ui.components.CategoryGlyph
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun QuestionCategoryScreen(
|
fun QuestionCategoryScreen(
|
||||||
|
|
@ -113,7 +112,7 @@ private fun QuestionCategoryContent(
|
||||||
) {
|
) {
|
||||||
IconButton(onClick = onBack) {
|
IconButton(onClick = onBack) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = MaterialTheme.colorScheme.onBackground
|
tint = MaterialTheme.colorScheme.onBackground
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,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.automirrored.filled.ArrowBack
|
|
||||||
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
|
||||||
|
|
@ -48,6 +46,7 @@ import app.closer.ui.questions.components.AnswerBubble
|
||||||
import app.closer.ui.questions.components.QuestionAnswerInput
|
import app.closer.ui.questions.components.QuestionAnswerInput
|
||||||
import app.closer.ui.questions.components.QuestionHeader
|
import app.closer.ui.questions.components.QuestionHeader
|
||||||
import app.closer.ui.theme.closerBackgroundBrush
|
import app.closer.ui.theme.closerBackgroundBrush
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun QuestionThreadScreen(
|
fun QuestionThreadScreen(
|
||||||
|
|
@ -77,7 +76,7 @@ fun QuestionThreadScreen(
|
||||||
) {
|
) {
|
||||||
IconButton(onClick = onBack) {
|
IconButton(onClick = onBack) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
|
imageVector = CloserGlyphs.Back,
|
||||||
contentDescription = "Back"
|
contentDescription = "Back"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,6 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.filled.Person
|
|
||||||
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
|
||||||
|
|
@ -35,6 +34,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
|
||||||
|
|
||||||
private val REACTION_EMOJIS = listOf("❤️", "😊", "😂", "😮", "👏", "🥺")
|
private val REACTION_EMOJIS = listOf("❤️", "😊", "😂", "😮", "👏", "🥺")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.Send
|
import androidx.compose.material.icons.automirrored.filled.Send
|
||||||
import androidx.compose.material.icons.filled.Image
|
import androidx.compose.material.icons.filled.Image
|
||||||
import androidx.compose.material.icons.filled.Person
|
|
||||||
import androidx.compose.material.icons.filled.PhotoCamera
|
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
|
||||||
|
|
@ -61,6 +60,7 @@ import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun QuestionDiscussionThread(
|
fun QuestionDiscussionThread(
|
||||||
|
|
@ -261,7 +261,7 @@ private fun MessageAvatar(url: String?, visible: Boolean) {
|
||||||
contentAlignment = Alignment.Center
|
contentAlignment = Alignment.Center
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Person,
|
imageVector = CloserGlyphs.Person,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.onSurfaceVariant,
|
tint = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
modifier = Modifier.size(16.dp)
|
modifier = Modifier.size(16.dp)
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,6 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.filled.Add
|
|
||||||
import androidx.compose.material.icons.filled.Close
|
|
||||||
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
|
||||||
|
|
@ -27,6 +25,8 @@ 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 androidx.compose.material.icons.filled.Close
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun QuestionHelpExpandable(
|
fun QuestionHelpExpandable(
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
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.ArrowBack
|
|
||||||
import androidx.compose.material.icons.automirrored.filled.ArrowForward
|
|
||||||
import androidx.compose.material3.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
import androidx.compose.material3.FilledTonalButton
|
import androidx.compose.material3.FilledTonalButton
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
|
|
@ -19,6 +16,7 @@ import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun QuestionNavigationBar(
|
fun QuestionNavigationBar(
|
||||||
|
|
@ -46,7 +44,7 @@ fun QuestionNavigationBar(
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
|
imageVector = CloserGlyphs.Back,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.padding(end = 4.dp)
|
modifier = Modifier.padding(end = 4.dp)
|
||||||
)
|
)
|
||||||
|
|
@ -75,7 +73,7 @@ fun QuestionNavigationBar(
|
||||||
fontWeight = FontWeight.Medium
|
fontWeight = FontWeight.Medium
|
||||||
)
|
)
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
|
imageVector = CloserGlyphs.Forward,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.padding(start = 4.dp)
|
modifier = Modifier.padding(start = 4.dp)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,6 @@ 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.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.ContentCopy
|
||||||
import androidx.compose.material.icons.filled.Delete
|
import androidx.compose.material.icons.filled.Delete
|
||||||
import androidx.compose.material.icons.filled.Key
|
import androidx.compose.material.icons.filled.Key
|
||||||
|
|
@ -54,6 +52,7 @@ import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import app.closer.R
|
import app.closer.R
|
||||||
import app.closer.core.navigation.AppRoute
|
import app.closer.core.navigation.AppRoute
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -77,7 +76,7 @@ fun AccountScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { onNavigate("back") }) {
|
IconButton(onClick = { onNavigate("back") }) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = stringResource(R.string.action_back),
|
contentDescription = stringResource(R.string.action_back),
|
||||||
tint = SettingsInk
|
tint = SettingsInk
|
||||||
)
|
)
|
||||||
|
|
@ -221,7 +220,7 @@ private fun AccountRow(
|
||||||
)
|
)
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowForwardIos,
|
CloserGlyphs.Forward,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(14.dp),
|
modifier = Modifier.size(14.dp),
|
||||||
tint = SettingsMuted
|
tint = SettingsMuted
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,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.automirrored.filled.ArrowBack
|
|
||||||
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
|
||||||
|
|
@ -40,6 +38,7 @@ import androidx.compose.ui.unit.dp
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import app.closer.R
|
import app.closer.R
|
||||||
import app.closer.domain.repository.ThemeMode
|
import app.closer.domain.repository.ThemeMode
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -58,7 +57,7 @@ fun AppearanceScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { onNavigate("back") }) {
|
IconButton(onClick = { onNavigate("back") }) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = stringResource(R.string.action_back),
|
contentDescription = stringResource(R.string.action_back),
|
||||||
tint = SettingsInk
|
tint = SettingsInk
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -31,8 +31,6 @@ import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.material3.Checkbox
|
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.AlertDialog
|
||||||
import androidx.compose.material3.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material3.ButtonDefaults
|
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.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
data class DeleteAccountUiState(
|
data class DeleteAccountUiState(
|
||||||
val showConfirm: Boolean = false,
|
val showConfirm: Boolean = false,
|
||||||
|
|
@ -278,7 +277,7 @@ fun DeleteAccountScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { onNavigate("back") }) {
|
IconButton(onClick = { onNavigate("back") }) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = SettingsInk
|
tint = SettingsInk
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -27,10 +27,7 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
|
||||||
import androidx.compose.material.icons.filled.AddAPhoto
|
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.material.icons.filled.PhotoLibrary
|
||||||
import androidx.compose.material3.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material3.ButtonDefaults
|
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.SettingsOnPrimary
|
||||||
import app.closer.ui.settings.SettingsPrimary
|
import app.closer.ui.settings.SettingsPrimary
|
||||||
import app.closer.ui.settings.SettingsPrimaryDeep
|
import app.closer.ui.settings.SettingsPrimaryDeep
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -98,7 +96,7 @@ fun EditProfileScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { onNavigate("back") }) {
|
IconButton(onClick = { onNavigate("back") }) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = SettingsInk
|
tint = SettingsInk
|
||||||
)
|
)
|
||||||
|
|
@ -197,12 +195,12 @@ fun EditProfileContent(
|
||||||
contentDescription = "Profile photo",
|
contentDescription = "Profile photo",
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
contentScale = ContentScale.Crop,
|
contentScale = ContentScale.Crop,
|
||||||
placeholder = rememberVectorPainter(Icons.Filled.Person),
|
placeholder = rememberVectorPainter(CloserGlyphs.Person),
|
||||||
error = rememberVectorPainter(Icons.Filled.Person)
|
error = rememberVectorPainter(CloserGlyphs.Person)
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.Filled.Person,
|
CloserGlyphs.Person,
|
||||||
contentDescription = "Profile photo",
|
contentDescription = "Profile photo",
|
||||||
modifier = Modifier.size(56.dp),
|
modifier = Modifier.size(56.dp),
|
||||||
tint = SettingsMuted
|
tint = SettingsMuted
|
||||||
|
|
@ -407,7 +405,7 @@ private fun SexEditOption(
|
||||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||||
if (selected) {
|
if (selected) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.Filled.Check,
|
CloserGlyphs.Check,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(18.dp).padding(end = 6.dp),
|
modifier = Modifier.size(18.dp).padding(end = 6.dp),
|
||||||
tint = contentColor
|
tint = contentColor
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,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.automirrored.filled.ArrowBack
|
|
||||||
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
|
||||||
|
|
@ -55,6 +53,7 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import app.closer.R
|
import app.closer.R
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
data class NotificationSettingsUiState(
|
data class NotificationSettingsUiState(
|
||||||
val dailyReminderEnabled: Boolean = true,
|
val dailyReminderEnabled: Boolean = true,
|
||||||
|
|
@ -155,7 +154,7 @@ fun NotificationSettingsScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { onNavigate("back") }) {
|
IconButton(onClick = { onNavigate("back") }) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = stringResource(R.string.action_back),
|
contentDescription = stringResource(R.string.action_back),
|
||||||
tint = SettingsInk
|
tint = SettingsInk
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -19,11 +19,7 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
|
||||||
import androidx.compose.material.icons.automirrored.filled.OpenInNew
|
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.Card
|
||||||
import androidx.compose.material3.CardDefaults
|
import androidx.compose.material3.CardDefaults
|
||||||
import androidx.compose.material3.Divider
|
import androidx.compose.material3.Divider
|
||||||
|
|
@ -47,6 +43,10 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
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 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
|
||||||
|
|
@ -64,7 +64,7 @@ fun PrivacyScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { onNavigate("back") }) {
|
IconButton(onClick = { onNavigate("back") }) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = stringResource(R.string.action_back),
|
contentDescription = stringResource(R.string.action_back),
|
||||||
tint = SettingsInk
|
tint = SettingsInk
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,6 @@ import androidx.compose.foundation.layout.safeDrawingPadding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.verticalScroll
|
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.AlertDialog
|
||||||
import androidx.compose.material3.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material3.ButtonDefaults
|
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.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
data class RelationshipSettingsUiState(
|
data class RelationshipSettingsUiState(
|
||||||
val showLeaveConfirm: Boolean = false,
|
val showLeaveConfirm: Boolean = false,
|
||||||
|
|
@ -136,7 +135,7 @@ fun RelationshipSettingsScreen(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { onNavigate("back") }) {
|
IconButton(onClick = { onNavigate("back") }) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = SettingsInk
|
tint = SettingsInk
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.filled.Fingerprint
|
import androidx.compose.material.icons.filled.Fingerprint
|
||||||
import androidx.compose.material.icons.filled.Lock
|
|
||||||
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
|
||||||
|
|
@ -60,6 +59,7 @@ import kotlinx.coroutines.flow.stateIn
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
data class SecurityUiState(
|
data class SecurityUiState(
|
||||||
val biometricLoginEnabled: Boolean = false,
|
val biometricLoginEnabled: Boolean = false,
|
||||||
|
|
@ -235,7 +235,7 @@ fun SecurityScreen(
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
horizontalArrangement = Arrangement.spacedBy(12.dp)
|
horizontalArrangement = Arrangement.spacedBy(12.dp)
|
||||||
) {
|
) {
|
||||||
Icon(Icons.Filled.Lock, contentDescription = null, tint = SettingsMuted)
|
Icon(CloserGlyphs.Lock, contentDescription = null, tint = SettingsMuted)
|
||||||
Text(
|
Text(
|
||||||
text = "Recovery phrase",
|
text = "Recovery phrase",
|
||||||
style = MaterialTheme.typography.bodyLarge,
|
style = MaterialTheme.typography.bodyLarge,
|
||||||
|
|
|
||||||
|
|
@ -22,17 +22,11 @@ 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.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.automirrored.filled.TrendingUp
|
||||||
import androidx.compose.material.icons.filled.Done
|
|
||||||
import androidx.compose.material.icons.filled.Favorite
|
import androidx.compose.material.icons.filled.Favorite
|
||||||
import androidx.compose.material.icons.filled.FavoriteBorder
|
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.Notifications
|
||||||
import androidx.compose.material.icons.filled.Palette
|
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.Button
|
||||||
import androidx.compose.material3.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
import androidx.compose.material3.Card
|
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.SettingsPrimaryDeep
|
||||||
import app.closer.ui.settings.SettingsSoft
|
import app.closer.ui.settings.SettingsSoft
|
||||||
import coil.compose.AsyncImage
|
import coil.compose.AsyncImage
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
// ====================
|
// ====================
|
||||||
// Settings Subpages
|
// Settings Subpages
|
||||||
|
|
@ -104,7 +99,7 @@ fun SettingsSubpage(
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = onBack) {
|
IconButton(onClick = onBack) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowBack,
|
CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = SettingsInk
|
tint = SettingsInk
|
||||||
)
|
)
|
||||||
|
|
@ -334,7 +329,7 @@ fun SettingsScreen(
|
||||||
) {
|
) {
|
||||||
ProfileAvatar(
|
ProfileAvatar(
|
||||||
imageUrl = state.photoUrl,
|
imageUrl = state.photoUrl,
|
||||||
fallbackIcon = Icons.Filled.Person,
|
fallbackIcon = CloserGlyphs.Person,
|
||||||
fallbackTint = SettingsPrimaryDeep
|
fallbackTint = SettingsPrimaryDeep
|
||||||
)
|
)
|
||||||
Column(
|
Column(
|
||||||
|
|
@ -358,7 +353,7 @@ fun SettingsScreen(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowForwardIos,
|
CloserGlyphs.Forward,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(16.dp),
|
modifier = Modifier.size(16.dp),
|
||||||
tint = SettingsPrimaryDeep
|
tint = SettingsPrimaryDeep
|
||||||
|
|
@ -400,7 +395,7 @@ fun SettingsScreen(
|
||||||
if (state.isPaired) {
|
if (state.isPaired) {
|
||||||
ProfileAvatar(
|
ProfileAvatar(
|
||||||
imageUrl = state.partnerPhotoUrl,
|
imageUrl = state.partnerPhotoUrl,
|
||||||
fallbackIcon = Icons.Filled.Favorite,
|
fallbackIcon = CloserGlyphs.Heart,
|
||||||
fallbackTint = SettingsPrimaryDeep
|
fallbackTint = SettingsPrimaryDeep
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -451,7 +446,7 @@ fun SettingsScreen(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowForwardIos,
|
CloserGlyphs.Forward,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(16.dp),
|
modifier = Modifier.size(16.dp),
|
||||||
tint = partnerAccent
|
tint = partnerAccent
|
||||||
|
|
@ -461,7 +456,7 @@ fun SettingsScreen(
|
||||||
|
|
||||||
SettingsSection(title = "For the two of you", accent = Color(0xFFF7C8E4)) {
|
SettingsSection(title = "For the two of you", accent = Color(0xFFF7C8E4)) {
|
||||||
SettingsRow(
|
SettingsRow(
|
||||||
icon = Icons.Filled.Favorite,
|
icon = CloserGlyphs.Heart,
|
||||||
label = "Together",
|
label = "Together",
|
||||||
subtitle = "Your shared activity, answers, and milestones",
|
subtitle = "Your shared activity, answers, and milestones",
|
||||||
onClick = { onNavigate(AppRoute.ACTIVITY) },
|
onClick = { onNavigate(AppRoute.ACTIVITY) },
|
||||||
|
|
@ -470,14 +465,14 @@ fun SettingsScreen(
|
||||||
SettingsSectionDivider()
|
SettingsSectionDivider()
|
||||||
if (app.closer.BuildConfig.DEBUG) {
|
if (app.closer.BuildConfig.DEBUG) {
|
||||||
SettingsRow(
|
SettingsRow(
|
||||||
icon = Icons.Filled.Favorite,
|
icon = CloserGlyphs.Heart,
|
||||||
label = "Art preview (debug)",
|
label = "Art preview (debug)",
|
||||||
subtitle = "Preview celebration art without pairing",
|
subtitle = "Preview celebration art without pairing",
|
||||||
onClick = { onNavigate(AppRoute.ART_PREVIEW) }
|
onClick = { onNavigate(AppRoute.ART_PREVIEW) }
|
||||||
)
|
)
|
||||||
SettingsSectionDivider()
|
SettingsSectionDivider()
|
||||||
SettingsRow(
|
SettingsRow(
|
||||||
icon = Icons.Filled.Favorite,
|
icon = CloserGlyphs.Heart,
|
||||||
label = "Paired home (debug)",
|
label = "Paired home (debug)",
|
||||||
subtitle = "Preview the paired Home without pairing",
|
subtitle = "Preview the paired Home without pairing",
|
||||||
onClick = { onNavigate(AppRoute.PAIRED_HOME_PREVIEW) }
|
onClick = { onNavigate(AppRoute.PAIRED_HOME_PREVIEW) }
|
||||||
|
|
@ -485,7 +480,7 @@ fun SettingsScreen(
|
||||||
SettingsSectionDivider()
|
SettingsSectionDivider()
|
||||||
}
|
}
|
||||||
SettingsRow(
|
SettingsRow(
|
||||||
icon = Icons.Filled.Done,
|
icon = CloserGlyphs.Check,
|
||||||
label = "Answer History",
|
label = "Answer History",
|
||||||
subtitle = "Revisit the moments you have shared",
|
subtitle = "Revisit the moments you have shared",
|
||||||
onClick = { onNavigate(AppRoute.ANSWER_HISTORY) }
|
onClick = { onNavigate(AppRoute.ANSWER_HISTORY) }
|
||||||
|
|
@ -670,7 +665,7 @@ private fun SettingsRow(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Icon(
|
Icon(
|
||||||
Icons.AutoMirrored.Filled.ArrowForwardIos,
|
CloserGlyphs.Forward,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(14.dp),
|
modifier = Modifier.size(14.dp),
|
||||||
tint = SettingsMuted
|
tint = SettingsMuted
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ 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.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.OpenInNew
|
import androidx.compose.material.icons.automirrored.filled.OpenInNew
|
||||||
import androidx.compose.material.icons.filled.Check
|
|
||||||
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
|
||||||
|
|
@ -70,6 +69,7 @@ import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
private val BENEFITS = listOf(
|
private val BENEFITS = listOf(
|
||||||
"Unlimited questions every day",
|
"Unlimited questions every day",
|
||||||
|
|
@ -250,7 +250,7 @@ private fun PremiumContent(
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Check,
|
imageVector = CloserGlyphs.Check,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.primary,
|
tint = MaterialTheme.colorScheme.primary,
|
||||||
modifier = Modifier.size(16.dp)
|
modifier = Modifier.size(16.dp)
|
||||||
|
|
@ -351,7 +351,7 @@ private fun FreeContent(
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Check,
|
imageVector = CloserGlyphs.Check,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.primary,
|
tint = MaterialTheme.colorScheme.primary,
|
||||||
modifier = Modifier.size(16.dp)
|
modifier = Modifier.size(16.dp)
|
||||||
|
|
|
||||||
|
|
@ -15,7 +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.automirrored.filled.ArrowForward
|
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.PlayArrow
|
import androidx.compose.material.icons.filled.PlayArrow
|
||||||
import androidx.compose.material3.Button
|
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.questions.displayCategoryName
|
||||||
import app.closer.ui.theme.CloserPalette
|
import app.closer.ui.theme.CloserPalette
|
||||||
import app.closer.ui.theme.closerBackgroundBrush
|
import app.closer.ui.theme.closerBackgroundBrush
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun CategoryPickerScreen(
|
fun CategoryPickerScreen(
|
||||||
|
|
@ -291,7 +291,7 @@ private fun CategoryCard(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowForward,
|
imageVector = CloserGlyphs.Forward,
|
||||||
contentDescription = if (item.isLocked) "Unlock" else "Spin",
|
contentDescription = if (item.isLocked) "Unlock" else "Spin",
|
||||||
tint = if (item.isLocked) MaterialTheme.colorScheme.outline else CloserPalette.PurpleDeep,
|
tint = if (item.isLocked) MaterialTheme.colorScheme.outline else CloserPalette.PurpleDeep,
|
||||||
modifier = Modifier.size(20.dp)
|
modifier = Modifier.size(20.dp)
|
||||||
|
|
|
||||||
|
|
@ -27,9 +27,6 @@ import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
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.ArrowBack
|
|
||||||
import androidx.compose.material.icons.filled.Lock
|
|
||||||
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
|
||||||
|
|
@ -65,6 +62,7 @@ import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import app.closer.R
|
import app.closer.R
|
||||||
import app.closer.ui.theme.CloserPalette
|
import app.closer.ui.theme.CloserPalette
|
||||||
import app.closer.ui.theme.closerBackgroundBrush
|
import app.closer.ui.theme.closerBackgroundBrush
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SpinWheelScreen(
|
fun SpinWheelScreen(
|
||||||
|
|
@ -126,7 +124,7 @@ private fun SpinWheelContent(
|
||||||
) {
|
) {
|
||||||
IconButton(onClick = onBack) {
|
IconButton(onClick = onBack) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
|
imageVector = CloserGlyphs.Back,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
tint = MaterialTheme.colorScheme.onBackground
|
tint = MaterialTheme.colorScheme.onBackground
|
||||||
)
|
)
|
||||||
|
|
@ -240,7 +238,7 @@ private fun SpinWheelContent(
|
||||||
) {
|
) {
|
||||||
if (!state.hasPremium) {
|
if (!state.hasPremium) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Lock,
|
imageVector = CloserGlyphs.Lock,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(14.dp)
|
modifier = Modifier.size(14.dp)
|
||||||
)
|
)
|
||||||
|
|
@ -309,7 +307,7 @@ private fun ChooseCategoryButton(hasPremium: Boolean, onClick: () -> Unit) {
|
||||||
) {
|
) {
|
||||||
if (!hasPremium) {
|
if (!hasPremium) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Lock,
|
imageVector = CloserGlyphs.Lock,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(14.dp)
|
modifier = Modifier.size(14.dp)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,6 @@ import androidx.compose.foundation.layout.width
|
||||||
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.Check
|
|
||||||
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
|
||||||
|
|
@ -67,6 +65,7 @@ import kotlinx.coroutines.flow.StateFlow
|
||||||
import kotlinx.coroutines.flow.asStateFlow
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
// ── ViewModel ──────────────────────────────────────────────────────────────────
|
// ── ViewModel ──────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|
@ -277,7 +276,7 @@ private fun WheelWaitingContent(
|
||||||
Spacer(Modifier.weight(1f))
|
Spacer(Modifier.weight(1f))
|
||||||
|
|
||||||
StatusGlyph(
|
StatusGlyph(
|
||||||
icon = Icons.Filled.Check,
|
icon = CloserGlyphs.Check,
|
||||||
tint = CloserPalette.PurpleDeep,
|
tint = CloserPalette.PurpleDeep,
|
||||||
container = CloserPalette.PurpleMist,
|
container = CloserPalette.PurpleMist,
|
||||||
size = 82.dp,
|
size = 82.dp,
|
||||||
|
|
@ -342,7 +341,7 @@ private fun WheelRevealContent(
|
||||||
verticalArrangement = Arrangement.spacedBy(8.dp)
|
verticalArrangement = Arrangement.spacedBy(8.dp)
|
||||||
) {
|
) {
|
||||||
StatusGlyph(
|
StatusGlyph(
|
||||||
icon = Icons.Filled.Check,
|
icon = CloserGlyphs.Check,
|
||||||
tint = CloserPalette.PurpleDeep,
|
tint = CloserPalette.PurpleDeep,
|
||||||
container = CloserPalette.PurpleMist,
|
container = CloserPalette.PurpleMist,
|
||||||
size = 72.dp,
|
size = 72.dp,
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,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.automirrored.filled.ArrowBack
|
|
||||||
import androidx.compose.material.icons.filled.Lock
|
|
||||||
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
|
||||||
|
|
@ -57,6 +54,7 @@ import app.closer.ui.questions.displayCategoryName
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
import app.closer.ui.components.CloserGlyphs
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -72,7 +70,7 @@ fun GameHistoryScreen(
|
||||||
title = { Text("Past Games") },
|
title = { Text("Past Games") },
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { onNavigate("back") }) {
|
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
|
color = MaterialTheme.colorScheme.surfaceVariant
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.Filled.Lock,
|
CloserGlyphs.Lock,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.padding(16.dp).size(28.dp),
|
modifier = Modifier.padding(16.dp).size(28.dp),
|
||||||
tint = MaterialTheme.colorScheme.primary
|
tint = MaterialTheme.colorScheme.primary
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue