import React, { useState } from 'react'; import { ChevronDown } from 'lucide-react'; interface AccordionItem { id: string; title: string; content: React.ReactNode; } interface AccordionProps { items: AccordionItem[]; allowMultiple?: boolean; } export default function Accordion({ items, allowMultiple = false }: AccordionProps) { const [openIds, setOpenIds] = useState>(new Set()); const toggleItem = (id: string) => { setOpenIds((prev) => { const next = new Set(prev); if (next.has(id)) { next.delete(id); } else { if (!allowMultiple) { next.clear(); } next.add(id); } return next; }); }; return (
{items.map((item) => { const isOpen = openIds.has(item.id); return (
{isOpen && (
{item.content}
)}
); })}
); }