Files
web/packages/design-system/lib/components/Accordion/index.tsx
Erik Tiekstra 7c92a8fc9a feat(BOOK-53): Added component for SEO filters and support filter switching
Approved-by: Chuma Mcphoy (We Ahead)
2025-09-19 08:26:41 +00:00

29 lines
742 B
TypeScript

import { Children, cloneElement, isValidElement } from 'react'
import type { VariantProps } from 'class-variance-authority'
import type { AccordionItemProps } from './AccordionItem'
import { accordionVariants } from './variants'
interface AccordionProps
extends React.HtmlHTMLAttributes<HTMLUListElement>,
VariantProps<typeof accordionVariants> {}
export default function Accordion({
children,
className,
type,
}: AccordionProps) {
return (
<ul className={accordionVariants({ className, type })}>
{Children.map(children, (child) => {
if (isValidElement<AccordionItemProps>(child)) {
return cloneElement(child, { type })
} else {
return child
}
})}
</ul>
)
}