fix(desktop): Messages list typography hierarchy — name vs. preview
Conversation cards had the name (bodyMedium) and last-message preview (bodySmall) stacked flush against each other with very similar color weight, so they blurred into one visual block. Now: - Name: titleSmall (14sp Medium) — the focal top line. - Preview: bodySmall at onSurfaceVariant.alpha = 0.7 with a 2dp spacer above so it sits as a clearly secondary line. - Timestamp: labelSmall at alpha 0.6, with an 8dp gutter before it so long names don't collide with the time. - Group badge: onSurfaceVariant.alpha = 0.5 instead of primary-70% so it doesn't compete with the name for attention. The name now wins the eye first; the preview reads as a subtitle. https://claude.ai/code/session_01NufduPfZvYQVYwLkbCjCUo
This commit is contained in:
+13
-6
@@ -342,7 +342,10 @@ private fun ConversationCard(
|
||||
|
||||
Spacer(Modifier.width(10.dp))
|
||||
|
||||
// Name, preview, timestamp
|
||||
// Name, preview, timestamp — vertical hierarchy: name = medium-weight
|
||||
// primary text (titleSmall), preview = muted secondary. Prior styling had
|
||||
// both lines at the same weight / near-same color and stacked flush,
|
||||
// making them blur into each other.
|
||||
Column(modifier = Modifier.weight(1f)) {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
@@ -351,7 +354,7 @@ private fun ConversationCard(
|
||||
) {
|
||||
Text(
|
||||
text = item.displayName,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
style = MaterialTheme.typography.titleSmall,
|
||||
color = MaterialTheme.colorScheme.onSurface,
|
||||
maxLines = 1,
|
||||
overflow = TextOverflow.Ellipsis,
|
||||
@@ -359,30 +362,34 @@ private fun ConversationCard(
|
||||
)
|
||||
|
||||
if (item.lastMessageTimestamp > 0) {
|
||||
Spacer(Modifier.width(8.dp))
|
||||
Text(
|
||||
text = item.lastMessageTimestamp.toTimeAgo(withDot = false),
|
||||
style = MaterialTheme.typography.labelSmall,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.7f),
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.6f),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (item.lastMessagePreview.isNotEmpty()) {
|
||||
Spacer(Modifier.height(2.dp))
|
||||
Text(
|
||||
text = item.lastMessagePreview,
|
||||
style = MaterialTheme.typography.bodySmall,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.7f),
|
||||
maxLines = 1,
|
||||
overflow = TextOverflow.Ellipsis,
|
||||
)
|
||||
}
|
||||
|
||||
// Group indicator
|
||||
// Group indicator — labelSmall with muted tertiary so the name line
|
||||
// still wins the eye even when a group badge is present.
|
||||
if (item.isGroup) {
|
||||
Spacer(Modifier.height(2.dp))
|
||||
Text(
|
||||
text = "Group (${item.users.size + 1})",
|
||||
style = MaterialTheme.typography.labelSmall,
|
||||
color = MaterialTheme.colorScheme.primary.copy(alpha = 0.7f),
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user