"use client"; import { memo } from "react"; import CardStack from "@/components/cardStack/CardStack"; import MediaContent from "@/components/shared/MediaContent"; import { cls } from "@/lib/utils"; import type { LucideIcon } from "lucide-react"; import type { ButtonConfig, GridVariant, CardAnimationType, TitleSegment, ButtonAnimationType } from "@/components/cardStack/types"; import type { TextboxLayout, InvertedBackground } from "@/providers/themeProvider/config/constants"; type TeamCardTwoGridVariant = Exclude; type SocialLink = { icon: LucideIcon; url: string; }; type TeamMember = { id: string; name: string; role: string; description: string; imageSrc?: string; videoSrc?: string; imageAlt?: string; videoAriaLabel?: string; socialLinks?: SocialLink[]; }; interface TeamCardTwoProps { members: TeamMember[]; carouselMode?: "auto" | "buttons"; gridVariant: TeamCardTwoGridVariant; uniformGridCustomHeightClasses?: string; animationType: CardAnimationType; title: string; titleSegments?: TitleSegment[]; description: string; tag?: string; tagIcon?: LucideIcon; tagAnimation?: ButtonAnimationType; buttons?: ButtonConfig[]; buttonAnimation?: ButtonAnimationType; textboxLayout: TextboxLayout; useInvertedBackground: InvertedBackground; ariaLabel?: string; className?: string; containerClassName?: string; cardClassName?: string; textBoxTitleClassName?: string; textBoxTitleImageWrapperClassName?: string; textBoxTitleImageClassName?: string; textBoxDescriptionClassName?: string; imageClassName?: string; overlayClassName?: string; nameClassName?: string; roleClassName?: string; memberDescriptionClassName?: string; socialLinksClassName?: string; socialIconClassName?: string; gridClassName?: string; carouselClassName?: string; controlsClassName?: string; textBoxClassName?: string; textBoxTagClassName?: string; textBoxButtonContainerClassName?: string; textBoxButtonClassName?: string; textBoxButtonTextClassName?: string; } interface TeamMemberCardProps { member: TeamMember; cardClassName?: string; imageClassName?: string; overlayClassName?: string; nameClassName?: string; roleClassName?: string; memberDescriptionClassName?: string; socialLinksClassName?: string; socialIconClassName?: string; } const TeamMemberCard = memo(({ member, cardClassName = "", imageClassName = "", overlayClassName = "", nameClassName = "", roleClassName = "", memberDescriptionClassName = "", socialLinksClassName = "", socialIconClassName = "", }: TeamMemberCardProps) => { return (

{member.name}

{member.role}

{member.description}

{member.socialLinks && member.socialLinks.length > 0 && (
{member.socialLinks.map((link, index) => ( ))}
)}
); }); TeamMemberCard.displayName = "TeamMemberCard"; const TeamCardTwo = ({ members, carouselMode = "buttons", gridVariant, uniformGridCustomHeightClasses = "min-h-95 2xl:min-h-105", animationType, title, titleSegments, description, tag, tagIcon, tagAnimation, buttons, buttonAnimation, textboxLayout, useInvertedBackground, ariaLabel = "Team section", className = "", containerClassName = "", cardClassName = "", textBoxTitleClassName = "", textBoxTitleImageWrapperClassName = "", textBoxTitleImageClassName = "", textBoxDescriptionClassName = "", imageClassName = "", overlayClassName = "", nameClassName = "", roleClassName = "", memberDescriptionClassName = "", socialLinksClassName = "", socialIconClassName = "", gridClassName = "", carouselClassName = "", controlsClassName = "", textBoxClassName = "", textBoxTagClassName = "", textBoxButtonContainerClassName = "", textBoxButtonClassName = "", textBoxButtonTextClassName = "", }: TeamCardTwoProps) => { const customGridRows = (gridVariant === "bento-grid" || gridVariant === "bento-grid-inverted") ? "md:grid-rows-[22rem_22rem] 2xl:grid-rows-[26rem_26rem]" : undefined; return ( {members.map((member, index) => ( ))} ); }; TeamCardTwo.displayName = "TeamCardTwo"; export default TeamCardTwo;