Skip to content
blaze-motion

Preset

blurIn

Resolves a blur filter to zero while fading in from transparent, so the content settles into focus instead of travelling from a direction.

Blur + opacity

Resolves from 8px to 0px.

The filter and the opacity animate together for a soft focus pull into place.

Usage

import { Section } from "@/lib/motion";
import { blurIn } from "@/lib/motion/presets/blur-in";

export function Features() {
  return (
    <Section {...blurIn} className="grid gap-6 md:grid-cols-3">
      <FeatureCard title="Copy, do not install" />
      <FeatureCard title="One file you own" />
      <FeatureCard title="No wrappers" />
    </Section>
  );
}

Installation

npx shadcn@latest add https://motion.asmitsah.dev/r/blur-in.json

Props and tokens

What it sets

PropertyInitialIn viewReduced motionReads from config.ts
opacity01Animatesfade.from → fade.to
filterblur(8px)blur(0px)Animatesblur.from → blur.to

Transition and viewport

OptionValueReads from config.ts
duration0.55duration.base
ease[0.16,1,0.3,1]ease
viewport.oncetrueviewport
viewport.amount"some"viewport
viewport.margin"0px 0px -12% 0px"viewport

Every motion prop the preset does not set — whileHover, whileTap, whileFocus — stays available at the call site. Write it after the spread and it wins.

layout and drag need the domMax feature bundle, not domAnimation — swap the lazy import in provider.tsx. It adds roughly 13kb gzipped on top of domAnimation.