Articulink

Motion

Animation brings interfaces to life while guiding attention and providing feedback.

Motion Principles

Purposeful

Every animation should serve a purpose — guide attention, provide feedback, or enhance understanding.

Delightful

Subtle animations add personality and make interactions feel polished and responsive.

Restrained

Don't overdo it. Too much motion is distracting and can cause accessibility issues.

Duration

Choose duration based on the size and importance of the change. Larger changes need more time.

instant0ms
fast150ms
normal300ms
slow500ms
slower700ms

Easing

Easing curves define the acceleration of animations. Choose based on the animation type.

ease-out

Enter animations

Hover to see easing

ease-in

Exit animations

Hover to see easing

ease-in-out

General transitions

Hover to see easing

spring

Playful bounces

Hover to see easing

Common Animations

Pre-defined animation classes for common use cases. These are defined in globals.css.

animate-fade-in

Fade from 0 to 100% opacity

animate-fade-in-up

Fade in while sliding up

animate-scale-in

Scale from 95% to 100%

Stagger Delays

Use delay classes to create staggered entrance animations for lists.

delay-100delay-200delay-300delay-400

Micro-interactions

Small, subtle animations that respond to user actions. They make interfaces feel alive.

hover:scale-105

Card/button hover

hover:-translate-y-1

Lift on hover

active:scale-95

Button press

hover:rotate-90

Icon rotation

Guidelines

Do
  • • Use animation to provide feedback
  • • Keep durations under 500ms for interactions
  • • Respect prefers-reduced-motion
  • • Stagger list animations for polish
  • • Use easing curves (never linear)
Don't
  • • Animate everything — it's distracting
  • • Use long animations that block users
  • • Auto-play looping animations
  • • Animate layout shifts unexpectedly
  • • Forget about motion sensitivity