Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
One-time setup that gathers your project's design context and saves it to CLAUDE.md for future sessions.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
reference/animate.md
1> **Additional context needed**: performance constraints.23Add motion that conveys state, gives feedback, and clarifies hierarchy. Cut motion that exists only for decoration. Animation fatigue is a real cost; spend the budget on the moments that need it.45---67## Register89Brand: orchestrated page-load sequences, staggered reveals, scroll-driven animation. Motion is part of the voice; one well-rehearsed entrance beats scattered micro-interactions.1011Product: 150–250 ms on most transitions. Motion conveys state: feedback, reveal, loading, transitions between views. No page-load choreography; users are in a task and won't wait for it.1213---1415## Assess Animation Opportunities1617Analyze where motion would improve the experience:18191. **Identify static areas**:20- **Missing feedback**: Actions without visual acknowledgment (button clicks, form submission, etc.)21- **Jarring transitions**: Instant state changes that feel abrupt (show/hide, page loads, route changes)22- **Unclear relationships**: Spatial or hierarchical relationships that aren't obvious23- **Lack of delight**: Functional but joyless interactions24- **Missed guidance**: Opportunities to direct attention or explain behavior25262. **Understand the context**:27- What's the personality? (Playful vs serious, energetic vs calm)28- What's the performance budget? (Mobile-first? Complex page?)29- Who's the audience? (Motion-sensitive users? Power users who want speed?)30- What matters most? (One hero animation vs many micro-interactions?)3132If any of these are unclear from the codebase, STOP and use Codex's structured user-input/question tool when available; if unavailable, ask directly in chat to clarify what you cannot infer.3334**CRITICAL**: Respect `prefers-reduced-motion`. Always provide non-animated alternatives for users who need them.3536## Plan Animation Strategy3738Create a purposeful animation plan:3940- **Hero moment**: What's the ONE signature animation? (Page load? Hero section? Key interaction?)41- **Feedback layer**: Which interactions need acknowledgment?42- **Transition layer**: Which state changes need smoothing?43- **Delight layer**: Where can we surprise and delight?4445**IMPORTANT**: One well-orchestrated experience beats scattered animations everywhere. Focus on high-impact moments.4647## Implement Animations4849Add motion systematically across these categories:5051### Entrance Animations52- **Page load choreography**: Stagger element reveals (100-150ms delays), fade + slide combinations53- **Hero section**: Dramatic entrance for primary content (scale, parallax, or creative effects)54- **Content reveals**: Scroll-triggered animations using intersection observer55- **Modal/drawer entry**: Smooth slide + fade, backdrop fade, focus management5657### Micro-interactions58- **Button feedback**:59- Hover: Subtle scale (1.02-1.05), color shift, shadow increase60- Click: Quick scale down then up (0.95 → 1), ripple effect61- Loading: Spinner or pulse state62- **Form interactions**:63- Input focus: Border color transition, slight scale or glow64- Validation: Shake on error, check mark on success, smooth color transitions65- **Toggle switches**: Smooth slide + color transition (200-300ms)66- **Checkboxes/radio**: Check mark animation, ripple effect67- **Like/favorite**: Scale + rotation, particle effects, color transition6869### State Transitions70- **Show/hide**: Fade + slide (not instant), appropriate timing (200-300ms)71- **Expand/collapse**: Height transition with overflow handling, icon rotation72- **Loading states**: Skeleton screen fades, spinner animations, progress bars73- **Success/error**: Color transitions, icon animations, gentle scale pulse74- **Enable/disable**: Opacity transitions, cursor changes7576### Navigation & Flow77- **Page transitions**: Crossfade between routes, shared element transitions78- **Tab switching**: Slide indicator, content fade/slide79- **Carousel/slider**: Smooth transforms, snap points, momentum80- **Scroll effects**: Parallax layers, sticky headers with state changes, scroll progress indicators8182### Feedback & Guidance83- **Hover hints**: Tooltip fade-ins, cursor changes, element highlights84- **Drag & drop**: Lift effect (shadow + scale), drop zone highlights, smooth repositioning85- **Copy/paste**: Brief highlight flash on paste, "copied" confirmation86- **Focus flow**: Highlight path through form or workflow8788### Delight Moments89- **Empty states**: Subtle floating animations on illustrations90- **Completed actions**: Confetti, check mark flourish, success celebrations91- **Easter eggs**: Hidden interactions for discovery92- **Contextual animation**: Weather effects, time-of-day themes, seasonal touches9394## Technical Implementation9596Use appropriate techniques for each animation:9798### Timing & Easing99100**Durations by purpose:**101- **100-150ms**: Instant feedback (button press, toggle)102- **200-300ms**: State changes (hover, menu open)103- **300-500ms**: Layout changes (accordion, modal)104- **500-800ms**: Entrance animations (page load)105106**Easing curves (use these, not CSS defaults):**107```css108/* Recommended: natural deceleration */109--ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1); /* Smooth */110--ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1); /* Slightly snappier */111--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1); /* Confident, decisive */112113/* AVOID: feel dated and tacky */114/* bounce: cubic-bezier(0.34, 1.56, 0.64, 1); */115/* elastic: cubic-bezier(0.68, -0.6, 0.32, 1.6); */116```117118**Exit animations are faster than entrances.** Use ~75% of enter duration.119120### CSS Animations121```css122/* Prefer for simple, declarative animations */123- transitions for state changes124- @keyframes for complex sequences125- transform and opacity for reliable movement126- blur, filters, masks, clip paths, shadows, and color shifts for premium atmospheric effects when verified smooth127```128129### JavaScript Animation130```javascript131/* Use for complex, interactive animations */132- Web Animations API for programmatic control133- Framer Motion for React134- GSAP for complex sequences135```136137### Performance138- **Motion materials**: Use transform/opacity for reliable movement, but use blur, filters, masks, shadows, and color shifts when they materially improve the effect139- **Layout safety**: Avoid casual animation of layout-driving properties (`width`, `height`, `top`, `left`, margins)140- **will-change**: Add sparingly for known expensive animations141- **Bound expensive effects**: Keep blur/filter/shadow areas small or isolated, use `contain` where appropriate142- **Monitor FPS**: Ensure 60fps on target devices143144### Accessibility145```css146@media (prefers-reduced-motion: reduce) {147* {148animation-duration: 0.01ms !important;149animation-iteration-count: 1 !important;150transition-duration: 0.01ms !important;151}152}153```154155**NEVER**:156- Use bounce or elastic easing curves; they feel dated and draw attention to the animation itself157- Animate layout properties casually (`width`, `height`, `top`, `left`, margins) when transform, FLIP, or grid-based techniques would work158- Use durations over 500ms for feedback (it feels laggy)159- Animate without purpose (every animation needs a reason)160- Ignore `prefers-reduced-motion` (this is an accessibility violation)161- Animate everything (animation fatigue makes interfaces feel exhausting)162- Block interaction during animations unless intentional163164## Verify Quality165166Test animations thoroughly:167168- **Smooth at 60fps**: No jank on target devices169- **Feels natural**: Easing curves feel organic, not robotic170- **Appropriate timing**: Not too fast (jarring) or too slow (laggy)171- **Reduced motion works**: Animations disabled or simplified appropriately172- **Doesn't block**: Users can interact during/after animations173- **Adds value**: Makes interface clearer or more delightful174175When the motion clarifies state instead of decorating it, hand off to `$impeccable polish` for the final pass.176