Dynamic Ripple

Fluid water ripple effect that responds to cursor movement and touch input.

Water Ripple Effect

Interactive

Move your cursor over this card to create dynamic water ripple effects. Perfect for creating engaging UI elements.

Cosmic Waves

High Intensity

A more intense ripple effect with slower speed, creating a cosmic wave-like animation that reacts to your movements.

Nature Pulse

Fast

A subtle but fast ripple effect that mimics the gentle pulse of nature. Lower intensity with higher speed.

Maximum Energy

Extreme

The most intense and fastest ripple effect, creating an energetic and dynamic interaction experience.

Dynamic Ripple renders a water-like disturbance that spreads from the pointer as you move across the surface, with separate touch handling for mobile. Ripple speed, density, and decay are configurable through props, and the effect works on top of any background. Built with React, canvas, and Tailwind CSS. Suited for hero sections, full-bleed feature demos, or landing pages that need an ambient interactive layer.

Installation

Usage

import { DynamicRipple } from "@/components/ui/dynamic-ripple";
<DynamicRipple theme="blue" intensity={3} speed={3} rounded="lg">
  <div className="p-8 relative z-10">Your content here</div>
</DynamicRipple>

Props

PropTypeDefaultDescription
themestring"blue"The color theme of the ripple effect. Options: "blue", "purple", "green", "amber", "rose", "custom".
customColorsobjectundefinedCustom colors for the ripple when theme is set to "custom". Should include properties: primary and secondary.
intensitynumber3The intensity of the ripple effect (1-5).
speednumber3The speed of the ripple animation (1-5).
reactToCursorbooleantrueWhether to enable the ripple effect on cursor movement.
autoAnimatebooleantrueWhether to enable the automatic ripple animation.
roundedstring"lg"The border radius of the component. Options: "none", "sm", "md", "lg", "xl", "full".
gradientOverlaybooleantrueWhether to apply a gradient overlay.
classNamestring""Additional CSS classes to apply.
childrenReact.ReactNodeRequiredContent to be rendered inside the ripple component.