Loading...
Loading...
Audit animation code against Disney's 12 principles adapted for web. Use when reviewing motion, implementing animations, or checking animation quality. Outputs file:line findings.
npx skill4agent add raphaelsalaja/userinterface-wiki 12-principles-of-animationfile:line| Priority | Category | Prefix |
|---|---|---|
| 1 | Timing | |
| 2 | Easing | |
| 3 | Physics | |
| 4 | Staging | |
timing-under-300ms.button { transition: transform 400ms; }.button { transition: transform 200ms; }timing-consistent.button-primary { transition: 200ms; }
.button-secondary { transition: 150ms; }.button-primary { transition: 200ms; }
.button-secondary { transition: 200ms; }timing-no-entrance-context-menu<motion.div initial={{ opacity: 0 }} animate={{ opacity: 1 }} /><motion.div exit={{ opacity: 0 }} />easing-entrance-ease-outease-out.modal-enter { animation-timing-function: ease-in; }.modal-enter { animation-timing-function: ease-out; }easing-exit-ease-inease-in.modal-exit { animation-timing-function: ease-out; }.modal-exit { animation-timing-function: ease-in; }easing-no-linear-motion.card { transition: transform 200ms linear; }.progress-bar { transition: width 100ms linear; }easing-natural-decaygain.gain.linearRampToValueAtTime(0, t + 0.05);gain.gain.exponentialRampToValueAtTime(0.001, t + 0.05);physics-active-state.button:hover { background: var(--gray-3); }
/* Missing :active state */.button:active { transform: scale(0.98); }physics-subtle-deformation<motion.div whileTap={{ scale: 0.8 }} /><motion.div whileTap={{ scale: 0.98 }} />physics-spring-for-overshoot<motion.div transition={{ duration: 0.3, ease: "easeOut" }} />
// When element should bounce/settle<motion.div transition={{ type: "spring", stiffness: 500, damping: 30 }} />physics-no-excessive-staggertransition={{ staggerChildren: 0.15 }}transition={{ staggerChildren: 0.03 }}staging-one-focal-point// Multiple elements with competing entrance animations
<motion.div animate={{ scale: 1.1 }} />
<motion.div animate={{ scale: 1.1 }} />staging-dim-background.overlay { background: transparent; }.overlay { background: var(--black-a6); }staging-z-index-hierarchy.tooltip { /* No z-index, may render behind other elements */ }.tooltip { z-index: 50; }file:line - [rule-id] description of issue
Example:
components/modal/index.tsx:45 - [timing-under-300ms] Exit animation 400ms exceeds 300ms limit
components/button/styles.module.css:12 - [physics-active-state] Missing :active transform| Rule | Count | Severity |
|---|---|---|
| 2 | HIGH |
| 3 | MEDIUM |
| 1 | MEDIUM |