'use client'; import React, { Children, createContext, isValidElement, useContext, useMemo } from 'react'; import { Button } from '../button/index.js'; import { AddCircleIcon, IconProps } from '../icon/index.js'; import { type CompactaProps } from './compacta.types.js'; type CompactaContextType = { totalItems: number; }; const CompactaContext = createContext(null); export const useCompacta = () => { const context = useContext(CompactaContext); if (!context) { throw new Error('Cannot call useCompactaContext from outside of CompactaContextProvider'); } return context; }; export function Compacta({ children, onAdd, addText = 'Add another', ...props }: CompactaProps) { const finalChildren = useMemo(() => { return Children.map(children, (child, index) => { if (isValidElement(child)) { return { ...child, // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment props: { ...child.props, index }, index, }; } return null; })?.filter(item => item); }, [children]); return (
{finalChildren} {onAdd && ( )}
); }