use material 3 expressive theme
This commit is contained in:
@@ -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)
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user