Featured

    Team #4

    Team #4

    Source Code

    import { Card, CardContent } from "@/components/ui/card"
    import { Avatar, AvatarImage } from "@/components/ui/avatar"
    import { Badge } from "@/components/ui/badge"
    import type { ImageType, IconType } from "@/types"
    
    interface TeamMember {
      name: string
      role: string
      avatar: ImageType
      achievements: {
        value: string
        label: string
      }[]
      social: {
        icon: IconType
        href: string
      }[]
    }
    
    interface Props {
      badge: string
      title: string
      description: string
      members: TeamMember[]
    }
    
    export default function Team4({ badge, title, description, members }: Props) {
      return (
        <section className="py-12 md:py-20">
          <div className="mx-auto max-w-4xl px-6">
            <div className="mx-auto max-w-2xl text-center">
              {badge && <Badge className="mb-4">{badge}</Badge>}
              <h2 className="text-4xl font-medium lg:text-5xl">{title}</h2>
              <p className="mt-4 text-muted-foreground">{description}</p>
            </div>
            <div className="mt-16 grid gap-8 sm:grid-cols-2 lg:grid-cols-3">
              {members.map((member) => (
                <Card key={member.name} className="group relative overflow-hidden">
                  <CardContent className="p-6">
                    <div className="flex flex-col items-center text-center">
                      <Avatar className="size-24 border-2 border-primary/10 rounded-full">
                        {member.avatar && (
                          <AvatarImage
                            src={member.avatar.src}
                            alt={member.avatar.alt}
                          />
                        )}
                      </Avatar>
                      <h3 className="mt-4 text-xl font-semibold">{member.name}</h3>
                      <p className="text-sm text-muted-foreground">{member.role}</p>
                      <div className="mt-6 flex gap-6">
                        {member.social.map((link) => (
                          <a
                            key={link.href}
                            href={link.href}
                            className="text-muted-foreground transition-colors hover:text-primary"
                            target="_blank"
                            rel="noopener noreferrer"
                          >
                            {link.icon}
                          </a>
                        ))}
                      </div>
                      <div className="mt-6 grid w-full grid-cols-2 gap-4 border-t pt-6">
                        {member.achievements.map((achievement) => (
                          <div key={achievement.label} className="space-y-1">
                            <p className="text-xl font-bold text-primary">
                              {achievement.value}
                            </p>
                            <p className="text-xs text-muted-foreground">
                              {achievement.label}
                            </p>
                          </div>
                        ))}
                      </div>
                    </div>
                  </CardContent>
                </Card>
              ))}
            </div>
          </div>
        </section>
      )
    }