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.
Flip Reveal
paceui-gsap/flip-revealRemovedComponent
Animated container that reveals or hides items using GSAP Flip transitions and keys.
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/flip-reveal.jsonSource
1"use client";23import { ComponentProps, useRef } from "react";45import { useGSAP } from "@gsap/react";6import gsap from "gsap";7import Flip from "gsap/Flip";89gsap.registerPlugin(Flip);1011type FlipRevealItemProps = {12 flipKey: string;13} & ComponentProps<"div">;1415export const FlipRevealItem = ({ flipKey, ...props }: FlipRevealItemProps) => {16 return <div data-flip={flipKey} {...props} />;17};1819type FlipRevealProps = {20 keys: string[];21 showClass?: string;22 hideClass?: string;23} & ComponentProps<"div">;2425export const FlipReveal = ({ keys, hideClass = "", showClass = "", ...props }: FlipRevealProps) => {26 const wrapperRef = useRef<HTMLDivElement | null>(null);2728 const isShow = (key: string | null) => !!key && (keys.includes("all") || keys.includes(key));2930 useGSAP(31 () => {32 if (!wrapperRef.current) return;3334 const items = gsap.utils.toArray<HTMLDivElement>(["[data-flip]"]);35 const state = Flip.getState(items);3637 items.forEach((item) => {38 const key = item.getAttribute("data-flip");39 if (isShow(key)) {40 item.classList.add(showClass);41 item.classList.remove(hideClass);42 } else {43 item.classList.remove(showClass);44 item.classList.add(hideClass);45 }46 });4748 Flip.from(state, {49 duration: 0.6,50 scale: true,51 ease: "power1.inOut",52 stagger: 0.05,53 absolute: true,54 onEnter: (elements) =>55 gsap.fromTo(56 elements,57 { opacity: 0, scale: 0 },58 {59 opacity: 1,60 scale: 1,61 duration: 0.8,62 },63 ),64 onLeave: (elements) => gsap.to(elements, { opacity: 0, scale: 0, duration: 0.8 }),65 });66 },6768 { scope: wrapperRef, dependencies: [keys] },69 );7071 return <div {...props} ref={wrapperRef} />;72};
What it pulls in
npm packages
