<div class='type'>Function</div>


<a id='references'></a>


<h2 id="createripplemodifiernode-interactionsource-bounded-radius-color-ripplealpha">createRippleModifierNode</h2>

<div class='sourceset sourceset-common'>Common</div>


```kotlin
public fun createRippleModifierNode(
    interactionSource: InteractionSource,
    bounded: Boolean,
    radius: Dp,
    color: ColorProducer,
    rippleAlpha: () -> RippleAlpha,
): DelegatableNode
```


Creates a Ripple node using the values provided.

A Ripple is a Material implementation of `Indication` that expresses different `Interaction`s by
drawing ripple animations and state layers.

A Ripple responds to `PressInteraction.Press` by starting a new `RippleAnimation`, and responds
to other `Interaction`s by showing a fixed `StateLayer` with varying alpha values depending on
the `Interaction`.

This Ripple node is a low level building block for building IndicationNodeFactory implementations
that use a Ripple - higher level design system libraries such as material and material3 provide
`Indication` implementations using this node internally. In most cases you should use those
factories directly: this node exists for design system libraries to delegate their Ripple
implementation to, after querying any required theme values for customizing the Ripple.

NOTE: when using this factory with `DelegatingNode.delegate`, ensure that the node is created
once or `DelegatingNode.undelegate` is called in `Modifier.Node.onDetach`. Repeatedly delegating
to a new node returned by this method in `Modifier.Node.onAttach` without removing the old one
will result in multiple ripple nodes being attached to the node.

#### Parameters

| | |
| --- | --- |
| interactionSource | the `InteractionSource` used to determine the state of the ripple. |
| bounded | if true, ripples are clipped by the bounds of the target layout. Unbounded ripples always animate from the target layout center, bounded ripples animate from the touch position. |
| radius | the radius for the ripple. If `Dp.Unspecified` is provided then the size will be calculated based on the target layout size. |
| color | the color of the ripple. This color is usually the same color used by the text or iconography in the component. This color will then have `rippleAlpha` applied to calculate the final color used to draw the ripple. |
| rippleAlpha | the `RippleAlpha` that will be applied to the `color` depending on the state of the ripple. |