import React, { type FC, type JSX } from 'react' import type { Items,MasonryProps } from './masonry' import { classNames } from '../../utils/classNames' import styles from './masonry.module.scss' export type Props = Omit & { items: Items>[] } const Masonry = ({ items, element = 'section', gap, columns = 3, sequential, className }: Props) => { const classes = classNames([ styles.masonry, className ]) const componentProps = { className: classes, style: gap ? { '--w-masonry-gap': gap } as React.CSSProperties : undefined } const chunkSize = Math.ceil(items.length / columns!) const columnGroups = Array.from({ length: columns! }, (_, i) => { return sequential ? items.slice(i * chunkSize, (i + 1) * chunkSize) : items.filter((_, index) => index % columns! === i) }) const Element = element as keyof JSX.IntrinsicElements return ( {columnGroups.map((column, columnKey) => (
{column.map((item, itemKey) => ( item.component ? {typeof item.children === 'object' ? : } : ))}
))}
) } export default Masonry