Skip to main content
Version: 1.0.3

Team Profiles

The TeamProfiles component is a comprehensive, customizable team showcase section that displays team members in a professional grid layout. It features multiple card styles, flexible grid configurations, theme variants, and advanced features like modal views and animations.

Basic Usage

Our Core Team

Meet the talented people behind our success

Alex Chen - CEO

Alex Chen

CEO & Co-Founder

Former tech lead with 10+ years of experience in building scalable platforms. Passionate about innovation and team culture.

Sarah Johnson - CTO

Sarah Johnson

CTO

Full-stack architect specializing in cloud infrastructure and AI/ML implementations. Led engineering teams at Fortune 500 companies.

Michael Rodriguez - Head of Design

Michael Rodriguez

Head of Design

Award-winning designer with a passion for creating intuitive and beautiful user experiences. Previously led design at major tech companies.

Advanced Variants

Our Leadership Team

Experienced professionals driving our vision forward

Alex Chen - CEO

Alex Chen

CEO & Co-Founder

Former tech lead with 10+ years of experience in building scalable platforms. Passionate about innovation and team culture.

Sarah Johnson - CTO

Sarah Johnson

CTO

Full-stack architect specializing in cloud infrastructure and AI/ML implementations. Led engineering teams at Fortune 500 companies.

Michael Rodriguez - Head of Design

Michael Rodriguez

Head of Design

Award-winning designer with a passion for creating intuitive and beautiful user experiences. Previously led design at major tech companies.

Emily Zhang - Lead PM

Emily Zhang

Lead Product Manager

Strategic product leader with expertise in B2B and B2C products. MBA graduate with a focus on product-market fit.

Installation

ignix add component team-profiles

Props

TeamProfiles Props

PropTypeDefaultDescription
variant'default' | 'primary' | 'secondary' | 'accent' | 'muted' | 'gradient' | 'glass' | 'dark' | 'light''default'Visual variant of the section background
cardVariant'default' | 'minimal' | 'elevated' | 'bordered''default'Visual style of team cards
showBiobooleantrueShow member biography
showSocialLinksbooleantrueShow social media links
showDepartmentbooleanfalseShow member department
showLocationbooleanfalseShow member location
showExpertisebooleanfalseShow expertise tags
showAwardsbooleanfalseShow awards and recognition
showJoinDatebooleanfalseShow join date
enableModalbooleanfalseEnable modal popup for member details
enableHoverbooleantrueEnable hover effects on cards
theme'light' | 'dark'-Force a specific theme (overrides variant-based theme)
forceThemebooleanfalseForce theme CSS classes
backgroundType'solid' | 'gradient' | 'image''solid'Type of background styling
backgroundColorstring-Custom background color (for solid background)
gradientFromstring-Start color for gradient background
gradientTostring-End color for gradient background
backgroundImagestring-URL for background image
animatebooleantrueEnable/disable entrance animations
animationDelaynumber0Initial animation delay in seconds
animationType'fade' | 'slide' | 'scale' | 'stagger''fade'Type of entrance animation
padding'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl''lg'Vertical padding size
onMemberClick(member: TeamMember) => void-Callback when a member card is clicked
onSocialClick(member: TeamMember, platform: string, url: string) => void-Callback when a social link is clicked
ariaLabelstring'Team profiles section'Accessibility label
childrenReact.ReactNoderequiredTeam components (TeamHeader, TeamGrid, TeamFooter)

TeamHeader Props

PropTypeDefaultDescription
childrenReact.ReactNode-Custom header content (overrides title/subtitle)
titlestring-Section title
subtitlestring-Section subtitle
classNamestring-Additional CSS classes

TeamGrid Props

PropTypeDefaultDescription
childrenReact.ReactNoderequiredMemberCard components
columns{ mobile?: number; tablet?: number; desktop?: number; wide?: number; }{ mobile: 1, tablet: 2, desktop: 3, wide: 4 }Responsive column configuration
gap'sm' | 'md' | 'lg' | 'xl''md'Gap between cards
classNamestring-Additional CSS classes

MemberCard Props

PropTypeDefaultDescription
memberTeamMemberrequiredTeam member data object
childrenReact.ReactNoderequiredMember photo and content components
classNamestring-Additional CSS classes

MemberPhoto Props

PropTypeDefaultDescription
srcstring-Image source URL
altstring-Image alt text
initialsstring-Initials to display when no image is provided
classNamestring-Additional CSS classes

MemberContent Props

PropTypeDefaultDescription
childrenReact.ReactNoderequiredMember information components
classNamestring-Additional CSS classes

MemberName Props

PropTypeDefaultDescription
childrenReact.ReactNoderequiredMember name text
classNamestring-Additional CSS classes

MemberRole Props

PropTypeDefaultDescription
childrenReact.ReactNoderequiredMember role/title text
classNamestring-Additional CSS classes

MemberDepartment Props

PropTypeDefaultDescription
childrenReact.ReactNoderequiredDepartment name
classNamestring-Additional CSS classes

MemberLocation Props

PropTypeDefaultDescription
childrenReact.ReactNoderequiredLocation text
classNamestring-Additional CSS classes

MemberBio Props

PropTypeDefaultDescription
childrenReact.ReactNoderequiredBiography text
linesnumber2Number of lines to show before truncating
classNamestring-Additional CSS classes

