'use client' import { useEffect, useState } from 'react' import { formatRelativeAgeAt } from '@/utils/format' const PLACEHOLDER = '…' export default function ClientRelativeTime({ value, prefix = '', suffix = '', fallback = 'Unknown', className, }: { value?: string | null prefix?: string suffix?: string fallback?: string className?: string }) { const [label, setLabel] = useState(PLACEHOLDER) useEffect(() => { if (!value) { setLabel(fallback) return } const parsed = Date.parse(value) if (!Number.isFinite(parsed)) { setLabel(fallback) return } const update = () => setLabel(formatRelativeAgeAt(Date.now(), value)) update() const id = window.setInterval(update, 30_000) return () => window.clearInterval(id) }, [value, fallback]) const content = label === PLACEHOLDER ? PLACEHOLDER : label if (className) { return ( {prefix} {content} {suffix} ) } return ( {prefix} {content} {suffix} ) }