From 6bef0bcea69acd3e1f67f17cb4697b9c4e87a736 Mon Sep 17 00:00:00 2001 From: bender Date: Wed, 4 Mar 2026 00:29:30 +0000 Subject: [PATCH] Switch to version 1: modified src/components/sections/team/TeamCardSix.tsx --- src/components/sections/team/TeamCardSix.tsx | 205 ++++++++++++++++++- 1 file changed, 197 insertions(+), 8 deletions(-) diff --git a/src/components/sections/team/TeamCardSix.tsx b/src/components/sections/team/TeamCardSix.tsx index 6224daf..3dee9e0 100644 --- a/src/components/sections/team/TeamCardSix.tsx +++ b/src/components/sections/team/TeamCardSix.tsx @@ -1,11 +1,200 @@ -import { useCardAnimation } from '@/components/cardStack/CardStack'; +"use client"; -export function TeamCardSix() { - const { animate } = useCardAnimation(); +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, CardAnimationTypeWith3D, TitleSegment, ButtonAnimationType } from "@/components/cardStack/types"; +import type { TextboxLayout, InvertedBackground } from "@/providers/themeProvider/config/constants"; - return ( -
- -
- ); +type TeamCardSixGridVariant = Exclude; + +const MASK_GRADIENT = "linear-gradient(to bottom, transparent, black 60%)"; + +type TeamMember = { + id: string; + name: string; + role: string; + imageSrc?: string; + videoSrc?: string; + imageAlt?: string; + videoAriaLabel?: string; +}; + +interface TeamCardSixProps { + members: TeamMember[]; + carouselMode?: "auto" | "buttons"; + gridVariant: TeamCardSixGridVariant; + uniformGridCustomHeightClasses?: string; + animationType: CardAnimationTypeWith3D; + 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; + 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; +} + +const TeamMemberCard = memo(({ + member, + cardClassName = "", + imageClassName = "", + overlayClassName = "", + nameClassName = "", + roleClassName = "", +}: TeamMemberCardProps) => { + return ( +
+
+ + +
+

+ {member.name} +

+

+ {member.role} +

+
+ + +
+ ); +}); + +TeamMemberCard.displayName = "TeamMemberCard"; + +const TeamCardSix = ({ + 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 = "", + gridClassName = "", + carouselClassName = "", + controlsClassName = "", + textBoxClassName = "", + textBoxTagClassName = "", + textBoxButtonContainerClassName = "", + textBoxButtonClassName = "", + textBoxButtonTextClassName = "", +}: TeamCardSixProps) => { + return ( + + {members.map((member, index) => ( + + ))} + + ); +}; + +TeamCardSix.displayName = "TeamCardSix"; + +export default TeamCardSix; \ No newline at end of file