import { FullSlug, resolveRelative, slugifyFilePath, simplifySlug } from "../util/path" import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" import { classNames } from "../util/lang" const CategoryList: QuartzComponent = ({ fileData, displayClass }: QuartzComponentProps) => { const categories = fileData.frontmatter?.categories const outgoingLinks = fileData.outgoingLinks || [] if (categories && categories.length > 0) { // Only show categories that aren't already wiki-linked in the content const categoriesToShow = categories.filter((category) => { const slug = slugifyFilePath((category + ".md") as any) const simpleSlug = simplifySlug(slug) return !outgoingLinks.includes(simpleSlug) }) if (categoriesToShow.length === 0) { return null } return ( ) } else { return null } } CategoryList.css = ` .categories { list-style: none; display: flex; padding-left: 0; gap: 0.4rem; margin: 1rem 0; flex-wrap: wrap; } .section-li > .section > .categories { justify-content: flex-end; } .categories > li { display: inline-block; white-space: nowrap; margin: 0; overflow-wrap: normal; } a.internal.category-link { border-radius: 8px; background-color: var(--highlight); padding: 0.2rem 0.4rem; margin: 0 0.1rem; } ` export default (() => CategoryList) satisfies QuartzComponentConstructor