MemberJoinDate Props

PropTypeDefaultDescription
childrenReact.ReactNoderequiredJoin date text
classNamestring-Additional CSS classes

MemberExpertise Props

PropTypeDefaultDescription
itemsstring[]requiredArray of expertise/skills
limitnumber3Maximum number of items to show
classNamestring-Additional CSS classes

MemberAwards Props

PropTypeDefaultDescription
itemsstring[]requiredArray of awards
limitnumber1Maximum number of items to show
classNamestring-Additional CSS classes
PropTypeDefaultDescription
linksSocialLink[]requiredArray of social links
memberIdstring-Member ID for tracking
memberNamestring-Member name for tracking
classNamestring-Additional CSS classes

MemberCardOverlay Props

PropTypeDefaultDescription
childrenReact.ReactNode-Custom overlay content
classNamestring-Additional CSS classes

TeamFooter Props

PropTypeDefaultDescription
childrenReact.ReactNoderequiredFooter content
classNamestring-Additional CSS classes

TeamModal Props

PropTypeDefaultDescription
isOpenbooleanrequiredModal open state
onClose() => voidrequiredClose handler
memberTeamMember | nullrequiredSelected team member
childrenReact.ReactNode-Custom modal content

Types

interface SocialLink {
platform: 'linkedin' | 'github' | 'twitter' | 'website' | 'email' | 'other';
url: string;
label?: string;
}

interface TeamMember {
id: string; // Unique identifier
name: string; // Member's full name
role: string; // Job title/role
bio: string; // Biography/description
photo?: string; // Photo URL
photoAlt?: string; // Alt text for photo
socialLinks?: SocialLink[]; // Social media links
department?: string; // Department name
location?: string; // Location (city, country)
expertise?: string[]; // Areas of expertise
awards?: string[]; // Awards and recognition
joinDate?: string; // Join date (any format)
email?: string; // Email address
}

Base Usage

import {
TeamProfiles,
TeamHeader,
TeamGrid,
MemberCard,
MemberPhoto,
MemberContent,
MemberName,
MemberRole,
MemberBio,
MemberSocialLinks
} from '../UI/team-profiles';

const teamMembers = [
{
id: '1',
name: 'Alex Chen',
role: 'CEO & Co-Founder',
bio: 'Former tech lead with 10+ years of experience.',
photo: '/images/alex.jpg',
socialLinks: [
{ platform: 'linkedin', url: 'https://linkedin.com/in/alexchen' },
{ platform: 'twitter', url: 'https://twitter.com/alexchen' }
]
},
// ... more members
];

<TeamProfiles variant="light" cardVariant="default">
<TeamHeader
title="Our Team"
subtitle="Meet the experts behind our success"
/>
<TeamGrid columns={{ mobile: 1, tablet: 2, desktop: 3 }}>
{teamMembers.map((member) => (
<MemberCard key={member.id} member={member}>
<MemberPhoto
src={member.photo}
initials={member.name.split(' ').map(n => n[0]).join('')}
/>
<MemberContent>
<MemberName>{member.name}</MemberName>
<MemberRole>{member.role}</MemberRole>
<MemberBio>{member.bio}</MemberBio>
<MemberSocialLinks links={member.socialLinks} />
</MemberContent>
</MemberCard>
))}
</TeamGrid>
</TeamProfiles>

With all features

<TeamProfiles
variant="light"
cardVariant="elevated"
enableModal={true}
enableHover={true}
animate={true}
animationType="stagger"
>
<TeamHeader>
<div className="flex items-center gap-2 mb-4">
<Users className="w-8 h-8 text-primary" />
<Typography variant="h2">Our Leadership Team</Typography>
</div>
<Typography variant="lead">Experienced professionals driving our vision</Typography>
</TeamHeader>

<TeamGrid columns={{ mobile: 1, tablet: 2, desktop: 3, wide: 4 }}>
{teamMembers.map((member) => (
<MemberCard key={member.id} member={member}>
<MemberPhoto
src={member.photo}
initials={member.name.split(' ').map(n => n[0]).join('')}
/>
<MemberContent>
<MemberName>{member.name}</MemberName>
<MemberRole>{member.role}</MemberRole>
<MemberDepartment>{member.department}</MemberDepartment>
<MemberLocation>{member.location}</MemberLocation>
<MemberBio>{member.bio}</MemberBio>
<MemberExpertise items={member.expertise} />
<MemberAwards items={member.awards} />
<MemberJoinDate>{member.joinDate}</MemberJoinDate>
<MemberSocialLinks links={member.socialLinks} />
</MemberContent>
<MemberCardOverlay />
</MemberCard>
))}
</TeamGrid>

<TeamFooter>
<Button variant="primary" size="lg">
View All Team Members
</Button>
</TeamFooter>
</TeamProfiles>

Accessibility

The Team Profiles component follows WAI-ARIA guidelines:

  • Each MemberCard has role="article" and appropriate aria-label
  • Social links have aria-label for screen readers
  • The TeamModal has proper ARIA attributes (role="dialog", aria-modal="true", aria-label)
  • Images have alt text support
  • Focus management is handled for modal interactions
  • Color contrast meets WCAG standards in all variants