| | |
| | | import { canonicalizeServer, pathToRoot } from "../util/path" |
| | | import { FullSlug, _stripSlashes, joinSegments, pathToRoot } from "../util/path" |
| | | import { JSResourceToScriptElement } from "../util/resources" |
| | | import { QuartzComponentConstructor, QuartzComponentProps } from "./types" |
| | | |
| | | export default (() => { |
| | | function Head({ cfg, fileData, externalResources }: QuartzComponentProps) { |
| | | const slug = canonicalizeServer(fileData.slug!) |
| | | const title = fileData.frontmatter?.title ?? "Untitled" |
| | | const description = fileData.description?.trim() ?? "No description provided" |
| | | const { css, js } = externalResources |
| | | const baseDir = pathToRoot(slug) |
| | | const iconPath = baseDir + "/static/icon.png" |
| | | |
| | | const url = new URL(`https://${cfg.baseUrl ?? "example.com"}`) |
| | | const path = url.pathname as FullSlug |
| | | const baseDir = fileData.slug === "404" ? path : pathToRoot(fileData.slug!) |
| | | |
| | | const iconPath = joinSegments(baseDir, "static/icon.png") |
| | | const ogImagePath = `https://${cfg.baseUrl}/static/og-image.png` |
| | | const manifest = |
| | | cfg.baseUrl == undefined ? "/manifest.json" : `https://${cfg.baseUrl}/manifest.json` |
| | | |
| | | return ( |
| | | <head> |
| | |
| | | {cfg.baseUrl && <meta property="og:image" content={ogImagePath} />} |
| | | <meta property="og:width" content="1200" /> |
| | | <meta property="og:height" content="675" /> |
| | | <meta name="theme-color" content="#faf8f8" /> |
| | | <link rel="icon" href={iconPath} /> |
| | | <link rel="manifest" href={manifest} /> |
| | | <meta name="description" content={description} /> |
| | | <meta name="generator" content="Quartz" /> |
| | | <link rel="preconnect" href="https://fonts.googleapis.com" /> |