Design tokens
Motion
Nothing in Novix UI eases linearly. Motion is a language: spring physics for physical objects, cubic curves for typographic transitions.
Springs
Three presets cover every interaction we ship. Click any preset to copy its spring config.
snap
Buttons, tabs, toggles — anything you press.
k: 500 · c: 32
soft
Cards, popovers, sheets — anything that lifts.
k: 260 · c: 28
glide
Page transitions and hero reveals.
k: 140 · c: 22
Usage in motion/react
Apply spring tokens to motion components via the transition prop:
tsx
import { motion } from "motion/react"; // The "snap" spring preset for interactive elementsconst snapSpring = { type: "spring", stiffness: 500, damping: 32 }; export function AnimatedCard() { return ( <motion.div whileHover={{ scale: 1.02, y: -4 }} whileTap={{ scale: 0.98 }} transition={snapSpring} className="bg-surface border border-border rounded-xl p-5" > <h3 className="text-foreground font-semibold">Interactive Card</h3> </motion.div> );}Reduced motion
Every animation in Novix UI checks prefers-reduced-motion. When enabled, springs collapse to instant transitions; only opacity fades remain.
tsx
import { useReducedMotion } from "motion/react"; const reduce = useReducedMotion();const transition = reduce ? { duration: 0 } : { type: "spring", stiffness: 500, damping: 32 };