import { FullSlug, resolveRelative } from "../util/path" import { QuartzPluginData } from "../plugins/vfile" import { Date } from "./Date" import { QuartzComponentProps } from "./types" export function byDateAndAlphabetical(f1: QuartzPluginData, f2: QuartzPluginData): number { if (f1.dates && f2.dates) { // sort descending by last modified return f2.dates.modified.getTime() - f1.dates.modified.getTime() } else if (f1.dates && !f2.dates) { // prioritize files with dates return -1 } else if (!f1.dates && f2.dates) { return 1 } // otherwise, sort lexographically by title const f1Title = f1.frontmatter?.title.toLowerCase() ?? "" const f2Title = f2.frontmatter?.title.toLowerCase() ?? "" return f1Title.localeCompare(f2Title) } type Props = { limit?: number } & QuartzComponentProps export function PageList({ fileData, allFiles, limit }: Props) { let list = allFiles.sort(byDateAndAlphabetical) if (limit) { list = list.slice(0, limit) } return ( ) } PageList.css = ` .section h3 { margin: 0; } .section > .tags { margin: 0; } `