Skip to content

Apple-style motion design with Framer Motion - #1

Merged
GenesisPray merged 10 commits into
mainfrom
feat/apple-motion-design
Aug 12, 2026
Merged

Apple-style motion design with Framer Motion#1
GenesisPray merged 10 commits into
mainfrom
feat/apple-motion-design

Conversation

@GenesisPray

@GenesisPray GenesisPray commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds Framer Motion and a shared spring-preset system (default/snappy/bouncy/smooth) matching Apple HIG values
  • Gives the existing Button/LinkButton spring-based hover/tap feedback (no new parallel component — the shared one across the app now animates)
  • Adds shared Modal, Toast, and Skeleton components (Tailwind-styled, matching existing tokens — no CSS Modules introduced)
  • Adds an Apple-style type scale to the existing Tailwind fontSize theme (display/heading/label/caption)
  • Adds a useReducedMotion hook; every animated component respects prefers-reduced-motion
  • Dashboard (src/app/app/page.tsx) uses the shared Skeleton and staggers the projects/payments lists in

Deviated from a literal spec in a couple of places after inspecting the repo: this project uses Tailwind (not CSS Modules) with color tokens that already matched the requested hex values, and already has a Button component used throughout — so I extended those instead of creating disconnected duplicates.

Test plan

  • npx tsc --noEmit passes
  • npx eslint clean on all touched files
  • npx vitest run — 78/78 tests pass (added a matchMedia polyfill to src/test/setup.ts, required by jsdom)
  • npx next build succeeds
  • Dev server: /, /app/login render without server/runtime errors
  • Manual visual check of hover/tap/modal/toast/reduced-motion in a browser (not yet done in this session — recommend a quick pass before merge)

Reuses the shared spring presets and honors prefers-reduced-motion.
Polyfills window.matchMedia in the vitest environment since jsdom
doesn't provide it.
Extends the existing Tailwind fontSize theme rather than introducing
a parallel CSS file; text-base/text-sm are left alone since they
already match the intended body scale.
next build failed without "use client" since useReducedMotion uses
useEffect/useState and is imported by Button, which landing page
Server Components pull in transitively.
Swaps the page-local skeleton block for the shared component and
adds a subtle spring-based stagger entrance to the projects grid and
recent payments list, honoring prefers-reduced-motion.
@vercel

vercel Bot commented Aug 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
escrow-flow-frontend Ready Ready Preview Aug 12, 2026 8:35pm

@GenesisPray
GenesisPray merged commit c84254b into main Aug 12, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant