Staaarter

Feature Cards with Team Avatars

A two-column grid of feature cards where each card names the team behind that capability, shown as a compact row of overlapping avatars with a headcount label below.

By Staaarter Team
Feature
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its avatar, avatar-initials dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/feature-cards-team-avatars.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/feature/feature112.tsx instead.

Usage

The file also exports feature112Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.

import { Feature112, feature112Demo } from "@/components/blocks/feature/feature112";

export default function Page() {
  return <Feature112 {...feature112Demo} />;
}

Props

PropTypeDefaultDescription
eyebrowstringundefinedSmall label above the heading.
headingstringnoneSection heading.
descriptionstringundefinedSupporting paragraph under the heading.
cardsFeatureCardWithTeam[]noneFeature cards, each with its own team avatar row.
classNamestringnoneExtra classes for the outer section element.

Types

interface FeatureTeamMember {
  name: string;
  avatar?: { src: string; alt: string };
}

interface FeatureCardWithTeam {
  title: string;
  description: string;
  team: FeatureTeamMember[];
}

Behavior notes

  • Purely presentational: this is a plain Server Component with no client-side state.
  • Avatars overlap via a negative-margin flex row (`-space-x-3`) with a background-colored ring on each avatar so the overlap reads cleanly against the card.
  • Any team member without an `avatar.src` falls back to initials built from their name via the shared `initialsFromName` helper.