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) => (
))}
);
}