"use client"; import { useState, useEffect } from "react"; import Image from "next/image"; import TextAnimation from "@/components/text/TextAnimation"; import { cls } from "@/lib/utils"; import { useTheme } from "@/providers/themeProvider/ThemeProvider"; import type { InvertedBackground } from "@/providers/themeProvider/config/constants"; type TeamMember = { id: string; imageSrc: string; imageAlt: string; }; interface TeamCardSevenProps { team: TeamMember[]; title: string; useInvertedBackground: InvertedBackground; ariaLabel?: string; className?: string; containerClassName?: string; circlesClassName?: string; imagesContainerClassName?: string; imageClassName?: string; titleClassName?: string; } const TeamCardSeven = ({ team, title, useInvertedBackground, ariaLabel = "Team section", className = "", containerClassName = "", circlesClassName = "", imagesContainerClassName = "", imageClassName = "", titleClassName = "", }: TeamCardSevenProps) => { const theme = useTheme(); const [isMobile, setIsMobile] = useState(false); useEffect(() => { const checkMobile = () => { setIsMobile(window.innerWidth < 768); }; checkMobile(); window.addEventListener("resize", checkMobile); return () => window.removeEventListener("resize", checkMobile); }, []); const getImageSize = (index: number, total: number): string => { const isEven = total % 2 === 0; const centerIndex = Math.floor(total / 2); let distanceFromCenter: number; if (isEven) { const leftCenter = centerIndex - 1; const rightCenter = centerIndex; distanceFromCenter = Math.min( Math.abs(index - leftCenter), Math.abs(index - rightCenter) ); } else { distanceFromCenter = Math.abs(index - centerIndex); } if (distanceFromCenter === 0) return "w-35 h-auto md:w-17_5 aspect-square"; if (distanceFromCenter === 1) return "w-25 h-auto md:w-12_5 aspect-square"; if (distanceFromCenter === 2) return "w-10 h-auto md:w-7_5 aspect-square"; return "w-5 h-auto md:h-20 md:w-auto aspect-square"; }; const maxItems = isMobile ? 3 : 7; const actualTeam = team.slice(0, 7); const visibleTeam: TeamMember[] = isMobile && actualTeam.length > 3 ? actualTeam.slice( Math.floor((actualTeam.length - 3) / 2), Math.floor((actualTeam.length - 3) / 2) + 3 ) : actualTeam.slice(0, maxItems); return (
{visibleTeam.map((member, index) => (
{member.imageAlt}
))}
); }; TeamCardSeven.displayName = "TeamCardSeven"; export default TeamCardSeven;