From a7d75f7248d5b44aec9183a735c58b2fc5da92c4 Mon Sep 17 00:00:00 2001 From: bender Date: Mon, 9 Mar 2026 08:26:49 +0000 Subject: [PATCH] Switch to version 1: modified src/components/sections/team/TeamCardEleven.tsx --- .../sections/team/TeamCardEleven.tsx | 231 ++++++++++++++---- 1 file changed, 188 insertions(+), 43 deletions(-) diff --git a/src/components/sections/team/TeamCardEleven.tsx b/src/components/sections/team/TeamCardEleven.tsx index 1b668d7..725e0a8 100644 --- a/src/components/sections/team/TeamCardEleven.tsx +++ b/src/components/sections/team/TeamCardEleven.tsx @@ -1,51 +1,196 @@ "use client"; -import React from "react"; import CardList from "@/components/cardStack/CardList"; +import MediaContent from "@/components/shared/MediaContent"; +import { cls, shouldUseInvertedText } from "@/lib/utils"; +import { useTheme } from "@/providers/themeProvider/ThemeProvider"; +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; + title: string; + subtitle: string; + detail: string; + imageSrc?: string; + imageAlt?: string; + videoSrc?: string; + videoAriaLabel?: string; +}; + +type TeamGroup = { + id: string; + groupTitle: string; + members: TeamMember[]; +}; interface TeamCardElevenProps { - members?: any[]; - title?: string; - description?: string; - animationType?: string; - useInvertedBackground?: boolean; - textboxLayout?: string; - tag?: string; - tagIcon?: any; - tagAnimation?: string; - buttons?: any[]; - buttonAnimation?: string; - titleSegments?: any[]; - ariaLabel?: string; - className?: string; - containerClassName?: string; - cardClassName?: string; - textBoxTitleClassName?: string; - textBoxDescriptionClassName?: string; - textBoxClassName?: string; - textBoxTagClassName?: string; - textBoxButtonContainerClassName?: string; - textBoxButtonClassName?: string; - textBoxButtonTextClassName?: string; - titleImageWrapperClassName?: string; - titleImageClassName?: string; + groups: TeamGroup[]; + 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; + textBoxClassName?: string; + textBoxTitleClassName?: string; + textBoxDescriptionClassName?: string; + textBoxTagClassName?: string; + textBoxButtonContainerClassName?: string; + textBoxButtonClassName?: string; + textBoxButtonTextClassName?: string; + titleImageWrapperClassName?: string; + titleImageClassName?: string; + groupTitleClassName?: string; + memberClassName?: string; + memberImageClassName?: string; + memberTitleClassName?: string; + memberSubtitleClassName?: string; + memberDetailClassName?: string; } -export default function TeamCardEleven({ - members = [], - title = "Team", description = "Our team members", animationType = "slide-up", useInvertedBackground = false, - textboxLayout = "default"}: TeamCardElevenProps) { - const items = members.map((member) => ({ - id: member.id, - label: member.name, - detail: member.role, - })); +const TeamCardEleven = ({ + groups, + animationType, + title, + titleSegments, + description, + tag, + tagIcon, + tagAnimation, + buttons, + buttonAnimation, + textboxLayout, + useInvertedBackground, + ariaLabel = "Team section", + className = "", + containerClassName = "", + cardClassName = "", + textBoxClassName = "", + textBoxTitleClassName = "", + textBoxDescriptionClassName = "", + textBoxTagClassName = "", + textBoxButtonContainerClassName = "", + textBoxButtonClassName = "", + textBoxButtonTextClassName = "", + titleImageWrapperClassName = "", + titleImageClassName = "", + groupTitleClassName = "", + memberClassName = "", + memberImageClassName = "", + memberTitleClassName = "", + memberSubtitleClassName = "", + memberDetailClassName = "", +}: TeamCardElevenProps) => { + const theme = useTheme(); + const shouldUseLightText = shouldUseInvertedText(useInvertedBackground, theme.cardStyle); - return ( -
-

{title}

-

{description}

- -
- ); -} + const renderMemberRow = (member: TeamMember) => ( +
+
+
+ +
+ +
+

+ {member.title} +

+

+ {member.subtitle} +

+
+
+ +

+ {member.detail} +

+
+ ); + + return ( + + {groups.map((group) => ( +
+

+ {group.groupTitle} +

+ +
+ {group.members.map(renderMemberRow)} +
+
+ ))} +
+ ); +}; + +TeamCardEleven.displayName = "TeamCardEleven"; + +export default TeamCardEleven;