diff --git a/src/components/sections/feature/FeatureCardTwentySeven.tsx b/src/components/sections/feature/FeatureCardTwentySeven.tsx index 86eb72e..8e95b1a 100644 --- a/src/components/sections/feature/FeatureCardTwentySeven.tsx +++ b/src/components/sections/feature/FeatureCardTwentySeven.tsx @@ -1,45 +1,221 @@ -import React from 'react'; -import { CardStack } from '@/components/cardStack/CardStack'; +"use client"; -interface FeatureCardTwentySevenProps { - features: Array<{ - id: string; - title: string; - description: string; - }>; +import { useState } from "react"; +import { Plus } from "lucide-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 FeatureCard = { + id: string; title: string; - description: string; - gridVariant?: string; - animationType?: string; - [key: string]: any; + descriptions: string[]; + imageSrc?: string; + videoSrc?: string; + imageAlt?: string; +}; + +interface FeatureCardTwentySevenItemProps { + title: string; + descriptions: string[]; + imageSrc?: string; + videoSrc?: string; + imageAlt?: string; + className?: string; + titleClassName?: string; + descriptionClassName?: string; } -const FeatureCardTwentySeven: React.FC = ({ - features, +const FeatureCardTwentySevenItem = ({ title, - description, - gridVariant = 'uniform-all-items-equal', - animationType = 'slide-up', - ...props -}) => { - const featureItems = features.map((feature) => ( -
-

{feature.title}

-

{feature.description}

-
- )); + descriptions, + imageSrc, + videoSrc, + imageAlt = "", + className = "", + titleClassName = "", + descriptionClassName = "", +}: FeatureCardTwentySevenItemProps) => { + const [isFlipped, setIsFlipped] = useState(false); + return ( +
setIsFlipped(!isFlipped)} + > +
+
+
+

+ {title} +

+
+ +
+
+
+ +
+
+ +
+
+

+ {title} +

+
+ +
+
+
+ {descriptions.map((desc, index) => ( +

+ {desc} +

+ ))} +
+
+
+
+ ); +}; + +interface FeatureCardTwentySevenProps { + features: FeatureCard[]; + carouselMode?: "auto" | "buttons"; + gridVariant: GridVariant; + 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; + cardTitleClassName?: string; + cardDescriptionClassName?: string; + gridClassName?: string; + carouselClassName?: string; + controlsClassName?: string; + textBoxClassName?: string; + textBoxTagClassName?: string; + textBoxButtonContainerClassName?: string; + textBoxButtonClassName?: string; + textBoxButtonTextClassName?: string; +} + +const FeatureCardTwentySeven = ({ + features, + carouselMode = "buttons", + gridVariant, + uniformGridCustomHeightClasses = "min-h-none", + animationType, + title, + titleSegments, + description, + tag, + tagIcon, + tagAnimation, + buttons, + buttonAnimation, + textboxLayout, + useInvertedBackground, + ariaLabel = "Feature section", + className = "", + containerClassName = "", + cardClassName = "", + textBoxTitleClassName = "", + textBoxTitleImageWrapperClassName = "", + textBoxTitleImageClassName = "", + textBoxDescriptionClassName = "", + cardTitleClassName = "", + cardDescriptionClassName = "", + gridClassName = "", + carouselClassName = "", + controlsClassName = "", + textBoxClassName = "", + textBoxTagClassName = "", + textBoxButtonContainerClassName = "", + textBoxButtonClassName = "", + textBoxButtonTextClassName = "", +}: FeatureCardTwentySevenProps) => { return ( - {featureItems} + {features.map((feature, index) => ( + + ))} ); }; -export default FeatureCardTwentySeven; \ No newline at end of file +FeatureCardTwentySeven.displayName = "FeatureCardTwentySeven"; + +export default FeatureCardTwentySeven;