"use client"; import { ReactNode, useState, useContext } from 'react'; import { ChevronRight } from 'lucide-react'; import * as Icons from "lucide-react"; import { cn } from '@/lib/utils'; import { AccordionGroupContext } from '@/components/contexts/AccordionContext'; type AccordionProps = { title: string; children?: ReactNode; defaultOpen?: boolean; icon?: keyof typeof Icons; }; const Accordion: React.FC = ({ title, children, defaultOpen = false, icon, }: AccordionProps) => { const groupContext = useContext(AccordionGroupContext); const isInGroup = groupContext?.inGroup === true; const [isOpen, setIsOpen] = useState(defaultOpen); const Icon = icon ? (Icons[icon] as React.FC<{ className?: string }>) : null; // The main wrapper div for the accordion. // All styling logic for the accordion container is handled here. return (
{isOpen && (
{children}
)}
); }; export default Accordion;