// Framer Motion presets — generated by designlang (motionlang) // Source: https://coulomb.social // 2026-08-08T23:30:22.009Z // // import { transitions, variants } from './coulomb.social-motion.framer'; // /** Easing curves extracted from the live page, as Framer cubic-bezier arrays. */ export const easings = { standard: [0.25, 1, 0.5, 1], }; /** Duration presets (seconds), extracted from the live page. */ export const durations = { sm: 0.25, }; /** Spring presets — pass to a Framer Motion `transition` prop. */ export const springs = { soft: { type: 'spring', stiffness: 320, damping: 30, mass: 1 }, }; /** Ready-to-spread Framer Motion transition objects. */ export const transitions = { base: { duration: 0.25, ease: easings.standard }, fast: { duration: 0.125, ease: easings.standard }, slow: { duration: 0.450, ease: easings.standard }, spring: springs.soft, }; /** Common variants wired to the extracted timing. */ export const variants = { fade: { hidden: { opacity: 0 }, show: { opacity: 1, transition: transitions.base }, }, slideUp: { hidden: { opacity: 0, y: 16 }, show: { opacity: 1, y: 0, transition: transitions.base }, }, scaleIn: { hidden: { opacity: 0, scale: 0.96 }, show: { opacity: 1, scale: 1, transition: transitions.base }, }, pop: { hidden: { opacity: 0, scale: 0.9 }, show: { opacity: 1, scale: 1, transition: springs.soft }, }, stagger: { hidden: {}, show: { transition: { staggerChildren: 0.063 } }, }, }; /** Site uses scroll- or view-timeline. Drop-in `whileInView` props. */ export const inView = { fadeIn: { initial: variants.fade.hidden, whileInView: variants.fade.show, viewport: { once: true, amount: 0.3 }, }, riseIn: { initial: variants.slideUp.hidden, whileInView: variants.slideUp.show, viewport: { once: true, amount: 0.3 }, }, }; export default { easings, durations, springs, transitions, variants, inView };