import type { ReactNode } from 'react'; import { AccordionContent, AccordionItem, Accordion as AccordionPrimitive, AccordionTrigger, } from '@/components/ui/accordion'; import { styles } from './styles'; import { resolveIcon, toElementArray } from './utils'; export interface AccordionProps { title?: ReactNode; icon?: ReactNode | string; defaultOpen?: boolean; children?: ReactNode; } function AccordionSection({ value, title, icon, children }: AccordionProps & { value: string }) { return ( {resolveIcon(icon)} {title} {children} ); } export function Accordion({ title, icon, defaultOpen, children }: AccordionProps) { const value = 'accordion-item'; return ( {children} ); } export interface AccordionGroupProps { children?: ReactNode; defaultOpen?: boolean; } export function AccordionGroup({ children, defaultOpen = false }: AccordionGroupProps) { const items = toElementArray(children); if (!items.length) { return null; } const values = items.map((_, index) => `accordion-${index + 1}`); const defaultValue = values.filter((_, index) => { return items[index].props.defaultOpen ?? (defaultOpen && index === 0); }); return ( {items.map((child, index) => ( ))} ); }