mcpField
S
state-changes

state-changes

github.com/dylantarreDesign & UI132495 installsUpdated 43w ago
Repository

About state-changes

A UI design skill for animating state changes with Disney’s animation principles. It gives timing and easing guidance for common controls, implementation patterns, and a rule to keep transitions reversible in both directions.

Key features

  1. 01Applying animation principles to state changes
  2. 02Timing and easing for common controls
  3. 03Toggle and accordion implementation patterns
  4. 04Reversible transitions in both directions

Use cases

  1. 01Designing toggle switch animations
  2. 02Creating checkbox and radio button feedback
  3. 03Building accordion or tab-switch effects

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/dylantarre/animation-principles --skill state-changes

After installing, type/state-changesin Claude Code to confirm it loaded.

Details

From the project README

State Change Animations

Apply Disney's 12 principles when elements transform without leaving.

Principle Application

Squash & Stretch: Elements compress before expanding. A toggle switch squashes 5% before sliding.

Anticipation: Wind up before the change. Slight reverse movement (2-3px) before expanding.

Staging: Keep transformations centered on user focus. Don't let state changes distract from the interaction point.

Straight Ahead vs Pose-to-Pose: Define exact states. Button has rest, hover, active, disabled - each precisely designed.

Follow Through & Overlapping: Parts transform at different rates. Icon rotates before label fades in.

Slow In/Slow Out: Use ease-in-out for bidirectional changes: cubic-bezier(0.4, 0, 0.2, 1).

Arcs: Rotating elements follow natural arcs. Chevrons rotate on their center point, not linearly.

Secondary Action: Pair the primary change with supporting motion. Toggle sliding + color shift + icon swap.

Timing:

  • Micro-states: 100-150ms (checkbox tick, radio fill)
  • Standard states: 150-250ms (toggles, accordions)
  • Complex states: 250-400ms (multi-part transformations)

Exaggeration: Overshoot slightly on state changes. Toggle goes 2px past, then settles.

Solid Drawing: Maintain element integrity during transformation. No distortion that breaks visual consistency.

Appeal: State changes should feel satisfying. Users clicked with intent - reward that intent.

Timing Recommendations

State ChangeDurationEasingNotes
Checkbox150msease-outTick draws in
Toggle Switch200msease-in-outOvershoot slightly
Radio Button150msease-outScale in from center
Accordion250msease-in-outHeight + rotation
Tab Switch200msease-in-outIndicator slides
Button Active100msease-outScale to 0.97
Card Expand300msease-in-outAll properties together

Implementation Pattern

.toggle {
  transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);
}

.toggle-knob {
  transition: transform 200ms cubic-bezier(0.34, 1.56, 0.64, 1); /* Overshoot */
}

.toggle.active .toggle-knob {
  transform: translateX(20px);
}

Accordion Pattern

.accordion-content {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 250ms ease-in-out;
}

.accordion.open .accordion-content {
  grid-template-rows: 1fr;
}

Key Rule

State changes are reversible. The animation to state B should be the inverse of animation to state A. Test both directions.

Comments

Markdown supported