UI fix 5/5: contentDescription for actionable icons (partial audit)
Actionable IconButton/Icon instances now expose meaningful contentDescription for TalkBack. Purely decorative icons retain contentDescription = null with clarifying comments. Full audit of remaining 130+ sites is follow-up work. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -414,7 +414,7 @@ fun AddContractorDialog(
|
||||
Row {
|
||||
Icon(
|
||||
Icons.Default.Star,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = if (isFavorite) Color(0xFFF59E0B) else Color(0xFF9CA3AF)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
|
||||
@@ -288,7 +288,7 @@ fun CompleteTaskDialog(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.CameraAlt,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(18.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(4.dp))
|
||||
@@ -305,7 +305,7 @@ fun CompleteTaskDialog(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.PhotoLibrary,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(18.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(4.dp))
|
||||
@@ -429,7 +429,7 @@ private fun ImageThumbnail(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.PhotoLibrary,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f),
|
||||
modifier = Modifier.size(32.dp)
|
||||
)
|
||||
|
||||
@@ -46,7 +46,7 @@ fun ContractorImportConfirmDialog(
|
||||
icon = {
|
||||
Icon(
|
||||
imageVector = Icons.Default.PersonAdd,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
@@ -155,7 +155,7 @@ fun ContractorImportSuccessDialog(
|
||||
icon = {
|
||||
Icon(
|
||||
imageVector = Icons.Default.CheckCircle,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
@@ -201,7 +201,7 @@ fun ContractorImportErrorDialog(
|
||||
icon = {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Error,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
|
||||
@@ -77,7 +77,7 @@ fun ManageUsersDialog(
|
||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||
Icon(
|
||||
Icons.Default.PersonAdd,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(28.dp)
|
||||
)
|
||||
|
||||
@@ -43,7 +43,7 @@ fun ResidenceImportConfirmDialog(
|
||||
icon = {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Home,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
@@ -144,7 +144,7 @@ fun ResidenceImportSuccessDialog(
|
||||
icon = {
|
||||
Icon(
|
||||
imageVector = Icons.Default.CheckCircle,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
@@ -190,7 +190,7 @@ fun ResidenceImportErrorDialog(
|
||||
icon = {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Error,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
|
||||
@@ -132,7 +132,7 @@ private fun TaskSuggestionItem(
|
||||
// Chevron
|
||||
Icon(
|
||||
imageVector = Icons.Default.ChevronRight,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(16.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
|
||||
@@ -26,7 +26,7 @@ fun AuthHeader(
|
||||
) {
|
||||
Icon(
|
||||
icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(64.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
|
||||
@@ -22,7 +22,7 @@ fun RequirementItem(text: String, satisfied: Boolean) {
|
||||
) {
|
||||
Icon(
|
||||
if (satisfied) Icons.Default.CheckCircle else Icons.Default.Circle,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = if (satisfied) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
modifier = Modifier.size(16.dp)
|
||||
)
|
||||
|
||||
@@ -35,7 +35,7 @@ fun InfoCard(
|
||||
) {
|
||||
Icon(
|
||||
icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
|
||||
@@ -53,7 +53,7 @@ fun StandardEmptyState(
|
||||
// Icon
|
||||
Icon(
|
||||
imageVector = icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(80.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f)
|
||||
)
|
||||
@@ -110,7 +110,7 @@ fun CompactEmptyState(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f)
|
||||
)
|
||||
|
||||
@@ -27,7 +27,7 @@ fun StatItem(
|
||||
) {
|
||||
Icon(
|
||||
icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(28.dp),
|
||||
tint = valueColor ?: MaterialTheme.colorScheme.onPrimaryContainer
|
||||
)
|
||||
|
||||
@@ -61,7 +61,7 @@ fun DeleteAccountDialog(
|
||||
// Warning Icon
|
||||
Icon(
|
||||
imageVector = Icons.Default.Warning,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.error,
|
||||
modifier = Modifier.size(48.dp)
|
||||
)
|
||||
|
||||
@@ -165,7 +165,7 @@ private fun RegularDocumentCardContent(document: Document, onClick: () -> Unit)
|
||||
"receipt" -> Icons.Default.Receipt
|
||||
else -> Icons.Default.Description
|
||||
},
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = typeColor,
|
||||
modifier = Modifier.size(32.dp)
|
||||
)
|
||||
@@ -220,7 +220,7 @@ private fun RegularDocumentCardContent(document: Document, onClick: () -> Unit)
|
||||
|
||||
Icon(
|
||||
Icons.Default.ChevronRight,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = Color.Gray
|
||||
)
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ fun EmptyState(icon: ImageVector, message: String) {
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.Center
|
||||
) {
|
||||
Icon(icon, contentDescription = null, modifier = Modifier.size(64.dp), tint = Color.Gray)
|
||||
Icon(icon, contentDescription = null, modifier = Modifier.size(64.dp) , tint = Color.Gray) // decorative
|
||||
Spacer(modifier = Modifier.height(16.dp))
|
||||
Text(message, style = MaterialTheme.typography.titleMedium, color = Color.Gray)
|
||||
}
|
||||
@@ -31,7 +31,7 @@ fun ErrorState(message: String, onRetry: () -> Unit) {
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.Center
|
||||
) {
|
||||
Icon(Icons.Default.Error, contentDescription = null, modifier = Modifier.size(64.dp), tint = Color.Red)
|
||||
Icon(Icons.Default.Error, contentDescription = null, modifier = Modifier.size(64.dp) , tint = Color.Red) // decorative
|
||||
Spacer(modifier = Modifier.height(16.dp))
|
||||
Text(message, style = MaterialTheme.typography.bodyLarge, color = Color.Gray)
|
||||
Spacer(modifier = Modifier.height(16.dp))
|
||||
|
||||
@@ -24,7 +24,7 @@ fun DetailRow(
|
||||
) {
|
||||
Icon(
|
||||
icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(20.dp)
|
||||
)
|
||||
|
||||
@@ -24,7 +24,7 @@ fun PropertyDetailItem(
|
||||
) {
|
||||
Icon(
|
||||
icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(32.dp)
|
||||
)
|
||||
|
||||
@@ -26,7 +26,7 @@ fun TaskStatChip(
|
||||
) {
|
||||
Icon(
|
||||
icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(16.dp),
|
||||
tint = color
|
||||
)
|
||||
|
||||
@@ -82,7 +82,7 @@ fun CompletionHistorySheet(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Task,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(20.dp)
|
||||
)
|
||||
@@ -143,7 +143,7 @@ fun CompletionHistorySheet(
|
||||
Column(horizontalAlignment = Alignment.CenterHorizontally) {
|
||||
Icon(
|
||||
Icons.Default.Error,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.error,
|
||||
modifier = Modifier.size(48.dp)
|
||||
)
|
||||
@@ -181,7 +181,7 @@ fun CompletionHistorySheet(
|
||||
}
|
||||
}
|
||||
) {
|
||||
Icon(Icons.Default.Refresh, contentDescription = null)
|
||||
Icon(Icons.Default.Refresh, contentDescription = null) // decorative
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Text("Retry")
|
||||
}
|
||||
@@ -198,7 +198,7 @@ fun CompletionHistorySheet(
|
||||
Column(horizontalAlignment = Alignment.CenterHorizontally) {
|
||||
Icon(
|
||||
Icons.Default.CheckCircleOutline,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f),
|
||||
modifier = Modifier.size(48.dp)
|
||||
)
|
||||
@@ -270,7 +270,7 @@ private fun CompletionHistoryCard(completion: TaskCompletionResponse) {
|
||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||
Icon(
|
||||
Icons.Default.Person,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(14.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
@@ -291,7 +291,7 @@ private fun CompletionHistoryCard(completion: TaskCompletionResponse) {
|
||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||
Icon(
|
||||
Icons.Default.AttachMoney,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(20.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
@@ -328,7 +328,7 @@ private fun CompletionHistoryCard(completion: TaskCompletionResponse) {
|
||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||
Icon(
|
||||
Icons.Default.Star,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(20.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
@@ -356,7 +356,7 @@ private fun CompletionHistoryCard(completion: TaskCompletionResponse) {
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.PhotoLibrary,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(18.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
|
||||
@@ -158,7 +158,7 @@ fun TaskCard(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.CalendarToday,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(14.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
@@ -183,7 +183,7 @@ fun TaskCard(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.AttachMoney,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(14.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
@@ -222,7 +222,7 @@ fun TaskCard(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.MoreVert,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(18.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
@@ -292,7 +292,7 @@ fun TaskCard(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.CheckCircle,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(18.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(6.dp))
|
||||
@@ -341,7 +341,7 @@ private fun getActionMenuItem(
|
||||
DropdownMenuItem(
|
||||
text = { Text(stringResource(Res.string.tasks_card_mark_in_progress)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.PlayArrow, contentDescription = null)
|
||||
Icon(Icons.Default.PlayArrow, contentDescription = null) // decorative
|
||||
},
|
||||
onClick = {
|
||||
it()
|
||||
@@ -355,7 +355,7 @@ private fun getActionMenuItem(
|
||||
DropdownMenuItem(
|
||||
text = { Text(stringResource(Res.string.tasks_card_complete_task)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.CheckCircle, contentDescription = null)
|
||||
Icon(Icons.Default.CheckCircle, contentDescription = null) // decorative
|
||||
},
|
||||
onClick = {
|
||||
it()
|
||||
@@ -369,7 +369,7 @@ private fun getActionMenuItem(
|
||||
DropdownMenuItem(
|
||||
text = { Text(stringResource(Res.string.tasks_card_edit_task)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Edit, contentDescription = null)
|
||||
Icon(Icons.Default.Edit, contentDescription = null) // decorative
|
||||
},
|
||||
onClick = {
|
||||
it()
|
||||
@@ -385,7 +385,7 @@ private fun getActionMenuItem(
|
||||
leadingIcon = {
|
||||
Icon(
|
||||
Icons.Default.Cancel,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
},
|
||||
@@ -401,7 +401,7 @@ private fun getActionMenuItem(
|
||||
DropdownMenuItem(
|
||||
text = { Text(stringResource(Res.string.tasks_card_restore_task)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Undo, contentDescription = null)
|
||||
Icon(Icons.Default.Undo, contentDescription = null) // decorative
|
||||
},
|
||||
onClick = {
|
||||
it()
|
||||
@@ -415,7 +415,7 @@ private fun getActionMenuItem(
|
||||
DropdownMenuItem(
|
||||
text = { Text(stringResource(Res.string.tasks_card_archive_task)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Archive, contentDescription = null)
|
||||
Icon(Icons.Default.Archive, contentDescription = null) // decorative
|
||||
},
|
||||
onClick = {
|
||||
it()
|
||||
@@ -429,7 +429,7 @@ private fun getActionMenuItem(
|
||||
DropdownMenuItem(
|
||||
text = { Text(stringResource(Res.string.tasks_card_unarchive_task)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Unarchive, contentDescription = null)
|
||||
Icon(Icons.Default.Unarchive, contentDescription = null) // decorative
|
||||
},
|
||||
onClick = {
|
||||
it()
|
||||
@@ -493,7 +493,7 @@ fun CompletionCard(completion: TaskCompletion) {
|
||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||
Icon(
|
||||
Icons.Default.Build,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(16.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
@@ -556,7 +556,7 @@ fun CompletionCard(completion: TaskCompletion) {
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.PhotoLibrary,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(18.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
|
||||
@@ -146,7 +146,7 @@ private fun TaskColumn(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = color,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
@@ -183,7 +183,7 @@ private fun TaskColumn(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = color.copy(alpha = 0.3f),
|
||||
modifier = Modifier.size(48.dp)
|
||||
)
|
||||
@@ -331,7 +331,7 @@ private fun DynamicTaskColumn(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = columnIcon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = columnColor,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
@@ -368,7 +368,7 @@ private fun DynamicTaskColumn(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = columnIcon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = columnColor.copy(alpha = 0.3f),
|
||||
modifier = Modifier.size(48.dp)
|
||||
)
|
||||
|
||||
@@ -198,7 +198,7 @@ fun BiometricLockScreen(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Fingerprint,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(OrganicSpacing.sm))
|
||||
|
||||
@@ -133,7 +133,7 @@ fun CompleteTaskScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Home,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(16.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
@@ -192,7 +192,7 @@ fun CompleteTaskScreen(
|
||||
}
|
||||
Icon(
|
||||
Icons.Default.ChevronRight,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
@@ -498,7 +498,7 @@ private fun ImageThumbnailCard(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.PhotoLibrary,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f),
|
||||
modifier = Modifier.size(40.dp)
|
||||
)
|
||||
|
||||
@@ -201,7 +201,7 @@ fun ContractorDetailScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Build,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(16.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
@@ -224,7 +224,7 @@ fun ContractorDetailScreen(
|
||||
repeat(5) { index ->
|
||||
Icon(
|
||||
if (index < contractor.rating.toInt()) Icons.Default.Star else Icons.Default.StarOutline,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(20.dp),
|
||||
tint = Color(0xFFF59E0B)
|
||||
)
|
||||
@@ -451,7 +451,7 @@ fun ContractorDetailScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Notes,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(20.dp),
|
||||
tint = Color(0xFFF59E0B)
|
||||
)
|
||||
@@ -608,7 +608,7 @@ fun DetailRow(
|
||||
) {
|
||||
Icon(
|
||||
icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(20.dp),
|
||||
tint = iconTint
|
||||
)
|
||||
@@ -646,7 +646,7 @@ fun ClickableDetailRow(
|
||||
) {
|
||||
Icon(
|
||||
icon,
|
||||
contentDescription = null,
|
||||
contentDescription = label,
|
||||
modifier = Modifier.size(20.dp),
|
||||
tint = iconTint
|
||||
)
|
||||
|
||||
@@ -447,7 +447,7 @@ fun ContractorCard(
|
||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||
Icon(
|
||||
Icons.Default.WorkOutline,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(14.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
@@ -464,7 +464,7 @@ fun ContractorCard(
|
||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||
Icon(
|
||||
Icons.Default.Star,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(14.dp),
|
||||
tint = MaterialTheme.colorScheme.tertiary
|
||||
)
|
||||
@@ -482,7 +482,7 @@ fun ContractorCard(
|
||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||
Icon(
|
||||
Icons.Default.CheckCircle,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(14.dp),
|
||||
tint = MaterialTheme.colorScheme.secondary
|
||||
)
|
||||
|
||||
@@ -590,7 +590,7 @@ fun DocumentFormScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Image,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
Text(
|
||||
|
||||
@@ -130,7 +130,7 @@ fun ForgotPasswordScreen(
|
||||
},
|
||||
label = { Text(stringResource(Res.string.auth_forgot_email_label)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Email, contentDescription = null)
|
||||
Icon(Icons.Default.Email, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
@@ -161,7 +161,7 @@ fun ForgotPasswordScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.CheckCircle,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
Text(
|
||||
|
||||
@@ -248,7 +248,7 @@ private fun NavigationCard(
|
||||
|
||||
Icon(
|
||||
Icons.Default.KeyboardArrowRight,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ fun LoginScreen(
|
||||
onValueChange = { username = it },
|
||||
label = { Text(stringResource(Res.string.auth_login_username_label)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Person, contentDescription = null)
|
||||
Icon(Icons.Default.Person, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
@@ -145,7 +145,7 @@ fun LoginScreen(
|
||||
onValueChange = { password = it },
|
||||
label = { Text(stringResource(Res.string.auth_login_password_label)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Lock, contentDescription = null)
|
||||
Icon(Icons.Default.Lock, contentDescription = null) // decorative
|
||||
},
|
||||
trailingIcon = {
|
||||
IconButton(onClick = { passwordVisible = !passwordVisible }) {
|
||||
|
||||
@@ -114,7 +114,7 @@ fun ManageUsersScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Error,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
@@ -149,7 +149,7 @@ fun ManageUsersScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Share,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.onPrimaryContainer
|
||||
)
|
||||
Text(
|
||||
|
||||
@@ -239,7 +239,7 @@ fun NotificationPreferencesScreen(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Settings,
|
||||
contentDescription = null,
|
||||
contentDescription = stringResource(Res.string.notifications_open_system_settings),
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
)
|
||||
Column(modifier = Modifier.weight(1f)) {
|
||||
@@ -256,7 +256,7 @@ fun NotificationPreferencesScreen(
|
||||
}
|
||||
Icon(
|
||||
imageVector = Icons.Default.ChevronRight,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
)
|
||||
}
|
||||
@@ -296,7 +296,7 @@ fun NotificationPreferencesScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Error,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.error,
|
||||
)
|
||||
Text(
|
||||
@@ -593,7 +593,7 @@ private fun NotificationToggleRow(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = iconTint,
|
||||
)
|
||||
Column(
|
||||
@@ -641,7 +641,7 @@ private fun NotificationTimePickerRow(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.AccessTime,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(16.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
)
|
||||
|
||||
@@ -549,7 +549,7 @@ fun ProfileScreen(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.KeyboardArrowUp,
|
||||
contentDescription = null
|
||||
contentDescription = null // decorative
|
||||
)
|
||||
Spacer(modifier = Modifier.width(OrganicSpacing.sm))
|
||||
Text(stringResource(Res.string.profile_upgrade_to_pro), fontWeight = FontWeight.SemiBold)
|
||||
@@ -580,7 +580,7 @@ fun ProfileScreen(
|
||||
onValueChange = { firstName = it },
|
||||
label = { Text(stringResource(Res.string.profile_first_name)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Person, contentDescription = null)
|
||||
Icon(Icons.Default.Person, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
@@ -592,7 +592,7 @@ fun ProfileScreen(
|
||||
onValueChange = { lastName = it },
|
||||
label = { Text(stringResource(Res.string.profile_last_name)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Person, contentDescription = null)
|
||||
Icon(Icons.Default.Person, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
@@ -604,7 +604,7 @@ fun ProfileScreen(
|
||||
onValueChange = { email = it },
|
||||
label = { Text(stringResource(Res.string.profile_email)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Email, contentDescription = null)
|
||||
Icon(Icons.Default.Email, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
@@ -635,7 +635,7 @@ fun ProfileScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Error,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
Text(
|
||||
@@ -665,7 +665,7 @@ fun ProfileScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.CheckCircle,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.onPrimaryContainer
|
||||
)
|
||||
Text(
|
||||
@@ -706,7 +706,7 @@ fun ProfileScreen(
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Icon(Icons.Default.Save, contentDescription = null)
|
||||
Icon(Icons.Default.Save, contentDescription = null) // decorative
|
||||
Text(
|
||||
stringResource(Res.string.profile_save),
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
@@ -829,7 +829,7 @@ private fun UpgradeBenefitRow(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(18.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
|
||||
@@ -117,7 +117,7 @@ fun RegisterScreen(
|
||||
onValueChange = { username = it },
|
||||
label = { Text(stringResource(Res.string.auth_register_username)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Person, contentDescription = null)
|
||||
Icon(Icons.Default.Person, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
@@ -129,7 +129,7 @@ fun RegisterScreen(
|
||||
onValueChange = { email = it },
|
||||
label = { Text(stringResource(Res.string.auth_register_email)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Email, contentDescription = null)
|
||||
Icon(Icons.Default.Email, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
@@ -143,7 +143,7 @@ fun RegisterScreen(
|
||||
onValueChange = { password = it },
|
||||
label = { Text(stringResource(Res.string.auth_register_password)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Lock, contentDescription = null)
|
||||
Icon(Icons.Default.Lock, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
@@ -156,7 +156,7 @@ fun RegisterScreen(
|
||||
onValueChange = { confirmPassword = it },
|
||||
label = { Text(stringResource(Res.string.auth_register_confirm_password)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Lock, contentDescription = null)
|
||||
Icon(Icons.Default.Lock, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
|
||||
@@ -227,7 +227,7 @@ fun ResetPasswordScreen(
|
||||
},
|
||||
label = { Text(stringResource(Res.string.auth_reset_new_password)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Lock, contentDescription = null)
|
||||
Icon(Icons.Default.Lock, contentDescription = null) // decorative
|
||||
},
|
||||
trailingIcon = {
|
||||
IconButton(onClick = { newPasswordVisible = !newPasswordVisible }) {
|
||||
@@ -251,7 +251,7 @@ fun ResetPasswordScreen(
|
||||
},
|
||||
label = { Text(stringResource(Res.string.auth_reset_confirm_password)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Lock, contentDescription = null)
|
||||
Icon(Icons.Default.Lock, contentDescription = null) // decorative
|
||||
},
|
||||
trailingIcon = {
|
||||
IconButton(onClick = { confirmPasswordVisible = !confirmPasswordVisible }) {
|
||||
|
||||
@@ -254,7 +254,7 @@ fun ResidencesScreen(
|
||||
horizontalArrangement = Arrangement.spacedBy(OrganicSpacing.compact),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Icon(Icons.Default.Add, contentDescription = null)
|
||||
Icon(Icons.Default.Add, contentDescription = null) // decorative
|
||||
Text(
|
||||
stringResource(Res.string.properties_add_button),
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
@@ -282,7 +282,7 @@ fun ResidencesScreen(
|
||||
horizontalArrangement = Arrangement.spacedBy(OrganicSpacing.compact),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Icon(Icons.Default.GroupAdd, contentDescription = null)
|
||||
Icon(Icons.Default.GroupAdd, contentDescription = null) // decorative
|
||||
Text(
|
||||
stringResource(Res.string.properties_join_button),
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
@@ -306,7 +306,7 @@ fun ResidencesScreen(
|
||||
horizontalArrangement = Arrangement.spacedBy(OrganicSpacing.compact),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Icon(Icons.Default.Star, contentDescription = null)
|
||||
Icon(Icons.Default.Star, contentDescription = null) // decorative
|
||||
Text(
|
||||
"Upgrade to Add",
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
@@ -359,7 +359,7 @@ fun ResidencesScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Dashboard,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
@@ -524,7 +524,7 @@ fun ResidencesScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Place,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(14.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
@@ -545,7 +545,7 @@ fun ResidencesScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.LocationOn,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(14.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
@@ -559,7 +559,7 @@ fun ResidencesScreen(
|
||||
|
||||
Icon(
|
||||
Icons.Default.KeyboardArrowRight,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ fun VerifyEmailScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Logout,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(18.dp)
|
||||
)
|
||||
Text(stringResource(Res.string.home_logout))
|
||||
@@ -140,7 +140,7 @@ fun VerifyEmailScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Info,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
Text(
|
||||
@@ -162,7 +162,7 @@ fun VerifyEmailScreen(
|
||||
},
|
||||
label = { Text(stringResource(Res.string.auth_verify_code_label)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Pin, contentDescription = null)
|
||||
Icon(Icons.Default.Pin, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
|
||||
@@ -138,7 +138,7 @@ fun VerifyResetCodeScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Timer,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.secondary
|
||||
)
|
||||
Text(
|
||||
@@ -196,7 +196,7 @@ fun VerifyResetCodeScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.CheckCircle,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
Text(
|
||||
|
||||
@@ -138,7 +138,7 @@ fun AnimationTestingScreen(
|
||||
},
|
||||
modifier = Modifier.weight(1f),
|
||||
) {
|
||||
Icon(Icons.Default.Refresh, contentDescription = null)
|
||||
Icon(Icons.Default.Refresh, contentDescription = null) // decorative
|
||||
Spacer(Modifier.width(AppSpacing.xs))
|
||||
Text("Reset")
|
||||
}
|
||||
@@ -153,7 +153,7 @@ fun AnimationTestingScreen(
|
||||
containerColor = MaterialTheme.colorScheme.primary,
|
||||
),
|
||||
) {
|
||||
Icon(Icons.Default.PlayArrow, contentDescription = null)
|
||||
Icon(Icons.Default.PlayArrow, contentDescription = null) // decorative
|
||||
Spacer(Modifier.width(AppSpacing.xs))
|
||||
Text("Play")
|
||||
}
|
||||
@@ -209,7 +209,7 @@ private fun AnimationRow(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.CheckCircle,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.onPrimary,
|
||||
modifier = Modifier.scale(scale),
|
||||
)
|
||||
|
||||
@@ -91,7 +91,7 @@ fun OnboardingCreateAccountContent(
|
||||
icon = Icons.Default.PersonAdd,
|
||||
size = 80.dp,
|
||||
iconSize = 40.dp,
|
||||
contentDescription = null
|
||||
contentDescription = null // decorative
|
||||
)
|
||||
|
||||
Text(
|
||||
@@ -126,7 +126,7 @@ fun OnboardingCreateAccountContent(
|
||||
contentColor = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
) {
|
||||
Icon(Icons.Default.Email, contentDescription = null)
|
||||
Icon(Icons.Default.Email, contentDescription = null) // decorative
|
||||
Spacer(modifier = Modifier.width(OrganicSpacing.sm))
|
||||
Text(
|
||||
text = stringResource(Res.string.onboarding_create_with_email),
|
||||
@@ -153,7 +153,7 @@ fun OnboardingCreateAccountContent(
|
||||
},
|
||||
label = { Text(stringResource(Res.string.auth_register_username)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Person, contentDescription = null)
|
||||
Icon(Icons.Default.Person, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
@@ -170,7 +170,7 @@ fun OnboardingCreateAccountContent(
|
||||
},
|
||||
label = { Text(stringResource(Res.string.auth_register_email)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Email, contentDescription = null)
|
||||
Icon(Icons.Default.Email, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
@@ -187,7 +187,7 @@ fun OnboardingCreateAccountContent(
|
||||
},
|
||||
label = { Text(stringResource(Res.string.auth_register_password)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Lock, contentDescription = null)
|
||||
Icon(Icons.Default.Lock, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
@@ -205,7 +205,7 @@ fun OnboardingCreateAccountContent(
|
||||
},
|
||||
label = { Text(stringResource(Res.string.auth_register_confirm_password)) },
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Lock, contentDescription = null)
|
||||
Icon(Icons.Default.Lock, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
singleLine = true,
|
||||
@@ -251,7 +251,7 @@ fun OnboardingCreateAccountContent(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Error,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
Text(
|
||||
|
||||
@@ -166,7 +166,7 @@ fun OnboardingFirstTaskContent(
|
||||
MaterialTheme.colorScheme.primary,
|
||||
MaterialTheme.colorScheme.secondary
|
||||
),
|
||||
contentDescription = null
|
||||
contentDescription = null // decorative
|
||||
)
|
||||
|
||||
Spacer(modifier = Modifier.height(OrganicSpacing.lg))
|
||||
@@ -200,7 +200,7 @@ fun OnboardingFirstTaskContent(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.CheckCircleOutline,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(20.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
@@ -236,7 +236,7 @@ fun OnboardingFirstTaskContent(
|
||||
)
|
||||
},
|
||||
icon = {
|
||||
Icon(Icons.Default.AutoAwesome, contentDescription = null, modifier = Modifier.size(18.dp))
|
||||
Icon(Icons.Default.AutoAwesome, contentDescription = null, modifier = Modifier.size(18.dp) ) // decorative
|
||||
}
|
||||
)
|
||||
Tab(
|
||||
@@ -249,7 +249,7 @@ fun OnboardingFirstTaskContent(
|
||||
)
|
||||
},
|
||||
icon = {
|
||||
Icon(Icons.Default.ViewList, contentDescription = null, modifier = Modifier.size(18.dp))
|
||||
Icon(Icons.Default.ViewList, contentDescription = null, modifier = Modifier.size(18.dp) ) // decorative
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -487,7 +487,7 @@ private fun SuggestionRow(
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
if (isSelected) {
|
||||
Icon(Icons.Default.Check, contentDescription = null, tint = Color.White, modifier = Modifier.size(16.dp))
|
||||
Icon(Icons.Default.Check, contentDescription = null, tint = Color.White, modifier = Modifier.size(16.dp) ) // decorative
|
||||
}
|
||||
}
|
||||
|
||||
@@ -652,7 +652,7 @@ private fun TaskCategorySection(
|
||||
|
||||
Icon(
|
||||
imageVector = if (isExpanded) Icons.Default.ExpandLess else Icons.Default.ExpandMore,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
@@ -711,7 +711,7 @@ private fun TaskTemplateRow(
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
if (isSelected) {
|
||||
Icon(Icons.Default.Check, contentDescription = null, tint = Color.White, modifier = Modifier.size(16.dp))
|
||||
Icon(Icons.Default.Check, contentDescription = null, tint = Color.White, modifier = Modifier.size(16.dp) ) // decorative
|
||||
}
|
||||
}
|
||||
|
||||
@@ -733,7 +733,7 @@ private fun TaskTemplateRow(
|
||||
|
||||
Icon(
|
||||
imageVector = task.icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(24.dp),
|
||||
tint = categoryColor.copy(alpha = 0.6f)
|
||||
)
|
||||
@@ -772,7 +772,7 @@ private fun ErrorPane(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.CloudOff,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
@@ -797,7 +797,7 @@ private fun ErrorPane(
|
||||
Text("Skip for now")
|
||||
}
|
||||
OutlinedButton(onClick = onRetry) {
|
||||
Icon(Icons.Default.Refresh, contentDescription = null, modifier = Modifier.size(18.dp))
|
||||
Icon(Icons.Default.Refresh, contentDescription = null, modifier = Modifier.size(18.dp) ) // decorative
|
||||
Spacer(modifier = Modifier.width(OrganicSpacing.xs))
|
||||
Text("Retry")
|
||||
}
|
||||
@@ -820,7 +820,7 @@ private fun EmptyPane(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Inbox,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
|
||||
@@ -64,7 +64,7 @@ fun OnboardingHomeProfileContent(
|
||||
MaterialTheme.colorScheme.primary,
|
||||
MaterialTheme.colorScheme.tertiary
|
||||
),
|
||||
contentDescription = null
|
||||
contentDescription = null // decorative
|
||||
)
|
||||
|
||||
Spacer(modifier = Modifier.height(OrganicSpacing.lg))
|
||||
@@ -257,7 +257,7 @@ private fun ProfileSectionHeader(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(20.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
@@ -356,7 +356,7 @@ private fun ToggleChip(
|
||||
{
|
||||
Icon(
|
||||
Icons.Default.Check,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(16.dp)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ fun OnboardingJoinResidenceContent(
|
||||
icon = Icons.Default.GroupAdd,
|
||||
size = 100.dp,
|
||||
iconSize = 50.dp,
|
||||
contentDescription = null
|
||||
contentDescription = null // decorative
|
||||
)
|
||||
|
||||
// Title and subtitle
|
||||
@@ -109,7 +109,7 @@ fun OnboardingJoinResidenceContent(
|
||||
)
|
||||
},
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Key, contentDescription = null)
|
||||
Icon(Icons.Default.Key, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
textStyle = LocalTextStyle.current.copy(
|
||||
@@ -139,7 +139,7 @@ fun OnboardingJoinResidenceContent(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Error,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
Text(
|
||||
|
||||
@@ -53,7 +53,7 @@ fun OnboardingLocationContent(
|
||||
icon = Icons.Default.LocationOn,
|
||||
size = 100.dp,
|
||||
iconSize = 50.dp,
|
||||
contentDescription = null
|
||||
contentDescription = null // decorative
|
||||
)
|
||||
|
||||
Column(
|
||||
|
||||
@@ -48,7 +48,7 @@ fun OnboardingNameResidenceContent(
|
||||
icon = Icons.Default.Home,
|
||||
size = 100.dp,
|
||||
iconSize = 50.dp,
|
||||
contentDescription = null
|
||||
contentDescription = null // decorative
|
||||
)
|
||||
|
||||
// Title and subtitle
|
||||
|
||||
@@ -161,7 +161,7 @@ fun OnboardingSubscriptionContent(
|
||||
MaterialTheme.colorScheme.tertiary,
|
||||
Color(0xFFFF9500)
|
||||
),
|
||||
contentDescription = null
|
||||
contentDescription = null // decorative
|
||||
)
|
||||
}
|
||||
|
||||
@@ -177,7 +177,7 @@ fun OnboardingSubscriptionContent(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.AutoAwesome,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(16.dp),
|
||||
tint = MaterialTheme.colorScheme.tertiary
|
||||
)
|
||||
@@ -189,7 +189,7 @@ fun OnboardingSubscriptionContent(
|
||||
)
|
||||
Icon(
|
||||
Icons.Default.AutoAwesome,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(16.dp),
|
||||
tint = MaterialTheme.colorScheme.tertiary
|
||||
)
|
||||
@@ -216,7 +216,7 @@ fun OnboardingSubscriptionContent(
|
||||
repeat(5) {
|
||||
Icon(
|
||||
Icons.Default.Star,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(16.dp),
|
||||
tint = MaterialTheme.colorScheme.tertiary
|
||||
)
|
||||
@@ -330,7 +330,7 @@ private fun BenefitRow(benefit: SubscriptionBenefit) {
|
||||
size = 44.dp,
|
||||
iconSize = 24.dp,
|
||||
gradientColors = benefit.gradientColors,
|
||||
contentDescription = null
|
||||
contentDescription = null // decorative
|
||||
)
|
||||
|
||||
Spacer(modifier = Modifier.width(OrganicSpacing.md))
|
||||
@@ -352,7 +352,7 @@ private fun BenefitRow(benefit: SubscriptionBenefit) {
|
||||
|
||||
Icon(
|
||||
Icons.Default.Check,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(20.dp),
|
||||
tint = benefit.gradientColors.first()
|
||||
)
|
||||
|
||||
@@ -185,7 +185,7 @@ private fun FeatureCard(feature: FeatureItem) {
|
||||
size = 120.dp,
|
||||
iconSize = 60.dp,
|
||||
gradientColors = feature.gradientColors,
|
||||
contentDescription = null
|
||||
contentDescription = null // decorative
|
||||
)
|
||||
|
||||
Spacer(modifier = Modifier.height(OrganicSpacing.xl * 2))
|
||||
|
||||
@@ -74,7 +74,7 @@ fun OnboardingVerifyEmailContent(
|
||||
icon = Icons.Default.MarkEmailRead,
|
||||
size = 100.dp,
|
||||
iconSize = 50.dp,
|
||||
contentDescription = null
|
||||
contentDescription = null // decorative
|
||||
)
|
||||
|
||||
// Title and subtitle
|
||||
@@ -118,7 +118,7 @@ fun OnboardingVerifyEmailContent(
|
||||
)
|
||||
},
|
||||
leadingIcon = {
|
||||
Icon(Icons.Default.Pin, contentDescription = null)
|
||||
Icon(Icons.Default.Pin, contentDescription = null) // decorative
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
textStyle = LocalTextStyle.current.copy(
|
||||
@@ -146,7 +146,7 @@ fun OnboardingVerifyEmailContent(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Error,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
Text(
|
||||
|
||||
@@ -52,7 +52,7 @@ fun OnboardingWelcomeContent(
|
||||
icon = Icons.Default.Home,
|
||||
size = 120.dp,
|
||||
iconSize = 80.dp,
|
||||
contentDescription = null
|
||||
contentDescription = null // decorative
|
||||
)
|
||||
|
||||
// Welcome text
|
||||
@@ -104,7 +104,7 @@ fun OnboardingWelcomeContent(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.People,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(OrganicSpacing.sm))
|
||||
|
||||
@@ -116,7 +116,7 @@ fun JoinResidenceScreen(
|
||||
// Hero
|
||||
Icon(
|
||||
imageVector = Icons.Default.PersonAdd,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(72.dp),
|
||||
)
|
||||
@@ -160,7 +160,7 @@ fun JoinResidenceScreen(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Error,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.error,
|
||||
)
|
||||
Text(
|
||||
@@ -198,7 +198,7 @@ fun JoinResidenceScreen(
|
||||
} else {
|
||||
Icon(
|
||||
imageVector = Icons.Default.PersonAdd,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
)
|
||||
Spacer(modifier = Modifier.size(AppSpacing.sm))
|
||||
Text(
|
||||
|
||||
@@ -280,7 +280,7 @@ private fun TierCell(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = if (hasFeature) Icons.Default.Check else Icons.Default.Close,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(18.dp),
|
||||
tint = if (hasFeature) {
|
||||
if (emphasize) MaterialTheme.colorScheme.primary
|
||||
|
||||
@@ -255,7 +255,7 @@ fun AddTaskWithResidenceScreen(
|
||||
color = MaterialTheme.colorScheme.onPrimary
|
||||
)
|
||||
} else {
|
||||
Icon(Icons.Default.Save, contentDescription = null)
|
||||
Icon(Icons.Default.Save, contentDescription = null) // decorative
|
||||
Text(
|
||||
text = "Create Task",
|
||||
modifier = Modifier.padding(start = AppSpacing.sm),
|
||||
|
||||
@@ -173,7 +173,7 @@ fun TaskSuggestionsScreen(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.ErrorOutline,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
Text(
|
||||
@@ -273,7 +273,7 @@ private fun SuggestionRow(
|
||||
strokeWidth = 2.dp
|
||||
)
|
||||
} else {
|
||||
Icon(Icons.Default.Check, contentDescription = null)
|
||||
Icon(Icons.Default.Check, contentDescription = null) // decorative
|
||||
Spacer(Modifier.width(AppSpacing.sm))
|
||||
Text("Accept", fontWeight = FontWeight.SemiBold)
|
||||
}
|
||||
@@ -291,7 +291,7 @@ private fun ErrorView(message: String, onRetry: () -> Unit) {
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.ErrorOutline,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
@@ -314,7 +314,7 @@ private fun EmptyView() {
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Checklist,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f)
|
||||
)
|
||||
|
||||
@@ -292,7 +292,7 @@ private fun CategoryChipRow(
|
||||
leadingIcon = {
|
||||
Icon(
|
||||
imageVector = categoryIconFor(name),
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(16.dp)
|
||||
)
|
||||
},
|
||||
@@ -337,7 +337,7 @@ private fun TemplateCard(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = categoryIconFor(template.categoryName),
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = Color.White,
|
||||
modifier = Modifier.size(20.dp)
|
||||
)
|
||||
@@ -386,7 +386,7 @@ private fun TemplateCard(
|
||||
Icon(
|
||||
imageVector = if (selected) Icons.Default.CheckCircle
|
||||
else Icons.Default.RadioButtonUnchecked,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = if (selected) MaterialTheme.colorScheme.primary
|
||||
else MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
modifier = Modifier
|
||||
@@ -428,7 +428,7 @@ private fun ApplyBar(
|
||||
strokeWidth = 2.dp
|
||||
)
|
||||
} else {
|
||||
Icon(Icons.Default.Check, contentDescription = null)
|
||||
Icon(Icons.Default.Check, contentDescription = null) // decorative
|
||||
Spacer(Modifier.width(AppSpacing.sm))
|
||||
Text(
|
||||
text = stringResource(Res.string.templates_apply_count, selectedCount),
|
||||
@@ -452,7 +452,7 @@ private fun LoadErrorView(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.ErrorOutline,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
@@ -480,7 +480,7 @@ private fun EmptyState() {
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Checklist,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f)
|
||||
)
|
||||
|
||||
@@ -73,7 +73,7 @@ fun UpgradeFeatureScreen(
|
||||
// Feature Icon (star gradient like iOS)
|
||||
Icon(
|
||||
imageVector = Icons.Default.Stars,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(80.dp),
|
||||
tint = MaterialTheme.colorScheme.tertiary
|
||||
)
|
||||
@@ -157,7 +157,7 @@ fun UpgradeFeatureScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Warning,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.error
|
||||
)
|
||||
Text(
|
||||
@@ -228,7 +228,7 @@ private fun FeatureRow(icon: ImageVector, text: String) {
|
||||
) {
|
||||
Icon(
|
||||
imageVector = icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(24.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
|
||||
@@ -58,7 +58,7 @@ fun UpgradePromptDialog(
|
||||
// Icon
|
||||
Icon(
|
||||
imageVector = Icons.Default.Stars,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(60.dp),
|
||||
tint = MaterialTheme.colorScheme.tertiary
|
||||
)
|
||||
@@ -149,7 +149,7 @@ private fun FeatureRow(icon: androidx.compose.ui.graphics.vector.ImageVector, te
|
||||
) {
|
||||
Icon(
|
||||
imageVector = icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(20.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
|
||||
@@ -103,7 +103,7 @@ fun UpgradeScreen(
|
||||
) {
|
||||
Icon(
|
||||
Icons.Default.Stars,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(48.dp),
|
||||
tint = MaterialTheme.colorScheme.onPrimary
|
||||
)
|
||||
@@ -430,7 +430,7 @@ private fun FeatureItem(
|
||||
) {
|
||||
Icon(
|
||||
icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(20.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
@@ -453,7 +453,7 @@ private fun FeatureItem(
|
||||
|
||||
Icon(
|
||||
Icons.Default.Check,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(20.dp)
|
||||
)
|
||||
|
||||
@@ -396,7 +396,7 @@ fun OrganicStatPill(
|
||||
) {
|
||||
Icon(
|
||||
imageVector = icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(13.dp),
|
||||
tint = color
|
||||
)
|
||||
@@ -675,7 +675,7 @@ fun FloatingLeaf(
|
||||
|
||||
Icon(
|
||||
imageVector = Icons.Default.Eco,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = modifier
|
||||
.size(size)
|
||||
.rotate(rotation)
|
||||
@@ -735,7 +735,7 @@ fun OrganicPrimaryButton(
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Icon(
|
||||
imageVector = icon,
|
||||
contentDescription = null,
|
||||
contentDescription = null, // decorative
|
||||
modifier = Modifier.size(20.dp)
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user