apple-design

Applies Apple's fluid interface design principles to web animations, gestures, and typography.

Updated Jan 19, 2023
One-click install
npx skills add https://github.com/inkfin/dotfiles --skill apple-design-inkfin
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: apple-design
Source: https://github.com/inkfin/dotfiles/tree/main/.agents/skills/apple-design
Command: npx skills add https://github.com/inkfin/dotfiles --skill apple-design-inkfin

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Web interfaces often feel stiff because animations are pre-scripted, non-interruptible, and disconnected from user input. This Skill translates Apple's WWDC design guidance (fluid interfaces, springs, materials, typography) into concrete web techniques using CSS, Pointer Events, and spring libraries like Motion and Framer Motion. ## Core Features & Use Cases - Gesture-Driven Motion: Implement 1:1 drag tracking with Pointer Events, velocity handoff to springs, momentum projection, and rubber-banding at boundaries. - Spring Animation Guidance: Use damping ratio and response parameters with concrete Apple-shipped values for sheets, drawers, and repositioning interactions. - Materials, Typography & Accessibility: Build translucent layers with backdrop-filter, apply size-specific tracking and leading, and honor prefers-reduced-motion and prefers-reduced-transparency. - Use Case: When building a bottom sheet that users can drag, flick, and re-grab mid-animation, use this Skill to wire pointer tracking, project the flick landing point, and hand off release velocity to a spring so the motion feels continuous. ## Quick Start Review my draggable bottom sheet component and rewrite its animations to follow Apple-style fluid interface principles with interruptible springs.

Frequently Asked Questions about apple-design

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I make web animations interruptible like iOS?

Always animate from the element's current on-screen presentation value rather than the target value, and never lock input during transitions. Use spring animations instead of CSS transitions or keyframes, since springs re-target from the current value and velocity by default.

How do I implement a draggable bottom sheet with momentum on the web?

Track the pointer with Pointer Events and setPointerCapture, record recent move events for velocity, then project the resting position using the exponential decay formula (v/1000)*d/(1-d) with d around 0.998. Snap to the nearest target and pass the release velocity into the spring.

What spring parameters should I use with Framer Motion or Motion?

Apple's damping ratio and response map to Motion's bounce and duration API. Use a critically damped spring (bounce 0, duration around 0.4) as the default, and add slight bounce (around 0.2) only for momentum-driven interactions like flicks.

Should I use CSS transitions or springs for gesture-driven UI?

Use springs for anything a user can touch or interrupt, because CSS transitions and keyframes cannot be smoothly grabbed and reversed mid-flight. Reserve CSS transitions for simple state changes like hover feedback that are not gesture-driven.

How do I handle prefers-reduced-motion for animated interfaces?

Replace slides, springs, and parallax with short opacity cross-fades when prefers-reduced-motion is set, and drop elastic overshoot. Also respond to prefers-reduced-transparency by making translucent surfaces more solid, and prefers-contrast by adding defined borders.