● Zion Boggan
repos/Drophawk/frontend/lib/motion.ts
zionboggan.com ↗
34 lines · typescript
History for this file →
1
import type { TargetAndTransition, Transition, Variants } from "framer-motion";
2
 
3
export const springs = {
4
  snappy: { type: "spring", stiffness: 580, damping: 32, mass: 0.8 },
5
  natural: { type: "spring", stiffness: 320, damping: 28, mass: 1.0 },
6
  entrance: { type: "spring", stiffness: 240, damping: 18, mass: 1.2 },
7
  sheet: { type: "spring", stiffness: 280, damping: 34, mass: 1.0 },
8
  stagger: { type: "spring", stiffness: 480, damping: 30, mass: 0.6 },
9
} satisfies Record<string, Transition>;
10
 
11
export const dropCardVariants = {
12
  initial: { opacity: 0, y: -16, scale: 0.96 },
13
  animate: { opacity: 1, y: 0, scale: 1, transition: springs.entrance },
14
  exit: { opacity: 0, x: 24, scale: 0.92, transition: { duration: 0.18 } },
15
} satisfies Variants;
16
 
17
export const flashAccentKeyframes = {
18
  boxShadow: [
19
    "0 0 0 0 oklch(0.78 0.16 184 / 0)",
20
    "0 0 0 4px oklch(0.78 0.16 184 / 0.5)",
21
    "0 0 0 0 oklch(0.78 0.16 184 / 0)",
22
  ],
23
  transition: { duration: 1.6, ease: "easeOut", times: [0, 0.2, 1] },
24
} satisfies TargetAndTransition;
25
 
26
export const staggerContainer = {
27
  initial: {},
28
  animate: { transition: { staggerChildren: 0.04, delayChildren: 0.02 } },
29
} satisfies Variants;
30
 
31
export const fadeUpItem = {
32
  initial: { opacity: 0, y: 12 },
33
  animate: { opacity: 1, y: 0, transition: springs.stagger },
34
} satisfies Variants;