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