"use client"; import { memo, useState, Fragment } from "react"; import CardStackTextBox from "@/components/cardStack/CardStackTextBox"; import Accordion from "@/components/Accordion"; 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 FaqBaseProps { faqs: FaqItem[]; 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; faqsContainerClassName?: string; accordionClassName?: string; accordionTitleClassName?: string; accordionIconContainerClassName?: string; accordionIconClassName?: string; accordionContentClassName?: string; separatorClassName?: string; } const FaqBase = ({ faqs, 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 = "", faqsContainerClassName = "", accordionClassName = "", accordionTitleClassName = "", accordionIconContainerClassName = "", accordionIconClassName = "", accordionContentClassName = "", separatorClassName = "", }: FaqBaseProps) => { const [activeIndex, setActiveIndex] = useState(null); const handleToggle = (index: number) => { setActiveIndex(activeIndex === index ? null : index); }; return (
{(title || description) && ( )}
{faqs.map((faq, index) => ( {!showCard && index < faqs.length - 1 && (
)} ))}
); }; FaqBase.displayName = "FaqBase"; export default memo(FaqBase);