"use client" import { ReactNode, useContext, useState } from "react" import { ChevronRight } from "lucide-react" import * as Icons from "lucide-react" import { cn } from "@/lib/utils" import { AccordionGroupContext } from "@/components/markdown/AccordionContext" type AccordionProps = { title: string children?: ReactNode icon?: keyof typeof Icons } const Accordion: React.FC = ({ title, children, icon }: AccordionProps) => { const groupContext = useContext(AccordionGroupContext) const isInGroup = groupContext?.inGroup === true const groupOpen = groupContext?.openTitle === title const setGroupOpen = groupContext?.setOpenTitle const [localOpen, setLocalOpen] = useState(false) const isOpen = isInGroup ? groupOpen : localOpen const handleToggle = () => { if (isInGroup && setGroupOpen) { setGroupOpen(groupOpen ? null : title) } else { setLocalOpen(!localOpen) } } const Icon = icon ? (Icons[icon] as React.FC<{ className?: string }>) : null return (
{isOpen &&
{children}
}
) } export default Accordion