An animation system that sparks joy

Spring physics, particle systems, generative art, and interactive playgrounds — all vanilla JS, all token-driven.

Explore 7 categories
01 — Spring Physics

Spring Physics

Damped harmonic oscillators bring natural, organic motion to UI elements. Press, drag, and tweak parameters in real time.

Press Me
spring-button Spring

Click to compress with spring physics. Release bounces back with overshoot.

Click or tap the button

spring-chain Spring

Linked elements connected by springs. The leader follows the cursor, trailing nodes follow with cascading delay.

Move mouse over the canvas

spring-playground SpringInteractive

Adjust stiffness, damping, and mass to see how spring parameters affect motion. Click the canvas to set a new target position.

Alerts
Sync
Dark
AI
spring-toggle SpringDOM

Toggle switches animated with a damped spring. The knob overshoots on click and settles with bounce — driven by springStep(), not CSS transitions.

Click any toggle to switch it

Damped harmonic oscillators bring natural, organic motion. Every interactive element uses springStep() for physically grounded animation.
Three-tier token system: Primitives define raw OKLCH values, Semantic tokens map to meaning, Component tokens style specific UI elements. Never skip a tier.
Solid shadows (zero blur), 2px borders, bold typography, and high-contrast color. No gradients on UI elements — flat fills with hard edges.
When prefers-reduced-motion is active, all spring animations snap instantly to their targets. Every demo respects this preference.
spring-accordion SpringDOM

Accordion panels with spring-animated height. Only one panel opens at a time — opening one springs the previous closed with bouncy overshoot.

Click a panel header to expand it

02 — Particle Systems

Particle Systems

Object-pooled particle engines for confetti, fireworks, and token-colored bubbles. All running at 60fps with recycled particles.

confetti-cannon Particles

Click to launch a burst of confetti with gravity, rotation, and air resistance. Particles are pooled and recycled.

Click the Fire button or the canvas

fireworks Particles

Multi-phase particles: a rocket launches up, then explodes into trailing sparks with color shifts.

Click anywhere on the canvas

token-bubbles ParticlesCanvas

Seven gently floating circles — one per color family — labeled with their names. Click a bubble to spring-scale it and emit micro-particles.

Click a bubble to pop it

03 — FLIP Animations

FLIP & Layout Animation

First-Last-Invert-Play technique for smooth layout transitions. Elements animate from where they were to where they are.

1
2
3
4
5
6
7
8
card-shuffle

FLIP-animated card reordering. Records positions, shuffles DOM, then animates from old positions to new.

Click Shuffle to see FLIP in action

Pink
Gold
Cyan
Green
Purple
Red
Pink
Gold
Cyan
Green
Purple
Red
flip-filter-grid FLIPFilter

A grid of color chips with filter buttons. Clicking a filter FLIP-animates matching cards into new positions while non-matching scale to zero.

Click a filter button

Emerald
Amber
Coral
Sapphire
Orchid
flip-reorder-list

A vertical list with up/down arrows. Clicking swaps items with FLIP animation. Sort A-Z reorders all at once.

Click arrows or Sort A-Z

04 — Gestures & Interaction

Gestures & Interaction

Drag with inertia, swipe-to-dismiss, elastic overscroll, magnetic buttons, spotlight effects, and spring-physics cursor trails.

magnetic-buttons Cursor

Buttons that are attracted to your cursor when you hover nearby. The pull increases as you get closer.

Move cursor near the buttons

Hover
Glow
spotlight-card CursorDOM

Cursor creates a radial spotlight in the card's accent color. The solid shadow shifts direction opposite the cursor — light source follows your mouse.

Move cursor over the cards

spring-cursor-trail SpringCanvas

12 shrinking circles trail the cursor, each springing toward its predecessor with decreasing stiffness. Colors cycle through the full token palette.

Move mouse over the canvas

A
B
C
draggable-cards GestureInertia

Drag cards with momentum. Release to see inertia carry the card forward, with spring-damped settling.

Drag the cards around

New message from Alex
Task complete: Deploy v2
Warning: Storage 90% full
Error alert: Build failed
Update ready: v3.0
swipe-dismiss

Swipe notification cards horizontally to dismiss. Past the threshold, the card flings off and remaining cards FLIP upward.

Drag a card left or right to dismiss

Pink
Gold
Cyan
Green
Purple
Red
Pink 2
Gold 2
elastic-scroll GestureSpring

Horizontally scrollable strip with elastic overscroll. Drag past the edge for a rubber-band effect with spring snap-back and edge glow.

Drag horizontally, pull past the edge

05 — Generative & Visual Effects

Generative & Visual Effects

Algorithmic visuals driven by noise, flow fields, and spring-physics wave propagation. Plus signature interactions: blur, depth, and color shifting.

flow-field GenerativeNoise

Particles follow a Perlin noise flow field, creating organic, wind-like patterns colored by the token palette.

Watch the flow emerge

aurora-gradient GenerativeGradient

Animated mesh gradients using token colors to create shifting aurora/nebula effects. Soft, dreamy, organic.

Watch the colors shift

token-wave GenerativeSpring

A grid of ~200 dots in token palette colors. Click to send a radial wave that displaces dots with spring settling. Auto-waves every 3 seconds.

Click anywhere for a wave

Pink
Gold
Cyan
Green
Blur Focus
css

Pure CSS: hovering one card blurs and dims its siblings. Creates visual hierarchy through focus.

Tilt me
3D Tilt
jsspring

Mouse-tracked perspective rotation with spring interpolation. Shine overlay follows cursor position.

Delightful
Color Shift
css@property

CSS @property hue cycling through all 6 accent families. Play/pause toggle.

06 — Loading States

Loading & Transitions

Skeleton placeholders, page transitions, and staggered reveals — the patterns that make waiting feel purposeful.

Skeleton Loading
csstransition

Shimmer and pulse placeholder patterns. Toggle modes or load real content with staggered reveal.

Dashboard
View metrics and activity.
Settings
Manage your preferences.
Page Transitions
js

Crossfade and slide transitions in a contained frame. Production use: CSS View Transitions API.

Snappy (500/30)
Analytics
Reports
Settings
Profile
Standard (400/35)
Analytics
Reports
Settings
Profile
Gentle (300/28)
Analytics
Reports
Settings
Profile
Spring Stagger
jsspring

JS springStep() solver drives stagger — the physics complement to motion.html's CSS easing version.

07 — Component Patterns

Component Patterns

Real design system components brought to life with spring physics. Toast notifications, badge counters, celebration moments, and drag-sortable lists.

toast-stack ComponentFLIP

Toast notifications that spring in from the right and auto-dismiss after 3 seconds. Remaining toasts FLIP upward when one is removed.

Click Send Toast to spawn notifications

badge-counter

Icon buttons with spring-animated badge counters. Badges pop into existence from scale(0) when going 0 to 1, and spring-pop on each increment.

Click icons to increment, Clear to reset

Celebrate!
spring-confetti CombinedSpringParticles

A spring-animated button that fires confetti on click. Combines the spring press effect with the particle cannon for a celebration moment.

Click Celebrate! for the full effect

Cherry
Amber
Ocean
Sage
Plum
Sunset
spring-drag-sort CombinedSpringGesture

Drag-sortable list combining springs, gestures, and FLIP. Grab a handle to lift (scale + shadow), drag to reorder, drop to spring-animate into place.

Grab the handle and drag to reorder