diff --git a/src/components/sections/team/TeamCardFive.tsx b/src/components/sections/team/TeamCardFive.tsx index ade1406..23bdba2 100644 --- a/src/components/sections/team/TeamCardFive.tsx +++ b/src/components/sections/team/TeamCardFive.tsx @@ -1,35 +1,148 @@ -import React, { useContext } from 'react'; -import { CardStackContext } from '@/components/cardStack/CardStackContext'; +"use client"; + +import CardStackTextBox from "@/components/cardStack/CardStackTextBox"; +import MediaContent from "@/components/shared/MediaContent"; +import { useCardAnimation } from "@/components/cardStack/hooks/useCardAnimation"; +import { cls } from "@/lib/utils"; +import type { LucideIcon } from "lucide-react"; +import type { ButtonConfig, CardAnimationType, TitleSegment, ButtonAnimationType } from "@/components/cardStack/types"; +import type { TextboxLayout, InvertedBackground } from "@/providers/themeProvider/config/constants"; + +type TeamMember = { + id: string; + name: string; + role: string; + imageSrc?: string; + videoSrc?: string; + imageAlt?: string; + videoAriaLabel?: string; +}; interface TeamCardFiveProps { - members: Array<{ - id: string; - name: string; - role: string; - imageSrc?: string; - }>; + team: TeamMember[]; + animationType: CardAnimationType; title: string; - [key: string]: any; + titleSegments?: TitleSegment[]; + description: string; + textboxLayout: TextboxLayout; + useInvertedBackground: InvertedBackground; + tag?: string; + tagIcon?: LucideIcon; + tagAnimation?: ButtonAnimationType; + buttons?: ButtonConfig[]; + buttonAnimation?: ButtonAnimationType; + ariaLabel?: string; + className?: string; + containerClassName?: string; + textBoxTitleClassName?: string; + textBoxTitleImageWrapperClassName?: string; + textBoxTitleImageClassName?: string; + textBoxDescriptionClassName?: string; + textBoxClassName?: string; + textBoxTagClassName?: string; + textBoxButtonContainerClassName?: string; + textBoxButtonClassName?: string; + textBoxButtonTextClassName?: string; + gridClassName?: string; + cardClassName?: string; + mediaWrapperClassName?: string; + mediaClassName?: string; + nameClassName?: string; + roleClassName?: string; } -const TeamCardFive: React.FC = ({ members, title, ...props }) => { - const context = useContext(CardStackContext); - const animationProps = context ? context.getAnimationProps() : {}; +const TeamCardFive = ({ + team, + animationType, + title, + titleSegments, + description, + textboxLayout, + useInvertedBackground, + tag, + tagIcon, + tagAnimation, + buttons, + buttonAnimation, + ariaLabel = "Team section", + className = "", + containerClassName = "", + textBoxTitleClassName = "", + textBoxTitleImageWrapperClassName = "", + textBoxTitleImageClassName = "", + textBoxDescriptionClassName = "", + textBoxClassName = "", + textBoxTagClassName = "", + textBoxButtonContainerClassName = "", + textBoxButtonClassName = "", + textBoxButtonTextClassName = "", + gridClassName = "", + cardClassName = "", + mediaWrapperClassName = "", + mediaClassName = "", + nameClassName = "", + roleClassName = "", +}: TeamCardFiveProps) => { + const { itemRefs } = useCardAnimation({ animationType, itemCount: team.length }); return ( -
-

{title}

- {members.map((member) => ( -
- {member.imageSrc && ( - {member.name} - )} -

{member.name}

-

{member.role}

+
+
+ + +
+ {team.map((member, index) => ( +
{ itemRefs.current[index] = el; }} + className={cls("relative flex flex-col items-center text-center w-[55%] md:w-[28%] -mx-[4%] md:-mx-[2%]", cardClassName)} + > +
+ +
+

+ {member.name} +

+

+ {member.role} +

+
+ ))}
- ))} -
+
+ ); }; -export default TeamCardFive; \ No newline at end of file +TeamCardFive.displayName = "TeamCardFive"; + +export default TeamCardFive;