
Your company's headline, here
Add then a small bit of subtext, further detailing your company's offerings and what makes it different from the competition

✨ Now with Sanity CMS schemas
The first visual configurator for React components. Build, preview, and export production-ready components in seconds—not hours.
Static design code for this component comes from Tailark, an open-source repo.
Built for developers who value their time
Intuitive controls for every prop. See changes instantly as you configure.
Real-time preview at every breakpoint. No more guessing how it looks.
Auto-generated Sanity schemas. The only tool that gives you both.
Production-ready React components with TypeScript. Copy and ship.
Optimized components built with best practices. Zero bloat.
Built on the stack you love. Seamless integration with your project.
See exactly what you're getting. Component code and CMS schemas, all before you pay.
import React from 'react';
interface TeamMember {
name: string;
role: string;
avatar: string;
}
interface TeamSection {
title: string;
members: TeamMember[];
}
interface TeamsCirclesProps {
title?: string;
sections: TeamSection[];
}
export function TeamsCircles({ title, sections }: TeamsCirclesProps) {
return (
<section className="py-12 md:py-32">
<div className="mx-auto max-w-3xl px-8 lg:px-0">
<h2 className="mb-8 text-4xl font-bold md:mb-16 lg:text-5xl">
{title}
</h2>
{sections.map((section, sectionIndex) => (
<div
key={`section-${sectionIndex}`}
className={sectionIndex > 0 ? 'mt-6' : ''}
>
<h3 className="mb-6 text-lg font-medium">{section.title}</h3>
<div
data-rounded="full"
className="grid grid-cols-2 gap-4 border-t py-6 md:grid-cols-4"
>
{section.members.map((member, memberIndex) => (
<div
key={`member-${memberIndex}`}
className="flex flex-col items-center"
>
<div className="bg-background size-20 rounded-full border p-0.5 shadow shadow-zinc-950/5">
<img
className="aspect-square rounded-full object-cover"
src={member.avatar}
alt={member.name}
height="460"
width="460"
loading="lazy"
/>
</div>
<span className="mt-2 block text-sm">{member.name}</span>
<span className="text-muted-foreground block text-xs">
{member.role}
</span>
</div>
))}
</div>
</div>
))}
</div>
</section>
);
}
Join developers who've discovered the better way to build components.
Propify delivers premium components for modern marketing sites
© Copyright 2026 Propify. All Rights Reserved.