Names and roles, with a portrait on hover. The frame is taller and rounder, and leans a little less.
@keyframeui
registry/demos/hover-preview-team-demo.tsx
import { HoverPreview, HoverPreviewItem } from "@/components/ui/hover-preview";
const people = [
{ name: "Ines Moreau", role: "Creative Director", city: "Paris", photo: "1438761681033-6461ffad8d80" },
{ name: "Rafael Santos", role: "Design Lead", city: "Lisbon", photo: "1507003211169-0a1dd7228f2d" },
{ name: "Mei Tanaka", role: "Motion Designer", city: "Tokyo", photo: "1534528741775-53994a69daeb" },
{ name: "Luca Bianchi", role: "Engineering Lead", city: "Milan", photo: "1500648767791-00dcc994a43e" },
{ name: "Amara Okafor", role: "Strategy Director", city: "Lagos", photo: "1531123897727-8f129e1688ce" },
{ name: "Jonas Weber", role: "Brand Designer", city: "Berlin", photo: "1539571696357-5a69c17a67c6" },
];
const photo = (id: string, width: number, height: number) =>
`https://images.unsplash.com/photo-${id}?auto=format&fit=crop&crop=faces&w=${width}&h=${height}&q=80`;
const slug = (name: string) => name.toLowerCase().replace(/\s+/g, "-");
export function HoverPreviewTeamDemo() {
return (
<section className="w-full max-w-2xl">
<div className="mb-6">
<p className="font-mono text-xs tracking-widest text-zinc-500 uppercase">The studio</p>
<h3 className="mt-2 text-2xl font-semibold tracking-tight text-zinc-900 dark:text-zinc-50">
Six people, four time zones
</h3>
</div>
<HoverPreview previewClassName="aspect-[4/5] w-48 rounded-xl sm:w-56" tilt={4}>
{people.map((person) => (
<HoverPreviewItem
key={person.name}
href={`#${slug(person.name)}`}
image={photo(person.photo, 480, 600)}
thumbnail={photo(person.photo, 120, 120)}
thumbnailClassName="size-10 rounded-full"
className="border-b border-zinc-200 py-4 dark:border-zinc-800"
>
<span className="flex-1">
<span className="block text-xl font-medium tracking-tight text-zinc-900 sm:text-2xl dark:text-zinc-50">
{person.name}
</span>
<span className="mt-0.5 block text-sm text-zinc-500">{person.role}</span>
</span>
<span className="font-mono text-xs text-zinc-500">{person.city}</span>
</HoverPreviewItem>
))}
</HoverPreview>
</section>
);
}
Live preview, examples and props: https://keyframeui.com/components/hover-preview#hover-preview-team-demo






















