Ripple Field
ComponentsRipple Field
BackgroundsNew

Ripple Field

A quiet pool for your next idea. Move across the surface and leave a passing ripple.

React + CSS
BLUE HOUR / FIELD STUDY 006≈
38° 42′ N
A MOMENT OF STILLNESS

Go with
the flow.

A small movement can change everything.

Live component. Go ahead, interact.
01

Installation

Run this in your shadcn-configured React project. The component and stylesheet are added together.

TERMINAL
npx shadcn@latest add http://localhost:5173/r/ripple-field.json

This command uses the current site address. For localhost, keep this preview running on the same computer. Files follow your configured components alias.

02

Usage

Import the component and make the details your own.

TypeScript
import { RippleField } from '@/components/anticraft/RippleField';

export function Example() {
  return (
    <RippleField color="#a7c6dd" maxRipples={12} label="A pool of ideas">
      <div style={{ display: 'grid', placeItems: 'center', width: '100%', height: '100%', padding: 32, textAlign: 'center' }}>
        <h2 style={{ fontSize: 36, fontWeight: 400 }}>Make a little change.</h2>
      </div>
    </RippleField>
  );
}
03

Props

PropTypeDefaultDescription
childrenReactNode—The content above the still water texture. Links and buttons remain interactive.
labelstring'Ripple field'An accessible name for the field.
colorstring'#a7c6dd'The base CSS color beneath the layered water texture.
maxRipplesnumber12The maximum number of active ripples, clamped from 1 to 24. Each ripple contains three concentric rings.
classNamestring''Additional classes. Set --ac-ripple-height to change the default 300px height and --ac-ripple-ink to change the foreground.
04

Motion & accessibility

Considered by default.

Fine pointer movement creates rings after distance and time thresholds. Click, tap, or use Make a ripple to create one directly. Rings finish within 1.2 seconds, with a bounded pool and no ambient animation. Touch preserves vertical scrolling. Reduced motion disables pointer tracking and uses a brief, still outline for manual actions. The button announces each action without announcing pointer movement.

Use semantic content and meaningful labels in your composition. Check contrast and keyboard behavior with your own styles and content.