spb/cancerindex
Public
TypeScript 97.2%
SQL 1.5%
CSS 0.6%
JavaScript 0.5%
1import { fmtDate, fmtDateTime, relativeTime } from '@/lib/format';23/**4 * Freshness line under each data module: "Data updated <relative> · Source updated <date>".5 * `dataUpdatedAt` is when CancerIndex last refreshed/ingested; `sourceUpdatedAt` is the upstream6 * dataset date (version or published date). Both are optional and render "unknown" honestly.7 */8export function Freshness({9 dataUpdatedAt,10 sourceUpdatedAt,11 sourceVersion,12 extra,13 className = '',14}: {15 dataUpdatedAt?: Date | string | null;16 sourceUpdatedAt?: Date | string | null;17 sourceVersion?: string | null;18 extra?: string;19 className?: string;20}) {21 return (22 <p className={`mt-2 text-[12px] text-ink-3 ${className}`}>23 <span title={dataUpdatedAt ? fmtDateTime(dataUpdatedAt) : undefined}>Data updated {dataUpdatedAt ? relativeTime(dataUpdatedAt) : 'unknown'}</span>24 <span aria-hidden> · </span>25 <span>26 Source updated {sourceUpdatedAt ? fmtDate(sourceUpdatedAt) : sourceVersion ? <span className="ci-mono">{sourceVersion}</span> : 'unknown'}27 </span>28 {extra ? (29 <>30 <span aria-hidden> · </span>31 <span>{extra}</span>32 </>33 ) : null}34 </p>35 );36}37