Docs
Mirror Text
An effect where given text has the mirror/clone text and follows it.
requires interactionhover
Installation
Update tailwind.config.js
theme: {
extend: {
colors: {
foreground: "hsl(var(--foreground))",
}
},
},
Run the following command
It will create a new file called mirror-text.tsx
inside the components/animata/text
directory.
mkdir -p components/animata/text && touch components/animata/text/mirror-text.tsx
Paste the code
Open the newly created file and paste the following code:
import { cn } from "@/lib/utils";
export default function MirrorText({
text = "This is a text",
className,
direction = "up",
containerClassName,
}: {
text: string;
className?: string;
/**
* The direction of the animation
* @default "up"
*/
direction?: "up" | "down" | "left" | "right";
containerClassName?: string;
}) {
const animation = cn("transition-all duration-500 ease-slow", {
"group-hover:-translate-y-4": direction === "up",
"group-hover:translate-y-4": direction === "down",
"group-hover:-translate-x-4": direction === "left",
"group-hover:translate-x-4": direction === "right",
});
const content = (
<div className={cn("inline-block text-4xl font-light uppercase leading-none", className)}>
{text}
</div>
);
return (
<div
className={cn(
"group relative w-full justify-end overflow-hidden p-6 text-foreground",
containerClassName,
)}
>
<div className={cn("h-3 overflow-hidden delay-200", animation)}>{content}</div>
<div className={cn("h-3 overflow-hidden delay-100", animation)}>{content}</div>
<div className={cn("h-3 overflow-hidden delay-75", animation)}>{content}</div>
<div className={animation}>{content}</div>
</div>
);
}
Credits
Built by hari