Following Pointer
- Source
- Aceternity UI ↗
- Author
- Aceternity UI
- Licence
- Aceternity UI licence (free component)
Loading…
Inside the card the cursor becomes an arrow carrying the author's name tag.
Code
"use client";
import { Fit } from "./_fit";
import { FollowerPointerCard } from "@/lab/aceternity/ui/following-pointer";
export default function FollowingPointerDemo() {
return (
<Fit width={400} height={520} max={1.3}>
<div className="mx-auto flex h-full w-80 items-center">
<FollowerPointerCard
title={
<TitleComponent
title={blogContent.author}
avatar={blogContent.authorAvatar}
/>
}
>
<div className="group relative h-full overflow-hidden rounded-2xl border border-zinc-100 bg-white transition duration-200 hover:shadow-xl">
<div className="relative aspect-[16/10] w-full overflow-hidden rounded-tl-lg rounded-tr-lg bg-gray-100">
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
src={blogContent.image}
alt="thumbnail"
className="h-full transform object-cover transition duration-200 group-hover:scale-95 group-hover:rounded-2xl"
/>
</div>
<div className="p-4">
<h2 className="my-4 text-lg font-bold text-zinc-700">
{blogContent.title}
</h2>
<h2 className="my-4 text-sm font-normal text-zinc-500">
{blogContent.description}
</h2>
<div className="mt-10 flex flex-row items-center justify-between">
<span className="text-sm text-gray-500">{blogContent.date}</span>
<div className="relative z-10 block rounded-xl bg-black px-6 py-2 text-xs font-bold text-white">
Read More
</div>
</div>
</div>
</div>
</FollowerPointerCard>
</div>
</Fit>
);
}
const blogContent = {
slug: "amazing-tailwindcss-grid-layouts",
author: "Manu Arora",
date: "28th March, 2023",
title: "Amazing Tailwindcss Grid Layout Examples",
description:
"Grids are cool, but Tailwindcss grids are cooler. In this article, we will learn how to create amazing Grid layouts with Tailwindcs grid and React.",
image: "https://ui.aceternity.com/demo/thumbnail.png",
authorAvatar: "https://assets.aceternity.com/avatars/manu.webp",
};
const TitleComponent = ({
title,
avatar,
}: {
title: string;
avatar: string;
}) => (
<div className="flex items-center space-x-2">
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
src={avatar}
height="20"
width="20"
alt="thumbnail"
className="rounded-full border-2 border-white"
/>
<p>{title}</p>
</div>
);
Prompt
Build "Following Pointer", a cursor animation. What it does: Inside the card the cursor becomes an arrow carrying the author's name tag. Write it as a single self-contained React component in TypeScript that fills its parent (w-full h-full), styled with Tailwind CSS, using motion. Technique: the Motion library, inline SVG, pointer tracking. It sits on a light background, in a square frame. Respect prefers-reduced-motion with a still state, pause work when the element is off screen, and keep it accessible. Original: https://ui.aceternity.com/components/following-pointer (Aceternity UI, Aceternity UI licence (free component)).