use material 3 expressive theme

This commit is contained in:
2026-07-13 16:27:15 +07:00
parent 352863ea7c
commit 7d2a81ece3

View File

@@ -39,6 +39,7 @@ import androidx.compose.material3.Badge
import androidx.compose.material3.BadgedBox import androidx.compose.material3.BadgedBox
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.DropdownMenuGroup
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.FilledTonalButton
@@ -47,6 +48,7 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.LoadingIndicator import androidx.compose.material3.LoadingIndicator
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.MenuDefaults
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.material3.ScaffoldDefaults import androidx.compose.material3.ScaffoldDefaults
import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHost
@@ -479,6 +481,7 @@ fun ChatScreen(
} }
} }
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
@Composable @Composable
private fun ContextMenu(onAction: (String) -> Unit) { private fun ContextMenu(onAction: (String) -> Unit) {
val menuItems = listOf( val menuItems = listOf(
@@ -487,30 +490,32 @@ private fun ContextMenu(onAction: (String) -> Unit) {
Triple("Info", Res.drawable.ic_info, false), Triple("Info", Res.drawable.ic_info, false),
) )
Surface( DropdownMenuGroup(
shape = RoundedCornerShape(24.dp), shapes = MenuDefaults.groupShape(1, 1),
color = MaterialTheme.colorScheme.tertiaryContainer, containerColor = MenuDefaults.groupVibrantContainerColor,
modifier = Modifier.width(220.dp) modifier = Modifier.width(220.dp)
) { ) {
Column(modifier = Modifier.padding(8.dp)) { val itemCount = menuItems.size
menuItems.forEach { (label, icon, hasDivider) ->
menuItems.forEachIndexed { index, (label, icon, hasDivider) ->
DropdownMenuItem( DropdownMenuItem(
shapes = MenuDefaults.itemShape(index, itemCount),
colors = MenuDefaults.selectableItemVibrantColors(),
text = { Text(label) }, text = { Text(label) },
onClick = { onAction(label) },
leadingIcon = { leadingIcon = {
Icon( Icon(
painter = painterResource(icon), painter = painterResource(icon),
contentDescription = label, contentDescription = label,
) )
} },
checked = false,
onCheckedChange = { _ -> onAction(label) },
) )
if (hasDivider) { if (hasDivider) {
HorizontalDivider( HorizontalDivider(
modifier = Modifier.padding(vertical = 4.dp), modifier = Modifier.padding(vertical = 4.dp),
color = MaterialTheme.colorScheme.outlineVariant.copy(alpha = 0.5f)
) )
} }
} }
} }
} }
}