import { forwardRef, Children, cloneElement, isValidElement } from 'react' import Block from '../Primitives/Block/Block' import Text from '../Text/Text' import { useResponsiveTokens } from '../../hooks/useResponsiveTokens' import { TimelineTokensType } from './timeline.token' import { TimelineNodeStatus } from './types' import TimelineSubstep from './TimelineSubstep' import type { TimelineHeaderProps } from './types' const TimelineHeader = forwardRef( ( { title, status = TimelineNodeStatus.NEUTRAL, timestamp, children, leftSlot, rightSlot, ...rest }, ref ) => { const tokens = useResponsiveTokens('TIMELINE') const { header, indicator } = tokens const dotColor = tokens.statusColors[status] const childrenWithNestedFlag = children ? Children.map(children, (child) => isValidElement(child) && child.type === TimelineSubstep ? cloneElement(child, { isNestedUnderHeader: true, } as { isNestedUnderHeader: boolean }) : child ) : null return ( {leftSlot && ( {leftSlot} )} {title} {timestamp != null && timestamp !== '' && ( {timestamp} )} {rightSlot != null && ( {rightSlot} )} {childrenWithNestedFlag ? ( {childrenWithNestedFlag} ) : null} ) } ) TimelineHeader.displayName = 'Timeline.Header' export default TimelineHeader