Skip to content
Components

Progressive blur

CSS-driven backdrop blur that grows toward an edge, with masked layers and interruptible staggered transitions.

Examples

Scroll edges

ScrollArea owns overflow and positions the overlays. The viewport fades before sibling blur layers sample the visible surface, keeping text weight stable and scrollbars sharp. Toggle either effect without resetting the scroll position. Reduced motion removes transitions; reduced transparency and forced colors remove both effects.

Right-to-left scrolling

Inline edges follow the scroll direction. Keyboard focus clears the effects so controls stay readable. Pointer input passes through the decorative layers. With Next.js/Turbopack, set experimental.lightningCssFeatures.exclude to ["dir-selector"] to preserve native :dir() matching instead of approximating direction from language.

Composition

Decorative edge overlay

Position the container relatively and place the blur over its content.

  • <div>
    • background content
    • <ProgressiveBlur />
    </div>

Installation

The Control UI source installs this primitive from src/registry/sources/control-ui/ui/progressive-blur.tsx.

Registry command
See registry manifest

Raw code

Primary installed source

src/registry/sources/control-ui/ui/progressive-blur.tsx

Knobs

Typed custom properties the recipe paints with. Set one on the root — style, a utility class, or a skin — and every slot inherits it.

--cui-progressive-blur-* · 5 knobsHow the cascade resolves
--cui-progressive-blur-size<length-percentage>3rem
--cui-progressive-blur-backdrop-blur<length>16px
--cui-progressive-blur-fade-size<length-percentage>0.5rem
--cui-progressive-blur-transition-duration<time>var(--duration-base)
--cui-progressive-blur-transition-delay<time>calc(var(--cui-progressive-blur-transition-duration) * 0.06)