| | |
| | | import { i18n } from "../i18n" |
| | | import { FullSlug, joinSegments, pathToRoot } from "../util/path" |
| | | import { CSSResourceToStyleElement, JSResourceToScriptElement } from "../util/resources" |
| | | import { googleFontHref } from "../util/theme" |
| | | import { getFontSpecificationName, googleFontHref } from "../util/theme" |
| | | import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" |
| | | import satori, { SatoriOptions } from "satori" |
| | | import { loadEmoji, getIconCode } from "../util/emoji" |
| | |
| | | |
| | | // Memoize google fonts |
| | | if (!fontsPromise && cfg.generateSocialImages) { |
| | | fontsPromise = getSatoriFont(cfg.theme.typography.header, cfg.theme.typography.body) |
| | | const headerFont = getFontSpecificationName(cfg.theme.typography.header) |
| | | const bodyFont = getFontSpecificationName(cfg.theme.typography.body) |
| | | fontsPromise = getSatoriFont(headerFont, bodyFont) |
| | | } |
| | | |
| | | const slug = fileData.filePath |
| | |
| | | } |
| | | } |
| | | |
| | | const { css, js } = externalResources |
| | | const { css, js, additionalHead } = externalResources |
| | | |
| | | const url = new URL(`https://${cfg.baseUrl ?? "example.com"}`) |
| | | const path = url.pathname as FullSlug |
| | |
| | | <link rel="stylesheet" href={googleFontHref(cfg.theme)} /> |
| | | </> |
| | | )} |
| | | <link rel="preconnect" href="https://cdnjs.cloudflare.com" crossOrigin={"anonymous"} /> |
| | | <link rel="preconnect" href="https://cdnjs.cloudflare.com" crossOrigin="anonymous" /> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| | | {/* OG/Twitter meta tags */} |
| | | <meta name="og:site_name" content={cfg.pageTitle}></meta> |
| | |
| | | {js |
| | | .filter((resource) => resource.loadTime === "beforeDOMReady") |
| | | .map((res) => JSResourceToScriptElement(res, true))} |
| | | {additionalHead.map((resource) => { |
| | | if (typeof resource === "function") { |
| | | return resource(fileData) |
| | | } else { |
| | | return resource |
| | | } |
| | | })} |
| | | </head> |
| | | ) |
| | | } |