| | |
| | | import { canonicalizeServer, pathToRoot } from "../path" |
| | | import { QuartzComponentConstructor, QuartzComponentProps } from "./types" |
| | | import { slug as slugAnchor } from "github-slugger" |
| | | import { FullSlug, resolveRelative } from "../util/path" |
| | | import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" |
| | | import { classNames } from "../util/lang" |
| | | |
| | | function TagList({ fileData }: QuartzComponentProps) { |
| | | const TagList: QuartzComponent = ({ fileData, displayClass }: QuartzComponentProps) => { |
| | | const tags = fileData.frontmatter?.tags |
| | | const slug = canonicalizeServer(fileData.slug!) |
| | | const baseDir = pathToRoot(slug) |
| | | if (tags && tags.length > 0) { |
| | | return ( |
| | | <ul class="tags"> |
| | | <ul class={classNames(displayClass, "tags")}> |
| | | {tags.map((tag) => { |
| | | const display = `#${tag}` |
| | | const linkDest = baseDir + `/tags/${slugAnchor(tag)}` |
| | | const linkDest = resolveRelative(fileData.slug!, `tags/${tag}` as FullSlug) |
| | | return ( |
| | | <li> |
| | | <a href={linkDest} class="internal tag-link"> |
| | | {display} |
| | | {tag} |
| | | </a> |
| | | </li> |
| | | ) |
| | |
| | | padding-left: 0; |
| | | gap: 0.4rem; |
| | | margin: 1rem 0; |
| | | flex-wrap: wrap; |
| | | } |
| | | |
| | | .section-li > .section > .tags { |
| | | justify-content: flex-end; |
| | | } |
| | | |
| | | .tags > li { |
| | |
| | | overflow-wrap: normal; |
| | | } |
| | | |
| | | a.tag-link { |
| | | a.internal.tag-link { |
| | | border-radius: 8px; |
| | | background-color: var(--highlight); |
| | | padding: 0.2rem 0.5rem; |
| | | padding: 0.2rem 0.4rem; |
| | | margin: 0 0.1rem; |
| | | } |
| | | ` |
| | | |