2025-07-07 20:58:02 -07:00
|
|
|
export interface Meta {
|
|
|
|
title: string;
|
|
|
|
description?: string | undefined;
|
|
|
|
openGraph?: OpenGraph;
|
|
|
|
alternates?: Alternates;
|
|
|
|
}
|
2025-08-14 20:35:33 -07:00
|
|
|
export interface Template extends Omit<Meta, "title"> {
|
|
|
|
titleTemplate?: (title: string) => string,
|
|
|
|
}
|
2025-07-07 20:58:02 -07:00
|
|
|
export interface OpenGraph {
|
|
|
|
title?: string;
|
|
|
|
description?: string | undefined;
|
|
|
|
type: string;
|
|
|
|
url: string;
|
|
|
|
}
|
|
|
|
export interface Alternates {
|
|
|
|
canonical: string;
|
|
|
|
types: { [mime: string]: AlternateType };
|
|
|
|
}
|
|
|
|
export interface AlternateType {
|
|
|
|
url: string;
|
|
|
|
title: string;
|
|
|
|
}
|
|
|
|
export function renderMeta({ title }: Meta): string {
|
2025-08-14 20:35:33 -07:00
|
|
|
return `<title>${esc(title)}</title><link rel="icon" type="image/x-icon" href="/favicon.ico">`;
|
2025-07-07 20:58:02 -07:00
|
|
|
}
|
2025-08-14 20:35:33 -07:00
|
|
|
import { escapeHtmlContent as esc } from "#engine/render";
|