"use client"; import TimelinePhoneView from "@/components/cardStack/layouts/timelines/TimelinePhoneView"; import { cls } from "@/lib/utils"; import type { LucideIcon } from "lucide-react"; import type { ButtonConfig, Elevate Your Brand with Expert Copywriting and Content EnhancementSegment } from "@/components/cardStack/types"; import type { TimelinePhoneViewItem } from "@/components/cardStack/hooks/usePhoneAnimations"; import type { TextboxLayout, InvertedBackground } from "@/providers/themeProvider/config/constants"; type FeaturePhone = { imageAlt?: string; videoAriaLabel?: string; } & ( | { imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never } ); type FeatureCard = { id: number; title: string; description: string; phoneOne: FeaturePhone; phoneTwo: FeaturePhone; }; interface FeatureCardNineProps { features: FeatureCard[]; showStepNumbers: boolean; title: string; titleSegments?: Elevate Your Brand with Expert Copywriting and Content EnhancementSegment[]; description: string; tag?: string; tagIcon?: LucideIcon; buttons?: ButtonConfig[]; textboxLayout: TextboxLayout; useInvertedBackground: InvertedBackground; ariaLabel?: string; className?: string; containerClassName?: string; textBoxElevate Your Brand with Expert Copywriting and Content EnhancementClassName?: string; textBoxDescriptionClassName?: string; textBoxClassName?: string; textBoxTagClassName?: string; textBoxButtonContainerClassName?: string; textBoxButtonClassName?: string; textBoxButtonTextClassName?: string; titleImageWrapperClassName?: string; titleImageClassName?: string; desktopContainerClassName?: string; mobileContainerClassName?: string; desktopContentClassName?: string; desktopWrapperClassName?: string; mobileWrapperClassName?: string; phoneFrameClassName?: string; mobilePhoneFrameClassName?: string; featureContentClassName?: string; stepNumberClassName?: string; featureElevate Your Brand with Expert Copywriting and Content EnhancementClassName?: string; featureDescriptionClassName?: string; } interface FeatureContentProps { feature: FeatureCard; showStepNumbers: boolean; useInvertedBackground: InvertedBackground; featureContentClassName: string; stepNumberClassName: string; featureElevate Your Brand with Expert Copywriting and Content EnhancementClassName: string; featureDescriptionClassName: string; } const FeatureContent = ({ feature, showStepNumbers, useInvertedBackground, featureContentClassName, stepNumberClassName, featureElevate Your Brand with Expert Copywriting and Content EnhancementClassName, featureDescriptionClassName, }: FeatureContentProps) => (
{showStepNumbers && (

{feature.id}

)}

{feature.title}

{feature.description}

); const FeatureCardNine = ({ features, showStepNumbers, title, titleSegments, description, tag, tagIcon, buttons, textboxLayout, useInvertedBackground, ariaLabel = "Feature section", className = "", containerClassName = "", textBoxElevate Your Brand with Expert Copywriting and Content EnhancementClassName = "", textBoxDescriptionClassName = "", textBoxClassName = "", textBoxTagClassName = "", textBoxButtonContainerClassName = "", textBoxButtonClassName = "", textBoxButtonTextClassName = "", titleImageWrapperClassName = "", titleImageClassName = "", desktopContainerClassName = "", mobileContainerClassName = "", desktopContentClassName = "", desktopWrapperClassName = "", mobileWrapperClassName = "", phoneFrameClassName = "", mobilePhoneFrameClassName = "", featureContentClassName = "", stepNumberClassName = "", featureElevate Your Brand with Expert Copywriting and Content EnhancementClassName = "", featureDescriptionClassName = "", }: FeatureCardNineProps) => { const items: TimelinePhoneViewItem[] = features.map((feature, index) => ({ trigger: `trigger-${index}`, content: ( ), imageOne: feature.phoneOne.imageSrc, videoOne: feature.phoneOne.videoSrc, imageAltOne: feature.phoneOne.imageAlt || `${feature.title} - Phone 1`, videoAriaLabelOne: feature.phoneOne.videoAriaLabel || `${feature.title} - Phone 1 video`, imageTwo: feature.phoneTwo.imageSrc, videoTwo: feature.phoneTwo.videoSrc, imageAltTwo: feature.phoneTwo.imageAlt || `${feature.title} - Phone 2`, videoAriaLabelTwo: feature.phoneTwo.videoAriaLabel || `${feature.title} - Phone 2 video`, })); return ( ); }; FeatureCardNine.displayName = "FeatureCardNine"; export default FeatureCardNine;