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.

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 teamProfiles

Usage​

The TeamProfiles system uses a compound component pattern to give you full control over the layout and data displayed for each member.

Quick Start​

A simple implementation using the core components to display a team grid.

import { 
TeamProfiles,
TeamHeader,
TeamGrid,
MemberCard,
MemberPhoto,
MemberContent,
MemberName,
MemberRole
} from '@ignix-ui/team-profiles';

const members = [
{
id: '1',
name: 'Jane Doe',
role: 'Engineering Manager',
photo: '/jane.jpg'
},
{
id: '2',
name: 'John Smith',
role: 'Product Designer',
photo: '/john.jpg'
},
];

export default function BasicTeam() {
return (
<TeamProfiles variant="light">
<TeamHeader
title="Our Team"
subtitle="Meet the people behind the magic."
/>
<TeamGrid columns={{ mobile: 1, tablet: 2, desktop: 3 }}>
{members.map(member => (
<MemberCard key={member.id} member={member}>
<MemberPhoto src={member.photo} initials={member.name[0]} />
<MemberContent>
<MemberName>{member.name}</MemberName>
<MemberRole>{member.role}</MemberRole>
</MemberContent>
</MemberCard>
))}
</TeamGrid>
</TeamProfiles>
);
}

Custom Composition​

Utilize all available sub-components and external UI elements like Button and Typography for a high-fidelity, feature-rich section.

import { 
TeamProfiles,
TeamHeader,
TeamGrid,
MemberCard,
MemberPhoto,
MemberContent,
MemberName,
MemberRole,
MemberBio,
MemberSocialLinks,
MemberCardOverlay,
TeamFooter
} from '@ignix-ui/team-profiles';
import { Typography } from '@ignix-ui/typography';
import { Button } from '@ignix-ui/button';
import { Users } from 'lucide-react';

const members = [
{
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
];

export default function AdvancedTeam() {
return (
<TeamProfiles
theme="dark"
cardVariant="elevated"
enableModal={true}
animate={true}
animationType="stagger"
>
<TeamHeader>
<div className="flex items-center justify-center gap-3 mb-4">
<Users className="w-8 h-8 text-primary" />
<Typography variant="h2">Leadership Team</Typography>
</div>
<Typography variant="lead">Experienced professionals driving our vision</Typography>
</TeamHeader>

<TeamGrid columns={{ mobile: 1, tablet: 2, desktop: 3, wide: 4 }}>
{members.map(member => (
<MemberCard key={member.id} member={member}>
<MemberPhoto src={member.photo} />
<MemberContent>
<MemberName>{member.name}</MemberName>
<MemberRole>{member.role}</MemberRole>
<MemberBio lines={3}>{member.bio}</MemberBio>
<MemberSocialLinks
links={member.socialLinks}
memberId={member.id}
memberName={member.name}
/>
</MemberContent>
<MemberCardOverlay />
</MemberCard>
))}
</TeamGrid>

<TeamFooter className="text-center">
<Button variant="primary" size="lg">Join our team</Button>
</TeamFooter>
</TeamProfiles>
);
}

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

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