This component no longer exists. It was in blaze-motion’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.
Clip Reveal
blaze-motion/clip-revealRemovedComponent
Directional clip/wipe reveal — content wipes open from a chosen edge.
Install it
npx shadcn@latest add https://motion.asmitsah.dev/r/clip-reveal.jsonSource
1"use client";23import type { TargetAndTransition, Variants } from "motion/react";4import { useReducedMotion } from "motion/react";5import * as m from "motion/react-m";6import type { CSSProperties, ReactNode } from "react";7import {8 fade,9 revealTransition,10 viewportOnce,11 type WipeDirection,12 wipeVariants,13} from "@/lib/motion";1415type ClipRevealProps = {16 children: ReactNode;17 className?: string;18 style?: CSSProperties;19 delay?: number;20 trigger?: "inView" | "mount";21 direction?: WipeDirection;22};2324/** Hard clip-path inset() edge wipe — the box stays put while its content is25 * unveiled from `direction`. clip-path survives reducedMotion="user", so we26 * guard it: on reduce, the element renders fully open with a plain fade. */27export function ClipReveal({28 children,29 className,30 style,31 delay = 0,32 trigger = "inView",33 direction = "up",34}: ClipRevealProps) {35 const reduced = useReducedMotion();3637 // Reduced motion: clip-path is NOT auto-stripped, so drop the wipe entirely38 // and settle in with a plain opacity fade (the prop-object `fade` carries no39 // transition of its own, so the component-level `delay` applies cleanly).40 if (reduced) {41 const play =42 trigger === "mount"43 ? ({ animate: fade.animate } as const)44 : ({ whileInView: fade.animate, viewport: viewportOnce } as const);45 return (46 <m.div47 className={className}48 style={style}49 initial={fade.initial}50 {...play}51 transition={{ ...revealTransition, delay }}52 >53 {children}54 </m.div>55 );56 }5758 // A variant's own transition overrides the component `transition` prop, so59 // fold `delay` into the variant rather than passing it alongside.60 const base = wipeVariants(direction) as {61 initial: TargetAndTransition;62 animate: TargetAndTransition;63 };64 const variants: Variants = {65 initial: base.initial,66 animate: { ...base.animate, transition: { ...revealTransition, delay } },67 };68 const play =69 trigger === "mount"70 ? ({ animate: "animate" } as const)71 : ({ whileInView: "animate", viewport: viewportOnce } as const);7273 return (74 <m.div className={className} style={style} variants={variants} initial="initial" {...play}>75 {children}76 </m.div>77 );78}
What it pulls in
npm packages
Other registry items
