JellyBlob

@Composable
fun JellyBlob(modifier: Modifier = Modifier, size: Dp, color: Color, bulges: List<Animatable<Float, AnimationVector1D>>, shadowOpacity: Float, shadowBlurFactor: Float, bulgeAngles: List<Double>, bounceFactor: Float)

Draws the main floating action button as a soft, organic "jelly" blob.

The Jelly shape deforms based on bulges, where each bulge corresponds to an angle in bulgeAngles. When a bulge value increases, the blob expands outward at the corresponding angle, creating a gooey elastic effect.

The shadow is also dynamic — it softly lifts and changes diffusion strength, influenced by the bulge state to mimic a natural squish + lift feel.

Parameters

size

Size of the blob in layout (same as FAB size).

color

Fill color of the blob.

bulges

One value per bulge angle. 0f = no bulge, 1f = full bulge.

shadowOpacity

Base opacity of the shadow (0f–1f). Higher = darker shadow.

shadowBlurFactor

Controls softness of shadow edges. Larger = more diffused.

bulgeAngles

List of angles (in degrees) defining where the blob should bulge. Example for 3 mini-FAB layout: 270°, 225°, 180°.

bounceFactor

Strength of bulge expansion relative to blob radius.