feat: polish motion with stronger easing, press feedback and reduced motion (#73)

- Override Tailwind ease-out/ease-in-out with stronger curves, add ease-drawer
- hoverOnlyWhenSupported so hover styles never stick on touch devices
- Replace transition-all with explicit properties across the public UI
- Press feedback via active:scale-[0.97] instead of hover:scale-105
- Global prefers-reduced-motion handling (CSS + MotionConfig reducedMotion="user")
- Mobile menu is a real drawer: stays mounted, inert when closed, Escape closes
- Progress and music bars animate scaleX/scaleY instead of width/height
- Fix undefined animate-spin-slow, contain hero CTA shine with overflow-hidden

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
denshooter
2026-10-15 23:48:08 +02:00
committed by GitHub
parent 8c3c4ec1d0
commit 02914d6145
20 changed files with 178 additions and 123 deletions
+7 -3
View File
@@ -3,6 +3,7 @@
import React, { useEffect, useState } from "react";
import { usePathname } from "next/navigation";
import dynamic from "next/dynamic";
import { MotionConfig } from "framer-motion";
import { ToastProvider } from "@/components/Toast";
import ErrorBoundary from "@/components/ErrorBoundary";
import { ConsentProvider } from "./ConsentProvider";
@@ -30,9 +31,12 @@ export default function ClientProviders({
<ErrorBoundary>
<ConsentProvider>
<ThemeProvider>
<GatedProviders mounted={mounted}>
{children}
</GatedProviders>
{/* Respect prefers-reduced-motion in every Framer Motion animation */}
<MotionConfig reducedMotion="user">
<GatedProviders mounted={mounted}>
{children}
</GatedProviders>
</MotionConfig>
</ThemeProvider>
</ConsentProvider>
</ErrorBoundary>