coulomb-social/docs/design-extract/coulomb-social-motion.framer.js
tegwick 6fe263444a Extract authenticated coulomb.social design language via designlang
Session probe lands on /vw_pages (Research). Use main designlang extract
with --cookie-file — pack ignores auth. 39 artifacts under
docs/design-extract; tolerate designlang late summary crash when cores exist.
2026-08-09 01:31:00 +02:00

70 lines
2.1 KiB
JavaScript

// 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';
// <motion.div variants={variants.slideUp} initial="hidden" animate="show"
// transition={transitions.base} />
/** 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 };