diff --git a/src/components/sections/feature/FeatureCardSeven.tsx b/src/components/sections/feature/FeatureCardSeven.tsx index 230c9e4..21fcc36 100644 --- a/src/components/sections/feature/FeatureCardSeven.tsx +++ b/src/components/sections/feature/FeatureCardSeven.tsx @@ -1,10 +1,179 @@ -import React from 'react'; -import { CardList } from '../../cardStack/CardList'; +"use client"; -export function FeatureCardSeven() { - return ( -
- -
- ); +import CardList from "@/components/cardStack/CardList"; +import MediaContent from "@/components/shared/MediaContent"; +import Button from "@/components/button/Button"; +import { cls, shouldUseInvertedText } from "@/lib/utils"; +import { getButtonProps } from "@/lib/buttonUtils"; +import { useTheme } from "@/providers/themeProvider/ThemeProvider"; +import type { LucideIcon } from "lucide-react"; +import type { ButtonConfig, ButtonAnimationType, CardAnimationType, TitleSegment } from "@/components/cardStack/types"; +import type { TextboxLayout, InvertedBackground } from "@/providers/themeProvider/config/constants"; + +type FeatureCard = { + id: number; + title: string; + description: string; + buttons?: ButtonConfig[]; + imageSrc?: string; + videoSrc?: string; + imageAlt?: string; + videoAriaLabel?: string; +}; + +interface FeatureCardSevenProps { + features: FeatureCard[]; + 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; + textBoxDescriptionClassName?: string; + textBoxClassName?: string; + textBoxTagClassName?: string; + textBoxButtonContainerClassName?: string; + textBoxButtonClassName?: string; + textBoxButtonTextClassName?: string; + titleImageWrapperClassName?: string; + titleImageClassName?: string; + cardContentClassName?: string; + stepNumberClassName?: string; + cardTitleClassName?: string; + cardDescriptionClassName?: string; + imageContainerClassName?: string; + imageClassName?: string; + cardButtonClassName?: string; + cardButtonTextClassName?: string; } + +const FeatureCardSeven = ({ + features, + animationType, + title, + titleSegments, + description, + tag, + tagIcon, + tagAnimation, + buttons, + buttonAnimation, + textboxLayout, + useInvertedBackground, + ariaLabel = "Feature section", + className = "", + containerClassName = "", + cardClassName = "", + textBoxTitleClassName = "", + textBoxDescriptionClassName = "", + textBoxClassName = "", + textBoxTagClassName = "", + textBoxButtonContainerClassName = "", + textBoxButtonClassName = "", + textBoxButtonTextClassName = "", + titleImageWrapperClassName = "", + titleImageClassName = "", + cardContentClassName = "", + stepNumberClassName = "", + cardTitleClassName = "", + cardDescriptionClassName = "", + imageContainerClassName = "", + imageClassName = "", + cardButtonClassName = "", + cardButtonTextClassName = "", +}: FeatureCardSevenProps) => { + const theme = useTheme(); + const shouldUseLightText = shouldUseInvertedText(useInvertedBackground, theme.cardStyle); + + return ( + + {features.map((feature, index) => ( +
+
+
+
+

+ {feature.id} +

+
+

+ {feature.title} +

+

+ {feature.description} +

+ {feature.buttons && feature.buttons.length > 0 && ( +
+ {feature.buttons.slice(0, 2).map((button, index) => ( +
+ )} +
+
+
+ +
+
+ ))} +
+ ); +}; + +FeatureCardSeven.displayName = "FeatureCardSeven"; + +export default FeatureCardSeven; \ No newline at end of file