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:
parent
3c6a8911c4
commit
95672d3124
2 changed files with 24 additions and 24 deletions
|
|
@ -323,22 +323,22 @@ private fun ModePill(
|
||||||
val accent = LocalKaizenAccent.current
|
val accent = LocalKaizenAccent.current
|
||||||
|
|
||||||
val bg = when {
|
val bg = when {
|
||||||
active -> accent.primary.copy(alpha = if (isDark) 0.20f else 0.12f)
|
active -> accent.primary.copy(alpha = if (isDark) 0.24f else 0.14f)
|
||||||
else -> if (isDark) Color.White.copy(alpha = 0.10f) else Color.Black.copy(alpha = 0.07f)
|
else -> if (isDark) Color.White.copy(alpha = 0.14f) else Color.Black.copy(alpha = 0.09f)
|
||||||
}
|
}
|
||||||
val borderBrush = if (active) {
|
val borderBrush = if (active) {
|
||||||
Brush.verticalGradient(listOf(
|
Brush.verticalGradient(listOf(
|
||||||
accent.primary.copy(alpha = if (isDark) 0.40f else 0.30f),
|
accent.primary.copy(alpha = if (isDark) 0.45f else 0.35f),
|
||||||
accent.primary.copy(alpha = if (isDark) 0.12f else 0.08f),
|
accent.primary.copy(alpha = if (isDark) 0.15f else 0.10f),
|
||||||
))
|
))
|
||||||
} else {
|
} else {
|
||||||
Brush.verticalGradient(listOf(
|
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.18f) else Color.Black.copy(alpha = 0.12f),
|
||||||
if (isDark) Color.White.copy(alpha = 0.05f) else Color.Black.copy(alpha = 0.04f),
|
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 iconTint = if (active) accent.primary else cs.onSurfaceVariant
|
||||||
val textColor = if (active) cs.onBackground else cs.onSurfaceVariant.copy(alpha = 0.80f)
|
val textColor = if (active) cs.onBackground else cs.onSurfaceVariant
|
||||||
|
|
||||||
Row(
|
Row(
|
||||||
Modifier
|
Modifier
|
||||||
|
|
@ -346,15 +346,15 @@ private fun ModePill(
|
||||||
.background(bg)
|
.background(bg)
|
||||||
.border(0.8.dp, borderBrush, KaizenShapes.pill)
|
.border(0.8.dp, borderBrush, KaizenShapes.pill)
|
||||||
.clickable(onClick = onClick)
|
.clickable(onClick = onClick)
|
||||||
.padding(horizontal = 12.dp, vertical = 7.dp),
|
.padding(horizontal = 14.dp, vertical = 8.dp),
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
) {
|
) {
|
||||||
Icon(icon, null, tint = iconTint, modifier = Modifier.size(15.dp))
|
Icon(icon, null, tint = iconTint, modifier = Modifier.size(16.dp))
|
||||||
Spacer(Modifier.width(5.dp))
|
Spacer(Modifier.width(6.dp))
|
||||||
Text(label, color = textColor, fontSize = 12.5.sp, fontWeight = if (active) FontWeight.SemiBold else FontWeight.Medium)
|
Text(label, color = textColor, fontSize = 13.sp, fontWeight = if (active) FontWeight.W500 else FontWeight.W400)
|
||||||
if (showChevron) {
|
if (showChevron) {
|
||||||
Spacer(Modifier.width(3.dp))
|
Spacer(Modifier.width(4.dp))
|
||||||
Icon(KaizenIcons.ChevronDown, null, tint = cs.onSurfaceVariant.copy(alpha = 0.35f), modifier = Modifier.size(13.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) {
|
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||||
Box(
|
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,
|
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))
|
Spacer(Modifier.width(8.dp))
|
||||||
Box(
|
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,
|
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))
|
Spacer(Modifier.weight(1f))
|
||||||
|
|
@ -891,7 +891,7 @@ private fun SendButton(enabled: Boolean, onClick: () -> Unit) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Box(
|
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),
|
.clickable(interactionSource = interaction, indication = null, enabled = enabled, onClick = onClick),
|
||||||
contentAlignment = Alignment.Center,
|
contentAlignment = Alignment.Center,
|
||||||
) {
|
) {
|
||||||
|
|
@ -910,7 +910,7 @@ private fun CallButton(onClick: () -> Unit) {
|
||||||
|
|
||||||
Box(
|
Box(
|
||||||
Modifier
|
Modifier
|
||||||
.size(38.dp)
|
.size(42.dp)
|
||||||
.scale(pressScale)
|
.scale(pressScale)
|
||||||
.clip(KaizenShapes.circle)
|
.clip(KaizenShapes.circle)
|
||||||
.background(
|
.background(
|
||||||
|
|
@ -924,7 +924,7 @@ private fun CallButton(onClick: () -> Unit) {
|
||||||
.clickable(interactionSource = interaction, indication = null, onClick = onClick),
|
.clickable(interactionSource = interaction, indication = null, onClick = onClick),
|
||||||
contentAlignment = Alignment.Center,
|
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(
|
Box(
|
||||||
Modifier
|
Modifier
|
||||||
.size(38.dp)
|
.size(42.dp)
|
||||||
.scale(pressScale)
|
.scale(pressScale)
|
||||||
.clip(KaizenShapes.circle)
|
.clip(KaizenShapes.circle)
|
||||||
.background(KaizenSemanticColors.error.copy(alpha = if (isDark) 0.85f else 0.80f))
|
.background(KaizenSemanticColors.error.copy(alpha = if (isDark) 0.85f else 0.80f))
|
||||||
.clickable(interactionSource = interaction, indication = null, onClick = onClick),
|
.clickable(interactionSource = interaction, indication = null, onClick = onClick),
|
||||||
contentAlignment = Alignment.Center,
|
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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ object KaizenIcons {
|
||||||
val Zap: ImageVector get() = Lucide.Zap
|
val Zap: ImageVector get() = Lucide.Zap
|
||||||
|
|
||||||
// ── Modes ───────────────────────────────────────────────────────────────
|
// ── Modes ───────────────────────────────────────────────────────────────
|
||||||
val Brain: ImageVector get() = KaizenCustomIcons.Brain
|
val Brain: ImageVector get() = Lucide.Brain
|
||||||
val CircleDot: ImageVector get() = Lucide.CircleDot
|
val CircleDot: ImageVector get() = Lucide.CircleDot
|
||||||
val Globe: ImageVector get() = KaizenCustomIcons.Globe
|
val Globe: ImageVector get() = KaizenCustomIcons.Globe
|
||||||
val Image: ImageVector get() = KaizenCustomIcons.ImageIcon
|
val Image: ImageVector get() = KaizenCustomIcons.ImageIcon
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue