TeamMember
Introduction
The TeamMember component is used to display detailed information about team members, supporting the display of avatars, names, positions, description text, and social media links.
Component features:
- Supports avatar image display
- Can display name, position, and description text
- Supports adding social media links
- Provides multiple style customization options
- Responsive design, adapts to different screen sizes
- Can be used in combination to display a complete team
Basic Usage
The simplest team member information display:
张三
产品设计师
专注于用户体验设计,拥有5年产品设计经验
---
/**
* @component TeamMember.Basic
*
* @description
* 基础的团队成员展示组件示例,展示最简单的成员信息展示方式。
*/
import '../../style.ts';
import TeamMember from './TeamMember.astro';
import { getExampleImage } from '../../src/utils/image.ts';
const avatar = getExampleImage({
width: 200,
height: 200,
provider: 'robohash',
randomSeed: 'member1',
});
---
<TeamMember
name="张三"
role="产品设计师"
avatar={avatar}
bio="专注于用户体验设计,拥有5年产品设计经验"
/>
Social Media Links
Add social media links through the socialLinks property:
---
/**
* @component TeamMember.WithSocial
*
* @description
* 带社交媒体链接的团队成员展示组件示例,展示如何添加社交媒体链接。
*/
import '../../style.ts';
import TeamMember from './TeamMember.astro';
import { getExampleImage } from '../../src/utils/image.ts';
const avatar = getExampleImage({
width: 200,
height: 200,
provider: 'robohash',
randomSeed: 'member2',
});
---
<TeamMember
name="李四"
role="高级开发工程师"
avatar={avatar}
bio="全栈开发专家,热爱开源项目,专注于前端框架和性能优化"
socialLinks={[
{ platform: 'github', url: 'https://github.com' },
{ platform: 'twitter', url: 'https://twitter.com' },
{ platform: 'linkedin', url: 'https://linkedin.com' },
]}
/>
Custom Styling
Use the class property to customize the member card style:
王五
市场总监
负责产品市场策略和品牌推广,拥有丰富的市场营销经验
---
/**
* @component TeamMember.CustomStyle
*
* @description
* 自定义样式的团队成员展示组件示例,展示如何使用class属性自定义样式。
*/
import '../../style.ts';
import TeamMember from './TeamMember.astro';
import { getExampleImage } from '../../src/utils/image.ts';
const avatar = getExampleImage({
width: 200,
height: 200,
provider: 'robohash',
randomSeed: 'member3',
});
---
<TeamMember
name="王五"
role="市场总监"
avatar={avatar}
bio="负责产品市场策略和品牌推广,拥有丰富的市场营销经验"
class="cosy:bg-gradient-to-r cosy:from-purple-100 cosy:to-pink-100 cosy:shadow-lg cosy:w-72"
/>
Team Display
Combine multiple TeamMember components to display a complete team:
张三
产品设计师
专注于用户体验设计,拥有5年产品设计经验
李四
高级开发工程师
全栈开发专家,热爱开源项目,专注于前端框架和性能优化
王五
市场总监
负责产品市场策略和品牌推广,拥有丰富的市场营销经验
---
/**
* @component TeamMember.Group
*
* @description
* 团队成员组展示组件示例,展示如何组合多个团队成员。
*/
import '../../style.ts';
import TeamMember from './TeamMember.astro';
import { getExampleImage } from '../../src/utils/image.ts';
const members = [
{
name: '张三',
title: '产品设计师',
avatar: getExampleImage({
width: 200,
height: 200,
provider: 'robohash',
randomSeed: 'member1',
}),
description: '专注于用户体验设计,拥有5年产品设计经验',
},
{
name: '李四',
title: '高级开发工程师',
avatar: getExampleImage({
width: 200,
height: 200,
provider: 'robohash',
randomSeed: 'member2',
}),
description: '全栈开发专家,热爱开源项目,专注于前端框架和性能优化',
},
{
name: '王五',
title: '市场总监',
avatar: getExampleImage({
width: 200,
height: 200,
provider: 'robohash',
randomSeed: 'member3',
}),
description: '负责产品市场策略和品牌推广,拥有丰富的市场营销经验',
},
];
---
<div class="cosy:grid cosy:grid-cols-3 md:cosy:grid-cols-3 cosy:gap-8">
{
members.map((member) => (
<TeamMember
name={member.name}
role={member.title}
avatar={member.avatar}
bio={member.description}
/>
))
}
</div>