Featured

    Team #3

    Team #3

    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"
    import { Button } from "@/components/ui/button"
    
    interface TeamMember {
      name: string
      role: string
      avatar: ImageType
      skills: string[]
      social: {
        icon: IconType
        href: string
      }[]
    }
    
    interface Props {
      badge: string
      title: string
      description: string
      members: TeamMember[]
    }
    
    export default function Team3({ 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-6">
              {members.map((member) => (
                <Card key={member.name} className="group relative overflow-hidden">
                  <CardContent className="p-6">
                    <div className="flex flex-col gap-6 md:flex-row md:items-center">
                      <Avatar className="size-20 shrink-0">
                        {member.avatar && (
                          <AvatarImage
                            src={member.avatar.src}
                            alt={member.avatar.alt}
                          />
                        )}
                      </Avatar>
                      <div className="flex-1 space-y-2">
                        <div>
                          <h3 className="text-xl font-semibold">{member.name}</h3>
                          <p className="text-sm text-muted-foreground">
                            {member.role}
                          </p>
                        </div>
                        <div className="flex flex-wrap gap-2">
                          {member.skills.map((skill) => (
                            <Badge
                              key={skill}
                              variant="secondary"
                              className="text-xs"
                            >
                              {skill}
                            </Badge>
                          ))}
                        </div>
                      </div>
                      <div className="flex gap-4 md:ml-auto">
                        {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"
                          >
                            <Button size="icon" variant="secondary">
                              {link.icon}
                            </Button>
                          </a>
                        ))}
                      </div>
                    </div>
                  </CardContent>
                </Card>
              ))}
            </div>
          </div>
        </section>
      )
    }