Team Stack
A stacked deck of team member cards that fans out on hover (desktop) or tap (mobile), with spring-animated CTA pills and deterministic jitter for a natural pile feel.
Installation
Pro components require registry authentication. Add your Unlumen UI Pro key as UNLUMEN_LICENSE_KEY in your .env.local file and follow the setup guide.
File Structure
Usage
import { TeamStack } from "@/components/unlumen-ui/team-stack";
export default function Page() {
return <TeamStack />;
}API Reference
TeamStack
The component is self-contained and ships with its own data. Replace the teamCards array inside the file with your own content.
TeamMemberCard (data shape)
namestring—Member name displayed on the card.
rolestring—Job title or role shown above the name.
descriptionstring—Short bio shown below the name.
imageSrcstring—Path or URL to the member's avatar/photo.
imageAltstring—Alt text for the image.
isFeatured?boolean—When true, renders the card with an inverted (dark) background so it stands out as the hero card.
ctaLabel?string—Label for the CTA pill. When omitted, no pill is rendered.
ctaHref?string—Navigation target for the CTA pill. Also makes the entire card clickable.
Notes
- On desktop, hovering the container fans all cards out using pre-defined
spreadX/spreadY/spreadRotatevalues. Moving the mouse out collapses them back. - On mobile, the first tap expands the stack; subsequent taps cycle the active card; a final tap on an active card navigates to its
ctaHref. Tapping outside collapses the stack. - Card positions in the collapsed state use deterministic jitter derived from
Math.sin— the pile looks natural and random but is stable across renders with no React state involved. - The CTA pill starts as a 36 × 36 icon button and expands to fit the label width, measured via
scrollWidthin auseLayoutEffect. - The
isFeaturedcard usesbg-foreground text-backgroundso it works correctly in both light and dark mode. - Replace
imageSrcvalues with your own assets. The demo ships with placeholder Notion-style avatars.
Credits
Inspired by the "Team" section of the Omou website. Built by leo.
Keep in mind
Most components on this site are inspired by or recreated from existing work across the web. I'm not here to take credit; just to learn, experiment, and sometimes push things a bit further. If something looks familiar and I forgot to mention you, reach out and I'll fix that right away.
This component is part of Unlumen UI [ Pro ]
Includes advanced motion, patterns, and premium support.