import {Children, cloneElement, ReactElement, ReactNode} from 'react'; import clsx from 'clsx'; interface TimelineProps { children: ReactElement[]; className?: string; } export function Timeline({children, className}: TimelineProps) { const items = Children.toArray(children); return (
{items.map((item, index) => cloneElement(item as any, { isLast: index === items.length - 1, }) )}
); } interface TimelineItemProps { children: ReactNode; className?: string; isLast?: boolean; } export function TimelineItem({children, className, isLast}: TimelineItemProps) { return (
{!isLast && (
)}
{children}
); }