registry/default/sections/team-4.tsx
//biome-ignore-all lint/suspicious/noArrayIndexKey:<>
"use client";
import {
InstagramIcon,
LinkedinIcon,
TwitterIcon,
} from "@hugeicons/core-free-icons";
import { HugeiconsIcon } from "@hugeicons/react";
import { ChevronLeft, ChevronRight } from "lucide-react";
import * as React from "react";
import { Button } from "@/components/ui/button";
import { Separator } from "@/components/ui/separator";
import { cn } from "@/lib/utils";
const teamMembers = [
{
bio: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.",
id: "1",
image:
"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=600&h=800&fit=crop&crop=face",
name: "William Blythe",
role: "Compliance Officer",
},
{
bio: "Passionate about creating intuitive user experiences and innovative design solutions.",
id: "2",
image:
"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=600&h=800&fit=crop&crop=face",
name: "Sarah Chen",
role: "Lead Designer",
},
{
bio: "Building scalable technology solutions that drive business growth and innovation.",
id: "3",
image:
"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=600&h=800&fit=crop&crop=face",
name: "Marcus Johnson",
role: "CTO",
},
{
bio: "Strategic marketing expert with a focus on brand development and customer engagement.",
id: "4",
image:
"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=600&h=800&fit=crop&crop=face",
name: "Elena Rodriguez",
role: "Marketing Director",
},
];
export function Team4() {
const [currentIndex, setCurrentIndex] = React.useState(0);
const goToPrevious = () => {
setCurrentIndex((prev) => (prev === 0 ? teamMembers.length - 1 : prev - 1));
};
const goToNext = () => {
setCurrentIndex((prev) => (prev === teamMembers.length - 1 ? 0 : prev + 1));
};
const currentMember = teamMembers[currentIndex];
return (
<section className="w-full bg-white py-16 md:py-24">
<div className="mx-auto w-full max-w-6xl px-6">
<div className="grid grid-cols-1 items-center gap-12 lg:grid-cols-2 lg:gap-20">
{/* Left - Content */}
<div>
{/* Header */}
<div className="mb-16">
<span className="mb-4 block font-semibold text-neutral-400 text-xs uppercase tracking-wider">
CAPTION HERE
</span>
<h2 className="mb-6 font-normal text-3xl text-gray-900 md:text-4xl lg:text-5xl dark:text-gray-100">
Meet our team
</h2>
<p className="max-w-md text-gray-600 dark:text-gray-400">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor.
</p>
</div>
{/* Member Info */}
<div className="mb-8">
<h3 className="mb-1 font-bold text-2xl text-gray-900 dark:text-gray-100">
{currentMember.name}
</h3>
<p className="mb-4 text-gray-600 dark:text-gray-400">
{currentMember.role}
</p>
<p className="text-gray-600 dark:text-gray-400">
{currentMember.bio}
</p>
</div>
{/* Social Links */}
<Separator className="mb-6" />
<div className="mb-8 flex gap-4">
<Button
className="h-9 w-9 rounded-full text-neutral-400 hover:text-gray-600 dark:text-gray-400"
size="icon"
variant="ghost"
>
<HugeiconsIcon
className="size-5 text-code-foreground sm:size-4"
icon={InstagramIcon}
strokeWidth={2}
/>
{/* <Instagram className="h-5 w-5" /> */}
</Button>
<Button
className="h-9 w-9 rounded-full text-neutral-400 hover:text-gray-600 dark:text-gray-400"
size="icon"
variant="ghost"
>
<HugeiconsIcon
className="size-5 text-code-foreground sm:size-4"
icon={LinkedinIcon}
strokeWidth={2}
/>
{/* <Linkedin className="h-5 w-5" /> */}
</Button>
<Button
className="h-9 w-9 rounded-full text-neutral-400 hover:text-gray-600 dark:text-gray-400"
size="icon"
variant="ghost"
>
<HugeiconsIcon
className="size-5 text-code-foreground sm:size-4"
icon={TwitterIcon}
strokeWidth={2}
/>
{/* <Twitter className="h-5 w-5" /> */}
</Button>
</div>
{/* Navigation Arrows */}
<div className="flex gap-2">
<Button
className="h-12 w-12 rounded-full border-gray-200 text-neutral-400 hover:text-gray-900 disabled:opacity-30 dark:border-neutral-700 dark:text-gray-100"
disabled={currentIndex === 0}
onClick={goToPrevious}
size="icon"
variant="outline"
>
<ChevronLeft className="h-5 w-5" />
</Button>
<Button
className="h-12 w-12 rounded-full border-gray-200 text-gray-900 hover:bg-neutral-100 dark:border-neutral-700 dark:text-gray-100"
onClick={goToNext}
size="icon"
variant="outline"
>
<ChevronRight className="h-5 w-5" />
</Button>
</div>
</div>
{/* Right - Photo */}
<div className="relative">
<div className="relative overflow-hidden rounded-3xl border border-gray-200 dark:border-neutral-700">
<img
alt={currentMember.name}
className="h-125 w-full object-cover grayscale transition-all duration-500 md:h-150"
src={currentMember.image}
/>
</div>
{/* Slide Indicators */}
<div className="absolute -bottom-8 left-1/2 flex -translate-x-1/2 gap-2">
{teamMembers.map((_, index) => (
<button
className={cn(
"h-2 w-2 rounded-full transition-all",
index === currentIndex
? "w-6 bg-neutral-900"
: "bg-neutral-300 hover:bg-neutral-400",
)}
key={index}
onClick={() => setCurrentIndex(index)}
/>
))}
</div>
</div>
</div>
</div>
</section>
);
}
export default Team4;