"use client"; import { useState, useCallback, Fragment } from "react"; import CardStackTextBox from "@/components/cardStack/CardStackTextBox"; import Accordion from "@/components/Accordion"; import MediaContent from "@/components/shared/MediaContent"; import { cls } from "@/lib/utils"; import type { LucideIcon } from "lucide-react"; import type { ButtonConfig, TitleSegment } from "@/components/cardStack/types"; import type { TextboxLayout, InvertedBackground } from "@/providers/themeProvider/config/constants"; interface FaqItem { id: string; title: string; content: string; } interface FaqSplitMediaProps { faqs: FaqItem[]; imageSrc?: string; videoSrc?: string; imageAlt?: string; videoAriaLabel?: string; mediaPosition?: "left" | "right"; title: string; titleSegments?: TitleSegment[]; description: string; tag?: string; tagIcon?: LucideIcon; buttons?: ButtonConfig[]; textboxLayout: TextboxLayout; useInvertedBackground: InvertedBackground; animationType?: "smooth" | "instant"; showCard?: boolean; ariaLabel?: string; className?: string; containerClassName?: string; textBoxTitleClassName?: string; titleImageWrapperClassName?: string; titleImageClassName?: string; textBoxDescriptionClassName?: string; textBoxClassName?: string; textBoxTagClassName?: string; textBoxButtonContainerClassName?: string; textBoxButtonClassName?: string; textBoxButtonTextClassName?: string; contentClassName?: string; mediaWrapperClassName?: string; mediaClassName?: string; faqsContainerClassName?: string; accordionClassName?: string; accordionTitleClassName?: string; accordionIconContainerClassName?: string; accordionIconClassName?: string; accordionContentClassName?: string; separatorClassName?: string; } const FaqSplitMedia = ({ faqs, imageSrc, videoSrc, imageAlt = "", videoAriaLabel = "FAQ section video", mediaPosition = "left", title, titleSegments, description, tag, tagIcon, buttons, textboxLayout, useInvertedBackground, animationType = "smooth", showCard = true, ariaLabel = "FAQ section", className = "", containerClassName = "", textBoxTitleClassName = "", titleImageWrapperClassName = "", titleImageClassName = "", textBoxDescriptionClassName = "", textBoxClassName = "", textBoxTagClassName = "", textBoxButtonContainerClassName = "", textBoxButtonClassName = "", textBoxButtonTextClassName = "", contentClassName = "", mediaWrapperClassName = "", mediaClassName = "", faqsContainerClassName = "", accordionClassName = "", accordionTitleClassName = "", accordionIconContainerClassName = "", accordionIconClassName = "", accordionContentClassName = "", separatorClassName = "", }: FaqSplitMediaProps) => { const [activeIndex, setActiveIndex] = useState(null); const handleToggle = useCallback((index: number) => { setActiveIndex((prevActiveIndex) => prevActiveIndex === index ? null : index ); }, []); return (
{(title || description) && ( )}
{mediaPosition === "left" && (
)}
{faqs.map((faq, index) => ( {!showCard && index < faqs.length - 1 && (
)} ))}
{mediaPosition === "right" && (
)}
); }; FaqSplitMedia.displayName = "FaqSplitMedia"; export default FaqSplitMedia;