"use client"; import React, { useMemo } from "react"; import CardStack from "@/components/card/CardStack"; import TextBox from "@/components/Textbox"; import type { CardAnimationTypeWith3D } from "@/types/animations"; import type { GridVariant } from "@/types/grid"; export interface FeatureCardOneProps { features?: Array<{ id: string; title: string; description: string; icon?: React.ReactNode; mediaItems?: Array<{ type: string; src: string; alt?: string }>; }>; gridVariant?: GridVariant; uniformGridCustomHeightClasses?: string; animationType?: CardAnimationTypeWith3D; title?: string; titleSegments?: Array<{ type: "text"; content: string } | { type: "image"; src: string; alt?: string }>; description?: string; tag?: string; tagAnimation?: "none" | "opacity" | "slide-up" | "blur-reveal"; buttons?: Array<{ text: string; onClick?: () => void; href?: string }>; buttonAnimation?: "none" | "opacity" | "slide-up" | "blur-reveal"; textboxLayout?: "default" | "split" | "split-actions" | "split-description" | "inline-image"; useInvertedBackground?: boolean; ariaLabel?: string; className?: string; containerClassName?: string; cardClassName?: string; mediaClassName?: string; textBoxTitleClassName?: string; textBoxTitleImageWrapperClassName?: string; textBoxTitleImageClassName?: string; textBoxDescriptionClassName?: string; cardTitleClassName?: string; cardDescriptionClassName?: string; cardIconClassName?: string; cardIconWrapperClassName?: string; gridClassName?: string; carouselClassName?: string; controlsClassName?: string; textBoxClassName?: string; textBoxTagClassName?: string; textBoxButtonContainerClassName?: string; textBoxButtonClassName?: string; textBoxButtonTextClassName?: string; } const FeatureCardOne: React.FC = ({ features = [], gridVariant = "uniform-all-items-equal", uniformGridCustomHeightClasses = "min-h-95 2xl:min-h-105", animationType = "slide-up", title, titleSegments, description = "", tag, tagAnimation, buttons, buttonAnimation, textboxLayout = "default", useInvertedBackground = false, ariaLabel = "Feature section", className = "", containerClassName = "", cardClassName = "", mediaClassName = "", textBoxTitleClassName = "", textBoxTitleImageWrapperClassName = "", textBoxTitleImageClassName = "", textBoxDescriptionClassName = "", cardTitleClassName = "", cardDescriptionClassName = "", cardIconClassName = "", cardIconWrapperClassName = "", gridClassName = "", carouselClassName = "", controlsClassName = "", textBoxClassName = "", textBoxTagClassName = "", textBoxButtonContainerClassName = "", textBoxButtonClassName = "", textBoxButtonTextClassName = ""}) => { const cardItems = useMemo( () => features.map((feature) => (
{feature.icon && (
{feature.icon}
)}

{feature.title}

{feature.description}

{feature.mediaItems && (
{feature.mediaItems.map((media, idx) => ( {media.alt ))}
)}
)), [features, cardClassName, cardIconWrapperClassName, cardIconClassName, cardTitleClassName, cardDescriptionClassName, mediaClassName] ); return (
{title && (
)}
{cardItems.map((item) => item)}
); }; export default FeatureCardOne;