fix: mode pills more visible, action buttons larger, revert Brain icon

Pills: higher background alpha, stronger borders, removed muted text
opacity, bigger padding (14x8dp), icon 16dp, text 13sp W400/W500.

Action buttons: Plus/Mic/Call/Send/Stop 38dp→42dp, icons 19→22dp.

Brain icon reverted to Lucide — custom version too complex at 16dp.
This commit is contained in:
Bruno Deanoz 2026-06-23 13:11:47 +02:00
parent 3c6a8911c4
commit 95672d3124
2 changed files with 24 additions and 24 deletions

View file

@ -323,22 +323,22 @@ private fun ModePill(
val accent = LocalKaizenAccent.current
val bg = when {
active -> accent.primary.copy(alpha = if (isDark) 0.20f else 0.12f)
else -> if (isDark) Color.White.copy(alpha = 0.10f) else Color.Black.copy(alpha = 0.07f)
active -> accent.primary.copy(alpha = if (isDark) 0.24f else 0.14f)
else -> if (isDark) Color.White.copy(alpha = 0.14f) else Color.Black.copy(alpha = 0.09f)
}
val borderBrush = if (active) {
Brush.verticalGradient(listOf(
accent.primary.copy(alpha = if (isDark) 0.40f else 0.30f),
accent.primary.copy(alpha = if (isDark) 0.12f else 0.08f),
accent.primary.copy(alpha = if (isDark) 0.45f else 0.35f),
accent.primary.copy(alpha = if (isDark) 0.15f else 0.10f),
))
} else {
Brush.verticalGradient(listOf(
if (isDark) Color.White.copy(alpha = 0.14f) else Color.Black.copy(alpha = 0.10f),
if (isDark) Color.White.copy(alpha = 0.05f) else Color.Black.copy(alpha = 0.04f),
if (isDark) Color.White.copy(alpha = 0.18f) else Color.Black.copy(alpha = 0.12f),
if (isDark) Color.White.copy(alpha = 0.06f) else Color.Black.copy(alpha = 0.05f),
))
}
val iconTint = if (active) accent.primary else cs.onSurfaceVariant.copy(alpha = 0.75f)
val textColor = if (active) cs.onBackground else cs.onSurfaceVariant.copy(alpha = 0.80f)
val iconTint = if (active) accent.primary else cs.onSurfaceVariant
val textColor = if (active) cs.onBackground else cs.onSurfaceVariant
Row(
Modifier
@ -346,15 +346,15 @@ private fun ModePill(
.background(bg)
.border(0.8.dp, borderBrush, KaizenShapes.pill)
.clickable(onClick = onClick)
.padding(horizontal = 12.dp, vertical = 7.dp),
.padding(horizontal = 14.dp, vertical = 8.dp),
verticalAlignment = Alignment.CenterVertically,
) {
Icon(icon, null, tint = iconTint, modifier = Modifier.size(15.dp))
Spacer(Modifier.width(5.dp))
Text(label, color = textColor, fontSize = 12.5.sp, fontWeight = if (active) FontWeight.SemiBold else FontWeight.Medium)
Icon(icon, null, tint = iconTint, modifier = Modifier.size(16.dp))
Spacer(Modifier.width(6.dp))
Text(label, color = textColor, fontSize = 13.sp, fontWeight = if (active) FontWeight.W500 else FontWeight.W400)
if (showChevron) {
Spacer(Modifier.width(3.dp))
Icon(KaizenIcons.ChevronDown, null, tint = cs.onSurfaceVariant.copy(alpha = 0.35f), modifier = Modifier.size(13.dp))
Spacer(Modifier.width(4.dp))
Icon(KaizenIcons.ChevronDown, null, tint = cs.onSurfaceVariant.copy(alpha = 0.50f), modifier = Modifier.size(14.dp))
}
}
}
@ -798,17 +798,17 @@ fun ChatInput(
Row(verticalAlignment = Alignment.CenterVertically) {
Box(
Modifier.size(38.dp).clip(KaizenShapes.circle).background(iconBg).clickable(onClick = onAddClick),
Modifier.size(42.dp).clip(KaizenShapes.circle).background(iconBg).clickable(onClick = onAddClick),
contentAlignment = Alignment.Center,
) {
Icon(KaizenIcons.Plus, stringResource(R.string.chat_attachment), tint = cs.onSurfaceVariant, modifier = Modifier.size(19.dp))
Icon(KaizenIcons.Plus, stringResource(R.string.chat_attachment), tint = cs.onSurfaceVariant, modifier = Modifier.size(22.dp))
}
Spacer(Modifier.width(8.dp))
Box(
Modifier.size(38.dp).clip(KaizenShapes.circle).background(iconBg).clickable(onClick = onMicClick),
Modifier.size(42.dp).clip(KaizenShapes.circle).background(iconBg).clickable(onClick = onMicClick),
contentAlignment = Alignment.Center,
) {
Icon(KaizenIcons.Mic, stringResource(R.string.chat_attachment), tint = cs.onSurfaceVariant, modifier = Modifier.size(19.dp))
Icon(KaizenIcons.Mic, stringResource(R.string.chat_attachment), tint = cs.onSurfaceVariant, modifier = Modifier.size(22.dp))
}
Spacer(Modifier.weight(1f))
@ -891,7 +891,7 @@ private fun SendButton(enabled: Boolean, onClick: () -> Unit) {
}
Box(
Modifier.size(38.dp).scale(pressScale).clip(KaizenShapes.circle).then(fill)
Modifier.size(42.dp).scale(pressScale).clip(KaizenShapes.circle).then(fill)
.clickable(interactionSource = interaction, indication = null, enabled = enabled, onClick = onClick),
contentAlignment = Alignment.Center,
) {
@ -910,7 +910,7 @@ private fun CallButton(onClick: () -> Unit) {
Box(
Modifier
.size(38.dp)
.size(42.dp)
.scale(pressScale)
.clip(KaizenShapes.circle)
.background(
@ -924,7 +924,7 @@ private fun CallButton(onClick: () -> Unit) {
.clickable(interactionSource = interaction, indication = null, onClick = onClick),
contentAlignment = Alignment.Center,
) {
Icon(KaizenIcons.AudioLines, null, tint = accent.primary, modifier = Modifier.size(19.dp))
Icon(KaizenIcons.AudioLines, null, tint = accent.primary, modifier = Modifier.size(22.dp))
}
}
@ -937,14 +937,14 @@ private fun StopButton(onClick: () -> Unit) {
Box(
Modifier
.size(38.dp)
.size(42.dp)
.scale(pressScale)
.clip(KaizenShapes.circle)
.background(KaizenSemanticColors.error.copy(alpha = if (isDark) 0.85f else 0.80f))
.clickable(interactionSource = interaction, indication = null, onClick = onClick),
contentAlignment = Alignment.Center,
) {
Icon(KaizenIcons.Square, stringResource(R.string.chat_stop), tint = Color.White, modifier = Modifier.size(16.dp))
Icon(KaizenIcons.Square, stringResource(R.string.chat_stop), tint = Color.White, modifier = Modifier.size(18.dp))
}
}

View file

@ -39,7 +39,7 @@ object KaizenIcons {
val Zap: ImageVector get() = Lucide.Zap
// ── Modes ───────────────────────────────────────────────────────────────
val Brain: ImageVector get() = KaizenCustomIcons.Brain
val Brain: ImageVector get() = Lucide.Brain
val CircleDot: ImageVector get() = Lucide.CircleDot
val Globe: ImageVector get() = KaizenCustomIcons.Globe
val Image: ImageVector get() = KaizenCustomIcons.ImageIcon