import { formatDate, getDate } from "./Date" import { QuartzComponentConstructor, QuartzComponentProps } from "./types" import readingTime from "reading-time" interface ContentMetaOptions { /** * Whether to display reading time */ showReadingTime: boolean } const defaultOptions: ContentMetaOptions = { showReadingTime: true, } export default ((opts?: Partial) => { // Merge options with defaults const options: ContentMetaOptions = { ...defaultOptions, ...opts } function ContentMetadata({ cfg, fileData, displayClass }: QuartzComponentProps) { const text = fileData.text if (text) { const segments: string[] = [] if (fileData.dates) { segments.push(formatDate(getDate(cfg, fileData)!, cfg.locale)) } // Display reading time if enabled if (options.showReadingTime) { const { text: timeTaken, words: _words } = readingTime(text) segments.push(timeTaken) } return

{segments.join(", ")}

} else { return null } } ContentMetadata.css = ` .content-meta { margin-top: 0; color: var(--gray); } ` return ContentMetadata }) satisfies QuartzComponentConstructor