I saw similar questions with no great solutions so I thought this might be useful.
I had a problem when I wanted to animate a button the user clicked to make it larger when pressed; not as easy as it sounds because when you get the animation working the onClick event never fires. [Because it depends on the up event I guess]
I found a way to make both the animation and the click work for a icon button and I thought it might work for other cases.
@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun RoundIconButton(
modifier: Modifier = Modifier,
imageVector: ImageVector,
onClick: () -> Unit,
tint: Color = Color.Black.copy(alpha = 0.8f),
backgroundColor: Color = 
MaterialTheme.colors.background,
elevation: Dp = 4.dp,
contentDescription: String
) {
val interactionSource = remember { 
MutableInteractionSource() }
val isPressed by 
interactionSource.collectIsPressedAsState()
val transition = updateTransition(targetState 
 = isPressed, label = "")
val size by transition.animateDp(label = "") 
{ state ->
    when(state) {
        false -> 40.dp
        true -> 50.dp
    }
}
Card(
    modifier = modifier
        .padding(all = 4.dp)
        .clickable(interactionSource = 
interactionSource,indication = 
LocalIndication.current,onClick= onClick)
    .then(Modifier.size(size)),
    shape = CircleShape,
    backgroundColor = backgroundColor,
    elevation = elevation,
) {
    Icon( imageVector = imageVector, 
contentDescription = contentDescription,tint 
= tint)
    }
}