From da01b57f08e57c12447a14ce044dc1c25501f719 Mon Sep 17 00:00:00 2001 From: Bruno Deanoz Date: Sun, 21 Jun 2026 18:57:10 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20attachment=20menu=20=E2=80=94=20individu?= =?UTF-8?q?al=20floating=20glass=20pills=20instead=20of=20card?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Each option (camera, gallery, file) is its own GlassSurface pill with frosted glass blur, round colored icon, and shadow. No wrapping card. --- .../dev/kaizen/app/chat/ChatComponents.kt | 51 +++++++++---------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/dev/kaizen/app/chat/ChatComponents.kt b/app/src/main/java/dev/kaizen/app/chat/ChatComponents.kt index f4eb727..53fc6ad 100644 --- a/app/src/main/java/dev/kaizen/app/chat/ChatComponents.kt +++ b/app/src/main/java/dev/kaizen/app/chat/ChatComponents.kt @@ -475,44 +475,43 @@ fun AttachmentMenu( onFile: () -> Unit, modifier: Modifier = Modifier, ) { - val cs = MaterialTheme.colorScheme val accent = LocalKaizenAccent.current val isDark = isSystemInDarkTheme() - GlassSurface( - modifier = modifier.padding(horizontal = 12.dp), - shape = KaizenShapes.lg, - tintAlpha = GlassTiers.card(isDark), - shadowStack = KaizenShadows.level2, - cornerRadius = 24.dp, + Column( + modifier = modifier.padding(horizontal = 16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalAlignment = Alignment.Start, ) { - Column(Modifier.fillMaxWidth().padding(8.dp)) { - AttachRow(Icons.Rounded.CameraAlt, stringResource(R.string.attach_camera), accent.primary, isDark, onCamera) - AttachRow(Icons.Rounded.Image, stringResource(R.string.attach_gallery), Color(0xFF6366F1), isDark, onGallery) - AttachRow(Icons.AutoMirrored.Rounded.InsertDriveFile, stringResource(R.string.attach_file), Color(0xFF10B981), isDark, onFile) - } + AttachPill(Icons.Rounded.CameraAlt, stringResource(R.string.attach_camera), accent.primary, isDark, onCamera) + AttachPill(Icons.Rounded.Image, stringResource(R.string.attach_gallery), Color(0xFF6366F1), isDark, onGallery) + AttachPill(Icons.AutoMirrored.Rounded.InsertDriveFile, stringResource(R.string.attach_file), Color(0xFF10B981), isDark, onFile) } } @Composable -private fun AttachRow(icon: ImageVector, label: String, tint: Color, isDark: Boolean, onClick: () -> Unit) { +private fun AttachPill(icon: ImageVector, label: String, tint: Color, isDark: Boolean, onClick: () -> Unit) { val cs = MaterialTheme.colorScheme - Row( - Modifier - .fillMaxWidth() - .clip(KaizenShapes.md) - .clickable(onClick = onClick) - .padding(horizontal = 12.dp, vertical = 12.dp), - verticalAlignment = Alignment.CenterVertically, + GlassSurface( + shape = KaizenShapes.pill, + tintAlpha = GlassTiers.pill(isDark), + shadowStack = KaizenShadows.level2, + cornerRadius = 24.dp, + modifier = Modifier.clickable(onClick = onClick), ) { - Box( - Modifier.size(40.dp).clip(KaizenShapes.circle).background(tint.copy(alpha = if (isDark) 0.15f else 0.10f)), - contentAlignment = Alignment.Center, + Row( + Modifier.padding(start = 6.dp, end = 16.dp, top = 6.dp, bottom = 6.dp), + verticalAlignment = Alignment.CenterVertically, ) { - Icon(icon, null, tint = tint, modifier = Modifier.size(20.dp)) + Box( + Modifier.size(36.dp).clip(KaizenShapes.circle).background(tint.copy(alpha = if (isDark) 0.18f else 0.12f)), + contentAlignment = Alignment.Center, + ) { + Icon(icon, null, tint = tint, modifier = Modifier.size(18.dp)) + } + Spacer(Modifier.width(10.dp)) + Text(label, color = cs.onBackground, fontSize = 14.sp, fontWeight = FontWeight.Medium) } - Spacer(Modifier.width(14.dp)) - Text(label, color = cs.onBackground, fontSize = 15.sp, fontWeight = FontWeight.Medium) } }