This component no longer exists. It was in PaceUI GSAP’s manifest when we first indexed it and is not there now — the registry served its inventory on 2026-08-06 and this item was not on it. The install command below will fail. It is kept here because a tutorial somewhere still tells people to run it.
Reveal On Scroll
paceui-gsap/reveal-on-scrollRemovedComponent
Animate content into view on scroll with effects like fade, slide, zoom, and blur.
Live preview
live · rendered by the registry
Rendered by PaceUI GSAP on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://gsap.paceui.com/r/reveal-on-scroll.jsonSource
1"use client";23import { ComponentProps, useRef } from "react";45import { useGSAP } from "@gsap/react";6import gsap from "gsap";7import { ScrollTrigger } from "gsap/ScrollTrigger";89gsap.registerPlugin(ScrollTrigger);1011type EffectType = "fadeIn" | "slideInRight" | "zoomIn" | "blurIn";12type RevealOnScrollProps = {13 effect?: EffectType;14 scrollTriggerVars?: ScrollTrigger.Vars;15 fromVars?: gsap.TweenVars;16 toVars?: gsap.TweenVars;17} & ComponentProps<"div">;1819export const RevealOnScroll = ({20 effect = "fadeIn",21 scrollTriggerVars,22 fromVars,23 toVars,24 ...props25}: RevealOnScrollProps) => {26 const wrapperRef = useRef<HTMLDivElement | null>(null);27 const animationRef = useRef<gsap.core.Tween | null>(null);2829 useGSAP(30 () => {31 const el = wrapperRef.current;32 if (!el) return;3334 // Cleanup previous animation35 animationRef.current?.scrollTrigger?.kill();36 animationRef.current?.kill();37 gsap.set(el, { clearProps: "all" });3839 const scrollTrigger: ScrollTrigger.Vars = {40 trigger: el,41 start: "top 80%",42 toggleActions: "play pause play reverse",43 ...scrollTriggerVars,44 };4546 const presets: Record<EffectType, { from: gsap.TweenVars; to: gsap.TweenVars }> = {47 fadeIn: {48 from: { opacity: 0, y: 50 },49 to: { opacity: 1, y: 0, duration: 1 },50 },51 slideInRight: {52 from: { x: 100, opacity: 0 },53 to: { x: 0, opacity: 1, duration: 1 },54 },55 zoomIn: {56 from: { scale: 0.8, opacity: 0 },57 to: { scale: 1, opacity: 1, duration: 1 },58 },59 blurIn: {60 from: { y: 30, opacity: 0, filter: "blur(10px)" },61 to: { y: 0, opacity: 1, filter: "blur(0px)", duration: 1 },62 },63 };6465 const preset = presets[effect] || presets.fadeIn;66 const fromVarsFinal = { ...preset.from, ...fromVars };67 const toVarsFinal = { ...preset.to, scrollTrigger, ...toVars };6869 animationRef.current = gsap.fromTo(el, fromVarsFinal, toVarsFinal);7071 return () => {72 animationRef.current?.scrollTrigger?.kill();73 animationRef.current?.kill();74 };75 },76// … truncated
What it pulls in
npm packages
