--- name: animate description: Review a feature and enhance it with purposeful animations, micro-interactions, and motion effects that improve usability and delight. args: - name: target description: The feature or component to animate (optional) required: false --- Analyze a feature and strategically add animations and micro-interactions that enhance understanding, provide feedback, and create delight. ## Assess Animation Opportunities Analyze where motion would improve the experience: 1. **Identify static areas**: - **Missing feedback**: Actions without visual acknowledgment (button clicks, form submission, etc.) - **Jarring transitions**: Instant state changes that feel abrupt (show/hide, page loads, route changes) - **Unclear relationships**: Spatial or hierarchical relationships that aren't obvious - **Lack of delight**: Functional but joyless interactions - **Missed guidance**: Opportunities to direct attention or explain behavior 2. **Understand the context**: - What's the personality? (Playful vs serious, energetic vs calm) - What's the performance budget? (Mobile-first? Complex page?) - Who's the audience? (Motion-sensitive users? Power users who want speed?) - What matters most? (One hero animation vs many micro-interactions?) **CRITICAL**: Respect `prefers-reduced-motion`. Always provide non-animated alternatives for users who need them. ## Plan Animation Strategy Create a purposeful animation plan: - **Hero moment**: What's the ONE signature animation? (Page load? Hero section? Key interaction?) - **Feedback layer**: Which interactions need acknowledgment? - **Transition layer**: Which state changes need smoothing? - **Delight layer**: Where can we surprise and delight? **IMPORTANT**: One well-orchestrated experience beats scattered animations everywhere. Focus on high-impact moments. ## Implement Animations Add motion systematically across these categories: ### Entrance Animations - **Page load choreography**: Stagger element reveals (100-150ms delays), fade + slide combinations - **Hero section**: Dramatic entrance for primary content (scale, parallax, or creative effects) - **Content reveals**: Scroll-triggered animations using intersection observer - **Modal/drawer entry**: Smooth slide + fade, backdrop fade, focus management ### Micro-interactions - **Button feedback**: - Hover: Subtle scale (1.02-1.05), color shift, shadow increase - Click: Quick scale down then up (0.95 → 1), ripple effect - Loading: Spinner or pulse state - **Form interactions**: - Input focus: Border color transition, slight scale or glow - Validation: Shake on error, check mark on success, smooth color transitions - **Toggle switches**: Smooth slide + color transition (200-300ms) - **Checkboxes/radio**: Check mark animation, ripple effect - **Like/favorite**: Scale + rotation, particle effects, color transition ### State Transitions - **Show/hide**: Fade + slide (not instant), appropriate timing (200-300ms) - **Expand/collapse**: Height transition with overflow handling, icon rotation - **Loading states**: Skeleton screen fades, spinner animations, progress bars - **Success/error**: Color transitions, icon animations, shake or bounce effects - **Enable/disable**: Opacity transitions, cursor changes ### Navigation & Flow - **Page transitions**: Crossfade between routes, shared element transitions - **Tab switching**: Slide indicator, content fade/slide - **Carousel/slider**: Smooth transforms, snap points, momentum - **Scroll effects**: Parallax layers, sticky headers with state changes, scroll progress indicators ### Feedback & Guidance - **Hover hints**: Tooltip fade-ins, cursor changes, element highlights - **Drag & drop**: Lift effect (shadow + scale), drop zone highlights, smooth repositioning - **Copy/paste**: Brief highlight flash on paste, "copied" confirmation - **Focus flow**: Highlight path through form or workflow ### Delight Moments - **Empty states**: Subtle floating animations on illustrations - **Completed actions**: Confetti, check mark flourish, success celebrations - **Easter eggs**: Hidden interactions for discovery - **Contextual animation**: Weather effects, time-of-day themes, seasonal touches ## Technical Implementation Use appropriate techniques for each animation: ### CSS Animations ```css /* Prefer for simple, declarative animations */ - transitions for state changes - @keyframes for complex sequences - transform + opacity only (GPU-accelerated) ``` ### JavaScript Animation ```javascript /* Use for complex, interactive animations */ - Web Animations API for programmatic control - Framer Motion for React - GSAP for complex sequences ``` ### Performance - **GPU acceleration**: Use `transform` and `opacity`, avoid layout properties - **will-change**: Add sparingly for known expensive animations - **Reduce paint**: Minimize repaints, use `contain` where appropriate - **Monitor FPS**: Ensure 60fps on target devices ### Accessibility ```css @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } ``` **NEVER**: - Animate without purpose (every animation should have a reason) - Use long durations (>500ms feels laggy) - Animate layout properties (width, height, top, left) - use transform instead - Block interaction during animation (unless intentional) - Ignore reduced motion preferences (accessibility violation) - Animate everything (animation fatigue is real) - Create animations that draw more attention than content ## Verify Quality Test animations thoroughly: - **Smooth at 60fps**: No jank on target devices - **Feels natural**: Easing curves feel organic, not robotic - **Appropriate timing**: Not too fast (jarring) or too slow (laggy) - **Reduced motion works**: Animations disabled or simplified appropriately - **Doesn't block**: Users can interact during/after animations - **Adds value**: Makes interface clearer or more delightful Remember: Motion should enhance understanding and provide feedback, not just add decoration. Animate with purpose, respect performance constraints, and always consider accessibility. Great animation is invisible - it just makes everything feel right.